西门子s7_200 modbus通信协议和支持modbusrtu协议的电磁流量计、超声波流量计的通信实例精选.docVIP

西门子s7_200 modbus通信协议和支持modbusrtu协议的电磁流量计、超声波流量计的通信实例精选.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西门子s7_200 modbus通信协议和支持modbusrtu协议的电磁流量计、超声波流量计的通信实例精选

西门子S7_200 MODBUS通信协议和支持MODBUSRTU协议的电磁流量计、超声波流量计的通信实例 图1.MODBUS库文件 图2.控制指令 图3.控制指令 这里MBUS_CTRL_P1指令要一直调用,有一点要指明:图2中的程序是读取其中一台流量计的,图3是读取另一台流量计的,这两个流量计是不一样的。这里最重要的是MBUS_MSG_P1指令中地址“Addr”的填写,其实这里要填写Modbus从站的寄存器地址(该地址内有我们需要的信息),那么这个地址要怎么填写呢,填写多少呢?这就要查看从站设备(这里是流量计)的“通信手册”了,因为每个厂家的设备都不一样,所以相同信息的寄存器地址也不一样。下面是流量计厂家要的通讯手册上的信息: RTU消息帧基本定义 0 1 2 3 4 5 6 7 设备地址 功能编码 地址1 地址0 数据1 数据0 CRC CRC 8位字节 8位字节 8位字节 8位字节 8位字节 8位字节 8位字节 8位字节 参数读出命令 主机命令格式 0 1 2 3 4 5 6 7 设备地址 功能代码 地址1 地址0 数据1 数据0 CRC CRC 1~99 03 0 00--35 0 1 XX XX 从机回应格式 0 1 2 3 4 5 6 设备地址 功能代码 长度 数据1 数据0 CRC CRC 1~99 03 2 高字节 低字节 XX XX 数据 数据1 数据0; 注意:读出时,参数编号加1(MODBUS协议规定),如主机命令中参数编号为08,读出的参数编号为09。 读出瞬时流量、流速、百分比、空管比、报警 主机命令格式 0 1 2 3 4 5 6 7 设备地址 功能代码 地址1 地址0 数据1 数据0 CRC CRC 1~99 04 0 0 0 5 XX XX 从机回应格式 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 设备地址 功能代码 字节数量 流量高位 流量低位 单位数点 流速高位 流速低位 百分比高 百分比低 空管比高 空管比低 报警状态 crc crc 1-99 04 10 读出累计总量 主机命令格式 0 1 2 3 4 5 6 7 设备地址 功能代码 地址1 地址0 数据1 数据0 CRC CRC 1~99 04 0 5 0 5 XX XX 从机回应格式 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 设备地址 功能代码 字节数量 正向总量3 正向总量2 正向总量1 正向总量0 反向总量3 反向总量2 反向总量1 反向总量0 总量单位 保留 Crc Crc 1-99 04 100 有的通信手册并没有给出例子,而是只有寄存器地址如另一台流量计的通信手册:: 好了,有了对应的寄存器地址我们就可以参照它来填写指令中的地址“Addr”,注意一点:指令中的地址不能直接填写对应寄存器的地址,s7-200中是这样规定的: 我们读取的就是从站的保持寄存器的地址,所以要在从站寄存器地址加上数字40000。例如第二个流量计的地址是40001和40113(在图3中),实际是读取了从站的从第一个和第113个寄存器开始的信息。功能码是03。 再来看一下第一个流量计中的地址是以3开头的地址,即30011和30015,这里的程序是没有错的,这就要看通信手册中具体要主站发送的数据帧格式和功能码,如下:可以看到功能码是04,这里的功能码04也是读取保持寄存器的,那么如何让PLC发出04这个功能码呢?正常读取从站时发出的功能码是03(这也是MODBUS协议给定好的) 主机命令格式 0 1 2 3 4 5 6 7 设备地址 功能代码 地址1 地址0 数据1 数据0 CRC CRC 1~99 04 0 0 0 5 XX XX 其实MODBUS标准协议中也有04这个功能指令,该指令命名为“读取输入寄存器”而不是“保持寄存器”。MODBUS协议当然可以发送04这个指令,问题是s7-200中的MODBUS协议库如何发送04这个指令呢?MODBUS指令要填写的信息如下:这里的RW只能填写0或1代表读和写,并不是具体的读写指令01、02、03还是04。 其实这里的RW功能就是告诉s7-200是读还是写,至于是具体读什么或具体写什么并不是从这里来确定的,是按照它下面的地址“Addr”来区分的。在step7 micro/win 软件的帮助中是这样规定的: 所以,在我们要读取的MODBUS从站的寄存器地址的基础上加上40000,我们最终要输入的地址就是4000x了(注意地址是从40001开始的而不是40000)。这样输入后,PLC在执行MODBUS指令时就会判断并

文档评论(0)

bodkd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档