Skip to content

Шаблоны FBD

FBD-шаблоны — FBD-программы в библиотечном проекте Unimod с типовой обвязкой блоков. Конфигуратор подставляет их под конкретный экземпляр техобъекта по правилам локального словаря prog.csv.

Связь с типовым блоком задаётся на листе шаблона OBJTYPE в переменной TechObject.TemplateUnimod2x (имя FBD-программы в библиотечном проекте Unimod).

БиблиотекаOBJTYPEFBD-шаблоны
AFAтаблицы моделейсводная таблица
APUCSтаблицы моделейсводная таблица

Локальный словарь prog.csv

Section titled “Локальный словарь prog.csv”

При генерации к обвязке шаблона применяются все правила словаря; результат вставляется в результирующую FBD-программу из OBJTYPE.

Обвязка блоков в FBD-шаблоне (пример: AiChnl, AiProc2, Th3)

Окно локального словаря (пример: FBD_AiProc_Analog_1th)

Пример: базовые замены From / FromObjType

Section titled “Пример: базовые замены From / FromObjType”

Обвязка шаблона FBD_AiProc_Analog_1th: канал template_AiProc2_CH → процессор template_AiProc2 → порог template_Th1.

В словаре GAP-вызовы записываются как <script …/>. В таблицах — вызов функции (ссылка на справочник GAP).

ПравилоFromTo
From1template_AiProc2[TAG]
From2AiProc2_FieldGAP.AUCS.TagAssignement.GetAnalogFieldTag([TAG], [fieldTag]…)
From3template_Th1GAP.AUCS.Thresholds.GetThTag([TAG], 1)
FromObjType1AiChnl_4_20mAGAP.ScadaProjectBase.General.GetInstanceObjType([TAG]_CH)
FromObjType2AiProc2GAP.ScadaProjectBase.General.GetInstanceObjType([TAG])

Для [TAG] = AI_Tank_Level: блок переименовывается в AI_Tank_Level, поля и пороги — в теги из GAP, типы канала и процессора — в типы экземпляра [TAG]_CH и [TAG].

В значениях правил допустимы плейсхолдер [TAG] и GAP-скрипты в виде <script …/>. Описание каждой функции GAP — в справочнике GAP.

ИнструкцияНазначение
From — ToЗамена имени переменной в шаблоне
FromObjType — ToObjTypeЗамена типа объекта (по типу из шаблона)
ChangeVariableTypeЗамена типа переменной по имени

Примеры From / FromObjType — в карточках шаблонов и в таблице выше.

Скрипты преобразования

Section titled “Скрипты преобразования”
ИнструкцияКогда выполняется
PreReplacementScriptДо всех замен (prog.json)
PostReplacementScriptПосле всех замен (prog.json)

MatchingStrategy — способ сравнения имён для D# и C# (без учёта регистра): equals (по умолчанию), contains, startswith, endswith.

ИнструкцияДействие
D#Удалить переменную Unimod; при отсутствии — подставить значение To
C#Заменить переменную Unimod на константу To

Формирует словарь переменных Atomix для текущего prog.csv или для передачи в InsertFbdTemplate / InsertFbdByTag.

ИмяЗначение
AddVariable, AddVariable_1, …var1=value1 | var2=value2 | …

Вставляет FBD того же техобъекта, сгенерированную по другому библиотечному шаблону.

ИмяЗначение
InsertFbdTemplate, InsertFbdTemplate_1, …блок_fbd, шаблон_unimod [, var=value | …]

Параметры через запятую: (1) блок в текущей программе; (2) имя FBD-шаблона Unimod; (3) необязательно — словарь для внутреннего шаблона.

Подставляет целую FBD-программу другого техобъекта по тегу.

ИмяЗначение
InsertFbdByTagTAG1, TAG2 — имя блока и тег техобъекта

Выполняется первым; рекурсивный InsertFbdByTag во вставленной программе не применяется; FBD техобъекта TAG2 не генерируется повторно; при отсутствии TAG2 блок TAG1 удаляется.

GAP.ScadaProjectBase.General.GetFbNameByAlias([TAG], Alias) — в словаре как <script …/>. Для техобъекта [TAG] проверяет alias по TechObject.UnimodAliases и возвращает name с листа UnimodFB / template.

Пример: AddVariable и InsertFbdTemplate

Section titled “Пример: AddVariable и InsertFbdTemplate”

Локальный словарь: AddVariable, InsertFbdTemplate и From/To

1. AddVariable — словарь переменных:

ПравилоЗначение
AddVariablefieldOpen= GAP.ScadaProjectBase.Tags.ReplaceTagString(“[TAG]”, “SDV”, “SDZSO”)
AddVariable_1fieldClose= GAP.ScadaProjectBase.Tags.ReplaceTagString(“[TAG]”, “SDV”, “SDZSC”)
AddVariable_2FbOpenName= GAP.ScadaProjectBase.General.GetFbNameByAlias([TAG], "Open")
AddVariable_3FbCloseName= GAP.ScadaProjectBase.General.GetFbNameByAlias([TAG], "Close")
AddVariable_4fieldMV= GAP.ScadaProjectBase.Tags.ReplaceTagString(“[TAG]”, “SDV”, “SDN”)
AddVariable_5FbMvName= GAP.ScadaProjectBase.General.GetFbNameByAlias([TAG], "MV")

2. From — To — базовые переименования: template_ESD_VlvSDV[TAG], VlvSDV_MV[FbMvName].

3. InsertFbdTemplate — вставка вложенных FBD:

ПравилоЗначение
InsertFbdTemplatetemplate_VlvSDV_Open_CC, FBD_[In_CC], TAG_CC=[FbOpenName] | fieldTag=[fieldOpen]
InsertFbdTemplate_1template_VlvSDV_Close_CC, FBD_[In_CC], TAG_CC=[FbCloseName] | fieldTag=[fieldClose]
InsertFbdTemplate_2template_DoCCMx2, FBD_[Out_CC], TAG_CC=[FbMvName] | fieldTag=[fieldMV]

FBD_[In_CC] и FBD_[Out_CC] — плейсхолдеры имён шаблонов из листа OBJTYPE. Переменные [FbOpenName], [fieldOpen] и т.д. берутся из словаря AddVariable. MatchingStrategy = StartsWith.