工控智汇

工控智汇

你了解Modbus协议吗?实例讲解如何使用Modbus协议进行通讯?

admin 131 118

今天和大家分享一个使用Modbus协议进行西门子S7-200PLC通讯的程序。

使用下面的例程你可以在S7-200CPU之间设置一个简单的Modbus通讯。

这个例子是关于Modbus功能码6的(写从站保持寄存器),也可以作为其他所支持的功能码:1,2,3,4,5,15和16的基本参数设置步骤。

要求:

要使用Modbus协议必须先在STEP7Micro/Win上安装指令库。

Modbus主站协议只支持STEP7Micro/及其以上版本.。

1.硬件设置

2.参数匹配

3.指令库的存储地址

4.保持寄存器值得传输

1.硬件设置

例程中的Modbus通讯是在两个S7-200CPU的0号通讯口间进行的(最好每个CPU都有两个通讯口)。在主站侧也可以选择相应库文件"MBUS_CTRL_P1"和"MBUS_MSG_P1"通过1号通讯口通信。通讯口1与Micro/WIN建立PG或PC连接,两个CPU的通讯口0通过PPI电缆进行连接(电缆的针脚连接为2,3,7,8)。


图1

2.参数匹配

对于MODBUS通讯,主站侧需要程序库"MBUS_CTRL"和"MBUS_MSG",从站侧需要程序库"MBUS_INIT"and"MBUS_SLAVE"。

在Micro/WIN中您需要为主站和从站新建一个项目,程序与参数设置见图.02。

必须要保证主站与从站的“Baud”和"Parity"的参数设置要一致,并且程序块"MBUS_MSG"中的"Slave"地址要与程序块"MBUS_INIT"中的"Addr"所设置的一致(见图.02)。

Micro/WIN“系统块”中设置的0通讯口的波特率与MODBUS协议无关("Mode"="1")。


图2

下面的表格列出了程序块各个参数选项及其意义

主站

MBUS_CTRL


表01

1)参看STEP7Micro/WIN帮助:"MODBUS主站执行MBUS_MSG时的错误代码MBUS_MSG"。

MBUS_MSG


表02

1)参看STEP7Micro/WIN帮助:"MODBUS主站执行MBUS_MSG时的错误代码MBUS_MSG"。

从站

MBUS_INIT


表03

2)最大的地址取决于所用CPU的类型及其最大值。

3)参看STEP7Micro/WIN帮助:“MODBUS从站协议的错误代码”。

MBUS_SLAVE

表04

3)参看STEP7Micro/WIN帮助:“MODBUS从站协议的错误代码”。

3.库的存储地址

项目完成后必须要在Micro/WIN中定义库的存储地址,当定义完存储区后,要保证在任何情况下不能再被其它程序所使用(主站侧:"DataPtr"+"Count"从站侧:"HoldStart"+"MaxHold")。

图3

图4

关于STEP7Micro/WINMOBDUS库的更多信息可以参看S7-200系统手册(EntryID1109582)和STEP7Micro/WIN帮助。

如何在STEP7Micro/WIN中找到ModbusRTU协议和USS协议操作库?

说明:

在STEP7Micro/WIN中,ModbusRTU协议和USS协议操作库位于操作树的“库”文件夹中。MODBUS函数库要求STEP7Micro/WIN为或更高版本。

图1:添加函数库

这些库是附加函数库,并非组态软件STEP7Micro/WIN的组成部分。

您如果需要使用ModbusRTU协议,必须购买“SIMATICSTEP7Micro/WINADDON:(USS+MODBUS)forSTEP7Micro/WIN32”软件。

这个可选附加函数库的订货号是6ES7830-2BC00-0YX0。

安装顺序:

先安装“STEP7Micro/”(包括库),然后安装“STEP7Micro/WIN”。

注意:

这个函数库包含可以在STEP7Micro/中使用的ModbusRTU协议库和USS协议库。

如果您安装了STEP7Micro/或者更高版本,那么操作库中就会包含下列函数:

对应端口0和端口1

对应端口0

对应端口0和端口1