通信协议解读

本文详细介绍了应用于仪器各模块间通信的协议,支持串口、网络和CAN总线。数据包格式包括起始位、长度、帧号、加密明key、ID、包类型、CMD、Data和CRC等字段。包类型定义了命令包、数据包、错误帧和状态帧等。数据段格式中,数据类型包括char、unsigned char等,并规定了数据长度和起始位置。此外,协议设定了优先级规则和重发机制,以及错误帧格式,用于传递错误信息。
摘要由CSDN通过智能技术生成

目的:应用于各仪器的各个模块软件之间的交互。

支持串口、网络通信和CAN总线通信

包格式定义如表:

start1

Start2

Config

lenth

帧号

加密明key

ID

ID

包类型

CMD

Data

crc

0x69

0xAA

从源ID开始

0~4Byte

ID

目标ID

命令

数据

crc校验

1.起始位为固定的两个Byte:0x69AA;

2.Lenth为从加密明Key到crc检验位的数据包长度,以Byte为单位,包括Key但不包含crc位,最短为1Byte,最大4Byte,串口通信建议使用1Byte;

3.帧号:0x01-0xFF循环使用,重发帧号相同。

4.加密明key:该数据为可变字段,根据系统和帧号形成加密明key,与系统固定密匙对从包类型CRC(不包括CRC的数据进行加密,具体加密方式详见加密指导规则。

5.源ID:源ID为发送模块的ID,0x01~0xFF;

6.目标ID:源ID为接收模块的ID,0x01~0xFF;

7.包类型:包类型定义如表:                              

编码

包类型

0x01

命令包帧

0x02

数据包帧

0x03

错误帧

0x04

状态帧

0x05

应答帧

其他预留,可自定义

8.CMD:为命令字,代表该ID模块的发送的命令、状态的代号,接收模块通过该命令字可以知道该命令是否属于自身要进行执行或是忽略的命令。

9.Data:为数据段,为数据包携带的数据;

数据(Data)格式定义如表:数据包格式

1

2

3

4

5

6

7

8

9

10

...

类型

数据总长度

数据起始位置

数据长度

数据(Data)中的数据类型定义为:

编码

数据类型

0x01

char

0x02

Unsigned char

0x03

short

0x04

Unsigned short

0x05

int

0x06

Unsigned int

0x07

float

0x08

double

其他

请自定义,数据解析方式请说明

总数据长度:需要发送的数据的总个数,请根据实际情况进行定义;

数据起始位置:当前发送帧所携带数据的第一个数据在总数据的位置信息;

数据长度:为该帧携带的有效数据长度;

10.Crc:为由ID到data段生成的0~4Byte校验码,其校验码生成方式见附录,请尽可能只用其定义的CRC-8、CRC-16和CRC-32;

数据说明:

仪器数据按小端模式,即当数据为0xFFF67B6A,其串口发送先发送0x6A,…,0xFF。

 优先等级规则

本协议中,共分为4个等级,

typedef enum

{

EMERGENCY_LOW,

EMERGENCY_NORMAL,

EMERGENCY_HIGH,

EMERGENCY_VERY_HIGH

}EMERGENCY_STATE;

对于紧急度为EMERGENCY_VERY_HIGH的要优先任何情况进行优先处理,EMERGENCY_HIGH等级的低于重发机制下的命令且低于EMERGENCY_VERY_HIGH,优先等级依次递减。

重发机制

任何模块收到非应答帧(ACK帧)度需要对该帧进行应答,应答帧一般默认紧急程度为最高,应答应在系统设定时间内完成。当超过最大应答时间,该帧发送方需要进行重新发送,最大次数为3次,三次未应答,可能通信系统异常,进行错误处理。对于接收端,对同帧号的帧应该只处理处理一次。

错误帧格式

错误帧主要是携带仪器在运行过程中的错误信息,错误信息通过编码携带。其具体格式定义如下:

1

2

3

4

5

错误等级

错误编码

编码

数据类型

0x01

Class A

0x02

Class B

0x03

Class C

0x04~0xFF

其他,请自定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

maple_zmz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值