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)就可以了。
全部0条评论
快来发表一下你的评论吧 !