S7-200的串口Modbus通信被广泛应用于S7-200与仪表、变频器、HMI及第三方PLC的数据交换。S7-200 Modbus串口通信指令本身使用简单,但由于应用范围广泛,所以在应用中会遇到各种问题。
Modbus是公开通信协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式,在OSI七层协议模型中只到1,2层。Modbus具有两种串行传输模式,ASCII和RTU。它们定义了数据如何打包、解码的不同方式。支持Modbus协议的设备一般都支持RTU格式。通信双方必须同时支持上述模式中的一种。Modbus是一种单主站的主/从通信模式。Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,从站的地址范围为0-247,其中0为广播地址,从站的实际地址范围为1-247。Modbus通信标准协议可以通过各种传输方式传播,如RS232C、RS485、光纤、无线电等。在S7-200 CPU通信口上实现的是RS485半双工通信,使用的是S7-200的自由口功能。
S7-200通过以下方式支持Modbus通信协议:S7-200 CPU上的通信口0(Port0)通过指令库支持Modbus RTU从站模式。S7-200 CPU上的通讯口0和1(Port0和Port1)通过指令库支持Modbus RTU主站模式。
一、s7200 PLC MOdbus rtu通讯基础: RTU主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对Port0和Port1有效。该指令库将设置通信口工作在自由口模式下。
RTU主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
RTU主站库对CPU的版本有要求。CPU的版本必须为2.00或者2.01(即订货号为6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的S7-200 CPU不支持。
使用Modbus RTU主站指令库,可以读写Modbus RTU从站的数字量、模拟量I/O以及保持寄存器。
要使用Modbus RTU主站指令库,须遵循下列步骤:
安装西门子标准指令库;
按照要求编写用户程序调用 Modubs RTU 主站指令库 ;
二、主站和从站功能块
1、主站控制功能块和数据读写功能块可以参见帮助文件,写的非常详细!
三、注意及常见问题
1、MODBUS通讯是一种轮询的方式,即一次只能读取一个站的数据。所以在触发读取数据的时候要用脉冲触发,而非长期为1去触发。
2、在读取多个从站的时候,要注意每个站的轮询,轮询程序没做好,将导致通讯超时得错误,从而无法读取数据。
3、参数设计的时候,奇偶校验,通讯速率得一致,站地址不能有冲突。
4、主站与从站的数据区必须一致。
5、详细故障可以通过程序块得故障代码查询。
S7-200 PLC比较300 plc实现Modbus的优点:
虽然s7-200在实现modbus通讯时使用的是s7-200的自由口功能,借口采用rs485,或通过适配器转换成rs232接口类型不如cp341的丰富,但其实现modbus功能上无需组态和额外购买组件,所以实现起来既简单而且成本低廉,在比较低端的场合是不错的选择.
S7-300plc+cp341的优点:
1.由于cp341可以安装在etm200站上通过profibus方式与主站相通,此方案适合于较大型系统进行modbus通信设计和改造.
2.cp341的接口类型多,包含rs232,rs422/rs485.
从MODBUS RTU库中调用MODBUS子程序后需要给其分配库存储区。即选择项目目录树下的“程序块”->“库”,点击鼠标右键,在弹出的菜单中选择“库存储区(M)...”,在弹出的对话框中分配库存储区地址,此地址不要与其他程序使用的存储区重叠。
1.地址选择:由于指令库占用一定地址空间,编程时要注意,可以使用建议地址,不会有冲突(注意:间接接寻址检测不到)。
7-Micro/WIN V4.0以上版内部已经带有新的指令库,但在未安装西门子Instruction Library软件包的情况下,不能显示出来使用。
要使用西门子的标准指令库,必须先安装西门子的指令库软件包Instruction Library。安装了Instruction Library之后,只要安装的STEP7-Micro/WIN版本是最新的,就能获得相应版本的新指令库。安装Micro/WIN的升级包(Service Pack)也会更新指令库的版本。
需要下载:
Toolbox_V32-STEP7-Micro WIN 32 Instruction Library
间逻辑地应连接好。
S7-300、CP341作主站时需要安装的软件及功能块注意事项:
串行通讯模板的驱动程序,安装后才能驱动PTP模板,STEP7中才能使用相应功能块。CP341做主站时还需要安装MODBUS MASTER的驱动协议。
另外,功能块中R-TYP必须为大写如“X”(extended data block),“E”(I区),“A”(Q区),LEN的内容要按通讯功能码来填写,如功能码“01”--》长度“6”。
(转载)