Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

загорание лампочек "Больше", "Меньше" в TraceMode

 Ответить Ответить
Автор
Сообщение
amigo Смотреть выпадающим
Новичок
Новичок


Присоединился: 20 Апрель 2009
Категория: Ukraine
Online Status: Offline
Публикации: 2
Свойства публикации Свойства публикации   Ответить, цитируя автора - amigo Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: загорание лампочек "Больше", "Меньше" в TraceMode
    Опубликовано: 20 Апрель 2009 00:40
Здравствуйте. Я студент. В одной из частей лабораторной работы нужно решить следующюю задачу: загорание лампочек "Больше", "Меньше" регулятора (реализовать в ТМ5).
Как это сделать стандартными блоками FBD-программирования я не смог придумать, поэтому решил создать новый функциональный блок (FB). Он должен сравнивать входящее значение параметра U(t) с его предыдущим значением U(t-1), и если U(t)>U(t-1) на выход выводил бы 1, иначе 0. Т.е., если сигнал управления увеличивается, то загорается лампочка "Б", если уменьшается - "М".
Текст программы FB (то, что я придумал):
   F0=I0
   F1=I1
   IF F0>F1
   THEN Q0=1
   ELSE Q0=0
   END_IF
   I1=I0
Только программа как нужно не работает. На выходе всё время 1.
Вопрос.
1. Как в ТМ использовать функции, зависящие от времени, в данном случае U(t) и U(t-1).
2. Можно ли указанную задачу решить стандартными блоками ТМ, если нет, то как это сделать на IL?
Наверх
I345 Смотреть выпадающим
Новичок
Новичок


Присоединился: 11 Июнь 2008
Категория: Rwanda
Online Status: Offline
Публикации: 3
Свойства публикации Свойства публикации   Ответить, цитируя автора - I345 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Апрель 2009 09:59
Нет не так, нужно получить значение параметра (как защелку от времени). Проще брать компаратор и сравнивать текущее значение с заданным значением или интервалом, образцовой прямой/кривой...
Игорь
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Апрель 2009 19:16
IN(*Входная переменная*)
OLD_IN     (*Значение полученное в прошлом цикле*)
MOVE_UP(*ЕСЛИ ПРОИСХОДИТ РОСТ*)
MOVE_DOWN (*ЕСЛИ ПРОИСХОДИТ УМЕНЬШЕНИЕ*)

(*ВОЗМОЖНО ПРИ НАЛИЧИИ ЗАВЕДОМО НЕРАБОЧЕГО ДИАПОЗОНА РЕАЛИЗОВАТЬ ИНИЦИАЛИЗАЦИЮ
ПЕРЕМЕННОЙ ХРАНЕНИЕЯ ИНАЧЕ В ПЕРВОМ ЦИКЛЕ ПОЛУЧАЕМ ЛОЖНОЕ СРАБАТЫВАНИЕ*)

IF IN<OLD_IN THEN
      MOVE_UP := FALSE;
     MOVE_DOWN:=TRUE;
ELSIF IN>OLD_IN THEN
     MOVE_UP := TRUE;
     MOVE_DOWN:=FALSE;
ELSE
     MOVE_UP := FALSE;
     MOVE_DOWN:=FALSE;
END_IF;
OLD_IN:=IN;
Вы почти правильно все сделали, только сохранять значение нужно после сравнения а не перед, иначе вы его просто теряете в самом начале.
Наверх
amigo Смотреть выпадающим
Новичок
Новичок


Присоединился: 20 Апрель 2009
Категория: Ukraine
Online Status: Offline
Публикации: 2
Свойства публикации Свойства публикации   Ответить, цитируя автора - amigo Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Апрель 2009 23:58
Всем спасибо
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz