下面只讲解主要是伺服控制程序,其他程序,设置、HMI请参考完整案例
案例说明
PLC 本身没有直接和伺服做 MODBUS 通讯,依靠触摸屏中转读取伺服编码器脉冲Modbus‑RTU 协议
触摸屏的COM2 口对接三菱 FX‑PLC;COM1 口对接伺服驱动器;两个通讯的波特率、校验格式不能混淆
I O分配
X0 | 空 | Y0 | |
X1 | 启动 | Y1 | 端子分料 |
X2 | 停止 | Y2 | 端子上料 |
X3 | 急停 | Y3 | 端子护压 |
X4 | 端子分料原位 | Y4 | 托快抽取 |
X5 | 端子分料到位 | Y5 | |
X6 | 端子上料到位 | Y6 | 螺丝分料 |
X7 | 端子护压到位 | Y7 | 吸嘴上下 |
X10 | 托快抽取原位 | Y10 | 真空吸料 |
X11 | 托快抽取到位 | Y11 | 电批上下 |
X12 | 螺丝分料原位 | Y12 | 拧丝前后 |
X13 | 螺丝分料到位 | Y13 | 次品回收 |
X14 | 吸嘴上下原位 | Y14 | |
X15 | 吸嘴上下到位 | Y15 | 拧螺丝正转信号 |
X16 | 电批上下原位 | Y16 | 拧螺丝反转信号 |
X17 | 拧丝前后原位 | Y17 | |
X20 | 拧丝前后到位 | Y20 | |
X21 | 端子有料检查 | Y21 | |
X22 | 螺丝有料检测 | Y22 | |
X23 | 端子上料原位 | Y23 | |
X24 | 打螺丝检测OK | Y24 | |
X25 | 伺服报警 | Y25 | |
X26 | 扭矩限制 | Y26 | |
伺服接线
| 打螺丝伺服 | |
(CN1)I/O头接线 |
| 驱动器端 | PLC端 |
ZSPD+ | 5 | X26 |
ZSPD- | 4 | 0V |
ALRM+ | 28 | X25 |
ALRM- | 27 | 0V |
COM- | 14 | 0V |
SON | 9 | 0V |
TCM0 | 34 | Y15 |
TCM1 | 8 | Y16 |
COM+ | 11 | "+24V |
伺服参数设置
模式选择 P1-01:5 电子齿轮比分子 P1-44 :1600
电子齿轮比分母 P1-45 :10 逆向运转禁止 P2-15 :0 正向运转禁止 P2-16 :0 紧急停止 P2-17 :0
通讯站号 P3-00 :1 通讯波特率 P3-01 :波特率19200
通讯协议 P3-02 :8位偶校验1
其他需要设置参数关注完整案例
数据变量
程序编写
▼ ① 只有设备整体切换到手动模式(手动允许 GL 接通),并且操作人员在触摸屏按住,拧螺丝手动按钮
拧螺丝手动going接通,按住按钮伺服就转,松开按钮就断开
▼ ② 当设备气缸退回原点复位的时候,强制把手动、自动两个运行标志全部清零,伺服立刻停止转动。防止气缸在复位的同时伺服还在工作,发生机械碰撞,属于安全保护逻辑
自动模式和手动模式互锁,两个模式不能同时生效。只要自动模式启动,或者手动按钮按下,PLC 输出 Y15 高电平,伺服收到信号,电机开始正转拧螺丝
▼ ③ 操作人员触发自动启动信号,拧螺丝自动going自锁保持接通,Y15 输出,伺服电机开始转动
扭矩限制中 = ON:伺服检测到扭矩达标,螺丝已经压紧,X26 接通,扭矩限制中自锁开启;扭矩限制中的常闭触点断开,自动自锁回路断开,伺服立刻停止
扭矩超时无信号 = ON:伺服启动之后,超过设定时间螺丝始终没有顶紧,没有扭矩反馈,计时超时,自动模式强制停止,判定拧紧失败
▼ ④ 实际转动圈数在设定上下限区间之内,输出 K2,判定 OK 合格
上限 5 圈,下限 3 圈;实际 4 圈,判定 OK
实际圈数超过上限或者低于下限,输出 K1,判定 NG 不合格
▼ ⑤ 输出圈数计算完成pls:产生一个单扫描周期脉冲,给到主程序,通知整套系统本次拧螺丝已经结束并且给出判定结果
▼ ⑥ Y15 断开,伺服电机已经停转,并且上一轮的圈数计算已经完成的标志位没有接通,开启圈数计算;PLC 准备读取伺服编码器脉冲,换算电机转动圈数
▼ ⑦ DMOVP K0 脉冲差值:32 位脉冲差值寄存器清零,清除上一次的数据,防止干扰本次计算
MOVP K0 OK或NGout:OK‑NG 判定结果清零
伺服电机停止瞬间,伺服编码器脉冲数值会短暂抖动,不能立刻读取,等 T_ON_1 延时结束之后,脉冲数据稳定再采集,避免计算出错
▼ ⑧ 32 位减法指令;(拧紧结束之后的脉冲数值 −拧紧启动前脉冲数值 = 脉冲差值)
▼ ⑨ 伺服启动之前脉冲数值是 20000,拧紧结束之后脉冲 20500;脉冲差值 = 500;代表伺服编码器一共发出 500 个脉冲
▼ ⑩ DDIV 脉冲差值 K100 圈数:32 位除法;脉冲数值 ÷100 = 电机转动圈数;前面电子齿轮比已经设定好,伺服电机每转 1 圈反馈 100 个脉冲;接上例:500÷100=5,电机实际转动 5 圈
▼ ⑪ 脉冲变化大于 50 个脉冲,代表伺服确实有转动,计算结束接通,进入 OK‑NG 判定流程
▼ ⑫ 脉冲几乎没有变化,换算之后不到 0.5 圈,螺丝根本没有拧进去,触发圈数超时报错
▼ ⑬ DMOVP 拧后反馈脉冲 拧前反馈脉冲:把本次拧紧结束的脉冲值赋值给下一次启动的初始脉冲;作为下一次拧螺丝的计算基准
▼ ⑭ DMOVP 圈数 实际圈数out:把本次计算得到的实际圈数输出到 D230 寄存器,触摸屏实时显示圈数
调用FB块
制作HMI画面
Modbus 协议规则:4X 代表保持寄存器,40001 对应 4x1,寄存器地址编号从 40001 开始,威纶触摸屏填写的时候省略前面 40,只写后两位数字
▼ ① 4x281:实际寄存器地址就是 40281,伺服内部第 40281 号寄存器,用来存放实时扭力数据
▼ ② 4x367:实际寄存器地址 40367,伺服转速寄存器
▼ ③ 4x19:实际寄存器地址 40019,伺服编码器脉冲寄存器
▼ ④ 触摸屏把脉冲数据转发给 PLC 的 D422 寄存器
▼ ⑤ 操作人员在威纶触摸屏设置参数:圈数上限 5,下限 3,拧紧超时时间 5s,开启判定开关 M453;参数写入 PLC 的 D232、D234、D236 寄存器;同时触摸屏开启 Modbus 通讯,持续读取伺服的 3 个寄存器
好文分享:以下是所有文章合集,大家需要学习哪方面的内容可以参照学习,后续一直都为大家持续更新
完整PLC程序+HMI+IO 清单 不同网盘链接如下,大家需要的可以转存查看,之前在评论区分享人太多分享不过来,所以直接分享给大家
百度网盘案例链接:
夸克网盘案例链接: