Шаблоны FBD
FBD-шаблоны — FBD-программы в библиотечном проекте Unimod с типовой обвязкой блоков. Конфигуратор подставляет их под конкретный экземпляр техобъекта по правилам локального словаря prog.csv.
Связь с типовым блоком задаётся на листе шаблона OBJTYPE в переменной TechObject.TemplateUnimod2x (имя FBD-программы в библиотечном проекте Unimod).
| Библиотека | OBJTYPE | FBD-шаблоны |
|---|---|---|
| AFA | таблицы моделей | сводная таблица |
| APUCS | таблицы моделей | сводная таблица |
Локальный словарь prog.csv
Section titled “Локальный словарь prog.csv”При генерации к обвязке шаблона применяются все правила словаря; результат вставляется в результирующую FBD-программу из OBJTYPE.


Пример: базовые замены From / FromObjType
Section titled “Пример: базовые замены From / FromObjType”Обвязка шаблона FBD_AiProc_Analog_1th: канал template_AiProc2_CH → процессор template_AiProc2 → порог template_Th1.
В словаре GAP-вызовы записываются как <script …/>. В таблицах — вызов функции (ссылка на справочник GAP).
| Правило | From | To |
|---|---|---|
| From1 | template_AiProc2 | [TAG] |
| From2 | AiProc2_Field | GAP.AUCS.TagAssignement.GetAnalogFieldTag([TAG], [fieldTag]…) |
| From3 | template_Th1 | GAP.AUCS.Thresholds.GetThTag([TAG], 1) |
| FromObjType1 | AiChnl_4_20mA | GAP.ScadaProjectBase.General.GetInstanceObjType([TAG]_CH) |
| FromObjType2 | AiProc2 | GAP.ScadaProjectBase.General.GetInstanceObjType([TAG]) |
Для [TAG] = AI_Tank_Level: блок переименовывается в AI_Tank_Level, поля и пороги — в теги из GAP, типы канала и процессора — в типы экземпляра [TAG]_CH и [TAG].
Справочник инструкций
Section titled “Справочник инструкций”В значениях правил допустимы плейсхолдер [TAG] и GAP-скрипты в виде <script …/>. Описание каждой функции GAP — в справочнике GAP.
Замены имён и типов
Section titled “Замены имён и типов”| Инструкция | Назначение |
|---|---|
| From — To | Замена имени переменной в шаблоне |
| FromObjType — ToObjType | Замена типа объекта (по типу из шаблона) |
| ChangeVariableType | Замена типа переменной по имени |
Примеры From / FromObjType — в карточках шаблонов и в таблице выше.
Скрипты преобразования
Section titled “Скрипты преобразования”| Инструкция | Когда выполняется |
|---|---|
| PreReplacementScript | До всех замен (prog.json) |
| PostReplacementScript | После всех замен (prog.json) |
MatchingStrategy, D#, C#
Section titled “MatchingStrategy, D#, C#”MatchingStrategy — способ сравнения имён для D# и C# (без учёта регистра): equals (по умолчанию), contains, startswith, endswith.
| Инструкция | Действие |
|---|---|
| D# | Удалить переменную Unimod; при отсутствии — подставить значение To |
| C# | Заменить переменную Unimod на константу To |
AddVariable
Section titled “AddVariable”Формирует словарь переменных Atomix для текущего prog.csv или для передачи в InsertFbdTemplate / InsertFbdByTag.
| Имя | Значение |
|---|---|
AddVariable, AddVariable_1, … | var1=value1 | var2=value2 | … |
InsertFbdTemplate
Section titled “InsertFbdTemplate”Вставляет FBD того же техобъекта, сгенерированную по другому библиотечному шаблону.
| Имя | Значение |
|---|---|
InsertFbdTemplate, InsertFbdTemplate_1, … | блок_fbd, шаблон_unimod [, var=value | …] |
Параметры через запятую: (1) блок в текущей программе; (2) имя FBD-шаблона Unimod; (3) необязательно — словарь для внутреннего шаблона.
InsertFbdByTag
Section titled “InsertFbdByTag”Подставляет целую FBD-программу другого техобъекта по тегу.
| Имя | Значение |
|---|---|
InsertFbdByTag | TAG1, TAG2 — имя блока и тег техобъекта |
Выполняется первым; рекурсивный InsertFbdByTag во вставленной программе не применяется; FBD техобъекта TAG2 не генерируется повторно; при отсутствии TAG2 блок TAG1 удаляется.
GetFbNameByAlias
Section titled “GetFbNameByAlias”GAP.ScadaProjectBase.General.GetFbNameByAlias([TAG], Alias) — в словаре как <script …/>. Для техобъекта [TAG] проверяет alias по TechObject.UnimodAliases и возвращает name с листа UnimodFB / template.
Пример: AddVariable и InsertFbdTemplate
Section titled “Пример: AddVariable и InsertFbdTemplate”
1. AddVariable — словарь переменных:
| Правило | Значение |
|---|---|
| AddVariable | fieldOpen= GAP.ScadaProjectBase.Tags.ReplaceTagString(“[TAG]”, “SDV”, “SDZSO”) |
| AddVariable_1 | fieldClose= GAP.ScadaProjectBase.Tags.ReplaceTagString(“[TAG]”, “SDV”, “SDZSC”) |
| AddVariable_2 | FbOpenName= GAP.ScadaProjectBase.General.GetFbNameByAlias([TAG], "Open") |
| AddVariable_3 | FbCloseName= GAP.ScadaProjectBase.General.GetFbNameByAlias([TAG], "Close") |
| AddVariable_4 | fieldMV= GAP.ScadaProjectBase.Tags.ReplaceTagString(“[TAG]”, “SDV”, “SDN”) |
| AddVariable_5 | FbMvName= GAP.ScadaProjectBase.General.GetFbNameByAlias([TAG], "MV") |
2. From — To — базовые переименования: template_ESD_VlvSDV → [TAG], VlvSDV_MV → [FbMvName].
3. InsertFbdTemplate — вставка вложенных FBD:
| Правило | Значение |
|---|---|
| InsertFbdTemplate | template_VlvSDV_Open_CC, FBD_[In_CC], TAG_CC=[FbOpenName] | fieldTag=[fieldOpen] |
| InsertFbdTemplate_1 | template_VlvSDV_Close_CC, FBD_[In_CC], TAG_CC=[FbCloseName] | fieldTag=[fieldClose] |
| InsertFbdTemplate_2 | template_DoCCMx2, FBD_[Out_CC], TAG_CC=[FbMvName] | fieldTag=[fieldMV] |
FBD_[In_CC] и FBD_[Out_CC] — плейсхолдеры имён шаблонов из листа OBJTYPE. Переменные [FbOpenName], [fieldOpen] и т.д. берутся из словаря AddVariable. MatchingStrategy = StartsWith.