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

SDFJRUUVBFUR 2011-11-25 11:31:32
单点表通讯协议
一. 硬件连接和设置:
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/T804 A-12 B-11
C403 A-3 B-11
C903 A-10 B-9
C904 A-22 B-21
C703/C704 A-15 B-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-T4 8Bit 8Bit n个8Bit 16Bit T1-T2-T3-T4






RTU消息帧
以RTU方式读取参数数据的例子
主机请求
地址 功能码 开始高高位地址 开始低低位地址 寄存器的数量的高位 寄存器的数量的底位 错误校验
01 03 00 00 00 02 C4 0B
从机应答
地址 功能码 字节数 数据高字节 数据低字节 小数点
高字节 小数点
低字节 错误校验
01 03 04 41 24 00 01 6F C4
十六进制数4124表示的十进制整数为16676*10-1=1667.6,错误校验值要根据传输方式而定。
以RTU方式写参数数据的例子
主机请求
地址 功能码 开始高位地址 开始低位地址 寄存器的个数高位 寄存器的个数低位 字节计数 数据高位 数据低位 小数点
高字节 小数点
高字节 错误校验
01 10 01 04 00 02 04 03 E8 00 01 BE 7C
从机应答
地址 功能码 开始高位地址 开始低位地址 寄存器的个数高位 寄存器的个数低位 错误校验
01 03 10 00 00 02 C0 CB
十六进制数03E8.0001表示的十进制整数为1000*10-1=100.0,错误校验值要根据传输方式而定。
HX/Modbus通讯协议与Modbus通信协议格式兼容,但数据场增加小数点单位。Modbus通信协议详细资料,请参考附带ABB Modbus协议和Modbus_Cn/Modbus Protocol协议规范。





单点表地址表
参数 读写 高位地址 低位地址 小数点单位
PV 读 00 00 根据SL1值定
AL1 读写 01 04 SL1
AL2 读写 01 08 SL1
AL3 读写 01 0C SL1
AL4 读写 01 10 SL1
AH1 读写 01 14 SL1
AH2 读写 01 18 SL1
AH3 读写 01 1C SL1
AH4 读写 01 20 SL1
SL0 读写 02 00 0
SL1 读写 02 04 0
SL2 读写 02 08 0
SL3 读写 02 0C 0
SL2。 读写 02 10 0
SL3。 读写 02 14 0
SL4 读写 02 18 0
SL5 读写 02 1C 0
SL6 读写 02 20 0
SL7 读写 02 24 0
DE 读写 02 28 0
BT 读写 02 2C 0
PB1 读写 02 30 SL1
KK1 读写 02 34 3
PB2 读写 02 38 SL1
KK2 读写 02 3C 3
PB3 读写 02 40 SL1
KK3 读写 02 44 3
OUL 读写 02 48 SL1
OUH 读写 02 4C SL1
PVL 读写 02 50 SL1
PVH 读写 02 54 SL1
SLL 读写 02 58 SL1
SLH 读写 02 5C SL1
SLU 读写 02 60 0
四回路\八回路\巡检仪
小数点单位:
=0整型数据;=1数据带一位小数;=2数据带两位小数;=3数据带三位小数。
发送小数点高低字节必须与从机小数点单位一致,才能通讯。

...全文
240 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyf4 2011-11-25
  • 打赏
  • 举报
回复
楼主你哪里不明白,是串口方面编程还是Modbus协议?
cyf4 2011-11-25
  • 打赏
  • 举报
回复
不就是串口读写操作吗?用按照Modbus协议组成命令发送出去就行

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧