一、 导读Modbus通信是应用极为广泛的通信协议,在变频器、智能仪表及众多智能设备上都有使用 。
西门子S7-200 SMART系列PLC既能充当Modbus主站,也能作为Modbus从站。
本文将通过S7-200 SMART间的Modbus通信,为大家详细分享S7-200 SMART作为Modbus主站与从站的应用实例。
具体设定为:采用两个不同型号的PLC,ST40作为Modbus主站,ST20作为Modbus从站,通过Modbus通信协议实现数据交换,交换内容如下: 主站PLC的输入IB0用以控制从站PLC的输出QB0。 从站PLC的输入IB0反过来控制主站PLC的输出QB0。 从站PLC的模拟量地址AIW12的数据会传输至主站PLC的VW100,以便后续运算。 主站PLC中的VD200的数据将被写入从站PLC的MD10。
在 Modbus 通信体系中,PLC 作为从站时,其地址与 Modbus 寄存器地址的对应关系尤为关键。
Modbus 寄存器地址常见形式为 0XXXX、1XXXX、3XXXX 和 4XXXX 。
当 PLC 充当 Modbus 从站角色,就必须精准建立 PLC 地址与 Modbus 寄存器地址间的映射,确保数据传输准确无误
在 S7-200 SMART CPU 的 Modbus 通信中,T 代表缓冲区起始地址,由指令中的 HoldStart 指定,比如设定为 & VB100 。
此时,Modbus 地址 40001 对应的数据地址就是 VW100 。
经总结可得 Modbus 地址的计算公式:Modbus 地址 = 40000+((地址 - T)/2+1) 。
举例来说,若 T 为 & VB100,要计算 VW110 对应的 Modbus 地址,代入公式可得:40000+(110 - 100)/2+1 = 40006 。
S7 - 200 SMART 作为 MODBUS 从站可支持的功能码 将 S7-200 SMART 系列 PLC 用作 Modbus 从站时,其能够支持的 Modbus 功能码如下 两款 PLC 选用本体集成的通信口来搭建通信连接。连接硬件有两种选择,既可以采用 DB9 针公接头,也能选用西门子的 PROFIBUS - DP 接头。若选用 DB9 针公接头,连接方式如下: 于主站 PLC 内,需精准调用主站通信指令,严格按照 Modbus 通信协议规范,完成对数据读写、校验等关键功能的程序架构设计,从而搭建起完整且稳定的主站通信程序,确保数据交互的高效性与准确性
着手从站 PLC 程序编写,需先调用从站初始化指令。其间,要细致设置通信波特率、从站站号、奇偶校验位,同时明确 V 存储器的通信区域大小与起始地址。
特别注意,这些相关参数的设置务必与主站所设参数完全一致,以保障主从站间通信的顺畅与稳定
在从站 PLC 程序编写环节,调用从站初始化指令完成基础设置后,需进一步调用从站中的响应请求指令,以此编写针对主站请求的响应程序。
具体而言,要实现将主站写入到 Modbus 地址 40001 和 40002 的数据,精准转存至从站的 MW10 和 MW12 存储单元。
在编写该程序时,需依据 Modbus 通信协议,严谨规划数据读取、地址匹配以及存储操作流程,确保从站能够准确响应主站请求,高效完成数据转存任务,维持主从站通信的流畅与数据交互的准确性
1.地址读写规则:通信时,对线圈地址的读写以及对离散输入地址的读操作,个位应选用 8 的整数倍。
2.存储区地址指定:从站指令中指定对应 4XXXX 的地址时,仅能选用 V 存储区地址,无法指定 M 存储区地址。若需读写 M 地址,要先转存至 V 存储器。
3.经济型 CPU 特殊设置:若作为 Modbus 从站的 CPU 是经济型的,因其不支持扩展功能,没有模拟量输入通道,所以在 MBUS_INIT 指令中,MaxAI 需设为 0,否则通信会出错。
4.MaxHold 参数含义:MBUS_INIT 指令中的 MaxHold 用于确定 V 存储区通信区域的大小,以字为单位计算。例如,若设置为 10,则表示通信区域大小为 10 个字。
5.指令使能要求:MBUS_INIT 指令的使能端 EN,只需接通一个扫描周期,通常用 SM0.1 使能;而 MBUS_SLAVE 指令必须在每个扫描周期都接通,才能响应主站请求。
6.库指令存储区分配:无论是从站库指令还是主站库指令,编写完成后都要为库指令分配存储区,具体分配方法可参考任务二。需注意,分配的存储区不可在程序其他地方使用,尤其是不能与 V 存储器通信区域重复。
7.错误排查与解决:不少技术人员易犯错误,当 MBUS_SLAVE 指令的 Error 报错误代码 10,提示从站功能未启用,即便检查初始化指令发现 Mode 管脚已设为 1,问题常出在库存储器分配的地址被其他地方占用,重新分配库存储器地址即可解决。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |