Modbus地址实际上分为两种情况即PLC作Modbus主站,Modbus地址和PLC手册里的地址一与PLC作从站,PLC不用管什么Modbus地址。
Modbus地址实际上分为两种情况。下面以西门子S7-200/S7-200SMART/和S7-1200为例来说明:
第一种情况:西门子PLC作Modbus主站,Modbus地址和PLC手册里的地址一致,例如作主站的S7-200的MBUS_MSG指令用于向Modbus从站发送请求消息,和处理从站返回的响应消息。要读取从站(另一台S7-200)的I0.0开始的地址区时,它的输入参数Addr(Modbus地址)为10001。S7-200从站保持寄存器的V区起始地址为VB200时,要读取从站VW200开始的V存储区时,保持寄存器的地址是40001。
第二种情况:PLC作从站,PLC不用管什么Modbus地址,等着主站来读写它的地址区就是了。
主站的计算机软件(例如DCS或组态软件)的编程人员需要编写实现Modbus通信的程序,首先需要确定ModbusRTU的报文结构。他们一般不熟悉PLC,因此PLC的编程人员往往需要和上位机软件的编程人员一起来讨论Modbus的报文结构。
更容易出问题的就是报文里Modbus地址与PLC存储区地址的对应关系。曾经有工作人员做过的一个系统的上位机是专用的组态软件,通过分析GEPLC手册给出的CRC的循环异或计算实例每一步的中间数据,编写出了CRC计算的C语言程序。通过实验验证了Modbus报文结构和CRC的计算的可行性。
S7PLC手册给出的Modbus地址与Modicon公司和GE公司PLC使用的地址相同,是基于1的地址,即同类元件的首地址为1。而西门子PLC采用的是基于0的地址,即同类元件的首地址为0。Modbus报文中西门子PLC的Modbus地址也采用基于0的地址。
PLC系统手册中的Modbus地址的更高位用来表示地址区的类型,例如I0.0的Modbus地址为10001。因为地址区类型的信息已经包含在报文的功能码中了,报文中S7-200的I0.0的Modbus地址不是10001,而是0。报文中其他地址区的Modbus地址也应按相同的原则处理。例如当S7-200从站保持寄存器的V区起始地址为VB200时,VW200对应的保持寄存器在报文中的Modbus地址为0,而不是40001。
审核编辑黄宇
-
plc
+关注
关注
5044文章
14439浏览量
483440 -
西门子
+关注
关注
98文章
3271浏览量
119732 -
MODBUS
+关注
关注
28文章
2384浏览量
82231
发布评论请先 登录
天拓四方分享:什么事S7-1200 G2++?
【教程】Profinet分布式IO(P31系列)与西门子PLC S7-200smart 连接例程
plc以太网通讯模块实现:S7-200与S7-1200借PPI助力农业自动化发展
西门子S7-200与S7-1200通过PPI以太网模块通讯,赋能汽车制造行业发展
西门子 S7-200 与 S7-1200 借 PPI 以太网模块通讯,赋能食品行业进步
依托 PPI 以太网模块,西门子 S7-200 与 S7-1200 通讯助推食品行业前行
基于Modbus TCP的WinCC监控S7-1200/200SMT应用实例
依托PPI以太网模块,西门子S7-200与S7-1200通讯助力食品加工行业进步
西门子PLC(S7-1200/1500/300/400)的数据采集与监控方案
西门子S7-1200 G2的7大亮点及最新功能
S7-200Smart与S7-1200通过Modbus协议对接到上位机
西门子S7-200 PLC:数据采集与远程调试上下载解决方案
西门子S7-200SMART与WINCC如何通信?老工控人这样做!
西门子S7-200与变频器之间无线MODBUS通讯实例
西门子1200、200smart、LOGO实现S7通讯演示

以西门子S7-200/S7-200SMART/和S7-1200为例对Modbus地址进行说明
评论