I. Разработка программы
MetaGen

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 счётчик пусков можно создать через 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 Переменная в экземпляре → сохранение между циклами → публикация при необходимости

Предыдущая глава: собственный блок · Далее: global

← 4. Свой функциональный блок5.1. global →