FSoE: структура кадра на примерах

Один байт безопасных данных: простейший safety PDU

Содержит один экземпляр безопасных данных, состоящий всего из одного байта:

СмещениеРазмерИмяОписание
01 байтCommandКоманда
11 байтSafeData[0]безопасные данные, октет 0
22 байтаCRC_016-битный CRC
42 байтаConn_Idуникальный ID соединения

Все многобайтовые поля хранятся в little endian.

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

Два байта безопасных данных

СмещениеРазмерИмяОписание
01 байтCommandКоманда
11 байтSafeData[0]безопасные данные, октет 0
21 байтSafeData[1]безопасные данные, октет 1
32 байтаCRC_016-битный CRC
52 байтаConn_Idуникальный ID соединения

Все многобайтовые поля хранятся в little endian.

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 байтCommandКоманда
11 байтSafeData[0]безопасные данные, октет 0
21 байтSafeData[1]безопасные данные, октет 1
32 байтаCRC_016-битный CRC 0
51 байтSafeData[2]безопасные данные, октет 2
61 байтSafeData[3]безопасные данные, октет 3
72 байтаCRC_116-битный CRC 1
92 байтаConn_Idуникальный ID соединения

Все многобайтовые поля хранятся в little endian.

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 PDU и Table 3: General Safety PDU, доступно по запросу в EtherCAT Technology Group (ETG)

Связанные статьи

Обзор и основы

CRC

Коды ошибок и формат данных


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