-
Tia Portal — Функциональные блоки
2020-08-11
Промышленное
-
Продолжим наше изучение Tia Portal. На очереди очередная порция кода. В этот раз рассмотрим два полезных функциональных блока — чтения и записи времени в ПЛК с панели HMI и блок двухпозиционного регулятора с гистерезисом.
Функциональный блок чтения и записи времени в ПЛК с HMI-панели
Создаем функциональный блок Date_Time. В нем мы зададим установку времени ПЛК и чтение системного времени.
Инструкция T_COMBINE объединяет значения переменных
New_Date_Var
типа Date иNew_Time_Var
типа Time_Of_Day в тип данных DTL (Date and Time Long) и передает DTL-значение в инструкцию WR_SYS_T (Set time-of-day), которая устанавливает время суток CPU.Во втором нетворке считываем системное время CPU инструкцией RD_SYS_T и затем с помощью T_CONV преобразуем его в типы данных Date и Time соответственно.
Далее этот функциональный блок вызываем в главном блоке ОВ1.
На экране HMI делаем следующую визуализацию и подключаем теги:
Date_Time_DB_New_Date_Var
(новая дата для ПЛК). В это окно записываем новую дату.Date_Time_DB_New_Time_Var
(новое время для ПЛК). В это окно записываем новое время.Date_Time_DB_TimeSet
— в свойстве этой кнопки (Events->Press-> SetBitWhileKeyPressed
) подставляем данный тег. При нажатии данной кнопки новое время и дата сохраняются.
Чтение даты и времени осуществляем с помощью элемента Data\Time field. В свойствах
General->Process Value
подключаем тегDate_Time_DB_OUT_TIME_DATE
.Функциональный блок – двухпозиционный регулятор с гистерезисом.
Переходим к нашему второму блоку — регулятору. На этот раз для написания кода будем использовать язык SCL.
Создаем функциональный блок с именем Hesterezis, прописываем необходимые переменные и пишем код:
(*Если уставка SP больше фактического значения PV , то через время sTimeUp включиться выход. Если разница между уставкой SP и фактом PV , будет больше или равно чем Delta, то выход выключиться. Также выход выключается по сигналу inBoolReset*) #sTime1.TON(IN := #inRealSPTemperature > #inRealPVTemperature, PT := #sTimeUp, Q => #actFlagTimeUp); IF #actFlagTimeUp = TRUE AND #inBoolReset = FALSE THEN #outBoolHesterezis := TRUE; ; END_IF; #tRealDelta:=#inRealPVTemperature - #inRealSPTemperature; #sTime2.TON(IN := #tRealDelta >= #sRealDelta, PT := #sTimeDown, Q => #actFlagTimeDown); IF #actFlagTimeDown = TRUE OR #inBoolReset = TRUE THEN #outBoolHesterezis := FALSE; ; END_IF;
Вызывать его можно либо в прерывании типа OB35 или в штатном ОВ1.
На входе
inRealPVTemperature
считывается значение температуры с датчика в градусах ( ну или не темп-ры ,а давления или какого-то еще параметра. Но для примера рассмотрим температуру). На входеinRealSPTemperature
задаем уставку (в градусах). К входуinBoolReset
можно подключить кнопку сброса выхода (можно оставить свободным). Ну и на выход подключаем например заслонку открыть-закрыть (сигнал с выхода дискретный 0-1).И давайте также и для этого блока сделаем визуализацию на панели.
Подключаем теги:
Hesterezis_DB_inRealSPTemperature
- уставкаHesterezis_DB_inRealPVTemperature
— фактическая температураHesterezis_DB_sRealDelta
– дельта (в данном случае PV-SP)Hesterezis_DB_sTimeDown
— Если разница между уставкой SP и фактическим значение PV будет больше или равн Delta, то выход выключиться через времяsTimeDown
.Hesterezis_DB_sTimeUp
— Если уставка SP больше фактического значения PV, то через времяsTimeUp
включится выход.
Видимость отображения надписи ВКЛ задаем так:
Вот в принципе и все, наш блок готов.
Это только одна из интерпретаций регулятора по гистерезису. В следующих статьях рассмотрим другие.
ФБ Date_Time — Скачать
ФБ Hesterezis — Скачать
Все конечно ничего, НО это явление называется гистерезис, hysteresis, хотя бы даже histerezis но никак не hesterezis. Как-то слишком бросаются в глаза такие ляпы.
Спасибо вам за предоставленную информацию
Здорово, что сегодня мне лично попалась представленная заметка. Пытаюсь сделать ЗНОшную работу по подобной тематике.