codesys平台 汇川中型PLC AM400 AM600 手轮接线以及程序上的相关设置 ECAT轴【调试笔记】
- 背景
使用汇川中型PLC AM600
使用5V分差型手轮
2.设备环境配置
PLC接线图
手轮接线图
3.编写程序前相关配置
新建一个程序,找到HIGH_SPEED_IO钩选计数器0,计数模式我选的是1倍频,X0映射为PLC端32-32口,X1映射为PLC端28-26口
找到计数器参数设置,可以看到计数器0的实例名HS_Counter0记下来,后面映射会用到
找到SoftMotion General Axis Pool 添加设备
供应商选择(全部供应商),在下面找到自由编码器选择SMC_FreeEncoder确定,这样虚轴建立完成了
后面建立ECAT轴就不说明了,建立3个轴XYZ
4.全局变量定义
5. 程序编写
IF 急停 THEN
//X轴
MC_错误状态[1](Axis:=X_Axis,Enable:=NO_1, AxisError=> X_错误状态,);
MC_坐标读取[1](Axis:=X_Axis,Enable:=NO_1,Position=>X_当前坐标);
MC_使能控制[1](Axis:=X_Axis,Enable:=NO_1,bRegulatorOn:=NOT X_错误状态 AND X_GO_使能,bDriveStart:= NO_1,bRegulatorRealState=>X_使能状态);
MC_复位[1](Axis:=X_Axis,Execute:=GO_复位);
MC_点动[1](Axis:=X_Axis,JogForward:=X_点动_正转,JogBackward:=X_点动_反转,Velocity:=点动速度,Acceleration:=加减速度,Deceleration:=加减速度);
MC_相对[1](Axis:=X_Axis,Execute:=X_GO_相对位 , Distance:=X_相对位置, Velocity:=自动速度 , Acceleration:=加减速度, Deceleration:=加减速度,Busy=>X_轴相对移动中);
MC_绝对[1](Axis:=X_Axis,Execute:=X_GO_绝对位 ,Position:=X_绝对位置,Velocity:=自动速度,Acceleration:= 加减速度,Deceleration:= 加减速度,Busy=>X_轴绝对移动中);
IF MC_绝对[1].Done THEN X_GO_绝对位:=FALSE; END_IF
IF MC_相对[1].Done THEN X_GO_相对位:=FALSE; END_IF
X_转换坐标:=LREAL_TO_INT(X_当前坐标);
//Y轴
MC_错误状态[2](Axis:=Y_Axis,Enable:=NO_1, AxisError=> Y_错误状态,);
MC_坐标读取[2](Axis:=Y_Axis,Enable:=NO_1,Position=>Y_当前坐标);
MC_使能控制[2](Axis:=Y_Axis,Enable:=NO_1,bRegulatorOn:=NOT Y_错误状态 AND Y_GO_使能,bDriveStart:= NO_1,bRegulatorRealState=>Y_使能状态);
MC_复位[2](Axis:=Y_Axis,Execute:=GO_复位);
MC_点动[2](Axis:=Y_Axis,JogForward:=Y_点动_正转,JogBackward:=Y_点动_反转,Velocity:=点动速度,Acceleration:=加减速度,Deceleration:=加减速度);
MC_相对[2](Axis:=Y_Axis,Execute:=Y_GO_相对位 , Distance:=Y_相对位置, Velocity:=自动速度 , Acceleration:=加减速度, Deceleration:=加减速度,Busy=>Y_轴相对移动中);
MC_绝对[2](Axis:=Y_Axis,Execute:=Y_GO_绝对位 ,Position:=Y_绝对位置,Velocity:=自动速度,Acceleration:= 加减速度,Deceleration:= 加减速度,Busy=>Y_轴绝对移动中);
IF MC_绝对[2].Done THEN Y_GO_绝对位:=FALSE; END_IF
IF MC_相对[2].Done THEN Y_GO_相对位:=FALSE; END_IF
X_转换坐标:=LREAL_TO_INT(Y_当前坐标);
//Z轴
MC_错误状态[3](Axis:=Z_Axis,Enable:=NO_1, AxisError=> Z_错误状态,);
MC_坐标读取[3](Axis:=Z_Axis,Enable:=NO_1,Position=>Z_当前坐标);
MC_使能控制[3](Axis:=Z_Axis,Enable:=NO_1,bRegulatorOn:=NOT Z_错误状态 AND Z_GO_使能,bDriveStart:= NO_1,bRegulatorRealState=>Z_使能状态);
MC_复位[3](Axis:=Z_Axis,Execute:=GO_复位);
MC_点动[3](Axis:=Z_Axis,JogForward:=Z_点动_正转,JogBackward:=Z_点动_反转,Velocity:=点动速度,Acceleration:=加减速度,Deceleration:=加减速度);
MC_相对[3](Axis:=Z_Axis,Execute:=Z_GO_相对位 , Distance:=Z_相对位置, Velocity:=自动速度 , Acceleration:=加减速度, Deceleration:=加减速度,Busy=>Z_轴相对移动中);
MC_绝对[3](Axis:=Z_Axis,Execute:=Z_GO_绝对位 ,Position:=Z_绝对位置,Velocity:=自动速度,Acceleration:= 加减速度,Deceleration:= 加减速度,Busy=>Z_轴绝对移动中);
IF MC_绝对[3].Done THEN Z_GO_绝对位:=FALSE; END_IF
IF MC_相对[3].Done THEN Z_GO_相对位:=FALSE; END_IF
X_转换坐标:=LREAL_TO_INT(Z_当前坐标);
END_IF
MC_轴停止[1](Axis:=X_Axis,Execute:=GO_停止,Deceleration:=1000);
MC_轴停止[2](Axis:=Y_Axis,Execute:=GO_停止,Deceleration:=1000);
MC_轴停止[3](Axis := Z_Axis,Execute:=GO_停止,Deceleration:=1000);
P_急停 (CLK:=急停);
IF 急停=FALSE THEN
GO_停止 := TRUE;
END_IF
IF P_急停.Q THEN
GO_停止 := FALSE;
END_IF
6.人机程序编写