Skip to content

Настройка каналов в базовой модели (OBJTYPE)

Данный материал описывает настройку каналов в OBJTYPE — втором источнике данных для ПЛК Конфигуратора наряду с листами OBJ.* модели ПЛК.

На листах OBJ.* модели ПЛК задаются экземпляры (TAG, OBJTYPENAME, Template, значения параметров). При парсинге конфигуратор загружает соответствующий OBJTYPE из Libraries и подставляет значения экземпляра в шаблоны каналов. Структура каналов (столбцы unimodFB, parName, mapping и др.) описывается в OBJTYPE — см. ниже.

Описание настройки каналов в шаблонах 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, %, мА).
dsBufLenDevStudio длина буфераДлина буфера в DevStudio.
dsBufSaveTimeDevStudio время между сохрВремя между сохранениями в буфер.
dsBufCategoryDevStudio категорияКатегория данных в DevStudio (например, Diag, Control, Process).
descrDataSrcRusОписание (рус.)Описание канала на русском языке, которое отображается в комментарии канала.
mappingПодключение мэпингаОбласть Modbus (DI, COIL, IR, HR) и сдвиг адреса для IR/HR (int* → +1, real* / dint* → +2). См. Алгоритм присвоения адресов Modbus.
IRInput RegisterАдрес входного регистра (если задан вручную).
HRHolding RegisterАдрес регистра хранения (если задан вручную).
DiDiscrete InputАдрес дискретного входа (если задан вручную).
coilDiscrete 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:

#VQVQVQVQVQ
aliasTreiFBprefixbodysuffix
dbaseFB_SpotDetector_1[TAG]
dreReqResetFire_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).

Примеры строк:

unimodFBparNameОписание
base.AFA_Struct_RubezhAFA_Input.CommFailureПотеря связи с устройством (входная структура)
base.AFA_Struct_RubezhAFA_Input.ActivatedАктивирован (входная структура)
base.AFA_Struct_RubezhAFA_Output.FaultНеисправность (выходная структура)
baseSmokeTriggerТревога срабатывание по дыму (простая переменная)
reReqActiveКоманда активации сброса (переменная в экземпляре ResetFire_FB)
reReq.TONResponceTimer.ETТекущее значение таймера ответа (структура TON). В данном случае reReq.TON ссылается на объект типа FB_SpotDetector_1.TON.

Формирование полного имени канала

Section titled “Формирование полного имени канала”

Имя канала в Unimod и в Dictionary.csv формируется как ИмяFB.parName:

  1. По unimodFB на листе шаблона находится строка alias на листе template / UnimodFB.
  2. Имя FB = prefix + body + suffix с подстановкой [TAG] из модели ПЛК (например, [TAG]M0_85JT16401, [TAG]_CHM0_85JT16401_CH).
  3. Полное имя канала = Имя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.