ModbusRTU通讯协议在S7-200 PLC中的应用
摘 要:本文介绍了用ModbusRTU测试软件ModScan32与西门子S7-200 PLC之间的通讯建立与测试。
关键词:S7-200 ModbusRTU 主站 从站
西门子S7-200 PLC具有低成本、可靠性高、技术成熟、能适应各种恶劣的环境等特点在成套设备中得到广泛的应用。随着工业控制的飞速发展,控制已经从分散控制发展向集中控制型的集散控制系统需要通过S7-200检测现场设备的运行数据并进行控制,采用ModbusRTU协议是一个不错的选择,不用另外增加任何设备,只需要在S7-200中进行编程设置即可。接下来我们通过实例来介绍ModbusRTU测试软件ModScan32与西门子S7-200 PLC之间的通讯建立与测试。
一、Modbus RTU协议与S7-200相互关系简介
目前支持Modbus通信的DCS、PLC系统和过程仪表大都采用基于串行接口的Modbus RTU模式,西门子公司提供了针对西门子PLC Modbus RTU的协议库。极大的简化了Modbus RTU通信的开发,以便快速实现二者的相关应用。通过Modbus RTU从站指令库,使得S7-200可以作为Modbus RTU中的从站,以实现与Modbus主站设备的通信。
二、软硬件准备
1.软件:ModScan测试软件、Step7-MicroWin V4.0SP06编程软件、S7-200Modbus指令库文件。
2.硬件:PC机、西门子S7-200PLC(CUP224XP CN REL02.01)、PPI编程电缆、USB-TO-Serial电缆、RS232转RS485模块。
3.焊接RS485通讯电缆一根(Date+ →DB9 3引脚、Date- →DB9 8引脚)、RS485通讯电缆连接200PLC的Port0端口。
三、使用Modbus 指令库需要注意事项
1.使用Modbus指令库,对STEP7 Micro/win软件版本的要求。软件版本必须是V3.2或者以上版本。
2.S7-200 CPU必须是固化程序修订版2.00或最好支持Modbus主设备协议库。
3.目前市场已经推出针对端口0和端口1的Modbus RTU主站指令库,以及
针对端口0的Modbus RTU从站指令库,故在使用时一定要区分开。
4.一旦CPU的端口被用于Modbus RTU主站或从站协议通讯时,该端口就无法用于其他用途,包括与STEP7 Micro/win通讯。当需要与STEP7 Micro/win通讯时把CPU打到STOP位即可通讯。
5.利用指令库编程前首先应为其分配存储区,否则Step7-MicroWin在编译时会报错。分配存储区时在对话框输入库存储区的起始地址,注意避免该地址与程序中其他地址重复使用,也可以点击“建议地址”按钮,系统将自动计算存储区分配地址。
四、S7-200 PLC控制器组态
我们是用ModScan32做主站来读取从站(S7-200)的数据。所以在S7-200 PLC里面只用Modbus从站协议指令, Modbus从站协议指令包括MBUS_INT和MBUS_SLVE两条协议指令。如图1
图 1
1.MBUS_INT指令,用于启用和初始化或停止Modbus从站通信。在使用MBUS_SLVE指令之前,必须执行MBUS_INT指令。在指令完成后立即设定“完成”位,才能执行下一条指令。MBUS_INT指令引脚含义如下:
1.1EN:西门子指令使能位。因为是初始化用触点SM0.1即可。
1.2Mode:“模式”参数。用于启动和停止Modbus通信,允许使用以下两个数值:1-启动,2-停止。
1.3Address:“地址”参数。输入Modbus从站地址,取值范围为1~247.
1.4Baud:“波特率”参数。Baud:“波特率”参数可选1200、2400、9600、19200等。
1.5Parity:“奇偶校验”参数。0-无校验;1-奇校验;2-偶校验。
1.6Delay:“延时” 参数。附加字符间延时,默认值为0。
1.7MaxIQ:“最大I/Q位”参数。设置参与通信的最大I/O点数,S7-200的I/O映像区为128/128,默认值为128。
1.8MaxAI:“最大AI字”参数。设置参与通信的最大AI通道数,可为16或32。
1.9MaxHold:设定供Modbus地址4xxxx使用的V存储器中的字保持寄存器数目。
1.10HoldStart:保持寄存器区起始地址,以&VBx指定。
1.11Done:初始化完成标志,成功初始化后置1。
1.12Error:初始化错误代码。0-无错误。
2.MBUS_SLVE指令,用于Modbus主设备发出请求服务,并且必须每次扫描时执行,以便允许该指令检查和回复Modbus请求。MBUS_SLVE指令无输入参数,在每次的扫描EN开启时执行。MBUS_SLVE指令引脚含义如下:
2.1EN:西门子指令使能位。因为每个周期都需要执行,故用SM0.0即可。
2.2Done:“完成”参数。Modbus执行通信时置1,无Modbus通信活动时为0。
2.3Error:错误代码。0-无错误。
五、测试软件ModScan32设置
ModbusRTU测试软件ModScan32,在通讯中是中主站,监视从站和向从站发送命令。以下是ModbusRTU测试软件ModScan32如图2: 图 2
ModScan32测试软件的画面中相关参数意义如下:
1.通信端口的选择。如果PC用的 RS485 转换器接的是串口一(COM1),此下拉选项设置为 COM1 即可。
2.Baud:波特率的选择。与S7-200 PLC内设置保持一置。
3.Word:数据位。默认值8。
4.Parit:奇偶校验。与S7-200 PLC内设置保持一置。
5.Stop:停止位。默认值1.
6.Device Id:下位机地址。与S7-200中MBUS_INT模块的Address引脚一置。
7.Address:寄存器的起始地址。
8.Length:寄存器长度。
9.MODBUS Point Type:Modbus点类型选择。依次出现的是继电器状态、输入状态、锁存器、输入寄存器。
10.Number of Polls:发送和接受命令的次数。
11.Valid Slave Responses:有效命令的次数。
六、通讯测试
S7-200 PLC和测试软件ModScan32设置完毕后,系统上电、通讯线连接好就可以进行调试。Modbus RTU地址与S7-200的地址对应关系 Modbus地址总是以00001、30004之类的形式出现。S7-200内部的数据存储区与MODBUS的0、1、3、4共4类地址的对应关系所示:
MODBUS地址
S7-200数据区
00001-00128……………………………Q0.0-Q15.7
10001-10128……………………………I0.0-I15.7
30001-30032……………………………AIW0-AIW32
40001-4xxxx……………………………T + 2*(xxxx-1)
其中T为S7-200中的缓冲区起始地址,即HoldStart。如果已知S7-200中的V存储区地址,推算MODBUS地址的公式为:MODBUS地址=40000+(T/2+1)
其中T为偶数。
七、结论
Modbus RTU作为一种工业控制器的网络通讯协议,在如今各种控制系统和智能仪表 中发挥着尤为重要的作用。本文以S7-200PLC为例,讲述了如何应用应用Modbus RTU通讯协议与S7-200PLC的通讯与检测,使得控制器之间的通讯变得更加简易和清晰。参考文献[1]S7-200可编程控制器系统手册。西门子(中国)有限公司.[2]西门子自动化与驱动集团网站(www.ad.siemens.com.cn).
因篇幅问题不能全部显示,请点此查看更多更全内容