三菱FX系列PLC实现ModbusTCP通讯
1.实现方案
采用ComeMeal-FX模块实现ModbusTCP通讯,用于MES、SCADA、DCS等上位机系统以太网通讯三菱FX系列PLC,ComeMeal-FX模块适用于三菱FX1S、FX1N、FX2N、FX3U、FX3G、FX3S系列PLC的以太网扩展;ComeMeal-FX模块采用三通设计,不占用PLC通讯口,不对原系统做任何硬件和软件修改,即可通过本模块网口对PLC进行数据监控、操作和PLC编程等,同时原系统串口触摸屏通过模块扩展通讯口继续和PLC进行通讯,非常方便构建生产管理系统;
支持ModbusTCP服务器,支持FC1、FC2、FC3、FC5、FC15、FC6、FC16,网关内部将Modbus数据区自动映射至FX数据区,无需PCL额外配置和编程操作;
2.ModbusTCP通讯
ComeMeal-FX模块内部集成ModbusTCP通讯服务器,因此ModbusTCP客户机,如支持ModbusTCP的组态软件、OPC服务器、PLC以及实现ModbusTCP客户机的高级语言开发的软件等,可以直接访问三菱FX系列PLC的内部数据区,Modbus协议地址在模块内部已经被默认映射到FX系列PLC的地址区,实现的功能号包括:FC1、FC2、FC3、FC5、FC6和FC16。
ModbusTCP协议帧格式:
事务处理标识符 | 事务处理标识符 | 协议标识符 | 协议标识符 | 长度字段(高字节) | 长度字段(低字节) | 从站地址 | 功能号 | 数据地址(高字节) | 数据地址(低字节) | 指令数(高字节) | 指令数(低字节) |
0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 后面的字节数 |
2.1地址映射表
Modbus从站地址 | FX系列PLC内部软元件 | 数据类型 | 计算公式 | 功能号 | 最大指令数 |
000001~ | 输出线圈:Y0~ | 位 | Ym = 000001+DEC(m) ① | FC1(读线圈) FC5(写单个线圈) FC15(写多个线圈) | FC1:2000 FC5:1 FC15:32 |
005001~ | 特殊:M8000~ | M8m = 005001+m ② | |||
006001~ | 定时器线圈:T0~ | Tm = 006001+m | |||
007001~ | 计数器线圈:C0~ | Cm = 007001+m | |||
010001~ | 线圈:M0~ | Mm = 010001+m | |||
030001~ | 线圈:S0~ | Sm = 030001+m | |||
100001~ | 输入:X0~ | 位 | Xm = 100001+DEC(m) ③ | FC2(读输入) | 2000 |
400001~ | 定时器:T0~ | 字 | Tm = 400001+m | FC3(读寄存器) FC16(写寄存器) FC6(写单一寄存器) | FC3:125 FC16:125 FC6:1 |
401001~ | 计数器:C0~ | Cm = 401001+m | |||
401201~ | 计数器:C200~ | Cm=401201+(m-200)*2 ④ | |||
401301~ | 特殊:D8000~ | D8m = 401301+m ⑤ | |||
402001~ | 资料暂存器:D0~ | Dm = 402001+m | |||
420001~ | 文件寄存器:R0~ | Rm=420001+m ⑥ |
说明:
- Y点采用八进制编码方式,将点数值转换成十进制后,计算Modbus地址,如Y47,47(八进制)换成39(十进制),对应地址是000001+39=000040;
②、其中m表示M线圈标识号去掉8000的剩余数,如M8212时m=212;
③、X点采用八进制编码方式,将点数值转换成十进制后,计算Modbus地址,如X110,110(八进制)换成72(十进制),对应地址是100001+72=100073;
④、C200之后的计算器当前值为32位,故映射需要两个Modbus空间,例如C210,其m=210,对应的Modbus地址为401201+(210-200)*2=401221;
⑤、其中m表示特殊功能寄存器D标识号去掉8000的剩余数,如M8120时m=120;
⑥、此R寄存器,仅当FX3U机型(存在R寄存器的PLC机型)时可用,注意Modubs地址映射成6位;
2.2用ModScan32测试
1、运行ModScan32软件。
2、选择菜单Connection/Connect,选择Remote TCP/IP Server,输入ComMeal-FX的IP地址,Service端口为502;点击[OK]按钮,如图1所示。
图1
3、在子窗口“ModSca1”中设置Device ID为PLC的站地址(如1),功能号选择03:HOLDING REGISTER,Address =1301,Length = 100。
4、子窗口数据区显示401301~401400的16进制数据,其对应于三菱FX系列PLC的特殊寄存器D8000到D8100的数值,如图2所示。
图2
5、双击子窗口数据区的数据可以修改数值。
2.3WinCC通过ModbusTCP驱动连接ComeMeal-FX
1、打开Wincc软件,新建一个项目,右击“变量管理”,选择“添加新的驱动连接”,在弹出的对话框中选择“Modbus TCPIP.chn”,点击“确定”。
2、右击“Modbus TCPIP/IP 单元#1”选择“新驱动程序的连接”,新建一个名称,点击“属性”,弹出属性的对话框,在“CPU类型”选择“984”,在“服务器”中填入ComeMeal-FX的IP地址,点击确定。
3、右击“变量名称”,新建变量,这里我们新建一个D0变量,对应地址的设定请点击“选择”,弹出对话框,“区域”中选择“4x保持寄存器”,“4x”中填入“402001”。
