今天和大家分享一个使用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





