直接跳到内容
本页目录

运动控制综合示例

为了让用户对一个完整的运动控制组态有全面的了解,下面将详细介绍工程的组态过程。

被控设备示意图

img

假设X和Y轴电机都是每1048576个指令位置转一圈,丝杠螺间距10mm;

使用位置开环模式控制;

伺服电机型号:EtherCAT总线型,MADHT1505BA1;

轴组态

1、'总线配置'节点右键添加'EtherCAT主站';

2、'EtherCAT主站'节点右键添加2个MADHT1505BA1伺服从站,并重命名为MADHT1505BA1_X、MADHT1505BA1_Y;

3、'设备节点'(Simulate_Device)右键添加'轴配置'生成'Axis Pool'节点;'Axis Pool'节点右键添加2个'PositionControl_Axis'位置轴,并重命名为Axis_X、Axis_Y;

img

EtherCAT从站伺服参数配置

双击EtherCAT从站节点,在'EtherCAT I/O映射'页面定义或者映射变量,目的为了给必要的I/O数据定义变量(双击变量列输入自定义变量名,也可双击变量列后点击变量框右边的输入助手框选择已有变量);

img

如果有些变量未在I/O映射页面出现,请在'过程数据'页面选择其它PDO组。(MaxSpeed_X/Y变量映射是为了控制电机最大转速,如果I/O映射变量无此参数可以不定义这个变量。)

轴参数配置

1、双击轴节点,在'驱动设备'页面的'输出映射'处关联必要的变量关系,实现轴与EtherCAT伺服从站输出数据的交互;

img

必要输出参数说明:

轴对象成员伺服电机变量说明
out.ControlWordControlword_X/Y控制字,一般在伺服电机16#6040:00索引下。
out.ModesOfOperationModesOfOP_X/Y控制模式, 一般在伺服电机16#6060:00索引下。
out.outputPositionDpos_X/Y目标位置,一般在伺服电机16#607A:00索引下。

2、在'编码器设备'页面的'输入映射'处关联必要的变量关系,实现轴与EtherCAT伺服从站输入数据的交互;

img

必要输入参数说明:

轴对象成员伺服电机变量说明
in.StatusWordStatusword1状态字,一般在伺服电机16#6041:00索引下。
in.ModesOfOperationDisplayModeOpDis1控制模式显示, 一般在伺服电机16#6061:00索引下。
in.inputMpos1实际位置,一般在伺服电机16#6064:00索引下。(不启用编码器可不映射此参数)

3、在'基本属性'页面选择'轴类型'和设置'位置单位'值;

img

由于运动控制平台为有限行程,因此轴类型选择'线性轴',X轴位置单位=104857610/10=1048576(电机一圈指令位置数减速机的减速比/螺间距),Y轴位置单位=10485766/10=629145.6(电机一圈指令位置数减速机的减速比/螺间距)。此时用户单位就被转换为了mm(毫米);

4、在'位置限制'页面设置软硬限位参数;

img

如果设备有硬限位开关,那么软限位可以不启用。如果设备没有硬限位开关,那么可使用软限位代替。由于平台X轴范围为1000,Y轴范围为800。假设用户期望平台的中心点为工作原点,那么X轴正负向限位就可以设定为500、-500,Y轴正负向限位就可以设定为400、-400;

硬限位关联的信号变量地址必须是实际限位信号接入PLC的地址;

5、在'回零'页面设置回零参数;

img

一般情况下选择'仅使用回零信号'回零就可以了,由于平台的原点信号安装在轴的负向,因此我们要选择'负向'回零。回零逼近速度尽量要慢,因此我们设置10mm/s。

回零输入标志关联的信号变量地址必须是实际原点信号接入PLC的地址;

工程组态 _Init子程序

Init子程序实现轴的回零动作和工作原点定义,以便主程序可以在正确的坐标系中执行运动控制指令。当设备异常导致原点位置失效,就需要再次调用Init子程序重新回零和定义工作原点。

  • 变量定义
名称数据类型含义
MC_Power_inst0MC_PowerX轴使能功能块实例
MC_Power_inst1MC_PowerY轴使能功能块实例
MC_Home_inst0MC_HomeX轴回零功能块实例
MC_Home_inst1MC_HomeY轴回零功能块实例
Home_PassBOOL回零成功标志
MC_SetPosition_inst1MC_SetPositionX轴位置定义功能块实例
MC_SetPosition_inst2MC_SetPositionY轴位置定义功能块实例

(EtherCT伺服最大限速取消) MaxSpeed_X:=4294967295; MaxSpeed_Y:=4294967295; (如果使能了软限位,在回零阶段需要先禁用软限位。) Axis_X.SoftwareLimit.Enable:=FALSE; Axis_Y.SoftwareLimit.Enable:=FALSE; (设置轴初始速度、加速度、减速度参数,单位mm/s) Axis_X.SetValue.SetVelocity:=100; Axis_X.SetValue.SetAcceleration:=1000; Axis_X.SetValue.SetDeceleration:=1000; Axis_Y.SetValue.SetVelocity:=100; Axis_Y.SetValue.SetAcceleration:=1000; Axis_Y.SetValue.SetDeceleration:=1000; (轴伺服使能,使能后才可执行运动控制指令。) MC_Power_inst0(Axis := Axis_X , Enable := TRUE ); MC_Power_inst0(Axis := Axis_Y , Enable := TRUE ); (投送轴回原点指令,因为是沿触发,因此需要调用两次。) MC_Home_inst0(Axis := Axis_X , Execute := 0 ); MC_Home_inst1(Axis := Axis_Y , Execute := 0 ); MC_Home_inst0(Axis := Axis_X , Execute := 1 ); MC_Home_inst1(Axis := Axis_Y , Execute := 1 ); (等待轴回原点结束,并判断回零是否成功) WHILE 1 DO IF MC_Home_inst0.Done=TRUE AND MC_Home_inst1.Done=TRUE THEN Home_Pass:=TRUE; EXIT; END_IF; IF MC_Home_inst0.CommandAborted=TRUE OR MC_Home_inst1.CommandAborted=TRUE OR MC_Home_inst0.Error=TRUE OR MC_Home_inst1.Error=TRUE THEN Home_Pass:=FALSE; EXIT; END_IF; TaskSleepMs( 100 ); (WHILE循环休眠,防止CPU占用率过高。) END_WHILE; (复位功能块,便于下次继续使用。) MC_Home_inst0(Axis := Axis_X , Execute := 0 ); MC_Home_inst1(Axis := Axis_Y , Execute := 0 ); (回原点成功后X轴和Y轴当前位置都是0。如果要定义工作平台中心为工作原点,那么就是要设定X轴和Y轴(500,400)的位置为新原点。) IF Home_Pass=TRUE THEN MC_SetPosition_inst1(Axis := Axis_X , Execute := 0 ); MC_SetPosition_inst2(Axis := Axis_Y , Execute := 0 ); MC_SetPosition_inst1(Axis := Axis_X , Execute := 1 , Position := 500 , Relative :=TRUE ); MC_SetPosition_inst2(Axis := Axis_Y , Execute := 1 , Position := 400 , Relative :=TRUE ); (如果使能了软限位,在回零结束后再重新使能软限位。) Axis_X.SoftwareLimit.Enable:=TRUE; Axis_Y.SoftwareLimit.Enable:=TRUE; (复位功能块,便于下次继续使用。) MC_SetPosition_inst1(Axis := Axis_X , Execute := 0 ); MC_SetPosition_inst2(Axis := Axis_Y , Execute := 0 ); END_IF; 工程组态_Main主程序

此主程序只列举了Axis_X和Axis_Y轴的绝对位置定位,其它运动指令组态可参考各运动指令组态示例。同时还需要异常处理程序,比如MC_Power、MC_Stop、MC_Halt、MC_Reset等功能组态,来实现轴的使能、停止、暂停、复位错误等功能。

  • 变量定义
名称数据类型含义
Home_EnBOOL触发调用Init回原点子程序
MC_MoveAbsolute_inst0MC_MoveAbsoluteMC_MoveAbsolute实例
ExecuteBOOL触发引脚
PositionLREAL绝对位置
VelocityLREAL目标速度
AccelerationLREAL加速度
DecelerationLREAL减速度
JerkLREAL加加速度
DirectionMC_DIRECTION方向
BufferModeMC_BUFFER_MODE缓存模式
DoneBOOL结束标志
BusyBOOL忙碌标志
ActiveBOOL激活标志
CommandAbortedBOOL终止标志
ErrorBOOL错误状态
ErrorIDMC__ERROR_ID错误ID
MC_MoveAbsolute_inst1MC_MoveAbsoluteMC_MoveAbsolute实例
Execute1BOOL触发引脚
Position1LREAL绝对位置
Velocity1LREAL目标速度
Acceleration1LREAL加速度
Deceleration1LREAL减速度
Jerk1LREAL加加速度
Direction1MC_DIRECTION方向
BufferMode1MC_BUFFER_MODE缓存模式
Done1BOOL结束标志
Busy1BOOL忙碌标志
Active1BOOL激活标志
CommandAborted1BOOL终止标志
Error1BOOL错误状态
ErrorID1MC__ERROR_ID错误ID

img

运动控制综合示例已经加载完毕