1、ModBus RTU协议
通过串口rs232及rs485通讯。
* rs232和rs485在接线方面有区别,在软件通讯方面无任何区别。
* 报文格式为一帧8个字节,用16进制表示。其中第一个字节为设备的地址,第二个字节为功能码,第三四个字节为寄存器的地址,第五六位为数据,第七八位为CRC校验。如下图所示:
其中串口号COM15、波特率9600、数据位8、校验位None、停止位1几个参数是软件需要用到的,用作串口类的初始化。设备号17,软件用不到,17是直接写在发送命令中的,17对应16进制11。
以设备号为17为例:
11 05 00 00 FF 00 8E AA,其中11为设备地址,05为功能码,0000为寄存器地址,FF 00为发送的数据,8E AA为CRC校验。CRC校验可在百度上面搜CRC在线校验,将前6个字节粘贴进去,得出后两个字节校验,如下图:
2、ISO14229
----ISO-14229标准的也称为UDS(Unified Diagnostic Services),是一种面向汽车电子控制单元(ECU,Electronic Control Unit)的统一诊断服务,不仅用于诊断汽车故障,还用于刷写软件等应用场景,可以说是目前汽车电子领域应用最广泛的技术协议之一。UDS简单来说是一种Client/Server的通信服务,即Tester(诊断仪)向ECU发送诊断服务请求(Request),ECU则向Tester发送对应服务请求的响应(Response)。
----ISO-14229用于汽车行业诊断通信的需求规范,它只规定了与诊断相关的服务需求,并没有涉及通信机制,因此要实现一个完整的诊断通信还需要定义网络层协议(比如ISO-15765),还有底层硬件实现方式(比如CAN控制器)。由于不涉及网络通信机制,可以架设在各种网络之上,因此ISO-14229也称为UDS(Unified Diagnostic Services)统一诊断服务。
参考:https://zhuanlan.zhihu.com/p/371990096
UDS诊断服务汇总