单点表通讯协议,谁看的懂啊,请大侠给指明一下如何接收数据

[复制链接]
查看11 | 回复2 | 2021-1-27 06:48:25 | 显示全部楼层 |阅读模式
单点表通讯协议
一.硬件连接和设置:
1.仪表设置:
a.BAUD设置:(默认为BAUD=3)
BAUD=0通讯波特率1200数据位=8校验位=N停止位=1
BAUD=1通讯波特率2400数据位=8校验位=N停止位=1
BAUD=2通讯波特率4800数据位=8校验位=N停止位=1
BAUD=3通讯波特率9600数据位=8校验位=N停止位=1
b.ID设置:(默认为ID=1)
通讯地址可设位0-31(接在同一485口上的通讯地址不能一样)
c.硬件连接:(仪表接线以实物准,并请参照本文件接线。仪表端子号对应为)
仪表端子号对应为:C804/T804A-12B-11
C403A-3B-11
C903A-10B-9
C904A-22B-21
C703/C704A-15B-16
与电脑连接:



与PLC等MODBUS主站连接:
2.电脑或其它主站设备的设置:
a.与电脑连接:
打开光盘中相应的文件“单点表.exe”,此时若出现一下消息框,请将“MSCOMM32.OCX”复制到WINDOWS目录下“C:\WINDOWS\system32”处,然后重新打开文件“单点表.exe”。
选择对应的COM号,选“测量”,此时,若电脑与仪表通讯正常,信息框内数值颜色为黑色,并显示测量值。
b.与PLC等MODBUS主站连接:
请参照PLC或其它MODBUS主站设备的相关通讯说明
b.与PLC等MODBUS主站连接:
请参照PLC或其它MODBUS主站设备的相关通讯说明
二.软件设置:
串口:8位数据位,1位停止位,无奇偶
波特率:1200,2400,4800,9600
RTU模式
当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit字节包含两个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。
代码系统
?8位二进制,十六进制数0...9,A...F
?消息中的每个8位域都是一个两个十六进制字符组成
每个字节的位
?1个起始位
?8个数据位,最小的有效位先发送
?1个奇偶校验位,无校验则无
?1个停止位(有校验时),2个Bit(无校验时)
错误检测域
?CRC(循环冗长检测)
RTU帧
使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。在网络波特率下多样的字符时间,这是最容易实现的(如下图的T1-T2-T3-T4所示)。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。
整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。一典型的消息帧如下所示:
起始位设备地址功能代码数据CRC校验结束符
T1-T2-T3-T48Bit8Bitn个8Bit16BitT1-T2-T3-T4



RTU消息帧
以RTU方式读取参数数据的例子
主机请求
地址功能码开始高高位地址开始低低位地址寄存器的数量的高位寄存器的数量的底位错误校验
010300000002C40B
从机应答
地址功能码字节数数据高字节数据低字节小数点
高字节小数点
低字节错误校验
010304412400016FC4
十六进制数4124表示的十进制整数为16676*10-1=1667.6,错误校验值要根据传输方式而定。
以RTU方式写参数数据的例子
主机请求
地址功能码开始高位地址开始低位地址寄存器的个数高位寄存器的个数低位字节计数数据高位数据低位小数点
高字节小数点
高字节错误校验
0110010400020403E80001BE7C
从机应答
地址功能码开始高位地址开始低位地址寄存器的个数高位寄存器的个数低位错误校验
010310000002C0CB
十六进制数03E8.0001表示的十进制整数为1000*10-1=100.0,错误校验值要根据传输方式而定。
HX/Modbus通讯协议与Modbus通信协议格式兼容,但数据场增加小数点单位。Modbus通信协议详细资料,请参考附带ABBModbus协议和Modbus_Cn/ModbusProtocol协议规范。


单点表地址表
参数读写高位地址低位地址小数点单位
PV读0000根据SL1值定
AL1读写0104SL1
AL2读写0108SL1
AL3读写010CSL1
AL4读写0110SL1
AH1读写0114SL1
AH2读写0118SL1
AH3读写011CSL1
AH4读写0120SL1
SL0读写02000
SL1读写02040
SL2读写02080
SL3读写020C0
SL2。读写02100
SL3。读写02140
SL4读写02180
SL5读写021C0
SL6读写02200
SL7读写02240
DE读写02280
BT读写022C0
PB1读写0230SL1
KK1读写02343
PB2读写0238SL1
KK2读写023C3
PB3读写0240SL1
KK3读写02443
OUL读写0248SL1
OUH读写024CSL1
PVL读写0250SL1
PVH读写0254SL1
SLL读写0258SL1
SLH读写025CSL1
SLU读写02600
四回路\八回路\巡检仪
小数点单位:
=0整型数据;=1数据带一位小数;=2数据带两位小数;=3数据带三位小数。
发送小数点高低字节必须与从机小数点单位一致,才能通讯。

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:48:25 | 显示全部楼层
不就是串口读写操作吗?用按照Modbus协议组成命令发送出去就行
回复

使用道具 举报

千问 | 2021-1-27 06:48:25 | 显示全部楼层
楼主你哪里不明白,是串口方面编程还是Modbus协议?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行