<< 点击显示目录 >> 主页 轴控开发使用手册 > ACP10/ARNC0帮助信息 > 示例 > 运动控制 > 操作多个轴 |
这个例子显示了如何使用全局命令结构体对多个轴进行操作,以及如何在一个集中式任务中进行错误处理。
使用这个例子时,必须在项目中找到一个名为 "acp10etxen"(运动向导)的错误文本模块。默认情况下,软件包中使用的轴的名称是 "gAxis01"、"gAxis02"、"gAxis03"、"gAxis04"和 "gAxis05"(运动向导)。可以在 "配置 "任务的初始化子程序中为各轴指定不同的名称。
如果添加该包的项目已经包含其他轴,那么错误处理将不再正确工作。出于这个原因,所有使用的轴都应该被整合到这个包中。 如果使用了电源模块的任务,那么只有在事先启用了电源模块的情况下,其他轴的控制器才能在本地打开。 如果这个包被添加到一个项目中,控制器上的全局内存区域必须在CPU属性中扩大大约6 kB。 |
本例可与下列配置示例一起使用:
目标系统 |
描述 |
X20CP148x |
X20 SG4 CPU |
8V1xxx.x0-2或8BVxxxxxxxx.xxx-x |
ACOPOS和ACOPOSmulti |
AxisConfiguration ; 配置,轴参考的分配
ErrorHandling ; 所有伺服轴的集中式 错误处理
PowerSupply ; 电源轴模块的控制任务
Axis_00 ; 单个轴的控制任务
Axis_01 ; 单个轴的控制任务
Master_00 ; 主轴的控制任务
Slave_00 ; 从轴的控制任务
使用集中式 "GlobalCommand"命令结构体可以对所有轴发出以下命令。
功能 |
变量 |
开启所有伺服控制器 |
GlobalCommand.Power |
对所有轴执行回零 |
GlobalCommand.Home |
停止所有轴正在进行的运动并阻止新的运动开始 |
GlobalCommand.Stop |
确认个别轴的错误 |
GlobalCommand.ErrorAcknowledge |
操作电源模块的例子(程序:PowerSupply)。
使用预定义的 "PowerSupply[i].Command"命令结构,可以执行以下功能。
功能 |
变量 |
开启控制器 |
PowerSupply[i].Command.Power |
启用电源模块的功率测定 |
PowerSupply[i].Command.StartPowerMeter |
禁用电源模块的功率测定 |
PowerSupply[i].Command.StopPowerMeter |
重新启动功率测定的观察时间间隔 |
PowerSupply[i].Command.RestartInterval(重新启动时间间隔)。 |
用于驱动控制的各种基本功能以统一的序列结构组成(程序:Axis_00,Axis_01)。
使用预定义的 "Axis[i].Command"命令结构可以执行以下功能。
功能 |
变量 |
开启伺服控制器 |
Axis[i].Command.Power |
对轴执行回零 |
Axis[i].Command.Home |
只要命令变量被置位,就在正方向上执行一个运动 |
Axis[i].Command.MoveJogPos |
只要命令变量被置位,就在负方向上执行一个运动 |
Axis[i].Command.MoveJogNeg |
以定义的结束位置开始一个绝对定位运动 |
Axis[i].Command.MoveAbsolute |
开始一个有定义距离的相对定位运动 |
Axis[i].Command.MoveAdditive |
以定义的速度开始一个恒速运动 |
Axis[i].Command.MoveVelocity |
停止一个活动的运动 |
Axis[i].Command.Halt |
停止一个正在进行的运动并阻止一个新的运动开始 |
Axis[i].Command.Stop |
用于驱动控制的各种基本功能是按统一的顺序结构组织的(程序:Master_00)。
可以使用预定义的命令结构 "Master[i].Command" 在观察窗口的帮助下,执行以下功能。
功能 |
变量 |
开启伺服控制器 |
Master[i].Command.Power |
对轴执行回零 |
Master[i].Command.Home |
只要命令变量被置位,就在正方向上执行一个运动 |
Master[i].Command.MoveJogPos |
只要命令变量被置位,就在负方向上执行一个运动。 |
Master[i].Command.MoveJogNeg |
开始一个有定义结束位置的绝对定位运动 |
Master[i].Command.MoveAbsolute |
开始一个有定义距离的相对定位运动 |
Master[i].Command.MoveAdditive |
以定义的速度开始恒速运动 |
Master[i].Command.MoveVelocity |
停止一个正在进行的运动 |
Master[i].Command.Halt |
停止一个正在进行的运动并阻止一个新的运动开始 |
Master[i].Command.Stop |
传输、开始/停止运动、重新耦合和结束Cam Profile Automat(程序:Slave_00)的例子。
这个例子显示了如何使用定义的命令来初始化和启动一个Cam Profile Automat,停止运动,重新耦合和结束运动。来自ACP10_MC库的功能块被用来配置和控制Cam Profile Automat。这个例子还包含驱动控制的基本功能。
包括三种不同的凸轮自动序列配置。
•贴标机
•飞锯
•切割单元
自动凸轮序列的参数配置在相应的函数中用ANSI C和结构化文本实现。在凸轮序列初始化发生之前,通过在STATE_AUTOMAT_INIT状态里面调用函数选择对应的凸轮自动序列配置参数。
在观察窗口的帮助下,可以使用预定义的命令结构 "Slave[i].Command"来执行以下功能。
功能 |
变量 |
初始化一个凸轮轮廓自动序列 |
Slave[i].Command.StartAutomat |
启动一个凸轮轮廓自动序列 |
Slave[i].Command.StartAutomat |
停止凸轮轮廓自动序列 |
Slave[i].Command.StopAutomat |
凸轮轮廓自动序列恢复耦合 |
Slave[i].Command.RestartAutomat |
彻底结束凸轮轮廓自动序列的耦合 |
Slave[i].Command.EndAutomat |
开启伺服控制器 |
Slave[i].Command.Power |
轴回零 |
Slave[i].Command.Home |
只要命令变量被置位,就在从轴上执行一个正方向的运动 |
Slave[i].Command.MoveJogPos |
只要命令变量被置位,就在从轴上执行一个负方向的运动 |
Slave[i].Command.MoveJogNeg |
在从轴上以定义的结束位置开始绝对定位运动 |
Slave[i].Command.MoveAbsolute |
在从轴上以定义的距离开始相对定位运动 |
Slave[i].Command.MoveAdditive |
在从轴上以定义的速度开始恒速运动 |
Slave[i].Command.MoveVelocity |
停止一个活动的运动 |
Slave[i].Command.Halt |
停止一个正在进行的运动并防止开始一个新的运动 |
Slave[i].Command.Stop |
当一个trigger触发边沿信号到达时,一个标签应该被分配出去。
标签带的进给运动包括一个补偿运动和一个同步段阶段,在这个同步段阶段它被贴到产品上。这是由一个产品传感器触发的。如果缺少一个产品,在等待状态下进行补偿运动。进入状态2和退出状态4,在每种情况下从轴都有一半的从动间隔距离。
对于这种自动序列配置,轴的周期必须这样设置:
主轴:1000
从轴:1000
一旦主轴到达某个位置,从轴开始一个进入运动,使其与主轴同步移动一定的路径。一旦到达该路径的终点,从轴就会返回到其最初的起始位置。
对于这种自动序列配置,轴的周期必须这样设置:
主轴:3600
从轴:1000
当信号1发生时,从轴从其静止位置到它将与主机同步移动的位置做一个补偿运动。
然后,每个状态State里面都是执行一个主轴周期。当信号2发生时,从轴跟随一个退出运动回到其静止位置,并等待信号1的下一次发生。
对于这种自动序列配置,轴的周期必须这样设置:
主轴:1000
从轴:3600
演示应用程序中使用的所有轴的集中错误处理方式的示例(程序:ErrorHandling)。
该程序持续检查项目中的所有轴,以了解以下事件。
• 是否发生了轴错误或轴警告?
• 一个PLCopen功能块是否为其中一个轴报告了错误?
• 某轴是否处于ErrorStop状态?
如果这些条件之一得到满足,在STATE_ERROR_HANDLING步骤中检查所有轴的轴状态。如果一个或多个轴处于ErrorStop状态,那么受影响的轴将被停止,并通过为这些轴设置停止命令(Xyz[i].Command.Stop)防止其重新启动。(如果这涉及到一个耦合轴(Master[i], Slave[i]),那么所有耦合轴都会停止。)
有关当前未决错误的信息被输出到全局错误结构(GlobalError),直到错误被确认(GlobalCommand.ErrorAcknowledge)。 然后输出下一个未决错误(如果存在的话)。一旦处于ErrorStop状态的轴的所有错误被确认,它们将被MC_Reset自动带出这个状态。但是,停止命令不会被这个任务重置;这将由用户来处理。
1) 在这一步骤中,所有轴都是一个接一个地检查。
本节的主题: