通过示例解析 FSoE 帧结构

一字节安全数据:最简单的安全 PDU

该 PDU 仅包含一个安全数据实例,且只占用一个字节。

偏移大小名称描述
01 byteCommand命令
11 byteSafeData[0]安全数据,第 0 个字节
22 byteCRC_016 位 CRC
42 byteConn_Id唯一连接 ID

所有多字节字段均以小端序存储。

FSoEShortestSafetyPDU.h
struct __attribute__((packed)) FSoEShortestSafetyPDU {
    uint8_t Command;
    uint8_t SafeData_0;
    uint16_t CRC_0;
    uint16_t Conn_Id;
};

两字节安全数据

偏移大小名称描述
01 byteCommand命令
11 byteSafeData[0]安全数据,第 0 个字节
21 byteSafeData[1]安全数据,第 1 个字节
32 byteCRC_016 位 CRC
52 byteConn_Id唯一连接 ID

所有多字节字段均以小端序存储。

FSoETwoByteSafeDataPDU.h
struct __attribute__((packed)) FSoETwoByteSafeDataPDU {
    uint8_t Command;
    uint8_t SafeData_0;
    uint8_t SafeData_1;
    uint16_t CRC_0;
    uint16_t Conn_Id;
};

四字节安全数据

偏移大小名称描述
01 byteCommand命令
11 byteSafeData[0]安全数据,第 0 个字节
21 byteSafeData[1]安全数据,第 1 个字节
32 byteCRC_016 位 CRC 0
51 byteSafeData[2]安全数据,第 2 个字节
61 byteSafeData[3]安全数据,第 3 个字节
72 byteCRC_116 位 CRC 1
92 byteConn_Id唯一连接 ID

所有多字节字段均以小端序存储。

FSoEFourByteSafeDataPDU.h
struct __attribute__((packed)) FSoEFourByteSafeDataPDU {
    uint8_t Command;
    uint8_t SafeData_0;
    uint8_t SafeData_1;
    uint16_t CRC_0;
    uint8_t SafeData_2;
    uint8_t SafeData_3;
    uint16_t CRC_1;
    uint16_t Conn_Id;
};

来源: ETG.5100 S (D) V1.2.0,Table 4: Shortest safety PDUTable 3: General Safety PDU可向 EtherCAT Technology Group (ETG) 申请获取


Check out similar posts by category: FSoE, EtherCAT, Safety