当前位置:首 页>> 技术文档 [阅读]
S7-200与紫金桥Modbus从机的通讯

一、概述

很多自动化工程师在实际应用中使用组态软件与PLC进行modbus通讯,组态软件作为主站PLC作为从站。组态软件来采集PLC数据使用这种方式是比较常见的。但是反向的利用modbus协议让PLC去读组态软件里的数据确有着特殊的意义,在某些工控场合也是很好解决方案。紫金桥软件在组态软件行业里首先推出了modbus server,既紫金桥modbus server可以作为modbus从机为其他软件和硬件设备提供数据,在这篇文章中对此功能我们详细地加以介绍。

二、S7-200 Modbus主站的实现

1、S7-200 Modbus 通信协议介绍

Modbus 是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口能。S7-200支持 Modbus 通信协议: S7-200 CPU 上的通讯口 0 和 1 (Port 0 和 Port 1)通过指令库支持 Modbus RTU 主站模式。

2、S7-200 Modbus主站的配置

西门子在 Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。要使用 Modbus RTU 主站指令库,须遵循下列步骤:

⑴安装西门子标准指令库

⑵按照要求编写用户程序调用 Modubs RTU 主站指令库 Modbus RTU 主站功能编程使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:

具体参数的解释如下:

EN使能:必须保证每一扫描周期都被使能(使用SM0.0)

Mode模式:常为1,使能 Modbus 协议功能;为0 时恢复为系统 PPI 协议

Baud波特率:设为9600,要与从站波特率对应

Parity校验:校验方式选择 0=无校验

Timeout超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),允许设置的范围为 1-32767。注意:这个值必须设置足够大以保证从站有时间响应。

Done完成位:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作

Error初始化错误代码(只有在 Done 位为1时有效):

0=无错误

1=校验选择非法

2=波特率选择非法

3=模式选择非法

⑶调用 Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求;

如图1所示,具体参数设置如下:

Slave从站地址:可选择的范围 1-247

RW读写操作:0=读, 1=写

注意:1. 开关量输出和保持寄存器支持读和写功能

2. 开关量输入和模拟量输入只支持读功能

Addr读写从站的数据地址:选择读写的数据类型 00001至0xxxx-开关量输出10001至1xxxx-开关量输入

30001至3xxxx-模拟量输入

40001至4xxxx-保持寄存器

Count通讯的数据个数(位或字的个数)

注意: Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令)

DataPtr数据指针:1. 如果是读指令,读回的数据放到这个数据区中

2. 如果是写指令,要写出的数据放到这个数据区中

Done读写功能完成位

图1西门子Modbus RTU 主站协议库

三、紫金桥软件Modbus从站的实现

1紫金桥modbus server的设置

Modbus 服务器可以把紫金桥数据库中的点映射为Modbus 设备的HR 寄存器,当前版本为3.0,支持串口和TCP/IP访问方式,支持HR区的读和写方式。也就是说支持03、06、16 号命令。

具体操作是先在紫金桥软件的安装目录中找到 ModbusSerSet.exe 并运行。其中左侧为变量配置显示区,它分为三列,分别是序号、数据库位号和Modbus 地址。后两列的意义是把某一个数据库位号和一个Modbus 地址建立映射关系。然后再调出系统设置对话框配置从机地址、串口等参数或以太网端口号、数据格式等。

2、通讯过程

配置完成后,先运行紫金桥软件然后在紫金桥软件的安装目录中找到 ModbusServer.exe 并运行。

从上面的通讯过程看到,S7-200与紫金桥modbus server通讯的响应速度为毫秒级的。