Tia Portal — Функциональные блоки

2020-08-11 Промышленное  3 комментария

Продолжим наше изучение Tia Portal. На очереди очередная порция кода. В этот раз рассмотрим  два полезных функциональных блока — чтения и записи времени в ПЛК  с панели HMI и блок двухпозиционного регулятора с гистерезисом.

Функциональный блок чтения и записи времени в ПЛК с HMI-панели

Создаем функциональный блок Date_Time. В нем мы зададим установку времени ПЛК и чтение системного времени.

Функциональный блок 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.

OB_Date_Time

На экране HMI делаем следующую визуализацию и подключаем теги:

Визуализация на HMI

  1. Date_Time_DB_New_Date_Var(новая дата для ПЛК). В это окно записываем новую дату.
  2. Date_Time_DB_New_Time_Var (новое время для ПЛК). В это окно записываем новое время.
  3. Date_Time_DB_TimeSet  — в свойстве этой кнопки (Events->Press-> SetBitWhileKeyPressed) подставляем данный тег. При нажатии данной кнопки новое время и дата сохраняются.

Чтение даты и времени осуществляем с помощью элемента Data\Time field.  В свойствах General->Process Value подключаем тег Date_Time_DB_OUT_TIME_DATE.

элемент Data\Time field

Функциональный блок – двухпозиционный регулятор с гистерезисом.

Переходим к нашему второму блоку — регулятору. На этот раз для написания кода будем использовать язык SCL.

Создаем функциональный блок с именем Hesterezis, прописываем  необходимые переменные и пишем код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(*Если уставка 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;

Hesterezis_Variable

Вызывать его можно либо  в прерывании типа OB35 или в штатном ОВ1.

Hesterezis_OB

На входе  inRealPVTemperature считывается  значение температуры с датчика в градусах ( ну или не темп-ры ,а давления или какого-то еще параметра. Но для примера рассмотрим температуру). На входе inRealSPTemperature задаем уставку (в градусах). К входу inBoolReset можно подключить кнопку сброса выхода (можно оставить свободным). Ну и на выход подключаем например заслонку открыть-закрыть (сигнал с выхода дискретный 0-1).

И давайте также и для этого блока сделаем визуализацию на панели.

Hesterezis_HMI

Подключаем теги:

  1. Hesterezis_DB_inRealSPTemperature  - уставка
  2. Hesterezis_DB_inRealPVTemperature — фактическая температура
  3. Hesterezis_DB_sRealDelta– дельта (в данном случае PV-SP)
  4. Hesterezis_DB_sTimeDown— Если разница между уставкой SP и фактическим значение PV будет больше или равн Delta, то выход выключиться через время sTimeDown.
  5. Hesterezis_DB_sTimeUp — Если уставка SP больше фактического значения PV, то через время sTimeUp включится выход.

Видимость отображения надписи ВКЛ задаем так:

Вот в принципе и все, наш блок готов.

Это только одна из интерпретаций регулятора по гистерезису. В следующих статьях рассмотрим другие.

 

pdf1   ФБ Date_Time — Скачать

pdf1   ФБ Hesterezis — Скачать

 

Поделиться в соц. сетях

Опубликовать в LiveJournal
Опубликовать в Яндекс

  • Максим says:

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

  • Алиса says:

    Спасибо вам за предоставленную информацию

  • Игорь says:

    Все конечно ничего, НО это явление называется гистерезис, hysteresis, хотя бы даже histerezis но никак не hesterezis. Как-то слишком бросаются в глаза такие ляпы.

Комментарии

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>