S7-200实现MODBUS通讯
在EVIEW触摸屏和 S7-200 CPU 之间建立一个简单的 Modbus 主-从通讯。
在S7-200控制系统应用中,Modbus RTU从站指令库只支持CPU上的通讯0口(Port0)。要实现Modbus RTU通讯,需要
Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。 一、基本过程如下:
(一)使用Step7-Micro/WIN V3.2以上版本。
(二)安装Micro/WIN32 V3.2 Instruction Library(指令库)软件包,Micro/WIN的指令树中如图1所示。
图1
(三)编程
使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。 1、 MBUS_INIT指令(初始化从站)
MBUS_INIT指令使能和初始化或禁止Modbus通讯,MBUS_INIT指令必须无错误的执行,才能够使用MBUS_SLAVE指令。
2、 MBUS_SLAVE指令
MBUS_SLAVE指令用于服务Modbus主站的请求,必须在每个循环周期都执行,以便检查和响应Modbus请求。
编程如图2所示,
图2
二、注意事项
(一)调用Step7-Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是
相应库的子程序和中断程序所要用到的变量存储空间。如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。选重目录树中的程序块,选择右键菜单里的库存储区,设置如图3所示;
(二)由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据区不
能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通讯(其中及可能造成Error的值为10(从属功能未启用))。注意Modbus 中的保持寄存器区按“字”寻址,即MaxHold规定的是VW而不是VB的个数。
四、补充
(一)Modbus从站协议执行错误代码
错 误 代 码 0 1 2 3 4 5 6 7 8 9 10 (二)Modbus从站所支持的地址对应如下
Modbus地址 0x1-0x128 1x1-1x128 3x1-3x32 4x1开始的地址
S7-200地址 Q0.0-Q15.7 I0.0-I15.7 AIW0-AIW V存储器的保存积存器 无错误 内存范围错误 非法波特率或奇偶检验 非法从属地址 非法Modbus参数值 保持寄存器与Modbus从属符号重叠 收到奇偶检验错误 收到CRC错误 非法功能请求/功能不受支持 请求中的非法内存地址 从属功能未启用 说      明