基于三菱PLC 的轮询通信方式在分切机上的应用
2024-04-23师锦航
师锦航
(陕西国防工业职业技术学院,陕西西安 710300)
0 引言
分切机是一种将宽幅纸张、铝箔、无纺布等各种薄膜材料分切成多条窄幅材料的机械设备,在本例中分切机的收放卷由3 台电机完成,分别为:开卷电机、内卷电机和外卷电机,3 台电机分别受3 台变频器控制,系统构成如图1 所示。
图1 系统构成
FX5U PLC 与3 台变频器之间采用RS-485 串行通信方式,通信协议选择Modbus RTU。
Modbus RTU 协议是一种开放的串行通信协议,广泛应用于工业控制设备中。Modbus RTU 协议通过RS-232 或RS-485 串行接口,在主站与从站设备之间进行数据传输。任何使用Modbus RTU 通信协议的网络系统都将有一个Modbus 主站和至少一个Modbus 从站。在本项目应用中,三菱FX5U 系列PLC 作为Modbus RTU 主站,3 台变频器作为从站。
分切机设备运行时,FX5U PLC 既要实时地读取3 台变频器的运行频率、输出电流等运行状态数据,也要向3 台变频器写入频率、正转运行、反转运行指令等控制数据。
1 变频器Modbus 地址说明
主站PLC 需要读取的变频器状态数据与Modbus地址对应关系见表1,Modbus 地址7000H~7006H,共7 条数据,需要从3 台变频器读取的数据都相同,包括变频器的运行频率、设定频率、母线电压等,这些数据会在监控触摸屏上显示,以便现场设备操作人员了解设备的运行状态,当设备发生故障时设备维护人员也可通过这些数据分析故障原因。
表1 Modbus 读取地址
对于开卷变频器,PLC 向变频器写入的数据包括控制字和频率百分比。将变频器设置为速度控制模式,通过地址1000H 改变运行频率,通过地址7311H 发送控制字,写入数据与Modbus地址对应关系见表2。
表2 开卷变频器Modbus 写入地址
对于内卷和外卷变频器,除了需要写入频率百分比和控制字以外,还需要写入转矩百分比。将变频器设置为速度限幅的转矩控制模式,通过地址4003H 改变输出转矩百分比,写入数据与Modbus 地址对应关系见表3。
表3 内/外卷变频器Modbus写入地址
2 PLC 编程指令说明
对于三菱FX5U PLC,在进行Modbus RTU 通信时,需要用到ADPRW指令,通过执行ADPRW 指令使Modbus 串行通信的主站向从站发送功能码,以进行数据的读取及写入。ADPRW 指令格式如图2 所示,指令共包含6 个操作数,分别是S1~S6。ADPRW 指令各操作数含义见表4。
表4 ADPRW 指令各操作数含义
图2 ADPRW 指令格式
指令编程示例1 如图3 所示,当位变量M300 接通时执行ADPRW 指令,使用功能码06,PLC 向变频器(站地址为1H)的Modbus 地址7311H 写入控制字01H(控制变频器正转运行)。
图3 指令编程示例1
从M10 开始的3 个位地址即M10、M11、M12,用于指示ADPRW 指令的运行状态,指令执行时M10=1(否则M10=0),指令正常结束时M11=1(开始执行时M11=0),指令异常结束时M12=1(开始执行时M12=0)。
指令编程示例2 如图4 所示,当位变量M300 接通时执行ADPRW 指令,使用功能码03,PLC 读取变频器(站地址为1H)从7000H 开始的连续7 个Modbus地址(即7000H~7006H)的数据,并将读取到的值存入D210 开始的7 个寄存器中。同样的,从M10 开始的3 个位地址即M10、M11、M12,用于指示ADPRW 指令的运行状态,内容同上。
图4 指令编程示例2
3 采用轮询编程方式的程序结构
轮询方式就是PLC 依次循环执行多条通信指令,通过轮询方式可以保证同一时刻只有一条指令在执行,并可根据逻辑条件进行轮询跳转。
采用轮询编程方式的程序结构如图5 所示,当PLC启动时SM402 接通一个扫描周期,使位变量M100 置位,首先执行第一条ADPRW 指令,当该指令结束时(正常结束标志M11 或异常结束标志M12 产生上升沿)置位M101、复位M100。M101 置位后程序再执行第二条ADPRW 指令,当指令结束时(M14 或M15 产生上升沿)再次置位M100 并复位M101,M100 置位后程序又回到第一条ADPRW 指令继续执行,如此依次循环执行每一个ADPRW 指令。
图5 采用轮询编程方式的程序结构
4 分切机通信程序设计
分切机通信程序设计采用了轮询方式,在图6 程序中SM402 为PLC 运行后接通一个扫描周期的特殊继电器,利用该继电器可以进行程序初始化,例如本程序中置位M100,开始进行与3 台变频器的Modbus RTU 轮询通信。
图6 通信程序1
当位变量M100 接通后首先依次执行3 个ADPRW指令,使用功能码03 读取3 台变频器的运行状态数据,分别存入D210、D220、D230 起始的7 个数据寄存器内。
当第三条ADPRW 指令执行完成后,根据位变量M0 的状态执行轮询跳转,M0=1 表示设备自动启动运行信号被触发(置位M200),M0=0 表示设备停止运行信号被触发(置位M300)。
在设备自动运行时位变量M200 接通,程序跳转至如图7 所示的轮询程序。程序依次执行多个ADPRW指令,通过功能码06 向3 台变频器写入控制字、频率百分比和转矩百分比数据,在最后一条ADPRW 指令执行完成后置位M100,程序又返回到第一条ADPRW指令继续轮询。
图7 通信程序2
当设备停止时位变量M300 置位,程序跳转至如图8 所示的轮询程序。程序依次执行多个ADPRW 指令,通过功能码06 向3 台变频器写入控制字00H(控制变频器停止),在最后一条ADPRW 指令执行完成后置位M100,程序又返回到第一条ADPRW 指令继续轮询。
图8 通信程序3
5 结束语
在分切机设备控制系统中,通过使用轮询方式编写的Modbus RTU 通信程序实现了PLC 与多台变频器之间的数据传输,一台FX5U 系列PLC 作为Modbus主站,3 台变频器作为Modbus 从站,PLC 不仅需要实时地读取变频器的运行状态数据,也需要不断地向变频器写入控制数据。
采用轮询方式编写的通信程序不仅可以提高程序运行的稳定性,也保证了通信数据传输的可靠性。在实际应用编程时,需要注意轮询程序的启动(本例中使用特殊继电器SM402 启动)和跳转(本例中使用位变量M0 跳转),也要注意轮询程序的返回,当程序执行到最后一条ADPRW 指令后使其返回到第一条ADPRW 指令位置继续开始循环。