总体配置流程
1,拿到驱动的XML文件安装到设备库中,点击安装选中要安装的XML即可
2,建立总线设备,先选中主设备,点击添加设备,选择工业以太网,选择主站,选中EtherCat Master SoftMotion选项,设备树中就会显示
3,从EtherCat Master SoftMotion点击添加设备,选中刚才加入的XML文件,再点击添加好的驱动名称,添加CIA402轴,不选精简那个。同时可以给轴重命名方便编程,这里我改为AXIS1.
4,配置总线部分的连接,网络名称以及MAC寻址,选择其中一种即可,这个是根据网口的地址来
5,此时编写代码已经可以控制轴使能,点动等。代码如下,用到的是codesys里面的MC运动功能块。PS:其中的变量都可以自己定义,我这里使用的是设备中的DO和变量控制的,可以自己添加布尔量及INT等变量来控制。
//电机使能FB功能块
MC_Power_FB(
Axis:=AXIS1 , //电机名称
Enable:= TRUE, //此处有输入才可以上使能
bRegulatorOn:=DO32 , //触发上使能
bDriveStart:=DO32 , //解除停止状态
Status=>DO41 ,//输出时代表可以运行轴
bRegulatorRealState=> ,
bDriveStartRealState=> ,
Busy=> ,
Error=>DO42 , //报警状态输出
ErrorID=> );
//电机点动功能块
MC_Jog_FB(
Axis:= AXIS1,
JogForward:=DO35 , //控制电机正转
JogBackward:=DO34 , //控制电机反转
Velocity:=R46 , //轴速度映射
Acceleration:= R47, //轴加速度映射
Deceleration:= R48, //轴减速度映射
Jerk:=1, //轴跃度(无需处理)
Busy=> ,
CommandAborted=> ,
Error=> ,
ErrorId=> );
//电机停止功能块
MC_Stop_FB(
Axis:=AXIS1 ,
Execute:= DO33, //停止DO
Deceleration:= 100,
Jerk:= 100,
Done=> ,
Busy=> ,
Error=> ,
ErrorID=> );
//电机绝对位置FB功能块
MC_MoveAbsolute_FB(
Axis:= AXIS1, //轴名称
//Execute:=Data.GetDO(36) , //触发DO上升沿开始运行
Execute:= , //测试用
Position:=,
Velocity:= R5, //轴速度映射
Acceleration:= 10, //轴加速度映射
Deceleration:= 10, //轴减速度映射
Jerk:=5, //轴跃度(无需处理)
Direction:= ,
Done=>DO43 , //运动完成时置为TRUE,可以判断这个DO进行运动是否完成信号
Busy=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
SMC3_ReinitDrive_FB(
Axis:= AXIS1,
bExecute:= EtherCAT_Master_SoftMotion.xDistributedClockInSync, //此FB用于处理异常通讯自动复位,无需处理,多轴时进行复制即可
bVirtual:= ,
bDone=> ,
bBusy=> ,
bError=> ,
nErrorID=> );
MC_Reset_FB(
Axis:=AXIS1 ,
Execute:= DO37, //复位轴错误
Done=> ,
Busy=> ,
Error=> ,
ErrorID=> );
选中轴,在基本视图中可以看到轴的设置值和实际位置。
6,电子齿轮比
1,增量电机转这里,右边的电机转1圈,代表需要用多少个脉冲,我用的这款电机是2000P,不过驱动厂家应该是做了倍频处理,乘以4,也就是8000,如果下面那些都设置成1的话,这里就代表我们此时给让当前位置加1的话,电机旋转一圈。
MC_MoveAbsolute_FB.Position:=0;
MC_MoveAbsolute_FB.Position:=1;(执行机构旋转一圈)
2,电机转动齿轮输出转这里,代表电机转动多少圈,减速机输出一圈。
3,减速机输出转应用的单位这里,由于我这个应用是电机旋转要和视觉配合,只关心其旋转角度,所以写上360。
MC_MoveAbsolute_FB.Position:=0;
MC_MoveAbsolute_FB.Position:=1; (执行机构旋转1度)
MC_MoveAbsolute_FB.Position:=360;(执行机构旋转360度)