Files
Balsam_167/Source/Internal/Include/gas167.h
Andrey f741741cf8 Сохранить русские комментарии и настройки проекта в UTF-8
Добавить пояснения к исходникам, заголовкам TI, настройкам CCS и существующим проверкам. Зафиксировать правила кодировки, обзор модулей и аудит комментариев.
2026-10-12 12:24:48 +03:00

48 lines
4.4 KiB
C

/* Дополнительная карта GAS 167/v1 только для новой EEPROM M95M02. Русские пояснения сохранены в UTF-8. */
/* Начинает условие: BALSAM167_GAS_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef BALSAM167_GAS_H
/* Определяет защитный символ или переключатель BALSAM167_GAS_H для последующей компиляции. */
#define BALSAM167_GAS_H
/* Подключает "eeprom_config.h": выбор профиля физически установленной EEPROM при сборке. */
#include "eeprom_config.h"
/* Подключает <stdint.h>: настройки и интерфейс stdint. */
#include <stdint.h>
/* Профиль платы 167/v1 использует словные адреса независимо от транспорта.
* Штатные адреса технологических регистров и УМП остаются доступными в обеих сборках.
* Дополнительные области GAS присутствуют только при установленной M95M02.
*/
/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
/* Задаёт GAS167_REG_BASE = 0x5000U; начало псевдонимов 128 технологических регистров GAS, адрес 0x5000. */
#define GAS167_REG_BASE 0x5000U
/* Задаёт GAS167_REG_COUNT = 128U; число технологических слов GAS; скрытое слово modbus[128] в диапазон не входит. */
#define GAS167_REG_COUNT 128U
/* Задаёт GAS167_INFO_BASE = 0x5F00U; начало доступного только для чтения дескриптора GAS, адрес 0x5F00. */
#define GAS167_INFO_BASE 0x5F00U
/* Задаёт GAS167_INFO_WORDS = 8U; длина дескриптора GAS — восемь 16-битных слов. */
#define GAS167_INFO_WORDS 8U
/* Задаёт GAS167_MAX_WORDS = 124U; максимальная длина чтения GAS — 124 слова; служебный CAN требует чётную длину. */
#define GAS167_MAX_WORDS 124U
/* Задаёт GAS167_PROFILE_VERSION = 1U; версия карты адресов GAS 167/v1. */
#define GAS167_PROFILE_VERSION 1U
#define GAS167_CAPABILITIES 7U /* Бит 0 — RTU, бит 1 — служебный CAN, бит 2 — запись FC06. */ /* Задаёт GAS167_CAPABILITIES = 7U; маска возможностей: бит 0 — RTU, бит 1 — служебный CAN, бит 2 — FC06. */
/* Вызывается транспортами из главного цикла под краткой блокировкой IRQ.
* Буфер ответа должен вмещать не меньше GAS167_MAX_WORDS слов uint16_t.
* RTU читает 1..124 слова; служебный CAN — чётное число слов 2..124.
* Успешное чтение возвращает число слов. Запись или ошибка возвращает адрес/значение.
* error: 0 — успех, 1 — функция, 2 — адрес, 3 — значение.
* Здесь нет обмена EEPROM, выделения памяти или изменения устройства регистратора.
*/
/* Проверяет принадлежность адреса одному из двух диапазонов GAS 167/v1; доступно только для M95M02. */
int gas167_contains(uint16_t address);
/* Проверяет весь запрос FC03/FC06 до доступа к данным и формирует снимок регистров или дескриптора GAS. */
unsigned gas167_prepare(unsigned function, uint16_t address, uint16_t value,
/* Объявляет can — CAN; reply — данные reply. Хранит указатель на данные. */
int can, uint16_t *reply, unsigned *error);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif