一、需求介绍
西门子S71200/1500需要读取三菱FX2N的实时温度值(内存地址:D200)和实时压力值(内存地址:D201)。
二、需求分析三菱FX2N自带的是RS422的串行接口,而西门子S71200/1500自带的是以太网口,由于物理接口的不同,两个PLC之间无法直接通讯;
三菱FX2N的通讯协议是编程口协议,是一种串行接口协议,而西门子S71200/1500的通讯协议是S7协议,或者是ModbusTCP协议,是一种网络接口协议,由于通讯协议的不同,两个PLC之间无法直接通讯;
这里为了实现两个PLC之间的数据交换,就必须要解决物理接口和通讯协议不一致的问题。
三、硬件连接可以在三菱FX2N一侧加装硬件:NET30-FX,它能解决物理接口和通讯协议不一致的问题:
首先可以将三菱FX2N的RS422串行接口转成以太网口,解决了两个PLC物理接口不一致的问题;
其次可以将三菱FX2N的编程口协议转成ModbusTCP协议,解决了两个PLC通讯协议不一致的问题。
最终将NET30-FX、西门子S71200/1500,监控PC通过网线接到交换机。

这里,西门子S71200/1500需要作ModbusTCP的客户端,而三菱FX2N需要作ModbusTCP的服务端。
三菱FX2N通过NET30-FX,已经实现了ModbusTCP的服务端的功能,ModbusTCP和三菱FX2N内部寄存器之间的对应关系如下:
MODBUS地址
PLC内部寄存器地址
数据类型
计算公式
modbus功能号
最大指令数
000001~
输出线圈:Y0~
位
Ym=000001+m①
FC1(读线圈)
FC5(写线圈)
FC1:512
FC5:1
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+m③
FC2(读输入)
512
400001~
定时器:T0~
字
Tm=400001+m
FC3(读寄存器)
FC16(写寄存器)
FC6(写单一寄存器)
FC3:127
FC16:127
FC6:1
401001~
计数器:C0~C199
Cm=401001+m
411001~
计数器:C200~C255
Cm=411001+(m-200)*2④
401301~
特殊:D8000~
D8m=401301+m⑤
402001~
资料暂存器:D0~
Dm=402001+m
420001~
文件寄存器:R0~
Rm=420001+m
通过公式计算得出:
实时温度值D200对应的Modbus地址是402201;
实时压力值D201对应的Modbus地址是402202;
西门子S71200/1500可以通过调用通讯库中的MB_CLIENT指令实现ModbusTCP的客户端的功能:

MB_CLIENT指令参数中设置的IP地址(192.168.1.208)是NET30-FX的IP地址(NET30-FX的IP可以任意设置),并设置读取了Modbus地址402201(三菱FX2N的D200)开始的2个字存入开始的2个字中。
五、数据展示通过三菱FX2N的编程软件读取到的D200和D201的值如下:

通过西门子S71200/1500的编程软件读取到的和的值如下:

通过对比,数据完全一致,S71200/1500成功通过ModbusTCP的通讯方式读取了三菱FX2N的数据。