MetaKit Руководство по компонентам

Sensor — обработка аналогового датчика

Sensor подключает аналоговый датчик к программе и выдаёт понятное показание: температуру, давление, уровень. Например, ток 4–20 мА превращается в давление 0–10 бар. Компонент также сообщает об ошибке датчика и сглаживает колебания показаний.

Подключите датчик к Sensor один раз, затем используйте его показание в регуляторах и других компонентах. Sensor проверяет сам датчик и его электрический сигнал. Такие условия, как «давление воды слишком низкое», задаются отдельно по полученному показанию.

Состав и связи

Sensor: В компонент входят обработка датчика и фильтр измерения. Подключите исходный вход один раз, затем используйте готовое измерение и ошибку во всех нужных узлах.
В рамке — состав компонента, снаружи — подключения проекта. Нажмите на схему, чтобы открыть её крупнее.

В компонент входят обработка датчика и фильтр измерения. Подключите исходный вход один раз, затем используйте готовое измерение и ошибку во всех нужных узлах.

Первое подключение

Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.

Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.

Рассмотрим датчик давления PT101: выход 4–20 мА соответствует давлению 0–10 бар. В примере аналоговый модуль передаёт код 0–27648 для электрической шкалы 0–20 мА.

1. Подключите канал датчика

Сигнал Назначение
AI_PT101 Текущее значение канала, приведённое к REAL
AI_PT101_bError Ошибка аналогового канала от модуля ввода; TRUE означает неисправность

Подключите исходное измерение к Sensor один раз. Дальше используйте результаты Sensor, включая признак ошибки.

2. Заполните основные параметры

Параметр Значение для примера
SensId PT101
SensComment Давление подачи
SensParent CabinetController_Inst
Raw AI_PT101
ChErr AI_PT101_bError
SensRawMin / SensRawMax 0 / 27648
SensEVMin / SensEVMax 0.0 / 20.0
SensEVUnits мА
SensFVXMin / SensFVXMax 4.0 / 20.0
SensFVYMin / SensFVYMax 0.0 / 10.0
SensFVUnits бар

Остальные параметры пока оставьте начальными. От CabinetController датчик получает общий сброс ошибок.

3. Разделите шкалу модуля и шкалу датчика

Преобразование Входная шкала Выходная шкала
Код модуля → электрический сигнал 0–27648 0–20 мА
Электрический сигнал → давление 4–20 мА 0–10 бар

Здесь нужны две шкалы. Первая описывает аналоговый модуль: какому току соответствует его числовой код. Вторая описывает датчик: какому давлению соответствует этот ток.

В примере модуль выдаёт 0–27648 для тока 0–20 мА. Если ваш модуль выдаёт те же коды для 4–20 мА, укажите SensEVMin = 4.0 и SensEVMax = 20.0. Границы кода берите из настройки своего модуля, а диапазон давления — из паспорта датчика.

4. Используйте результаты

Результат Назначение
PT101_SensFilter_Inst.out_fY Сглаженное давление для алгоритма
PT101_Sensor_Inst.out_bError Признак ошибки измерения
PT101_Sensor_Inst.out_fEV Электрический сигнал в мА для диагностики

Компоненты PID, PIDD, TwoStep и ThreeStep подключаются к Sensor по ID PT101. Они используют сглаженное измерение и проверяют ошибку датчика.

5. Как это будет работать

Сигнал исправного датчика Давление до сглаживания
4 мА 0 бар
12 мА 5 бар
20 мА 10 бар

По умолчанию сглаживание использует три отсчёта с периодом 1 секунда. После изменения входа сглаженное давление постепенно принимает новое значение.

Если ток упадёт ниже 3 мА, превысит 21 мА или появится ошибка канала, Sensor сформирует ошибку. Эти диагностические границы и задержки можно изменить в настройках. При начальных настройках после устранения причины ошибка снимается автоматически.

Преобразование и корректировка измерения

Показание проходит несколько шагов:

  1. Число от аналогового модуля переводится в ток или напряжение.
  2. Ток или напряжение переводится в температуру, давление или другую измеряемую величину.
  3. При необходимости значение корректируется коэффициентом SensK и добавкой SensAdd.
  4. При ошибке или слишком низком электрическом сигнале вместо показания берётся заранее заданное число.
  5. Результат усредняется, чтобы показания меньше колебались.

Обозначение EV означает электрическую величину — например, ток в мА. FV означает физическую величину — например, давление в барах.

Коэффициент и добавка

После пересчёта шкал значение умножается на SensK, затем к нему прибавляется SensAdd. Например, при исходном результате 5 бар, коэффициенте 1 и добавке 0,1 бар получается 5,1 бар.

SensFVLimit = true ограничивает результат второго пересчёта границами физической шкалы. Коэффициент и добавка применяются после этого ограничения.

Что показывать при слишком низком сигнале и ошибке

SensEVZP задаёт нижнюю точку электрического сигнала, а SensFVZP — число, которое нужно показывать ниже этой точки. Например, ниже 4 мА можно показывать 0 бар. Этот пересчёт выполняется сразу, без ожидания задержки аварии.

В примере с датчиком 4–20 мА при 3,5 мА измерение станет равным 0 бар, но ошибка нижней границы ещё не возникнет: её порог — 3 мА. При зафиксированной ошибке также используется SensFVZP.

Число, выбранное на случай ошибки, тоже проходит сглаживание. Поэтому после ошибки показание некоторое время может сохранять часть прежнего значения. Чтобы понять, можно ли ему доверять, вместе с показанием используйте сигнал out_bError.

Готовое значение без пересчёта шкал

Если на вход уже приходит готовая температура или давление, укажите SensEnScale = false. Тогда пересчёта двух шкал не будет: компонент возьмёт значение Raw, умножит его на коэффициент и прибавит поправку.

В этом случае проверьте пороги ошибки и точку нуля: они сравниваются уже с готовым показанием. Например, начальная точка нуля 4.0 не подходит для температуры, которая бывает ниже 4 °C. Если проверка этих границ не нужна, выключите её через SensLimitBypass.

Ошибки, задержки и сброс

Sensor контролирует две независимые причины:

Причина Условие Задержка
Ошибка канала ChErr = TRUE SensChannelErrorFilterTime, с
Нарушение электрического диапазона Сигнал ниже SensEVLL или выше SensEVHH SensLimitFilterTime, с

Ошибка появляется, если причина не исчезла за время задержки. Ровно на нижней или верхней границе ошибки нет — значение должно выйти за неё. При задержке 0 проверка срабатывает без ожидания.

При SensAutoReset = true ошибка исчезает сама, когда датчик снова исправен. При false нужно сначала устранить причину, затем подать общий сброс от SensParent.out_bFaultReset. Сброс не отменяет неисправность, которая ещё присутствует.

Шунты

Настройка Что отключает
SensChannelBypass Контроль входного признака ошибки канала
SensLimitBypass Контроль нижней и верхней электрических границ

Каждую из двух проверок можно отключить отдельно. Если автоматический сброс выключен, одного включения шунта недостаточно, чтобы убрать уже появившуюся ошибку: нужен также сброс. При включённом автосбросе она исчезнет после включения соответствующего шунта.

Сглаживание

Фильтр усредняет последние отсчёты физического значения. Период задаётся в секундах, количество отсчётов — целым числом.

Для усреднения задайте количество от 2 до 10. При количестве 1, 0, отрицательном значении или значении больше 10 фильтр передаёт вход без сглаживания. Период 0 обновляет усреднение каждый цикл программы.

При первом запуске фильтр заполняет историю текущим значением, поэтому первое показание не усредняется с искусственными нулями.

Параметры компонента — Params

Обозначение и вход

Параметр По умолчанию Назначение
$Sensor Датчик аналоговый Название группы параметров
SensId _ID_ ID датчика. Для PT101 создаются PT101_Sensor_Inst и PT101_SensFilter_Inst
Raw _IN_ Исходное значение аналогового канала типа REAL
SensComment Комментарий Название измерения
SensParent CabinetController_Inst Родительский компонент, предоставляющий сброс out_bFaultReset
ChErr FALSE Входной признак ошибки канала. При отсутствии отдельной диагностики оставьте FALSE

Шкалы и корректировка

Параметры шкал задают начальные значения соответствующих настроек Conf.

Параметр По умолчанию Назначение
SensRawMin 0 Нижний код шкалы аналогового модуля
SensRawMax 27648 Верхний код шкалы аналогового модуля
SensEVMin 0.0 Электрическая величина, соответствующая нижнему коду
SensEVMax 20.0 Электрическая величина, соответствующая верхнему коду
SensEVUnits мА Обозначение единиц электрической величины
SensEVZP 4.0 Электрический порог, ниже которого используется замещающее значение
SensFVZP 0.0 Замещающее физическое значение при ошибке и ниже точки нуля
SensFVXMin 4.0 Электрический сигнал для нижней точки физической шкалы
SensFVXMax 20.0 Электрический сигнал для верхней точки физической шкалы
SensFVYMin 0.0 Нижняя точка физической шкалы
SensFVYMax 100.0 Верхняя точка физической шкалы
SensFVUnits % Обозначение единиц физической величины
SensFVLimit false Ограничение результата пересчёта физической шкалой
SensEnScale true Включение двух пересчётов: код → электрическая величина → физическая величина
SensK 1.0 Коэффициент корректировки физического значения
SensAdd 0.0 Добавка к физическому значению после умножения на коэффициент

Обозначения единиц не меняют расчёт. Численные границы задаются отдельно. Нижняя и верхняя границы каждой входной шкалы должны различаться.

Диагностика и сглаживание

Параметр По умолчанию Назначение
SensChannelBypass false Начальное состояние шунта ошибки канала
SensChannelErrorFilterTime 0 Начальная задержка фиксации ошибки канала, с
SensEVLL 3.0 Нижняя аварийная граница электрического сигнала
SensEVHH 21.0 Верхняя аварийная граница электрического сигнала
SensLimitBypass false Начальное состояние шунта электрических границ
SensLimitFilterTime 0 Начальная задержка фиксации нарушения электрических границ, с
SensAutoReset true Автоматическое снятие ошибки после устранения причины
SensFilterPeriod 1 Начальный период обновления фильтра, с
SensFilterCount 3 Начальное количество отсчётов для усреднения

Собственные настройки Sensor создаются по SensId. Отдельного параметра для общего набора настроек нескольких датчиков нет.

Настройки во время работы — Conf

Полные имена приведены для SensId = PT101. В столбце начальных значений показаны значения исходного компонента. Они заменяются значениями Params при подготовке проекта: например, в описанном подключении верхняя физическая граница будет 10 бар.

Шкалы и корректировка

Настройка Тип Начальное значение Назначение
Conf.PT101_Sensor_fRawMin REAL 0 Нижняя граница кода канала
Conf.PT101_Sensor_fRawMax REAL 27648 Верхняя граница кода канала
Conf.PT101_Sensor_EV_fMin REAL 0.0 Нижняя граница электрической шкалы модуля
Conf.PT101_Sensor_EV_fMax REAL 20.0 Верхняя граница электрической шкалы модуля
Conf.PT101_Sensor_EV_fZP REAL 4.0 Электрическая точка нуля
Conf.PT101_Sensor_FV_fZP REAL 0.0 Замещающее физическое значение
Conf.PT101_Sensor_FV_fXMin REAL 4.0 Электрическая точка нижней границы измерения
Conf.PT101_Sensor_FV_fXMax REAL 20.0 Электрическая точка верхней границы измерения
Conf.PT101_Sensor_FV_fYMin REAL 0.0 Нижняя граница физической шкалы
Conf.PT101_Sensor_FV_fYMax REAL 100.0 Верхняя граница физической шкалы
Conf.PT101_Sensor_FV_bLimit BOOL false Ограничение результата второй шкалой
Conf.PT101_Sensor_bEnableScale BOOL true Включение пересчёта шкал
Conf.PT101_Sensor_fK REAL 1.0 Коэффициент корректировки
Conf.PT101_Sensor_fAdd REAL 0.0 Добавка в единицах физической величины

Диагностика и сглаживание

Настройка Тип Начальное значение Назначение
Conf.PT101_Sensor_EV_fLL REAL 3.0 Нижняя аварийная электрическая граница
Conf.PT101_Sensor_EV_fHH REAL 21.0 Верхняя аварийная электрическая граница
Conf.PT101_Sensor_EV_bLimitBypass BOOL false Шунт контроля электрических границ
Conf.PT101_Sensor_Channel_bErrorBypass BOOL false Шунт ошибки канала
Conf.PT101_Sensor_Channel_diErrorFilterTime DINT 0 Задержка ошибки канала, с
Conf.PT101_Sensor_EV_diLimitFilterTime DINT 0 Задержка нарушения электрических границ, с
Conf.PT101_SensFilter_diPeriod DINT 1 Период обновления сглаживания, с
Conf.PT101_SensFilter_iCount INT 3 Количество отсчётов для среднего значения

Калибровка

При калибровке вы показываете компоненту, какой ток или напряжение датчик фактически выдаёт на известном нижнем и верхнем значении. Эти измеренные числа становятся границами пересчёта.

  1. Подайте сигнал, соответствующий известному нижнему значению физической величины, и дождитесь устойчивого показания.
  2. Установите команду калибровки нижней точки.
  3. Подайте сигнал для известного верхнего значения и установите команду калибровки верхней точки.
Переменная Тип Действие
View.PT101_Sensor_Inst_inout_bCalibrateFV_fXMin BOOL Установить TRUE: текущая электрическая величина записывается в Conf.PT101_Sensor_FV_fXMin
View.PT101_Sensor_Inst_inout_bCalibrateFV_fXMax BOOL Установить TRUE: текущая электрическая величина записывается в Conf.PT101_Sensor_FV_fXMax

После обработки компонент снимает команду. Физические границы fYMin и fYMax задаются отдельно и при калибровке не меняются.

Например, для нижней физической точки 0 бар измеренный ток оказался равен 4,02 мА. Калибровка нижней точки запишет 4,02 мА в fXMin, и эта электрическая величина будет соответствовать 0 бар.

Выходы компонента

Результат для примера Тип Назначение
PT101_Sensor_Inst.out_fEV REAL Электрическая величина после пересчёта кода канала
PT101_Sensor_Inst.out_fFV REAL Физическая величина после корректировки и возможного замещения, до сглаживания
PT101_SensFilter_Inst.out_fY REAL Сглаженная физическая величина
PT101_Sensor_Inst.out_bError BOOL Общая ошибка датчика
PT101_Sensor_Inst.out_Channel_bError BOOL Зафиксирована ошибка канала
PT101_Sensor_Inst.out_FV_bError BOOL Зафиксировано нарушение электрической границы
PT101_Sensor_Inst.out_FV_bLL BOOL Зафиксировано нарушение нижней электрической границы
PT101_Sensor_Inst.out_FV_bHH BOOL Зафиксировано нарушение верхней электрической границы

Для обычного регулирования используйте PT101_SensFilter_Inst.out_fY вместе с PT101_Sensor_Inst.out_bError. Если один датчик нужен нескольким компонентам, передавайте им эти же результаты.

Перед генерацией

Если сейчас нужна только программа, откройте у этого компонента область «Экспорт MetaLab» и удалите заполненные строки в своём проекте. После этого можно генерировать без сценариев.

Если будете выполнять виртуальную наладку, оставьте экспорт и импортируйте в раздел MetaLab следующие компоненты из полного архива MetaKit:

Компонент MetaLab Файл в архиве MetaKit
Sensor MetaLab/Lib Scenarios/Sensor.yaml

Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.

При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.