485多机通信协议.docx
《485多机通信协议.docx》由会员分享,可在线阅读,更多相关《485多机通信协议.docx(15页珍藏版)》请在冰点文库上搜索。
485多机通信协议
RS-232是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。
RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。
为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。
RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。
为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。
由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。
备注:
以上是官方的专业描述,看不懂没有关系,大致有个印象就可以了,有兴趣的可以上网可以买一些专业书籍做深入研究,我再用通俗的语言补充描述一下。
1.RS485通讯协议
1.1.主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。
串行通讯,数据帧11位,1个起始,8个数据位,2个停止位
1.2.数据传输格式采用标准ASCⅡ码
1.2.1.通讯数据字符集
0(30H)1(31H)2(32H)3(33H)4(34H)
5(35H)6(36H)7(37H)8(38H)9(39H)
A(41H)B(42H)C(43H)D(44H)E(45H)
F(46H).(2EH)-(2DH)+(2BH)
1.2.2.通讯控制字符集
DC1(11H):
读瞬时值DC2(12H):
读参数
DC3(13H):
写参数DC4(14H):
读写FCC5000
STX(02H):
从机起始符ETX(03H):
主机结束符
ETB(17H):
从机结束符RS(1EH):
数据间隔符
US(1FH):
参数间隔符ACK(06H):
接收正确
NAK(15H):
接收错误CAN(18H):
通讯复位
SP(20H):
空白符
1.3.通讯协议
1.3.1.读瞬时值
1.3.1.1.读单通道瞬时值
主机发送:
DC1AAACCETX
DC1(11H):
读瞬时值
AAA:
从机地址码(=001~254)
CC:
通道号(=01-99)
ETX(03H):
主机结束符
从机回送:
STXAAACCUSMMUSDDDDDDDUSEEEEUSSSSSSETB
STX(02H):
从机起始符
AAA:
从机地址码(=001~254)
CC:
通道号(=01-99)
US(1FH):
参数间隔符
MM:
表型字(=00~99)
DDDDDDD:
瞬时值(-32167~32767,32767=brok,16000=H.oFL,-2000=L.oFL,
小数点在实际位置)
EEEE:
报警1~4报警状态(E=0:
OFFE=1:
ON)
SSSSS:
校验和5位十进制=00000~65535,从STX到最后一个US间每个
字符ASC值的和,再除以65536的余数)
ETB(17H):
从机结束符
例子:
主机发送:
11H30H30H31H30H31H03H(读001号表01通道瞬时值)
从机回送:
02H30H30H31H30H31H1FH30H36H1FH2DH30H31H32H
33H2EH34H1FH31H30H30H30H1FH30H31H30H30H34H
17H(001号表为XMA5000系列,01号通道瞬时值=-0123.4,报警1
动作,报警2不动作,校验和=1004)
1.3.1.2.读多通道瞬时值
主机发送:
DC1AAACCETX
DC1(11H):
读瞬时值
AAA:
从机地址码(=001~254)
CC:
通道号(=00)
ETX(03H):
主机结束符
从机回送1:
STXAAACCUSMMUSDDDDDDDUSEEEEUSSSSSSETB
STX(02H):
从机起始符
AAA:
从机地址码(=001~254)
CC:
通道号(=01,表示不支持多通道批读,由表型号字判断通道数,
逐个通道读取瞬时值)
US(1FH):
参数间隔符
MM:
表型字(=00~99)
DDDDDDD:
瞬时值(-32167~32767,32767=brok,16000=H.oFL,-2000=L.oFL,
小数点在实际位置)
EEEE:
报警1~4报警状态(E=0:
OFFE=1:
ON)
SSSSS:
校验和5位十进制=00000~65535,从STX到最后一个US间每个
字符ASC值的和,再除以65536的余数)
ETB(17H):
从机结束符
从机回送2:
STXAAACCUSMMUSRSFFUSGGGGGGUSHHHH…USSSSSSETB
STX(02H):
从机起始符
AAA:
从机地址码(=001~254)
CC:
通道号(=00,表示支持多通道批读)
US(1FH):
参数间隔符
MM:
表型字(=00~99)
RS:
数据间隔符
FF:
通道号(=01~99)
GGGGGGG:
瞬时值(-32167~32767,32767=brok,16000=H.oFL,-2000=L.oFL,
小数点在实际位置)
HHHH:
报警1~4报警状态(E=0:
OFFE=1:
ON)
SSSSS:
校验和5位十进制=00000~65535,从STX到最后一个US间每个
字符ASC值的和,再除以65536的余数)
ETB(17H):
从机结束符
注:
下划线为通道数据格式
1.3.2.读参数
主机发送:
DC2AAACCUSPPETX
DC2(12H):
读参数值
AAA:
从机地址码(=001~254)
CC:
通道号(=01-99)
US(1FH):
参数间隔符
PP:
参数号(=01-69)
ETX(03H):
主机结束符
从机回送:
STXAAACCUSPPUSDDDDDDDUSSSSSSETB
STX(02H):
从机起始符
AAA:
从机地址码(=001~254)
CC:
通道号(=01-99)
US(1FH):
参数间隔符
PP:
参数号(=01~69)
DDDDDDD:
参数值(=-1999~15999)
SSSSS:
校验和5位十进制=00000~65535,从STX到最后一个US间每个
字符ASC值的和,再除以65536的余数)
ETB(17H):
从机结束符
例子:
主机发送:
12H30H30H31H30H31H1FH31H32H03H(读001号表01通道
参数号12量程零点值)
从机回送:
02H30H30H31H30H31H1FH31H32H1FH2DH30H31H32H
33H2EH34H1FH30H30H37H37H37H17H(001号表01通道
参数号12量程零点值=-0123.4,校验和=777)
1.3.3.写参数
主机发送:
DC3AAACCUSPPUSDDDDDDDUSSSSSSETX
DC3(13H):
写参数值
AAA:
从机地址码(=001~254)
CC:
通道号(=01-99)
US(1FH):
参数间隔符
PP:
参数号(=11-69)
DDDDDDD:
参数值(=-1999~15999)
SSSSS:
校验和5位十进制=00000~65535,从STX到最后一个US间每个
字符ASC值的和,再除以65536的余数)
ETX(03H):
主机结束符
从机回送:
ACK(06H):
接收正确
NAK(15H):
接收错误
例子:
主机发送:
13H30H30H31H30H31H1FH31H32H1FH2DH30H31H32H
33H2EH34H1FH30H30H37H39H34H17H(写001号表01通道
参数号12量程零点值=-0123.4,校验和=797)
从机回送:
06H(写参数成功)
1.3.4.读写FCC下挂仪表数据
1.3.4.1.读单通道瞬时值
主机发送:
DC4FFDC1AAACCETX
DC4(14H):
读写FCC5000
FF:
FCC5000地址码(=01~99)
DC1(11H):
读仪表瞬时值
AAA:
仪表地址码(=001~254)
CC:
仪表通道号(=01~99)
ETX(03H):
主机命令结束符
FCC回送:
DC4FFSTXAAACCUSMMUSDDDDDDDUSEEEEUSSSSSSETB或DC4FFNAK
DC4(14H):
读写FCC5000
FF:
FCC5000地址码(=01~99)
STX(02H):
数据起始符
AAA:
仪表地址码(=001~254)
CC:
仪表通道号(=01~99)
US(1FH):
参数间隔符
MM:
仪表表型字(=00~99)
DDDDDDD:
瞬时值(-32767~32767,32767=brok,16000=H.oFL,
-2000=L.oFL,-32767=仪表故障,小数点在实际位置)
EEEE:
报警1~4报警状态(E=0:
OFFE=1:
ON)
FFFFF:
校验和5位十进制=00000~65535,从STX到最后一个US间每个
字符ASC值的和,再除以65536的余数)
ETB(17H):
数据结束符
NAK(15H):
错误命令或错误地址
例子:
主机发送:
14H30H31H11H30H30H31H30H31H03H(读01号FCC下挂
001号表01通道瞬时值)
FCC回送:
14H30H31H02H30H30H31H30H31H1FH30H36H1FH2DH
30H31H32H33H2EH34H1FH31H30H30H30H1FH30H31H
31H32H31H17H(001号表为XMA5000系列,01号通道瞬时值
=-0123.4,报警1动作,报警2不动作,校验和=1121)
1.3.4.2.读参数
主机发送:
DC4FFDC2AAACCUSPPETX
DC4(15H):
读写FCC5000
FF:
FCC5000地址码(=01~99)
DC2(12H):
读仪表参数值
AAA:
仪表地址码(=001~254)
CC:
仪表通道号(=01~32)
PP:
仪表参数号(=01~69)
ETX(03H):
主机命令结束符
FCC回送:
DC4FFSTXAAACCUSPPUSDDDDDDDUSSSSSSETB或DC4FFNAK
DC4(14H):
读写FCC5000
FF:
FCC5000地址码(=01~99)
STX(02H):
数据起始符
AAA:
仪表地址码(=001~254)
CC:
仪表通道号(=01~32)
US(1FH):
参数间隔符
PP:
仪表参数号(=00~69)
DDDDDDD:
仪表参数值
SSSSS:
校验和5位十进制=00000~65535,从STX到最后一个US间每个
字符ASC值的和,再除以65536的余数)
ETB(17H):
数据结束符
NAK(15H):
错误命令或错误地址或错误参数
例子:
主机发送:
14H30H31H12H30H30H31H30H31H1FH31H32H03H(读01
号FCC下挂001号表01通道,参数号12量程零点值)
FCC回送:
14H30H31H02H30H30H31H30H31H1FH31H32H1FH2DH
30H31H32H33H2EH34H1FH30H30H37H38H39H14H(001号
表01通道,参数号12量程零点值=-0123.4,校验和=894)
1.3.4.3.写参数
主机发送:
DC4FFDC3AAACCUSPPUSDDDDDDDUSSSSSSETX
DC4(14H):
读写FCC5000
FF:
FCC5000地址码(=01~99)
DC3(13H):
写仪表参数值
AAA:
仪表地址码(=001~254)
CC:
仪表通道号(=01~32)
PP:
仪表参数号(=01~69)
DDDDDDD:
仪表参数值
SSSSS:
校验和5位十进制=00000~65535,从STX到最后一个US间每个
字符ASC值的和,再除以65536的余数)
ETB(17H):
数据结束符
FCC回送:
DC4FFACK或DC4FFNAK
DC4(14H):
读写FCC5000
FF:
FCC5000地址码(=01~99)
ACK(06H):
正确接收
NAK(15H):
接收错误
例子:
主机发送:
14H30H31H13H30H30H31H30H31H1FH31H32H1FH2DH
30H31H32H33H2EH34H1FH30H30H39H31H31H17H(写01
号FCC下挂001号表01通道,参数号12量程零点值=-0123.4,
校验和=911)
FCC回送:
14H30H31H06H(写参数成功)
1.3.4.4.读FCC时间
主机发送:
DC4FFDC200101US70ETX
FF:
FCC5000地址码(=01~99)
FCC回送:
DC4FFSTX00101US70USYYYYMMDDhhmmssUSSSSSSETB
YYYYMMDDhhmmss:
YYYYMMDDhhmmss(年月日时分秒)
例子:
主机发送:
14H30H31H12H30H30H31H30H31H1FH37H30H03H(读01
号FCC参数号70实时时间)
FCC回送:
14H30H31H02H30H30H31H30H31H1FH37H30H1FH32H
30H30H33H31H30H30H31H30H38H30H30H30H30H1FH
30H31H32H34H34H17H(01号FCC实时时间2003年10月1日
8点0分0秒,校验和=1244)
1.3.4.5.写FCC时间
主机发送:
DC4FFDC300101US70USYYYYMMDDhhmmssUSSSSSSETX
FCC回送:
DC4FFACK或DC4FFNAK
例子:
主机发送:
14H30H31H13H30H30H31H30H31H1FH37H30H1FH32H
30H30H33H31H30H30H31H30H38H30H30H30H30H1FH
30H31H32H36H31H03H(写01FCC实时时间2003年10月1日
8点0分0秒,校验和=1261)
FCC回送:
14H30H31H06H(写参数成功)
1.3.4.6.读FCC下挂仪表地址范围
主机发送:
DC4FFDC200101US71ETX
FCC回送:
DC4FFSTX00101US71USAAARSBBBUSSSSSSETB
AAA:
起始地址
BBB:
终止地址
1.3.4.7.读FCC下挂故障仪表地址
主机发送:
DC4FFDC200101US72ETX
FCC回送:
DC4FFSTX00101US72USAAARS…USSSSSSETB
AAA:
故障地址
注:
下划线为故障地址发送格式;数据为空表示无故障地址
1.3.4.8.读所有通道瞬时值
主机发送:
DC4FFDC200101US73ETX
FCC回送:
DC4FFSTX00101US73USYYYYMMDDhhmmssRSAAABBUSCCCCCCCUSDDDD…US
SSSSSETB
AAA:
仪表地址码(=001)
BB:
仪表通道号(=01)
US(1FH):
参数间隔符
PP:
仪表参数号(=00~99)
CCCCCCC:
瞬时值(-32767~32767,32767=brok,16000=H.oFL,
-2000=L.oFL,-32767=仪表故障,小数点在实际位置)
DDDD:
报警1~4报警状态(E=0:
OFFE=1:
ON)
注:
下划线为通道数据格式,故障仪表数据只发送01通道
1.3.4.9.读取FCC下一条历史数据记录
主机发送:
DC4FFDC200101US74ETX
FCC回送:
DC4FFSTXAAACCUS74USYYYYMMDDhhmmssRSAAABBUSCCCCCCCUSDDDD…US
SSSSSETB
注:
下划线为通道数据格式;通道数据为空表示历史数据已经读空
发送方式同73参数,只是故障仪表数据不发送
1.3.4.10.重读FCC上一条历史数据记录
主机发送:
DC4FFDC200101US75ETX
FCC回送:
DC4FFSTXAAACCUS75USYYYYMMDDhhmmssRSAAABBUSCCCCCCCUSDDDD…US
SSSSSETB
1.3.4.11.读取FCC时间历史数据记录读指针对应时间点
主机发送:
DC4FFDC200101US76ETX
FCC回送:
DC4FFSTX00101US76USYYYYMMDDhhmmssUSSSSSSETB
1.3.4.12.移动FCC时间历史数据记录读指针对应时间点
主机发送:
DC4FFDC300101US76USYYYYMMDDhhmmssUSSSSSSETB
FCC回送:
DC4FFACK或DC4FFNAK
用途:
FCC历史数据记录读指针通过74号参数读来一条一条移动,大量历史数据记录读取可能需要很长时间,可用76号参数直接移动到所需数据时间点,然后用74读取。
当时间点晚于当前时间,删除所有历史数据记录。
1.3.5.仪表表型字
00:
XMZ500001:
XMT/XMB500002:
XMDI5000
03:
XMS500004:
XML600005:
XMD5XX16(16)
06:
XMA500007:
XMH500008:
XML5000(3)
09:
XMJ500010:
XMD5XX08(8)11:
XMPHT/XMPHB5000
12:
XMD5XX32(32)13:
XME5000(3)14:
XMDO5000
15:
XMLH5000(4+1)16:
XMD5XX24(24)17:
XMAF5000
(2)
18:
XMC5000(24)19:
XMB8000(4)20:
XMGB5000
21:
XMGB7000
(2)
30:
XMG500031:
XMGI500032:
XMG7000
(2)
33:
XMG8000(3)34:
XMHG500035:
XMGA5000/6000(4)
36:
XMGAF5/6/7000(4)37:
XMRA5000/6000(5)38:
XMRAF5000/6000(5)
39:
XMPA7000(5)40:
XMPAF7000(5)41:
XMRA7000(6)
42:
XMRAF7000(6)43:
XMPHGA5000/600044:
XXS
45:
XMRH500046:
DFD/DFQ/DFDA/DFDQ5000/DFQA700047:
DFQA6000
50:
XMPA8000(7)51:
XMPAF8000(7)52:
XMRA8000(8)
53:
XMRAF8000(8)54:
BBC5000(7)55:
PHAB6000
58:
XMRY5000/8000(4)59:
XMY5000/8000(4)
60:
XMLY500061:
XMLY600062:
XMLRY5000/8000(4)
63:
XMJY5000/8000(4)64:
XMJRY5000/8000(4)
1.3.6.仪表分度号
00:
0~10mA线性01:
4~20mA线性02:
0~5V线性
03:
1~5V线性04:
0~100线性05:
0~10mA开方
06:
4~20mA开方07:
0~5V开方08:
1~5V开方
09:
0~100开方10:
Pt10011:
Pt100.0
12:
Pt1013:
Cu10014:
Cu50
15:
30~350Ω16:
G5317:
BA1
18:
BA219:
F120:
F2
21:
B22:
R23:
S
24:
N25:
K26:
E
27:
J28:
T29:
NiCr-AuFe0.07
30:
钨铼3-钨铼2631:
EA232:
EU2
33:
0~60mV
1.3.7.仪表参数号
1.3.7.1.只读参数号
01:
功能码02:
流量积算值03:
DA1值
04:
DA2值05:
SP值06:
累计时间
07:
08:
09:
批读PV
10:
批读参数
71:
读FCC所挂接仪表地址
72:
读FCC所挂接故障仪表地址
73:
读FCC所挂接仪表瞬时值(PV)
74:
读FCC所挂接仪表历史值
75:
重读FCC所挂接仪表历史值
1.3.7.2.读写参数号
11:
分度号12:
量程零点13:
量程满度
14:
开方小信号切除15:
DA1方式16:
DA2方式
17:
报警回差18:
报警一值19;报警二值
20:
报警三值21:
报警四值22:
报警方式
23:
付屏24:
小数点25:
仪表时钟
26:
输出零点27:
输出满度28:
运算模式
29:
DI/DO30:
通讯给定值
31:
PIDP值