测试公司:烟台东润科技股份有限公司
一、 测试准备
1.ABB AC900F CPU 1台
2.S7-1200 CPU 2台
3.Freelance2016 SP1组态软件
4.TIA V14软件
5.modscan和modsim(Modbus Slave)调试工具
注:
1)Modbus TCP通讯区分为服务器和客户机,没有主从之分。
2)客户机主动请求数据,服务器进行响应。
3)modscan为服务器测试工具,Modbus Slave和modsim为客户机测试工具;
4)本测试过程同时适用于西门子S7-1500 PLC控制系统。
二、 AC900F使用Modbus TCP从站(服务器)和S7-1200使用MB_CLIENT(客户机)进行
Modbus TCP通讯
(一)和S7-1200系统进行Modbus TCP通讯,ABB Freelance2016 SP1配置组态
1.ABB Freelance2016 SP1软件的安装及基本组态可以参考ABB Freelance2016的基础教程,硬件组态
添加Modbus TCP通讯接口
2.Modbus TCP服务器端配置界面,定义接口名称,服务器端口默认502,勾选使用访问控制,访问
控制界面设置客户机端的IP地址172.16.1.21。
3.程序块内程序,添加一个8回路读程序块,以此为例
定义好功能块名称和功能块连接的接口名称(F2选择通讯接口名称),起始地址为Modbus标准地址,0相对应40001,寄存器数量为通讯数据量,我们将测试对40001~40008的地址进行读测试。
测试程序
4.说明:
1)ABB Freelance2016只能添加一个Modbus TCP从站(服务器),每个Modbus TCP从站可以
设置10个连接的客户机。
2)每个客户机数据通讯以寄存器地址进行区分。
(二)和S7-1200系统进行Modbus TCP通讯,S7-1200配置组态
1.添加新设备
2.定义设备网络和IP地址
3.核对硬件标识符为
4.CPU属性-保护-连接机制,勾选允许访问
5.激活系统内置定时脉冲
6.添加全局通讯接口数据块DB1,名称TCON_1,新建变量TCON,数据类型TCON_IP_V4
7.添加全局数据块DB2,名称:数据交换,去除优化块的访问,编译后出现绝对地址;
8.在OB1组织块编写通讯主程序,添加MB_CLIENT
功能块MB_CLIENT的参数含义如下表:
9.说明:
1)MB_CLIENT块使用中,STATUS状态代码可以实时判断目前的通讯状态,可将代码采集到
人机界面实时判断通讯状态;
2)修改通讯接口数据时,出现8200故障代码,需要将CPU进行停止/启动操作或断电重启
方可恢复;
3)STATUS状态代码定义一栏:
三、 AC900F使用Modbus TCP主站(客户机)和S7-1200使用MB_SERVER(服务器)进行
Modbus TCP通讯
(一)和S7-1200系统进行Modbus TCP通讯,S7-1200配置组态
1.添加新设备
2.定义设备网络和IP地址
3.核对硬件标识符为
4.CPU属性-保护-连接机制,勾选允许访问
5.添加全局通讯接口数据块DB1,名称TCON_1,新建变量TCON,数据类型TCON_IP_V4
6.添加全局数据块DB2,名称:数据交换,去除优化块的访问,编译后出现绝对地址;
7.在OB1组织块编写通讯主程序,添加MB_SERVER
功能块MB_CLIENT的参数含义如下表:
8.通讯测试
客户机采用Modscan软件测试,Modscan做 Modbus TCP Client 测试软件,是第三方软件。 Modscan软件设置:
将测试电脑的IP地址设置成172.16.1.60,打开Modscan软件,在Modscan的“Setup->View Definition”中设置功能码、起始地址、长度等,如图4.所示。
图4.设置“Data Definition”参数
在“Connection->connect...”中打开连接属性对话框,选择“Remote modbus TCP Server”,设置服务器的IP地址,端口号,如图5.所示。
图5.设置连接属性
注意:用Modsscan32做客户机不需要考虑Device ID和服务器一致的情况,服务器自动响应客户机的Device ID。
9.说明:
1)MB_CLIENT块使用中,STATUS状态代码可以实时判断目前的通讯状态,可将代码采集到
人机界面实时判断通讯状态;
2)修改通讯接口数据时,出现8200故障代码,需要将CPU进行停止/启动操作或断电重启
方可恢复;
3)Modbus地址的对应关系
4)“MB_SERVER”指令允许到达的Modbus功能(FC01、FC02、FC04、FC05、FC15)直接读
取和写入访问S7-1200CPU的过程映像输入/输出区(数据类型:BOOL和WORD),通过Modbus功能代码(FC03、FC06和FC16)将到达的Modbus消息写入Modbus保持寄存器或从寄存器中读取(可通过MB_SERVER指令的参数“MB_HOLD_REG”指定保持寄存器),保持寄存器的大小(MB_HOLD_REG参数)必须大于1个字节,详细参考下表:
表:Modbus地址的对应关系
5)STATUS状态代码定义一栏:
(二)和S7-1200系统进行Modbus TCP通讯,ABB Freelance2016 SP1配置组态
1.ABB Freelance2016 SP1软件的安装及基本组态可以参考ABB Freelance2016的基础教程,硬件组态
添加Modbus TCP通讯接口
2.Modbus TCP客户端配置界面,定义接口名称,服务器端口默认502,访问控制界面设置服务器的
IP地址172.16.1.21。
3.程序块内程序,添加一个8回路写程序块和一个8回路读程序块,以此为例
定义好功能块名称和功能块连接的接口名称(F2选择通讯接口名称),起始地址为Modbus标准地址,0相对应40001,寄存器数量为通讯数据量,我们将测试对40001~40008的地址进行读测试。
测试程序
4.说明:
1)ABB Freelance2016最多可以添加20个Modbus TCP主站(客户机)。
2)服务器可以采用Modbus Slave软件测试,Modbus Slave 做 Modbus TCP Server 测试软
件,是第三方软件。