三、Modbus通讯的使用方法
(一)、地址映射的参数配置
通讯模块内集成 ModbusTCP 通讯服务器, 因此 ModbusTCP 客户机, 以及实现 ModbusTCP 客户机的高级语言开发的软件等, 可以直接访问S7 系列 PLC 的内部数据区。
打开软件设置适配器参数,如下图:
1、modbus地址区中,如图可知:数据区域有四种选择分别为:
? Coil——输出线圈 (Q0.0-QX.X)
? InputCoil——输入线圈 (I0.0-IX.X)
? InputRegisters——输入寄存器 (MW0-MWx;AIW0-AIW62;AQW0-AQW62;SW0-swx;SMW0-SMWx;PW0-PWx)
? HolddingRegisters——保持寄存器(VW0-VWX;DB1.DBW0-DBx.DBWx)
2、起始地址的对应关系
如图所示:起始地址为0,终止地址为125时,
当起始地址为0时则对应的modbus地址为“x0001”,终止地址为“x0126”。当起始地址为1时则对应的modbus地址为“x0002”,终止地址为“x0127”。
1、S7PLC地址区中数据区域的对应设定。
? 输出线圈Coil只对应S7中输出Q
? 输入线圈InputCoil只对应S7中的输入I
? 输入寄存器InputRegisters对应:
▲S7-200中
M区 MW0到MW30
AI区 AIW0到AIW62
AQ区 AQW0到AQW62
S区 SW0到SW30
SM区 SMW0到SMWX
▲S7-300中
PW区 PQW0到PQWX/PIW0到PIWx
MW区 MW0D到MWX
? 保持寄存器HolddingRegisters对应:
▲ S7-200中
V区 vw0到vwx
▲ S7-300中
DB区 DB1.DBW0到DBx.DBWX
2、注意事项及使用规则
① 对于200系列PLC而言,V区对应DB1,偏移地址以字节为单位。如: DB1.DBW100则为VW100。
② 对于字映射(3区和4区),必须以125个字为单位,进行块映射。
③ 对于位映射(0区和1区),必须以2000个位为单位,进行块映射。
④ 要考虑两个映射块之间的跨区问题,保证映射块之间的大小,防止跨区。
⑤ 可采用“自动分配映射地址”的方法,进行规避。
(二)举例验证
用Mbpoll接口软件测试读取客户机(NETS7)参数。
(1)读取200系列PLC 各区数据(无需进行程序的编写)
所需:CPU 124XPplc一台
适配器 NET-MPI 一个
网线 标准网线一根
硬件连接方式如下图:
①读取V区数据,vw100
适配器参数设置,读取vw100开始的125个字到modbus地址40001到40125。如下图:
通寻验证:
▲ 读取从站vw100数据
▲写入数据到vw114以后地址中。
② 读取M区数据,MW0
适配器参数设置,读取MW0开始的125个字到modbus地址30001到30125。注意:200中M区地址为MW0--MW30,参数设置如下图:
通寻验证:
▲ 读取从站MW0-----MW30的数据
③读取S区数据,SW0——sw30
适配器参数设置,如下图
通寻验证:
▲ 读取从站MW0-----MW30的数据
④读取AI区数据,AIW0——AIW62
适配器参数设置,如下图:
通寻验证:
▲ 读取从站AIW0-----AIW10的数据
⑤读取AI区数据,AQW0——AQW62
适配器参数设置,如下图:
通寻验证:
▲ 读取从站AQW0-----AQW10的数据
(2)读取300系列PLC 各区数据(无需进行程序的编写)
所需: CPU: UN314-2ptp 一台
适配器:net--mpi 一个
网线: 标准网线 一根
硬件连接,如下图:
①读取多个DB区数据
▲设置适配器参数
读取DB1.DBW0起始地址数据125个到40001到40125
读取DB2.DBW10起始地址数据170个到40130到40300
▲通讯验证
读取或写入数据:DB1.DBW0---DB1.DBW10
▲通讯验证
同时读取或写入到DB1、DB2区中。
DB1.DBW0---DB1.DBW10
DB2.DBW10---DB2.DBW20
②读取M区数据
适配器参数设定,如下图:
▲通讯验证
读取MW0--mw10数据到30001——30006
总结:
通过上述试验验证,该适配器,较之前相比,功能强大,灵活性高,可实现多区域数据的读取与写入,适应广泛。
(完)