485通讯帧格式(485通讯报文格式)

      最后更新:2023-04-17 01:18:24 手机定位技术交流文章

      现有一设备用485通讯,格式如下,请教该用串口那种方式与其通讯

      首先,要买一个RS232转RS485的转接头,RS232头接在PC的串口上,RS485头接在设备上;其次,选择一款可以自定义协议的串口软件,如格西烽火串口助手等,按照你的命令格式编写通信命令即可。下图是格西烽火串口助手的界面,软件的自定义功能很强,任意格式的帧都能定义。
      现有一设备用485通讯,格式如下,请教该用串口那种方式与其通讯

      基于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):读写FCC5000STX(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.读单通道瞬时值主机发送: DC1 AAA CC ETXDC1(11H) : 读瞬时值AAA: 从机地址码(=001~254)CC : 通道号(=01-99)ETX(03H) : 主机结束符从机回送: STX AAA CC US MM US DDDDDDD US EEEE US SSSSS ETBSTX(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) : 从机结束符例子:主机发送: 11H 30H 30H 31H 30H 31H 03H(读001号表01通道瞬时值)从机回送: 02H 30H 30H 31H 30H 31H 1FH 30H 36H 1FH 2DH 30H 31H 32H33H 2EH 34H 1FH 31H 30H 30H 30H 1FH 30H 31H 30H 30H 34H17H(001号表为XMA5000系列,01号通道瞬时值=-0123.4,报警1动作,报警2不动作,校验和=1004)1.3.1.2. 读多通道瞬时值主机发送: DC1 AAA CC ETXDC1(11H) : 读瞬时值AAA: 从机地址码(=001~254)CC : 通道号(=00)ETX(03H) : 主机结束符从机回送1: STX AAA CC US MM US DDDDDDD US EEEE US SSSSS ETBSTX(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: STX AAA CC US MM US RS FF US GGGGGG US HHHH … US SSSSS ETBSTX(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. 读参数主机发送: DC2 AAA CC US PP ETXDC2(12H) : 读参数值AAA: 从机地址码(=001~254)CC : 通道号(=01-99)US(1FH): 参数间隔符PP : 参数号(=01-69)ETX(03H) : 主机结束符从机回送: STX AAA CC US PP US DDDDDDD US SSSSS ETBSTX(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) :从机结束符例子:主机发送: 12H 30H 30H 31H 30H 31H 1FH 31H 32H 03H(读001号表01通道参数号12量程零点值)从机回送: 02H 30H 30H 31H 30H 31H 1FH 31H 32H 1FH 2DH 30H 31H 32H33H 2EH 34H 1FH 30H 30H 37H 37H 37H 17H(001号表01通道参数号12量程零点值=-0123.4,校验和=777)1.3.3. 写参数主机发送: DC3 AAA CC US PP US DDDDDDD US SSSSS ETXDC3(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) :接收错误例子:主机发送: 13H 30H 30H 31H 30H 31H 1FH 31H 32H 1FH 2DH 30H 31H 32H33H 2EH 34H 1FH 30H 30H 37H 39H 34H 17H(写001号表01通道参数号12量程零点值=-0123.4,校验和=797)从机回送: 06H (写参数成功)1.3.4. 读写FCC下挂仪表数据1.3.4.1. 读单通道瞬时值主机发送: DC4 FF DC1 AAA CC ETXDC4(14H) : 读写FCC5000FF : FCC5000地址码(=01~99)DC1(11H) : 读仪表瞬时值AAA: 仪表地址码(=001~254)CC : 仪表通道号(=01~99)ETX(03H) : 主机命令结束符FCC回送: DC4 FF STX AAA CC US MM US DDDDDDD US EEEE US SSSSS ETB或DC4 FF NAKDC4(14H) : 读写FCC5000FF : 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) :错误命令或错误地址例子:主机发送: 14H 30H 31H 11H 30H 30H 31H 30H 31H 03H(读01号FCC下挂001号表01通道瞬时值)FCC回送: 14H 30H 31H 02H 30H 30H 31H 30H 31H 1FH 30H 36H 1FH 2DH30H 31H 32H 33H 2EH 34H 1FH 31H 30H 30H 30H 1FH 30H 31H31H 32H 31H 17H(001号表为XMA5000系列,01号通道瞬时值=-0123.4,报警1动作,报警2不动作,校验和=1121)1.3.4.2. 读参数主机发送: DC4 FF DC2 AAA CC US PP ETXDC4(15H) : 读写FCC5000FF : FCC5000地址码(=01~99)DC2(12H) : 读仪表参数值AAA: 仪表地址码(=001~254)CC : 仪表通道号(=01~32)PP : 仪表参数号(=01~69)ETX(03H) : 主机命令结束符FCC 回送:DC4 FF STX AAA CC US PP US DDDDDDD US SSSSS ETB 或DC4 FF NAKDC4(14H) : 读写FCC5000FF : 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) :错误命令或错误地址或错误参数例子:主机发送: 14H 30H 31H 12H 30H 30H 31H 30H 31H 1FH 31H 32H 03H(读01号FCC下挂001号表01通道,参数号12量程零点值)FCC回送: 14H 30H 31H 02H 30H 30H 31H 30H 31H 1FH 31H 32H 1FH 2DH30H 31H 32H 33H 2EH 34H 1FH 30H 30H 37H 38H 39H 14H(001号表01通道,参数号12量程零点值=-0123.4,校验和=894)1.3.4.3. 写参数主机发送: DC4 FF DC3 AAA CC US PP US DDDDDDD US SSSSS ETXDC4(14H) : 读写FCC5000FF : 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回送:DC4 FF ACK或DC4 FF NAKDC4(14H) : 读写FCC5000FF : FCC5000地址码(=01~99)ACK(06H) :正确接收NAK(15H) :接收错误例子:主机发送: 14H 30H 31H 13H 30H 30H 31H 30H 31H 1FH 31H 32H 1FH 2DH30H 31H 32H 33H 2EH 34H 1FH 30H 30H 39H 31H 31H 17H(写01号FCC下挂001号表01通道,参数号12量程零点值=-0123.4,校验和=911)FCC回送: 14H 30H 31H 06H (写参数成功)1.3.4.4. 读FCC时间主机发送: DC4 FF DC2 00101 US 70 ETXFF : FCC5000地址码(=01~99)FCC回送: DC4 FF STX 00101 US 70 US YYYYMMDDhhmmss US SSSSS ETBYYYYMMDDhhmmss : YYYYMMDDhhmmss(年月日时分秒)例子:主机发送: 14H 30H 31H 12H 30H 30H 31H 30H 31H 1FH 37H 30H 03H(读01号FCC参数号70实时时间)FCC回送: 14H 30H 31H 02H 30H 30H 31H 30H 31H 1FH 37H 30H 1FH 32H30H 30H 33H 31H 30H 30H 31H 30H 38H 30H 30H 30H 30H 1FH30H 31H 32H 34H 34H 17H(01号FCC实时时间2003年10月1日8点0分0秒,校验和=1244)1.3.4.5. 写FCC时间主机发送: DC4 FF DC3 00101 US 70 US YYYYMMDDhhmmss US SSSSS ETXFCC回送: DC4 FF ACK或DC4 FF NAK例子:主机发送: 14H 30H 31H 13H 30H 30H 31H 30H 31H 1FH 37H 30H 1FH 32H30H 30H 33H 31H 30H 30H 31H 30H 38H 30H 30H 30H 30H 1FH30H 31H 32H 36H 31H 03H(写01 FCC实时时间2003年10月1日8点0分0秒,校验和=1261)FCC回送: 14H 30H 31H 06H (写参数成功)1.3.4.6. 读FCC下挂仪表地址范围主机发送: DC4 FF DC2 00101 US 71 ETXFCC回送: DC4 FF STX 00101 US 71 US AAA RS BBB US SSSSS ETBAAA : 起始地址BBB : 终止地址1.3.4.7. 读FCC下挂故障仪表地址主机发送: DC4 FF DC2 00101 US 72 ETXFCC回送: DC4 FF STX 00101 US 72 US AAA RS … US SSSSS ETBAAA : 故障地址注 : 下划线为故障地址发送格式;数据为空表示无故障地址1.3.4.8. 读所有通道瞬时值主机发送: DC4 FF DC2 00101 US 73 ETXFCC回送: DC4 FF STX 00101 US 73 US YYYYMMDDhhmmss RS AAA BB US CCCCCCC US DDDD … USSSSSS ETBAAA:仪表地址码(=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下一条历史数据记录主机发送: DC4 FF DC2 00101 US 74 ETXFCC回送: DC4 FF STX AAA CC US 74 US YYYYMMDDhhmmss RS AAA BB US CCCCCCC US DDDD … USSSSSS ETB注 : 下划线为通道数据格式;通道数据为空表示历史数据已经读空发送方式同73参数,只是故障仪表数据不发送1.3.4.10. 重读FCC上一条历史数据记录主机发送: DC4 FF DC2 00101 US 75 ETXFCC回送: DC4 FF STX AAA CC US 75 US YYYYMMDDhhmmss RS AAA BB US CCCCCCC US DDDD … USSSSSS ETB1.3.4.11. 读取FCC时间历史数据记录读指针对应时间点主机发送: DC4 FF DC2 00101 US 76 ETXFCC回送: DC4 FF STX 00101 US 76 US YYYYMMDDhhmmss US SSSSS ETB1.3.4.12. 移动FCC时间历史数据记录读指针对应时间点主机发送: DC4 FF DC3 00101 US 76 US YYYYMMDDhhmmss US SSSSS ETBFCC回送: DC4 FF ACK或DC4 FF NAK用途:FCC历史数据记录读指针通过74号参数读来一条一条移动,大量历史数据记录读取可能需要很长时间,可用76号参数直接移动到所需数据时间点,然后用74读取。当时间点晚于当前时间,删除所有历史数据记录。1.3.5. 仪表表型字00:XMZ500001:XMT/XMB500002:XMDI500003:XMS500004:XML6000 05:XMD5XX16 (16)06:XMA500007:XMH5000 08:XML5000 (3)09:XMJ5000 10:XMD5XX08 (8)11:XMPHT/XMPHB500012:XMD5XX32(32)13:XME5000 (3) 14:XMDO500015:XMLH5000 (4+1) 16:XMD5XX24 (24)17:XMAF5000 (2)18:XMC5000(24)19:XMB8000 (4)20:XMGB500021:XMGB7000 (2)30:XMG500031:XMGI5000 32: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/6000 44:XXS45:XMRH5000 46:DFD/DFQ/DFDA/DFDQ5000/DFQA7000 47:DFQA600050:XMPA8000 (7) 51:XMPAF8000 (7) 52:XMRA8000 (8)53:XMRAF8000 (8)54:BBC5000(7)55:PHAB600058:XMRY5000/8000(4)59:XMY5000/8000(4)60:XMLY500061:XMLY6000 62: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:Pt100 11:Pt100.012:Pt10 13:Cu100 14:Cu5015:30~350Ω 16:G5317:BA118:BA219:F120:F221:B22:R 23:S24:N25:K 26:E27:J28:T 29:NiCr-AuFe0.0730:钨铼3-钨铼26 31:EA232:EU233:0~60mV1.3.7. 仪表参数号1.3.7.1. 只读参数号01:功能码 02:流量积算值03:DA1值04:DA2值 05:SP值06:累计时间07:08: 09:批读 PV10:批读参数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/DO 30:通讯给定值31:PID P 值 32:PID I 值33:PID D值34:PID 上限幅 35:PID 下限幅36:PID 安全阀位37:PID 变化率 38:PID SP0 值39:PWM 周期40:SP.XX(程序起点)41:t.XX (程序时间) 42:启停程序(0=启动)43:手自动切换(0=自动) 44:PID输出值 45:锅炉高度零点46:锅炉高度满度 47:运算系数K 48:运算小值切除49:阀门行程时间 50:阀门调节死区51:(风煤比系数或风油比系数或风气比系数 数值范围000.1~9999)52:(负荷70%时炉温T01 数值范围850 ~ 1050)53:(负荷20%时炉温T02 数值范围850 ~ 1050)54:(负荷70%时含氧量X01 数值范围1 ~ 10)55:(负荷20%时含氧量X02 数值范围1 ~ 10)56:(床温调节系数Kt 数值范围0 ~ 30)57:(含氧量调节系数Kx 数值范围0 ~ 30)58:控制模式59:偏置值60:本机/远程给定切换(0=本机)61:远程给定系数K62:远程给定偏值B63:SP.XX(气分起点)64:t.XX (气分时间) 65:选用曲线号66:BBC保留67:BBC保留 68:BBC保留70:读写FCC时钟76:移动FCC所挂接仪表历史值时间指针128:参数上锁129:参数开锁130:通讯地址130:通讯波特率 131:OLD1值132:NEW1值133:OID2值134:NEW2值135:标定室温值136:标定输入零点 137:标定输入满度 138:标定输出零点139:标定输出满度2 仪表分类说明2.1.1.XMZ5000表型字 = 00通道数 = 01参数号 = 11(分度号参数值范围 00 ~ 99)参数号 = 12(量程零点参数值范围 -01999 ~ 15999 或 –0199.9 ~ 1599.9或 –019.99 ~ 159.99 或 –01.999 ~ 15.999)参数号 = 13(量程满点参数值范围 -01999 ~ 15999 或 –0199.9 ~ 1599.9或 –019.99 ~ 159.99 或 –01.999 ~ 15.999)参数号 = 14(开方小信号切除参数值范围 -01999 ~ 15999 或 –0199.9 ~ 1599.9或 –019.99 ~ 159.99 或 –01.999 ~ 15.999) 参数号 = 24(小数点参数值范围 00000 ~ 00003,0=小数点在个位,1=小数点在十位,2=小数点在百位,3=小数点在千位)
      基于485的多机通信技术

      485通讯协议和modbus协议区别

      485通讯协议和modbus协议区别是特点不同。Modbus的特点有:用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权;Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。485通讯协议的特点有:RS-485的数据最高传输速率为10Mbps;RS-485接口强,即抗噪声干扰性好。 演示机型:华为MateBook X系统版本:win10485通讯协议和modbus协议区别是特点不同。Modbus的特点有:用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权;Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等;Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。485通讯协议的特点有:RS-485的数据最高传输速率为10Mbps;RS-485接口强,即抗噪声干扰性好;RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米(理论上的数据,在实际操作中,极限距离仅达1200米左右),另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。
      485通讯协议和modbus协议区别

      详解RS232、RS485、RS422、串口和握手

      计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口。RS-232-C是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数,代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它是在1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。在TxD和RxD上:逻辑1(MARK)=-3V~-15V ,逻辑0(SPACE)=+3~+15V  在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V~+15V信号无效(断开,OFF状态,负电压)=-3V~-15V根据设备供电电源的不同,+-5、+-10、+-12和+-15这样的电平都是可能的。由于RS-232C并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。最近,8管脚的RJ-45型连接器变得越来越普遍,尽管它的管脚分配相差很大。EIA/TIA 561标准规定了一种管脚分配的方法,但是由Dave Yost发明的被广泛使用在Unix计算机上的Yost串连设备配线标准 ("Yost Serial Device Wiring Standard")以及其他很多设备都没有采用上述任一种连线标准。下表中列出的是被较多使用的RS-232中的信号和管脚分配:信号的标注是从DTE设备的角度出发的,TD、DTR和RTS信号是由DTE产生的,RD、DSR、CTS、DCD和RI信号是由DCE产生的。PC 机的RS-232 口为9 芯针插座。一些设备与PC 机连接的RS-232 接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据TXD”、“接收数据RXD”和“信号地GND”。双向接口能够只需要3根线制作是因为RS-232的所有信号都共享一个公共接地。非平衡电路使得RS-232非常的容易受两设备间基点电压偏移的影响。对于信号的上升期和下降期,RS-232也只有相对较差的控制能力,很容易发生串话的问题。RS-232被推荐在短距离(15m以内)间通信。由于非对称电路的关系,RS-232接口电缆通常不是由双绞线制作的。RS-232-C标准规定的数据传输速率为每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特,驱动器允许有2500pF的电容负载,通信距离将受此电容限制。例如,采用150pF/m的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。由RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应为50 英尺,其实这个4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10-20%的范围工作的,所以实际使用中最大距离会远超过50英尺,美国DEC公司曾规定允许码元畸变为10%而得出下面实验结果。其中1 号电缆为屏蔽电缆,型号为DECP.NO.9107723 内有三对双绞线,每对由22# AWG 组成,其外覆以屏蔽网。2 号电缆为不带屏蔽的电缆。型号为DECP.NO.9105856-04是22#AWG 的四芯电缆。在RS-232标准中,字符是以一系列位元来一个接一个的传输。最长用的编码格式是异步起停asynchronous start-stop格式,它使用一个起始位后面紧跟7或8 个数据比特,这个可能是奇偶位,然后是两个停止位。所以发送一个字符需要10比特,带来的一个好的效果是使全部的传输速率,发送信号的速率以10分划。串行通信在软件设置里需要做多项设置,最常见的设置包括波特率、奇偶校验和停止位。波特率是指从一设备发到另一设备的波特率,即每秒钟多少比特bits per second (bit/s)。典型的波特率是300、1200、2400、9600、19200等bit/s。一般通信两端设备都要设为相同的波特率,但有些设备也可以设置为自动检测波特率。奇偶校验Parity是用来验证数据的正确性。奇偶校验一般不用,如果使用,那么既可以做奇校验也可以做偶校验。奇偶校验是通过修改每一发送字节(也可以限制发送的字节)来工作的。如果不作奇偶校验,那么数据是不会被改变的。在偶校验中,因为奇偶校验位会被相应的置1或0(一般是最高位或最低位),所以数据会被改变以使得所有传送的数位(含字符的各数位和校验位)中“1”的个数为偶数;在奇校验中,所有传送的数位(含字符的各数位和校验位)中“1”的个数为奇数。奇偶校验可以用于接受方检查传输是否发送生错误——如果某一字节中“1”的个数发生了错误,那么这个字节在传输中一定有错误发生。如果奇偶校验是正确的,那么要么没有发生错误要么发生了偶数个的错误。停止位是在每个字节传输之后发送的,它用来帮助接受信号方硬件重同步。在串行通信软件设置中D/P/S是常规的符号表示。8/N/1(非常普遍)表明8bit数据,没有奇偶校验,1bit停止位。数据位可以设置为7、8或者9,奇偶校验位可以设置为无(N)、奇(O)或者偶(E),奇偶校验位可以使用数据中的比特位。所以8/E/1就表示一共8位数据位,其中一位用来做奇偶校验位。停止位可以是1、1.5或者2位的(1.5是用在波特率为60wpm的电传打字机上的)。当需要发送握手信号或数据完整性检测时需要制定其他设置。公用的组合有RTS/CTS,DTR/DSR或者XON/XOFF(实际中不使用连接器管脚而在数据流内插入特殊字符)。接受方把XON/XOFF信号发给发送方来控制发送方何时发送数据,这些信号是与发送数据的传输方向相反的。XON信号告诉发送方接受方准备好接受更多的数据,XOFF信号告诉发送方停止发送数据直到知道接受方再次准备好。XON/XOFF一般不赞成使用,推荐用RTS/CTS控制流来代替它们。XON/XOFF是一种工作在终端间的带内方法,但是必须两端都支持这个协议,而且在突然启动的时候会有混淆的可能XON/XOFF可以工作于3线的接口。RTS/CTS最初是设计为电传打字机和调制解调器半双工协作通信的,每次它只能一方调制解调器发送数据。终端必须发送请求发送信号然后等到调制解调器回应清除发送信号。尽管RTS/CTS是通过硬件达到握手,但它有自己的优势。经过许多年来RS-232 器件以及通信技术的改进,RS-232 的通信距离已经大大增加。由于RS-232 接口标准出现较早,难免有不足之处,主要有以下四点:(1) 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL 电路连接。(2) 传输速率较低,在异步传输时,波特率为20Kbps。现在由于采用新的UART 芯片16C550 等,波特率达到115.2Kbps。(3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。(4) 传输距离有限,最大传输距离标准值为50 米,实际上也只能用在15米左右。针对RS-232串口标准的局限性,人们又提出了RS-422,RS-485接口标准。RS-485/422采用平衡发送和差分接收方式实现通信:发送端将串行口的TTL电平信号转换成差分信号A、B两路输出,经过线缆传输之后在接收端将差分信号还原成TTL电平信号。由于传输线通常使用双绞线,又是差分传输,所以又极强的抗共模干扰的能力,总线收发器灵敏度很高,可以检测到低至200mV电压。故传输信号在千米之外都是可以恢复。驱动器能输出±7V的共模电压接收器的输入电阻RIN≥12kΩ输入端的电容≤50pF在节点数为32个,配置了120Ω的终端电阻的情况下,驱动器至少还能输出电压1.5V(终端电阻的大小与所用双绞线的参数有关)发送端:逻辑"1"以两线间的电压差为+(2 至6) V 表示;逻辑"0"以两线间的电压差为-(2 至6)V 表示。接收器的输入灵敏度为200mV(即(V+)-(V-)≥0.2V,表示信号"0";(V+)-(V-)≤-0.2V,表示信号"1")RS-485 的数据最高传输速率为10Mbps,最大的通信距离约为1219M,传输速率与传输距离成反比,在10Kb/S的传输速率下,才可以达到最大的通信距离。但是由于RS-485 常常要与PC 机的RS-232口通信,所以实际上一般最高115.2Kbps。又由于太高的速率会使RS-485 传输距离减小,所以往往为9600bps 左右或以下。RS-485 接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。RS-485采用半双工工作方式,支持多点数据通信。RS-485总线网络拓扑一般采用终端匹配的总线型结构。即采用一条总线将各个节点串接起来,不支持环形或星型网络。如果需要使用星型结构,就必须使用485中继器或者485集线器才可以。RS-485/422总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。RS-485 的国际标准并没有规定RS485 的接口连接器标准、所以采用接线端子或者DB-9、DB-25 等连接器都可以。1、抗干扰性:RS485 接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。2、传输距离:RS485 接口的最大传输距离标准值为 1200 米(9600bps 时),实际上可达 3000 米。RS232 传输距离有限,最大传输距离标准值为 50 米,实际上也只能用在 15 米左右。3、通信能力:RS-485 接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS-485 接口方便地建立起设备网络。RS-232只允许一对一通信。4、传输速率:RS-232传输速率较低,在异步传输时,波特率为 20Kbps。RS-485 的数据最高传输速率为 10Mbps 。5、信号线:RS485 接口组成的半双工网络,一般只需二根信号线。RS-232 口一般只使用 RXD、TXD、GND 三条线 。6、电气电平值:RS-485的逻辑"1"以两线间的电压差为+(2~6) V 表示;逻辑"0"以两线间的电压差为-(2~6)V 表 示 。在 RS-232-C 中任何一条信号线的电压均为负逻辑关系。即:逻辑"1",-5~-15V;逻辑"0 " +5~+15V 。RS-422 的电气性能与RS-485近似一样。主要的区别在于:(1)RS-485 有2 根信号线:发送和接收都是A 和B。由于RS-485 的收与发是共用两根线,所以不能够同时收和发(半双工)。(2)RS-422 有4 根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422 的收与发是分开的,所以可以同时收和发(全双工)。(3)支持多机通信的RS-422将Y-A 短接作为RS-485 的A、将RS-422 的Z-B 短接作为RS-485 的B可以这样简单转换为RS-485。很多人往往都误认为RS-422串行接口是RS-485串行接口的全双工版本,实际上,它们在电器特性上存在着不少差异,共模电压范围和接收器输入电阻不同使得该两个标准适用于不同的应用领域。RS-485串行接口的驱动器可用于RS-422串行接口的应用中,因为RS-485串行接口满足所有的RS-422串行接口性能参数,反之则不能成立。对于RS-485串行接口的驱动器,共模电压的输出范围是-7V和+12V之间;对于RS-422串行接口的驱动器,该项性能指标仅有±7V。RS-422串行接口接收器的最小输入电阻是4KΩ;而RS-485串行接口接收器的最小输入电阻则是12KΩ。1、RS-422 有4 根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422 的收与发是分开的所以可以同时收和发(全双工)。2、RS-485 只有两根数据线:发送和接收都是A 和B。由于RS-485 的收与发是共用两根线,所以不能同时收和发(半双工)。UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx 和Tx)就可以完成通信过程,因此也称为异步串行通信。串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。RS-232通行方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定时采用使用相同的波特率。尽管这种方法对于大多数应用已经足够,但是对于接收方过载的情况这种使用受到限制。这时需要串口的握手功能。在这一部分,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手和Xmodem。我们讨论的第一种握手是软件握手。通常用在实际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。必须的线仍然是三根:Tx、Rx和地线,因为控制字符在传输线上和普通字符没有区别,函数SetXModem允许用户使能或者禁止用户使用两个控制字符XON和OXFF。这些字符在通信中由接收方发送,使发送方暂停。例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。为了暂时停止传输,接收方发送XOFF,典型的值是十进制19,即十六进制13,直到输入buffer空了。一旦接收方准备好接收,它发送XON,典型的值是十进制17,即十六进制11,继续通信。输入buffer半满时,LabWindows发送XOFF。此外,如果XOFF传输被打断,LabWindows会在buffer达到75%和90%时发送XOFF。显然,发送方必须遵循此守则以保证传输继续。第二种是使用硬件线握手。和Tx和Rx线一样,RTS/CTS和DTR/DSR一起工作,一个作为输出,另一个作为输入。第一组线是RTS (Request to Send)和CTS(Clear to Send)。当接收方准备好接收数据,它置高RTS线表示它准备好了,如果发送方也就绪,它置高CTS,表示它即将发送数据。另一组线是DTR(Data Terminal Ready)和DSR(Data Set Ready)。这些现主要用于Modem通信。使得串口和Modem通信他们的状态。例如:当Modem已经准备好接收来自PC的数据,它置高DTR线,表示和电话线的连接已经建立。读取DSR线置高,PC机开始发送数据。一个简单的规则是DTR/DSR用于表示系统通信就绪,而RTS/CTS用于单个数据包的传输。在LabWindows,函数SetCTSMode使能或者禁止使用硬件握手。如果CTS模式使能,LabWindows使用如下规则:当PC发送数据:RS-232库必须检测CTS线高后才能发送数据。当PC接收数据:如果端口打开,且输入队列有空接收数据,库函数置高RTS和DTR。如果输入队列90%满,库函数置低RTS,但使DTR维持高电平。如果端口队列近乎空了,库函数置高RTS,但使DRT维持高电平。如果端口关闭,库函数置低RTS和DTR。最后讨论的握手叫做XModem文件传输协议。这个协议在Modem通信中非常通用。尽管它通常使用在Modem通信中,XModem协议能够直接在其他遵循这个协议的设备通信中使用。在LabWindows中,实际的XModem应用对用户隐藏了。只要PC和其他设备使用XModem协议,在文件传输中就使用LabWindows的XModem函数。函数是XModemConfig,XModemSend和XModemReceive。XModem使用介于如下参数的协议:start_of_data、end_of_data、neg_ack、wait_delay、 start_delay、max_tries、packet_size。这些参数需要通信双方认定,标准的XModem有一个标准的定义:然而,可以通过 XModemConfig函数修改,以满足具体需要。这些参数的使用方法由接收方发送的字符neg_ack确定。这通知发送方其准备接收数据。它开始尝试发送,有一个超时参数start_delay;当超时的尝试超过max_ties次数,或者收到接收方发送的start_of_data,发送方停止尝试。如果从发送方收到start_of_data,接收方将读取后继信息数据包。包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,和进一步错误检查的求和校验值。在读取数据后,接收方会调用wait_delay,然后想发送方发送响应。如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值max_tries。如果一直没有收到响应,发送方通知用户传输数据失败。 由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包,后面会填充ASCII码NULL(0)字节。这导致接收的数据比原数据多。在XModem情况下一定不要使用XON/XOFF,因为XModem发送方发出包的数目很可能增加到XON/OFF控制字符的值,从而导致通信故障。
      详解RS232、RS485、RS422、串口和握手

      RS485通讯数据格式是随意的吗?

      可以根据应用的情况,自己设计 数据格式 也可以遵循 同意的modbus 协议(通行标准)
      RS485通讯数据格式是随意的吗?

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/75947.html

          热门文章

          文章分类