RS485接口、Modbus RTU协议与BT119P通讯实例

描述

RS485接口、Modbus RTU协议与BT119P通讯实例

RS485是一种通用的通讯接口,采用主从通讯方式,即一个主机带多个从机,很多情况下,通讯链路采用一对双绞线将各个接口的“A”、“B”端并联起来。数据信号采用差分传输方式,逻辑“1”以两线间的电压差+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。RS485通讯数据最高传输速率为10Mbps,最大距离可以到1200米,最大支持256个结点。

Modbus是一主多从的通讯协议,需要一个设备充当主机(比如电脑、PLC、触摸屏等),从机是可以是各种测量仪表、模块。主机在同一时间内只能向一个从机发送命令,总线上每次只有一个数据进行传输,即主机发送,从机返回,主机不发送,总线就没有数据流。

Modbus的传输模式也分三种:ASCII、RTU、TCP。以常见的Modbus-RTU为例。数据格式如下:

通讯接口

从机地址 :每个从机都有唯一地址,占用一个字节,范围0~255

命令码: 占用一个地址。

常用命令码介绍:

命令码 功能说明
01H 读输出线圈状态
02H 读入出线圈状态
03H 读保持寄存器
04H 读输入寄存器
06H 写单个寄存器
10H 写多个寄存器

数据: 根据命令码不同,有不同数据。

校验: 在数据传输过程中可能数据会发生错误,CRC检验接收数据是否正确。

分析一下发送和接收的内容:

1:主机对从机读数据

主机发送的数据格式如下:

从机地址 0x01
命令码 0x03
寄存器地址(高) 0x00
寄存器地址(低) 0x01
数量(高) 0x00
数量(低) 0x01
校验 0xD5 0xCA

含义:

0x01:从机地址

0x03:命令码。读从机寄存器地址

0x00 0x01:表示读的寄存器地址从0x0001开始

0x00 0x01;表示连续读取的寄存器数量

0xD5 0xCA:CRC校验码

2:主机对从机写数据

从机地址 0x01
命令码 0x06
寄存器地址(高) 0x00
寄存器地址(低) 0x01
数量(高 0x00
数量(低) 0x64
校验 0xD9 0xE1

含义:

0x01:从机地址

0x06:命令码。写单个寄存器

0x00 0x01:修改的寄存器地址

0x00 0x64:修改的值

0xD9 0xE1:CRC校验码

从机返回数据格式如下:

从机地址 0x01
命令码 0x06
寄存器地址(高) 0x00
寄存器地址(低) 0x01
数量(高 0x00
数量(低) 0x64
校验 0xD9 0xE1
 

含义:

0x01:从机地址

0x06:命令码。写单个寄存器

0x00 0x01:修改的寄存器地址

0x00 0x64:修改的值

0xD9 0xE1:CRC校验码

从机返回的数据是和主机发送的数据一致,说明写入正确,否则表示出错了。可再写一次。

伯特仪表大部分产品,可以配置RS485通讯模块接口,并支持标准Modbus-RTU通讯协议,下面我们用一台BT119P的温控表作为从机,电脑端利用组态王软件作为主机,来进行二者ModbusRTU通讯的演示案例。

1、电脑端打开组态王KyingView软件,然后新建工程

通讯接口

2、双击设备COM1,配置串口信息,我们配置为:波特率9600,8为数据位,无校验,1个停止位。

通讯接口

3、接下来双击“新建”选项,选择对应设备驱动。这里我们依次选择:设备驱动 -> PLC -> 莫迪康 -> ModbusRTU -> COM。

通讯接口

4、然后根据实际情况,选择对应的串口号,这里我们选择COM3;下一步,设置需要与下位机通讯的地址号,这里我们选择1。之后就直接下一步完成就可以。

通讯接口

 

通讯接口

5、然后就在软件左侧数据库栏,点击数据词典,双击“新建”,弹出“定义变量”对话框,依次填入对应变量要求。比如我们要读取BT119仪表的测量值,那根据仪表对应的通讯协议地址表可知,测量值的寄存器地址为“30001”,数据变量选择“I/O整型”,数据类型选择“SHORT”,连接设备就选择前面我们建立的设备号“Bt119”。

通讯接口

6、设备和变量都新建完成,接下来我们就要新建画面了。点击左侧文件栏的画面,然后双击“新建”;弹出对话框,画面名称命令为“测量值”,然后下一步就进入组态画面。

通讯接口

 

通讯接口

7、在工具箱中选择文本,鼠标按住不放,拖入组态画面中,然后双击定义该文本信息。点击“模拟量输出”,然后选择前面我们定义的变量“测量值”,点击确认完成。

通讯接口

 

通讯接口

8、上位机的配置工作完成后,仪表参数也要相应设置;Add设置为1,表示仪表的从机地址,Baud设置为4,表示采用ModbusRTU通讯协议,波特率为9600,8个数据位,1个停止位,无校验。

9、连接好485通讯线。因为普通电脑没有专门的485接口,这里我们通过485转USB的转换器,来进行电脑与仪表的通讯连接。

10、完成硬件连接和软件的配置之后,通讯准备工作就基本完成,点击电脑端组态王组态界面上的“文件”->”切换的View”之后,主机就以每500ms时间间隔读取仪表的测量值了。由于仪表返回整型数,如果是热电偶、热电阻类非线性测量,分辨率固定为0.1℃,将返回数据除以10即可。如果是线性信号测量,则按仪表dP参数设置,分别除以10(dP=1)、100(dP=2)、1000(dP=3)就可以了。

通讯接口

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分