西门子 PLC 与 Modbus 485 通讯:数据传输接收全攻略

时间:2025-08-20

在工业自动化领域,PLC(可编程逻辑控制器)的应用十分广泛,而西门子 PLC 更是其中的佼佼者。西门子在 STEP 7 - Micro/WIN SMART 中正式推出了 Modbus RTU 主站协议库(西门子标准库指令),这使得 PLC 能够通过 modbus 方式控制其他器件,实现对 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器的读写操作。下面将详细介绍西门子 PLC 使用 Modbus 485 通讯传输接收数据的具体步骤。

准备工作


首先要准备好相关设备和工具,包括电脑、S7 - 200smart st30 以及 485 通讯线。这里将以 S7 - 200smart 作为主站,电脑串口调试助手作为从站进行操作演示。关于接线部分,本文暂不详细阐述。

写梯形图

1. MBus_CTRL


调用 Modbus RTU 主站初始化和控制子程序,使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制。各参数意义如下:



2. MBus_MSG


调用 Modbus RTU 主站读写子程序 MBUS_MSG,发送一个 Modbus 请求。各参数意义如下:



使用难点与解答


通常支持 485 通讯的器件给的使用说明书,其指令是 16 进制的字符串代码,很难与当前 PLC 库指令对应起来,尤其是命令地址。以 IAI 马达给的使用说明书为例,该示例是 PLC 通过 modbus 去读取马达的位置,读取控制器地址 9000 这个寄存器里面的数据。RW 填 0,表示去读取数据。Plc 库里面需要填的 Addr(e)是十进制,需要将 16 进制的 9000 转成十进制,通过计算器得知:16#9000 = 36864,但实际使用读取寄存器地址的时候需要 + 1,即 36865。由于这里是读取寄存器,所以 Addr = 436865。count 是寄存器数量,按照示例,这里有 2 个寄存器,所以 count 填 2。


通过串口调试助手来测试,接通 M15.0 发送信号,串口调试助手收到了 PLC 发送的信号,且收到的数据与 IAI 操作手册示例一致,测试成功。

注意事项


  1. 只有在操作被控方寄存器的时候(无论读取还是写入),转换的成十进制的地址后位需要加个 4。
  2. 注意发送命令和读取命令的字符长度,需要正确填写。
  3. 需要注意波特率要填写正确,与被控方保持一致,否则发出去的信号与收到的信号不相符。
  4. 发出去的内容填写到 DataPtr 中。

通过 MB_MSG,向 1 号从站读取从 36865(Addr)这个地址开始 2 位(Count)的数据,并把读取到的数据写入 VB2000;如果是写入,则是将 PLC 的 VB2000 开始的 2 位寄存器内的数据,写入到 1 号从站的 36865 寄存器中。






总之,掌握西门子 PLC 使用 Modbus 485 通讯传输接收数据的方法,对于工业自动化系统的设计和维护具有重要意义。在实际应用中,要严格按照步骤操作,并注意相关的注意事项,以确保通讯的稳定和数据的准确传输。

上一篇:U8726AHE 氮化镓电源 IC 集成高压 E - GaN 和启动电路优势
下一篇:全面剖析 CAN 总线:错误检测与故障界定机制详解

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料