欧姆龙PLC CJ2M标准程序:控制12个伺服电机与气缸的模块化程序设计指南
欧姆龙, PLC CJ2M标准程序,一共控制12个伺服电机 ,气缸若干,包含轴点动,回零,相对与绝对定位,整个项目的模块都有:主控程序,复位程序,手动,生产计数,只要弄明白这个程序,就可以非常了解整个项目的程序如何去编写,从哪里开始下手,可提供程序问题解答,程序流程清晰明了;程序还有与机器人通讯,包含有触摸屏与电路图
拆解欧姆龙CJ2M标准程序就像拆乐高积木,关键得找准拼装顺序。这个控制12轴伺服的项目,主程序里藏着个"总指挥"——MAIN_LOOP块。先看这段热乎的初始化代码:
MOV #8000 D100 MOV #500 D101 FOR #0 TO 11 SERVO_CTRL[#0].ENABLE := TRUE SERVO_CTRL[#0].ACC_TIME := D100 SERVO_CTRL[#0].DEC_TIME := D101 NEXT这段硬核操作相当于给12个伺服挨个装上了油门和刹车。D100存的加速时间,D101管减速时间,像给每个电机定制了专属驾驶模式。注意那个循环结构,用FOR指令批量处理12轴参数,比逐个写12遍清爽多了。
手动模式里藏着个骚操作——轴点动用到了双线圈互锁。看这个JOG正转逻辑:
IF HMI_JOG_FWD[0] AND NOT HMI_JOG_REV[0] THEN AXIS[0].JOG_SPEED := 3000 AXIS[0].JOG_DIR := CW JOG_EXECUTE[0] := TRUE ELSE JOG_EXECUTE[0] := FALSE END_IF这里用AND NOT实现了正反转按钮的物理互锁,比用辅助继电器省了三个触点。注意速度单位是脉冲/秒,换算成实际转速得看伺服的电子齿轮比。有个坑我踩过:JOG_EXECUTE信号必须用微分指令触发,否则容易造成伺服使能冲突。
欧姆龙, PLC CJ2M标准程序,一共控制12个伺服电机 ,气缸若干,包含轴点动,回零,相对与绝对定位,整个项目的模块都有:主控程序,复位程序,手动,生产计数,只要弄明白这个程序,就可以非常了解整个项目的程序如何去编写,从哪里开始下手,可提供程序问题解答,程序流程清晰明了;程序还有与机器人通讯,包含有触摸屏与电路图
定位模块里藏着个时间魔术——绝对定位和相对定位共享同一套移动指令:
CASE HMI_OPERATION_MODE OF 0: AXIS[0].MOVE_ABS(POS_SET, 5000); 1: AXIS[0].MOVE_REL(INC_SET, 5000); END_CASE重点在参数传递方式,绝对定位用固定地址POSSET,相对定位用增量地址INCSET。5000是速度参数,实测发现超过8000容易触发过冲报警。回零程序里有个黑科技——Z相捕获用到了高速计数器中断,比普通搜索零点快三倍。
生产计数模块玩的是位偏移魔法:
MOV PROD_COUNT D200 SHL D200 4 ADD D200 1 MOV D200 PROD_COUNT这个用位移代替乘法的操作,把产量统计压缩到4位显示,同时用高12位存批次号。和机器人通讯那块,EtherCAT的PDO映射设置是关键,特别是同步管理器配置,搞错一个偏移量能让机器人跳机械舞。
整个程序最精髓的是状态机设计,用五个状态位实现模式切换:
STATE_REGISTER := INIT_MODE * 16#01 + MANUAL_MODE * 16#02 + AUTO_MODE * 16#04 + ERROR_MODE * 16#08 + RESET_MODE * 16#10;这种位操作的状态管理,比用多个BOOL变量节省了70%的内存空间。调试时可以用十六进制监控直接看出当前状态组合,比逐个查BOOL爽快得多。
