故事作者:Automann

最近创作

看看TA的故事

西门子PLC的Modbus地址的问题

已锁定

Automann

  • 帖子

    6291
  • 精华

    139
  • 被关注

    292

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

西门子PLC的Modbus地址的问题

5814

23

2013-06-17 22:11:15

 Modbus地址实际上分为两种情况。下面以S7-200/S7-200 SMART/S7-1200为例来说明:


第一种情况:PLCModbus主站,Modbus地址和PLC手册里的地址一致,例如作主站的S7-200MBUS_MSG指令用于向Modbus从站发送请求消息,和处理从站返回的响应消息。要读取从站(另一台S7-200)的I0.0开始的地址区时,它的输入参数AddrModbus地址)10001S7-200从站保持寄存器的V区起始地址为VB200时,要读取从站VW200开始的V存储区时,保持寄存器的地址是40001


第二种情况:PLC作从站,PLC不用管什么Modbus地址,等着主站来读写它的地址区就是了。


主站的计算机软件(例如DCS或组态软件)的编程人员需要编写实现Modbus通信的程序,首先需要确定Modbus RTU的报文结构。他们一般不熟悉PLC,因此PLC的编程人员往往需要和上位机软件的编程人员一起来讨论Modbus的报文结构。


最容易出问题的就是报文里Modbus地址与PLC存储区地址的对应关系。我做过的一个系统的上位机是专用的组态软件,我通过分析GE PLC手册给出的CRC的循环异或计算实例每一步的中间数据,编写出了CRC计算的C语言程序。通过实验验证了Modbus报文结构和CRC的计算的可行性。


S7 PLC手册给出的Modbus地址与Modicon公司和GE公司PLC使用的地址相同,是基于1的地址,即同类元件的首地址为1。而西门子PLC采用的是基于0的地址,即同类元件的首地址为0Modbus报文中西门子PLCModbus地址也采用基于0的地址。


PLC系统手册中的Modbus地址的最高位用来表示地址区的类型,例如I0.0Modbus地址为10001。因为地址区类型的信息已经包含在报文的功能码中了,报文中S7-200I0.0Modbus地址不是10001,而是0。报文中其他地址区的Modbus地址也应按相同的原则处理。例如当S7-200从站保持寄存器的V区起始地址为VB200时,VW200对应的保持寄存器在报文中的Modbus地址为0,而不是40001

西门子PLC的Modbus地址的问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3227条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。