5. Mode — какой режим выбрать
Одна строка Data может создать настройку, добавить параметр компонента или связать экран с уже существующим значением. Что именно она делает, выбирается в столбце Mode.
| Mode | Что задаём | Что создаёт MetaGen | Связь с View |
|---|---|---|---|
global |
Уже объявленную глобальную переменную: Tag при пустой Area, иначе Area.Tag |
При включённом Publish — поле View и его обновление через makeView |
View.Tag при пустой Area, иначе View.Area_Tag |
val |
Существующий параметр экземпляра функционального блока | При включённом Publish — поле View и его обновление через makeView |
Копия значения параметра |
ref |
Существующий параметр VAR_IN_OUT экземпляра функционального блока |
Поле View; его передачу в вызов блока указываем в ST Template |
Рабочее значение хранится в View и передаётся по ссылке |
inout |
Параметр VAR_IN_OUT самого проектного компонента MetaGen |
Объявление параметра, поле View и передачу этого поля в основном вызове компонента |
Рабочее значение хранится в View и передаётся по ссылке |
static |
Внутренний параметр проектного компонента MetaGen | Объявление в секции VAR создаваемого блока |
При включённом Publish — копия значения, обновляемая через makeView |
out |
Выходной параметр проектного компонента MetaGen | Объявление в секции VAR_OUTPUT создаваемого блока |
При включённом Publish — копия значения, обновляемая через makeView |
conf |
Настройку оператора или наладчика | Поле в общих настройках Conf |
Копия не создаётся: настройка хранится в Conf |
val и ref относятся к параметрам экземпляра функционального блока: его имя указывается в Area. out, inout и static — параметры самого проектного компонента MetaGen, описанные в Data; для них Area остаётся пустым.
Исходный глобальный тег, его копия в View, экспорт для MetaLab и различия CODESYS/Siemens разобраны в первом подразделе — global.
Пустой Mode — пропустить строку
Если Mode пуст, в том числе после вычисления выражения, вся строка Data не участвует в генерации. Например, %ExtraId and "conf"% создаёт настройку только при заполненном текстовом ExtraId.
Пустой Area строку не отключает. У global это обращение непосредственно к Tag; у val и ref источник в Area обязателен. Примеры выбора режима и ID настроек приведены в главе 7.
Mode, Publish и сигнализация
Mode задаёт, где находится значение и нужно ли создавать его объявление. Publish включает данные в формируемые таблицы тегов для внешнего доступа.
У out, static и conf объявления создаются и без Publish. У ref и inout поля View также создаются без публикации: они нужны для передачи параметров по ссылке.
У global и val исходная переменная уже объявлена. Без Publish копия в View и её обновление через makeView не создаются. Но строка может использоваться для сигнализации: заполненный Flt, Wrn или Alm задаёт условие срабатывания независимо от Publish.
Если у строки global выключен Publish и пусты Flt, Wrn, Alm, она ничего не добавляет в генерируемый код. Для обращения к глобальной переменной в ST такая строка не нужна.
С чего начать выбор
Сначала определите, где должен находиться параметр.
- Параметр уже объявлен в функциональном блоке, нужно показывать его значение —
val. - Параметр
VAR_IN_OUTуже объявлен в функциональном блоке, нужно передавать через него команды или задания —ref. - Такой параметр нужен самому проектному компоненту MetaGen —
inout. - Компоненту нужно помнить состояние между циклами —
static. - У компонента должен быть собственный выход —
out. - Оператору или наладчику нужна настройка —
conf. - Нужно опубликовать глобальную переменную или сформировать по ней сигнализацию —
global.
Например, у насосного блока состояние работы можно показать через val, а команду ручного пуска, объявленную как VAR_IN_OUT, передать через ref. В проектном компоненте MetaGen счётчик пусков можно создать через static, а настройку задержки пуска — через conf.
Режим задаётся один раз для всего шаблона
Строка Data с подстановками повторяется для каждой строки нашей таблицы Params. Например, val с Area = Correct_|Id|_Inst и включённым Publish создаст публикацию результата первого, второго и каждого следующего экземпляра.
Режим и правило формирования имени задаём один раз. Добавляя каналы в Params, получаем их объявления и связи по тому же шаблону.
Порядок изучения
Начнём с global: разберём исходный тег, публикацию для наладки и копию для экрана. Затем перейдём к параметрам экземпляра функционального блока и самого проектного компонента MetaGen.
| Раздел | Что проследим в сгенерированном коде |
|---|---|
| 5.1. global — исходный сигнал и копия для экрана | Исходная переменная → MetaLab; копия View → экран |
| 5.2. val — чтение параметра блока | Экземпляр в Inst → копия в View → обновление через makeView |
| 5.3. ref — управление параметром блока | Поле View → передача по ссылке в вызов экземпляра блока |
| 5.4. inout — параметры проектного компонента MetaGen | Объявление параметра → его подключение к View в основном вызове |
| 5.5. static — внутреннее состояние проектного компонента MetaGen | Переменная в экземпляре → сохранение между циклами → публикация при необходимости |