MODBUS/CANBUS现场总线通信网关应定义CANBUS相关的应用层协议,可参考如下定义:
1.规定网关收到CAN数据帧中的第一个字节为CANBUS的功能码,如可定义功能码为0x0F时,与MODBUS进行通信。
2.规定CAN数据帧中的第2个字节的高4位为该帧的标号位,低4位为该帧中包含的数据字节数,该字节数为MODBUS协议中数据域的字节数。
3.规定CAN数据帧中的第3,第4个字节分别为MODBUS的地址码和功能码。
4.规定从CAN数据帧的第5个字节开始为MODBUS的数据域,由于MODBUS的数据域一般为4个字节,此时CAN数据帧的数据段恰好为8个字节。
5.当MODBUS数据长度大于4字节时,需要从2个或者多个连续发送的标号相同的CAN数据帧中获得完整的MODBUS数据。当获得的数据位数与帧中给出的位数不同时丢弃该帧。
在应用时,需定义一个缓冲区A,一个数据缓冲区B,分别用于临时存放CANBUS到MODBUS的数据和MODBUS到CANBUS的数据。 |