Skip to content

ObjectTypeVersion 1.0 (маркеры $FL)

С Uniplant Atomix 1.6.3.0 модель OBJTYPE может работать в формате ObjectTypeVersion 1.0: на листе шаблона с префиксом Tmpl. строки $FL подключают листы данных (Ch.*, DevSt.*, HMI.*, …) — из этого же файла (this) или из базовых Excel библиотеки. Без листа system с ObjectTypeVersion модель обрабатывается по прежним правилам. Результаты генерации от формата не зависят.

Один Excel-файл типового блока:

ЛистНазначение
systemобязателен — включает формат: $ | VQ | ObjectTypeVersion | 1.0
лист шаблонаобязателен (минимум один); имя с префиксом Tmpl. (напр. Tmpl.CC); суффикс = TemplateName: конфиг, $LST, строки $FL
UnimodFBнужен, если планируется работа с Unimod
листы данныхкак в старом формате: DevSt.*, HMI.*, HMIS.*, … плюс новый Ch.* — параметры каналов

Лист данных в OBJTYPE и лист, подключённый $FL из другого файла — одно и то же по формату. Разница только в источнике: $FL с this берёт лист из этого OBJTYPE, $FL с путём — из базового Excel библиотеки.

Пример листа шаблона Tmpl.CC: $VQ-конфиг, $LST и строки $FL

Маркер (кол. B)НазначениеКолонки
VQконфиг OBJTYPEC = ключ, D = значение
LSTсписокC = ключ, D…N = элементы
FLподключить лист данных (Ch.* / DevSt.* / HMI.* / …)C = файл или this, D = лист, E…N = аргументы по позиции

Набор объектов задают строки $FL, а не списки. Из $LST обычно нужен только TechObject.UnimodAliases. Списки devStudioTemplates, HmiIcons, StaburIconTemplates в этом формате не используются.

ABCDE…N
$FLфайл или thisполное имя листа с префиксомаргументы по позиции
  • C — путь к Excel (%JSC%\…, %Self%\…) или this (тот же лист данных, но лежащий в этом OBJTYPE). Инстансные [TAG] в путь не ставятся — только в E…N.
  • D — имя листа с префиксом вида (Ch. / DevSt. / HMI. / HMIS.). Без известного префикса подключение пропускается.
  • E…N — значения аргументов: позиция → {arg1}, {arg2}…; первые позиции каждого вида имеют семантические имена (таблица ниже).

Обязательные аргументы:

Вид листаE (arg1)F (arg2)G (arg3)
Ch.*aliasDsTemplate
DevSt.*DevStudioTemplateDevStudioPathDevStudioName
HMI.*arg
HMIS.*только {argN}

Один лист можно подключать несколько раз с разными значениями. У каждого $FL на DevSt.* свой уникальный DevStudioTemplate (arg1).

Внутри листа данных аргументы видны как {имя} (семантическое или {argN}). Непереданное значение остаётся буквально {имя} — в лог не пишется; сверяйте результат сборки.

ЗаписьОткуда
[имя], %имя%настройки JSC / экземпляр
{имя}аргумент этой строки $FL (только в подключённом листе)

Сначала подставляются {…}, затем […] / %…%. Подробнее: Внешние переменные.

Листы данных (Ch.*, DevSt.*, …)

Section titled “Листы данных (Ch.*, DevSt.*, …)”

Формат листа не зависит от того, лежит он в библиотеке или в OBJTYPE:

ПрефиксСодержимоеПлейсхолдеры
Ch.*новый в 1.0: параметры каналов (#/H/d){alias}, {DsTemplate}
DevSt.*$VQ тип/путь/имя → $ATTFL → атрибуты{DevStudioPath}, {DevStudioName}
HMI.*$VQ HmiType$ATTFL → опции{arg}
HMIS.*$VQ Lib, $VQ HmiType → опциитолько {argN}

$ATTFL (C = файл, D = лист) — общая вставка атрибутов/опций внутри листа DevSt.* / HMI.*: результат = строки из $ATTFL + локальные строки.

Связи:

  • канал ↔ DevStudio: DsTemplate канала (arg2) = DevStudioTemplate объекта (arg1);
  • канал ↔ Unimod: alias канала (arg1) ∈ $LST TechObject.UnimodAliases.

В новом формате каждый объект DevStudio — отдельный лист DevSt.* (в OBJTYPE или в библиотеке). Подключение — строка $FL на Tmpl.* (не список devStudioTemplates). На листе — метаданные объекта и атрибуты.

Переменная (строка $ | VQ | …)Назначение
TechObject.devStudioTypeтип объекта DevStudio
TechObject.devStudioPathпуть (родительский узел); часто {DevStudioPath} из $FL
TechObject.devStudioNameимя объекта; часто {DevStudioName} из $FL
Полный путьdevStudioPath.devStudioName (части через .)
строки dattrName, attrValue — атрибуты этого объекта

На листе шаблона Tmpl.* не задают TechObject.devStudioType / …Path / …Name и не используют $LST TechObject.devStudioTemplates — всё задаётся на листе DevSt.* и аргументами $FL.

Один шаблон может подключать несколько объектов — по одной строке $FL на каждый; у каждой свой уникальный DevStudioTemplate (arg1).

На листе DevSt.DiCC вверху — метаданные объекта ($ | VQ | TechObject.devStudio…), ниже — таблица атрибутов (attrName, attrValue) со строками d. Путь и имя могут включать внешние переменные и литералы (суффикс ADD в пути, CC в имени) либо плейсхолдеры {DevStudioPath} / {DevStudioName} из $FL:

Пример листа DevSt.DiCC

Рис. — DevSt.DiCC.

Переменная / attrNameЗначениеКомментарий
TechObject.devStudioTypeDiCCтип объекта в DevStudio
TechObject.devStudioPath[PathDevStudio].[TAG] ADDродительский узел
TechObject.devStudioName[TAG] CCимя создаваемого объекта
unit.CommonLib.Attributes.DevParams.SystemTag<script GAP.ScadaProjectBase.Tags.GetPrjTag([TAG])/>системный тег (преобразование через GAP)
unit.System.Attributes.Title[parentDescr]заголовок объекта

Старый формат с одним DevSt.attributesЛисты DevSt.*.

Обязательны: лист system и хотя бы один лист шаблона Tmpl.*. Для работы с Unimod — ещё лист UnimodFB.

  1. Excel в Models\ObjTypes\….
  2. Лист system: $ | VQ | ObjectTypeVersion | 1.0.
  3. Лист шаблона Tmpl.* (минимум один; суффикс = TemplateName): $VQ-конфиг, при необходимости $LST UnimodAliases, на каждое подключение — $FL.
  4. Листы данных (Ch.*, при необходимости DevSt.* / HMI.*) — в OBJTYPE и $FL с this, либо в библиотеке и $FL с путём к файлу.
  5. Если нужен Unimod — лист UnimodFB.
  6. Проверить позиции аргументов и совпадение DsTemplateDevStudioTemplate.
  7. Сохранять только через Excel.

Лист system:

ABCD
$VQObjectTypeVersion1.0

Лист шаблона Tmpl.CC:

ABCDEFG
$VQTechObject.modbusTemplateESD_VlvSDV
$LSTTechObject.UnimodAliasesbaseCloseOpenMV
$FLCCB.xlsxCh.CCBOpenDiCC_Open
$FLCCB.xlsxCh.CCBCloseDiCC_Close
$FLDoCCM_x2.xlsxCh.DoCCM_x2MVMV_CC
$FLthisCh.VlvbaseVlvSDV
$FLDiCC.xlsxDevSt.DiCC_ССВDiCC_Open[PathDevStudio].[TAG]_ADD[TAG]_Open_CC
$FLDiCC.xlsxDevSt.DiCC_ССВDiCC_Close[PathDevStudio].[TAG]_ADD[TAG]_Close_CC
$FLCC_M2.xlsxDevSt.MV_CCMV_CC[PathDevStudio].[TAG]_ADD[TAG]_MV_CC
$FLVlvSDV.xlsxDevSt.VlvSDVVlvSDV
$FLHmi-VlvSDV.xlsxHMI.Icon_VlvSDV
$FLHmi-Trip.xlsxHMI.Trip
$FLHmi-CE_Effect.xlsxHMI.CE_EffectVlvSDV

Сборка: каналы base/Open/Close/MV, объекты DevStudio с подставленными путём/именем, иконки HMI; канал Open связан с DiCC_Open по общему ключу DiCC_Open.

Фрагмент листа DevSt.DiCC_ССВ после подстановки из $FL выше:

ABCD
$VQTechObject.devStudioPath{DevStudioPath}
$VQTechObject.devStudioName{DevStudioName}
$ATTFL%Self%\attibutes\BasePlcObjAttr.xlsxbase-plc-attr
СитуацияПоведение
Нет system / пуст ObjectTypeVersionстарая обработка, $FL игнорируются
Лист без известного префиксапропуск + Warn
Файл или лист не найденпропуск + Error
Осталась {переменная}как есть, без записи в лог
Два DevStudio с одним DevStudioTemplateWarn, привязка каналов неоднозначна
Циклическое подключениезащита + Warn