02.29 S7-1200 做 Modbus Tcp Server (服务器)

Modbus TCP是标准的网络通信协议,通过CPU上PN接口进行TCP/IP通信,不需要额外的通信硬件模块,Modbus TCP使用开放式用户通信连接作为Modbus通信路径,所支持的混合客户机和服务器连接数最大为CPU所允许的最大开放式用户通信连接数8个。

软件 STEP7 V11 SP1版本开始,S7-1200CPU 从Firmware V1.0.2开始,不再需要安装Modbus TCP的库文件,可以直接调用Modbus TCP的库指令“MB_CLIENT”和“MB_SERVER”使用实现Modbus TCP通信功能,如图1.所示。

S7-1200 做 Modbus Tcp Server (服务器)

图1. Modbus TCP的库指令

“MB_SERVER”指令将处理Modbus TCP客户机的连接请求、接收Modbus功能的请求并发送响应。

1.调用MB_SERVER通信指令,进入 “Program blocks” > “OB1” 主程序中调用,设置连接ID、IP端口等参数,如下图10.所示。

S7-1200 做 Modbus Tcp Server (服务器)

图10.调用MB_SERVER通信指令

功能块参数意义如下表5.

S7-1200 做 Modbus Tcp Server (服务器)

表5. 功能块“MB_SERVER”参数

2.MB_DATA_PTR数据块的新建

通过“Program blocks”>“Add new block”,选择“Data block”创建 DB 块,选择“标准与S7- 300/400兼容” ,点击“OK”键,定义数据区为100个字的数组,如图11.所示。

S7-1200 做 Modbus Tcp Server (服务器)


S7-1200 做 Modbus Tcp Server (服务器)

图11.新建MB_DATA_PTR数据块


3.Modbus地址的对应关系

“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个字节,详细参考表6.。

S7-1200 做 Modbus Tcp Server (服务器)

表6.Modbus地址的对应关系

4.客户机端 Modscan32 软件设置

注意:客户机采用Modscan32软件测试,Modscan32 做 Modbus TCP Client 测试软件,是第三方软件,可以从 internet 网络上下载。

将测试电脑的IP地址设置成192.168.0.210,打开Modscan32 软件,在Modscan32的“Setup->Data Definition”中设置功能码、起始地址、长度等,如图12.所示。


S7-1200 做 Modbus Tcp Server (服务器)

图12.设置“Data Definition”参数

在“Connection->connect...”中打开连接属性对话框,选择“Remote modbus TCP Server”,设置服务器的IP地址,端口号,如图13.所示。

S7-1200 做 Modbus Tcp Server (服务器)


S7-1200 做 Modbus Tcp Server (服务器)

图13.设置连接属性

注意:用Modsscan32做客户机不需要考虑Device ID和服务器一致的情况,服务器自动响应客户机的Device ID。

5.通讯测试

S7-1200作服务器,客户机Modscan32用FC03功能码读取服务器的两个字,设置客户机和服务器的功能、起始地址、端口等参数相对应,具体设置如图13.和14.所示,

S7-1200 做 Modbus Tcp Server (服务器)

图14.S7-1200作服务器

通讯结果如下图15.所示,Modscan32从服务器读到数据10,20到客户机的DB4.DBW0和DB4.DBW2区域。

S7-1200 做 Modbus Tcp Server (服务器)

图15.FC03通讯结果

用功能FC15向服务器的Q0.0~Q0.7写8位数据,设置连接参数,Modscan32设置结果如下图16.所示。

S7-1200 做 Modbus Tcp Server (服务器)

图16.使用FC15通讯,设置Modscan32

测试结果,服务器侧直接对应过程映像输出区,00001~00008对应Q0.0~Q0.7,如下图17.所示。


S7-1200 做 Modbus Tcp Server (服务器)

图17. 使用FC15通讯测试结果

6.HR_Start_Offset背景参数

HR_Start_Offset是类型为字,用于指定Modbus保持寄存器的起始地址,存储在MB_SERVER背景数据块中,默认值是0,可以通过编程将值写入HR_Start_Offset。以上面FC03功能读2个字为例,将HR_Start_Offset的偏移量设置成2,其他参数不修改,HR_Start_Offset偏移前后地址对应关系如下表7,编程调用和结果如图18.和19.所示。

S7-1200 做 Modbus Tcp Server (服务器)

表7. HR_Start_Offset偏移前后地址对应关系

编程调用如下图18.所示

S7-1200 做 Modbus Tcp Server (服务器)

图18.HR_Start_Offset的偏移量设置

通讯结果如下图19.所示

S7-1200 做 Modbus Tcp Server (服务器)

图19. 通讯结果

7.MB_SERVER参数STATUS的查询参考下面列表8.

S7-1200 做 Modbus Tcp Server (服务器)

表8.MB_SERVER参数STATUS

除了上面列出的错误外,也可以从底层传输通信指令(TCON、TDISCON、TSEND和TRCV)返回错误,参考相应指令的错误代码。

说明:Modbus Slave做 Modbus TCP server 测试软件,Modscan32 做 Modbus TCP Client 测试软件,两者都是第三方软件,可以从 internet 网络上下载。


分享到:


相關文章: