Перейти на компактные 12-словные записи v4 и сохранять 10 процентов банка после отключения. Добавить трёхсекундное ожидание роста ЗПТ и настраиваемый лимит пусков. Явно инициализировать состояние UART и гарантировать публикацию параметров EEPROM перед запуском Timer2. Сохранить воспроизводимые сборки, регрессионные проверки, документацию и обновлённые результаты сборки; исключить временные артефакты.
76 lines
5.3 KiB
C
76 lines
5.3 KiB
C
/* Обработка Modbus, заводские параметры и сохранение настроек. Русские пояснения сохранены в UTF-8. */
|
||
/* Начинает условие: MESSAGE_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||
#ifndef MESSAGE_H
|
||
/* Определяет защитный символ или переключатель MESSAGE_H для последующей компиляции. */
|
||
#define MESSAGE_H
|
||
|
||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||
typedef unsigned char CHAR;
|
||
|
||
/* Задаёт ANSWER_LEN = 0x80; данные ANSWER_LEN. */
|
||
#define ANSWER_LEN 0x80 //70 // 16+16+16+16+6
|
||
/* Задаёт REPLY_LEN = 0x19; данные REPLY_LEN. */
|
||
#define REPLY_LEN 0x19
|
||
|
||
/* Задаёт byte_hi = byte_1; данные byte_hi. */
|
||
#define byte_hi byte_1
|
||
/* Задаёт byte_lo = byte_0; данные byte_lo. */
|
||
#define byte_lo byte_0
|
||
|
||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||
typedef struct
|
||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||
{
|
||
/* Объявляет Address — адрес. */
|
||
unsigned char Address; // Адрес контроллера
|
||
/* Объявляет Number — данные Number. */
|
||
unsigned char Number; // Номер команды
|
||
|
||
/* Продолжает список аргументов, полей или выражение BAITE byte0;; порядок элементов сохраняется. */
|
||
BAITE byte0;
|
||
/* Продолжает список аргументов, полей или выражение BAITE byte1;; порядок элементов сохраняется. */
|
||
BAITE byte1;
|
||
/* Продолжает список аргументов, полей или выражение BAITE byte2;; порядок элементов сохраняется. */
|
||
BAITE byte2;
|
||
/* Продолжает список аргументов, полей или выражение BAITE byte3;; порядок элементов сохраняется. */
|
||
BAITE byte3;
|
||
/* Продолжает список аргументов, полей или выражение BAITE byte4;; порядок элементов сохраняется. */
|
||
BAITE byte4;
|
||
/* Продолжает список аргументов, полей или выражение BAITE byte5;; порядок элементов сохраняется. */
|
||
BAITE byte5;
|
||
/* Продолжает список аргументов, полей или выражение BAITE byte6;; порядок элементов сохраняется. */
|
||
BAITE byte6;
|
||
/* Продолжает список аргументов, полей или выражение BAITE byte7;; порядок элементов сохраняется. */
|
||
BAITE byte7;
|
||
|
||
/* Объявляет crc_lo — данные crc_lo. */
|
||
unsigned char crc_lo;
|
||
/* Объявляет crc_hi — данные crc_hi. */
|
||
unsigned char crc_hi;
|
||
/* Объявляет add_byte — данные add_byte. */
|
||
unsigned char add_byte;
|
||
/* Продолжает список аргументов, полей или выражение } CMD_TO_TMS;; порядок элементов сохраняется. */
|
||
} CMD_TO_TMS;
|
||
|
||
/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит. Память определена в другом модуле. */
|
||
extern int modbus[];
|
||
|
||
/* Обслуживает чтение регистров FC03 с проверкой адреса, длины и формированием ответа RTU. */
|
||
void ReceiveCommandModbus3(RS_DATA *rs_arr);
|
||
/* Обслуживает одиночную запись FC06, проверяя доступность регистра и допустимость значения. */
|
||
void ReceiveCommandModbus6(RS_DATA *rs_arr);
|
||
/* Объявляет интерфейс функции SendCommandModbus4; реализация вызывается через этот прототип. */
|
||
void SendCommandModbus4(RS_DATA *rs_arr);
|
||
/* Объявляет интерфейс функции ReceiveAnswerModbus4; реализация вызывается через этот прототип. */
|
||
void ReceiveAnswerModbus4(RS_DATA *rs_arr);
|
||
|
||
/* Сохраняет технологические регистры в область параметров, отделённую от загрузочного образа EEPROM. */
|
||
void Save_params(void);
|
||
/* Читает сохранённые регистры из области параметров EEPROM и применяет настройки платы. */
|
||
void Load_params(void);
|
||
/* Объявляет восстановление заводских параметров; для LOAD функция задаёт тайм-аут свежести CAN 2000 мс. */
|
||
void Default_params(void);
|
||
|
||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||
#endif //MESSAGE_H
|