在本胖的概念中,485总线上面的通信协议分为两大类:ASCII型和二进制型。差别就是如何区分帧头。ASCII型通信协议是依靠“起始字符”来识别数据帧的头,比如USS的“起始字符”是02H(STX);二进制型通信协议则是依靠总线空闲时间超过”多少个字符“的时间来判断数据帧的头,Modbus-RTU是典型的二进制协议,总线空闲时间超过3.5个字符时间,下一个字符就是数据帧的头。
这个USS虽然有STX(02H)当起始字符,但还用了空闲时间来判断数据帧是否结束,这就模糊了通信协议到底是ASCII型还是二进制型。
ASCII型通信协议中,所有的数据字节(不算”起始字符“、”结束字符“、还有可能有”校验“)都是可显示的ASCII,就是说数据中不能出现”起始字符“等特殊字符,否则就没法识别是不是数据帧的头了。
但本胖粗略一看这个USS协议的文本,貌似数据字节中是有可能出现STX这个起始字符的,所以本胖认为USS是二进制通信协议。
大佬出来给指点一二吧。