西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx

上传人:b****3 文档编号:17752907 上传时间:2022-12-09 格式:DOCX 页数:13 大小:646.70KB
下载 相关 举报
西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx_第1页
第1页 / 共13页
西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx_第2页
第2页 / 共13页
西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx_第3页
第3页 / 共13页
西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx_第4页
第4页 / 共13页
西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx

《西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

西门子S7200MODBUS通信协议和支持MODBUSRTU协议的电磁流量计超声波流量计的通信实例Word格式文档下载.docx

3

4

5

6

7

设备地址

功能编码

地址1

地址0

数据1

数据0

CRC

8位字节

一、参数读出命令

1、主机命令格式

功能代码

1~99

03

00--35

XX

2、从机回应格式

长度

高字节

低字节

数据=数据1数据0;

注意:

读出时,参数编号加1(MODBUS协议规定),如主机命令中参数编号为08,读出的参数编号为09。

二、读出瞬时流量、流速、百分比、空管比、报警

04

8

9

10

11

12

13

14

字节数量

流量高位

流量低位

单位数点

流速高位

流速低位

百分比高

百分比低

空管比高

空管比低

报警状态

crc

1-99

三、读出累计总量

正向总量3

正向总量2

正向总量1

正向总量0

反向总量3

反向总量2

反向总量1

反向总量0

总量单位

保留

Crc

有的通信手册并没有给出例子,而是只有寄存器地址如另一台流量计的通信手册:

好了,有了对应的寄存器地址我们就可以参照它来填写指令中的地址“Addr”,注意一点:

指令中的地址不能直接填写对应寄存器的地址,s7-200中是这样规定的:

我们读取的就是从站的保持寄存器的地址,所以要在从站寄存器地址加上数字40000。

例如第二个流量计的地址是40001和40113(在图3中),实际是读取了从站的从第一个和第113个寄存器开始的信息。

功能码是03。

再来看一下第一个流量计中的地址是以3开头的地址,即30011和30015,这里的程序是没有错的,这就要看通信手册中具体要主站发送的数据帧格式和功能码,如下:

可以看到功能码是04,这里的功能码04也是读取保持寄存器的,那么如何让PLC发出04这个功能码呢?

正常读取从站时发出的功能码是03(这也是MODBUS协议给定好的)

3、主机命令格式

其实MODBUS标准协议中也有04这个功能指令,该指令命名为“读取输入寄存器”而不是“保持寄存器”。

MODBUS协议当然可以发送04这个指令,问题是s7-200中的MODBUS协议库如何发送04这个指令呢?

MODBUS指令要填写的信息如下:

这里的RW只能填写0或1代表读和写,并不是具体的读写指令01、02、03还是04。

其实这里的RW功能就是告诉s7-200是读还是写,至于是具体读什么或具体写什么并不是从这里来确定的,是按照它下面的地址“Addr”来区分的。

在step7micro/win软件的帮助中是这样规定的:

所以,在我们要读取的MODBUS从站的寄存器地址的基础上加上40000,我们最终要输入的地址就是4000x了(注意地址是从40001开始的而不是40000)。

这样输入后,PLC在执行MODBUS指令时就会判断并发送的指令是03。

同样如果我们输入的地址数据是3000x,PLC就会发送04这个指令了,也可以这样理解,s7-200MODBUS指令通过判断输入的信息地址“Addr”的最高位来发送具体的功能指令(03、04或其他)的。

在设备和PLC通信之前最好先用调试软件来调试设备通信是否正常,是否能采集到数据,然后再编写PLC程序。

下面这个软件就是模拟了PLC执行MODBUS指令,从下面图中可以看到30001对应的F(功能指令)是04。

还有一点就是编程时要注意MODBUS指令的调用:

MBUS_CTRL_P1指令要一直调用,MBUS_MSG_P1同一条指令使能在没有完成时要一直有效,要想再次调用该指令必须将使能端无效一次扫描让完成标志位复位。

SMB30和SMB130的停止位是1位,其他参数可以修改的。

ModBus功能码

功能码

名称

作用

01

读取线圈状态

取得一组逻辑线圈的当前状态(ON/OFF)

02

读取输入状态

取得一组开关输入的当前状态(ON/OFF)

读取保持寄存器

在一个或多个保持寄存器中取得当前的二进制值

读取输入寄存器

在一个或多个输入寄存器中取得当前的二进制值

05

强置单线圈

强置一个逻辑线圈的通断状态

06

预置单寄存器

把具体二进值装入一个保持寄存器

07

读取异常状态

取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态

08

回送诊断校验

把诊断校验报文送从机,以对通信处理进行评鉴

09

编程(只用于484)

使主机模拟编程器作用,修改PC从机逻辑

控询(只用于484)

可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送

读取事件计数

可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时

读取通信事件记录

可是主机检索每台从机的ModBus事务处理通信事件记录。

如果某项事务处理完成,记录会给出有关错误

编程(184/384484584)

可使主机模拟编程器功能修改PC从机逻辑

探询(184/384484584)

可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送

15

强置多线圈

强置一串连续逻辑线圈的通断

16

预置多寄存器

把具体的二进制值装入一串连续的保持寄存器

17

报告从机标识

可使主机判断编址从机的类型及该从机运行指示灯的状态

18

(884和MICRO84)

可使主机模拟编程功能,修改PC状态逻辑

19

重置通信链路

发生非可修改错误后,是从机复位于已知状态,可重置顺序字节

20

读取通用参数(584L)

显示扩展存储器文件中的数据信息

21

写入通用参数(584L)

把通用参数写入扩展存储文件,或修改之

22~64

保留作扩展功能备用

65~72

保留以备用户功能所用

留作用户功能的扩展编码

73~119

非法功能

120~127

留作内部作用

128~255

用于异常应答

ModBus网络只是一个主机,所有通信都由他发出。

网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。

采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。

表2是ModBus各功能码对应的数据类型。

表2ModBus功能码与数据类型对应表

代码

功能

数据类型

整型、字符型、状态字、浮点型

整型、状态字、浮点型

N/A

重复“回路反馈”信息

字符型

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1