Настройка каналов в базовой модели (OBJTYPE)
Данный материал описывает настройку каналов в OBJTYPE — втором источнике данных для ПЛК Конфигуратора наряду с листами OBJ.* модели ПЛК.
Связь модели ПЛК и OBJTYPE
Section titled “Связь модели ПЛК и OBJTYPE”На листах OBJ.* модели ПЛК задаются экземпляры (TAG, OBJTYPENAME, Template, значения параметров). При парсинге конфигуратор загружает соответствующий OBJTYPE из Libraries и подставляет значения экземпляра в шаблоны каналов. Структура каналов (столбцы unimodFB, parName, mapping и др.) описывается в OBJTYPE — см. ниже.
Настройка каналов
Section titled “Настройка каналов”Описание настройки каналов в шаблонах OBJTYPE
Section titled “Описание настройки каналов в шаблонах OBJTYPE”При обработке модели типового устройства (OBJTYPE) на листах шаблонов каналов (например, ReReq_warn, 4_20mA, Digital) указываются настройки каждого отдельного канала. Ключевым элементом является определение имени канала и его связи с функциональным блоком (FB) из библиотеки Unimod.
Дополнительные настройки каналов
Section titled “Дополнительные настройки каналов”На листах шаблонов каналов могут быть указаны дополнительные параметры, влияющие на поведение канала в системе. Эти параметры задаются в соответствующих столбцах:
| Столбец | Название | Описание |
|---|---|---|
| unimodFB | Алиас FB | Алиас с листа template / UnimodFB или <alias>.<имя_типа_данных>. |
| parName | Имя параметра | Имя переменной (канала) внутри FB. |
| DevStudioName | Имя в DevStudio | Указывает, как будет называться объект в alpha.DevStudio. |
| Type | Тип FB | Тип переменной в FB (B, R и т.д.); не задаёт сдвиг Modbus-адреса (сдвиг — по колонке mapping). |
| ADDR_MOD | Адрес модуля / Индексы для массива | Адрес регистра Modbus (если используется) или индексы для массива. Формат: <Тип регистра>: <адрес>. |
| Library | Тип ФБ / массива | Не заполняется |
| Value | Значение | Начальное значение переменной. Для булевых — TRUE, FALSE, для числовых — число. |
| AccessDictionary | Доступ | Чтение / запись |
| Save | Хранение | Указывает, должен ли канал сохраняться при перезагрузке. |
| Access | Доступ | Не трогать. Значение 0 |
| Cold_start | Холодный старт | Указывает, должен ли канал инициализироваться при холодном старте. |
| MOD_BUS | Адрес модуля / Индексы для массива | Адрес регистра Modbus (если используется) или индексы для массива. Формат: <Тип регистра>: <адрес>. |
| Ar_count | Счётчик архива | Количество записей в архиве. |
| Ar_period | Период архивации | Периодичность записи в архив (в секундах). |
| Ar_filter | Фильтр дребезга | Параметр фильтрации дребезга сигнала. |
| units | Един.изм. | Единицы измерения (например, °C, %, мА). |
| dsBufLen | DevStudio длина буфера | Длина буфера в DevStudio. |
| dsBufSaveTime | DevStudio время между сохр | Время между сохранениями в буфер. |
| dsBufCategory | DevStudio категория | Категория данных в DevStudio (например, Diag, Control, Process). |
| descrDataSrcRus | Описание (рус.) | Описание канала на русском языке, которое отображается в комментарии канала. |
| mapping | Подключение мэпинга | Область Modbus (DI, COIL, IR, HR) и сдвиг адреса для IR/HR (int* → +1, real* / dint* → +2). См. Алгоритм присвоения адресов Modbus. |
| IR | Input Register | Адрес входного регистра (если задан вручную). |
| HR | Holding Register | Адрес регистра хранения (если задан вручную). |
| Di | Discrete Input | Адрес дискретного входа (если задан вручную). |
| coil | Discrete COIL | Адрес дискретного выхода (если задан вручную). |
Определение создаваемых FB в проекте Unimod
Section titled “Определение создаваемых FB в проекте Unimod”На каждом листе шаблона каналов присутствуют два основных столбца:
| Столбец | Название | Описание |
|---|---|---|
| unimodFB | Алиас FB | Ссылка на строку листа template / UnimodFB: либо <alias>, либо <alias>.<имя_типа_данных> для канала внутри структуры FB. |
| parName | Имя параметра | Имя переменной (канала) внутри FB, указанного алиасом. |
В колонке unimodFB указывается алиас с листа template (например, base0, channel_4_20mA_namur) или составное имя <alias>.<имя_типа_данных> для доступа к полю структуры. Имя экземпляра FB (prefix + body + suffix из той же строки template) и тип FB (TreiFB) подставляются при генерации — см. UnimodFB и template.
Определение alias на листе template
Section titled “Определение alias на листе template”Лист template модели OBJTYPE содержит таблицу, которая связывает alias с конкретным типом FB из библиотеки Unimod.
Пример из модели SpotDetector_1_PLC.xls:
| # | VQ | VQ | VQ | VQ | VQ |
|---|---|---|---|---|---|
| alias | TreiFB | prefix | body | suffix | |
| d | base | FB_SpotDetector_1 | [TAG] | ||
| d | reReq | ResetFire_FB | [TAG] | _ | RE_REQ |
Интерпретация:
base: Используется для основных каналов, которые являются частью экземпляраFB_SpotDetector_1. Имя экземпляра будет[TAG].reReq: Используется для каналов, которые являются частью экземпляраResetFire_FB. Имя экземпляра будет[TAG]_RE_REQ.
Пример использования alias в шаблоне канала
Section titled “Пример использования alias в шаблоне канала”Рассмотрим лист ReReq_warn из той же модели SpotDetector_1_PLC.xls.
В этом листе описываются каналы, которые используются в режиме “тревога сброса пожара”. В столбце unimodFB указано:
base.AFA_Struct_Rubezh— означает, что канал принадлежит основному экземпляру (base) и использует структуруAFA_Struct_Rubezh.base— означает, что канал принадлежит основному экземпляру (base) и является простой переменной (не структурой).reReq— означает, что канал принадлежит экземпляруResetFire_FB(reReq).
Примеры строк:
| unimodFB | parName | Описание |
|---|---|---|
| base.AFA_Struct_Rubezh | AFA_Input.CommFailure | Потеря связи с устройством (входная структура) |
| base.AFA_Struct_Rubezh | AFA_Input.Activated | Активирован (входная структура) |
| base.AFA_Struct_Rubezh | AFA_Output.Fault | Неисправность (выходная структура) |
| base | SmokeTrigger | Тревога срабатывание по дыму (простая переменная) |
| reReq | Active | Команда активации сброса (переменная в экземпляре ResetFire_FB) |
| reReq.TON | ResponceTimer.ET | Текущее значение таймера ответа (структура TON). В данном случае reReq.TON ссылается на объект типа FB_SpotDetector_1.TON. |
Формирование полного имени канала
Section titled “Формирование полного имени канала”Имя канала в Unimod и в Dictionary.csv формируется как ИмяFB.parName:
- По
unimodFBна листе шаблона находится строкаaliasна листеtemplate/ UnimodFB. - Имя FB =
prefix+body+suffixс подстановкой[TAG]из модели ПЛК (например,[TAG]→M0_85JT16401,[TAG]_CH→M0_85JT16401_CH). - Полное имя канала = ИмяFB +
.+parName.
Пример (SpotDetector):
- Экземпляр:
M0_85_050_FA_BTH_001(body=[TAG]). parName:AFA_Input.CommFailure.- Полное имя:
M0_85_050_FA_BTH_001.AFA_Input.CommFailure.
Пример (AiProc3 / 4_20mA_namur):
- Имя FB:
M0_85JT16401_CH(body=[TAG]_CH). parName:HighScale.- Полное имя:
M0_85JT16401_CH.HighScale.
Подробный разбор с расчётом Modbus-адресов — в Пример адресации Modbus: AiProc3 / 4_20mA_namur; общий алгоритм — в Алгоритм присвоения адресов Modbus.