Тема / Topic: Как зафиксировать время появления сигнала в программе ST
hamchik
Junior Member / Новичок
Участник № / Member № 1550
отправлено / posted
Добрый день!
Подскажите, пожалуйста, каким образом в теле программы ST можно зафиксировать время появления сигнала, чтобы через некоторое время этот сигнал можно было снять.
Сообщения / Posts 5 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Что именно - присвоить переменной текущее время? Например так:
if signal>0 then S_TIME=CUR_TIME; end_if;
где: signal - аргумент сигнала, S_TIME - глобальная переменная типа DATE_AND_TIME, CUR_TIME - атрибут "Время изменения" сигнала.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
hamchik
Junior Member / Новичок
Участник № / Member № 1550
отправлено / posted
Спасибо за подсказку. Она повела мысли в нужное направление, и появился новый вопрос: КАКИЕ ОПЕРАЦИИ МОЖНО ПРОИЗВОДИТЬ С ПЕРЕМЕННЫМИ ТИПА TIME? МОЖНО ЛИ ВЫЧИТАТЬ И СРАВНИВАТЬ ИХ?
Сообщения / Posts 5 | Из / From: Украина
| IP / IP: IP адрес / IP address |
hamchik
Junior Member / Новичок
Участник № / Member № 1550
отправлено / posted
Хочу уточнить вопрос: Можно ли из реального значения переменной типа TIME вычесть значение глобальной переменной типа DATE_AND_TIME, а затем результат сравнить с константой типа t# (=5s)?
Сообщения / Posts 5 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Да - над данным типом данных наравне с другими можно осуществлять арифметические операции и операции сравнения.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Avgorr
Forum Professor / Завсегдатай форума
Участник № / Member № 2607
отправлено / posted
Здравствуйте! А не подскажите ли, как можно сделать вызов из основной программы ST функцию FBD через определённый интервал времени (в секундах), причём чтобы этот период можно было изменять? Спасибо.
Сообщения / Posts 168 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701
отправлено / posted
Можно, например, получать текущие секунды (есть соответствующий FBD блок) потом просот писать так: if секунда mod интервал = 0 then Выполнить_ваш_FBD_блок
Avgorr
Forum Professor / Завсегдатай форума
Участник № / Member № 2607
отправлено / posted
А если необходимо через 40 секунд? Я предполагаю, что можно как-то запомнить время, затем отнять из текущего времени это запомненное и сравнить с уставкой, но как это сделать?
Сообщения / Posts 168 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701
отправлено / posted
Вот примерно так. GetSec это функция, FBD блок "Астрономическое время" возвращает секунду. next_time - глобальная переменная. flga - чтобы проиницыализировать next_time. if flag then next_time = GetSec()+40; if next_time > 60 then next_time = next_time-60; end_if; flag = false; end_if; if GetSec() == next_time then next_time = next_time+40; if next_time > 60 then next_time = next_time-60; end_if; //вот тут вызов того что надо end_if;
Сообщения / Posts 106 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Avgorr
Forum Professor / Завсегдатай форума
Участник № / Member № 2607
arido
Forum Haunter / Завсегдатай форума
Участник № / Member № 2961
отправлено / posted
Подскажите, пожалуйста, как режить такую задачу: при наступлении определенного события (параметр1=1) необходимо запомнить этот момент времени. Затем, при наступлении следующего события (параметр2=1)- запомнить и этот момент времени. В итоге, определить разницу. Например, определить время простоя оборудования (параметр1 - остановка оборудования, параметр2 - пуск оборудования). Параметр1 и параметр2 результат работы программы.
Сообщения / Posts 104 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Вам необходимо связать какой-нибудь аргумент (например TIME) программы со значением полученным с помощью системной переменной @t_Set_Date типа Input. В программе при наступлении этого события просто преравнять другой аргумент к фргументу TIME.
Вадик
Junior Member / Новичок
Участник № / Member № 2963
отправлено / posted
День добрый. Такой вопрос.... Вобщем выполнение программы должно начинатся по наступленю определенного события (изменение значение аргумента), каким образом это можно реализовать?
Сообщения / Posts 26 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Вадик
Junior Member / Новичок
Участник № / Member № 2963
отправлено / posted
Можно сделать следующим образом: в ИС отключить канал вызова программы (вкладка Флаги флаг Выключить). При наступлении определенного события в реальном времени послать в 3-й атрибут канала вызова программы значение 0 – программа будет отрабатываться с заданным циклом.
[ 09.07.2008, 13:03: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Сообщения / Posts 58 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Вадик
Junior Member / Новичок
Участник № / Member № 2963
отправлено / posted
Уважаемая поддержка, вопросы такого плана. Получается что во время начала каждого пересчета программа запускается и по его окончанию завершается? правельно ли я понял? И еще ....Если я исользую глобальную переменную то после завершения програмы результат хранящийся в этой переменной останется сохраненным до следующего вызова програмы. Я правельно понял написаное в документации?
Сообщения / Posts 26 | Из / From: Украина
| IP / IP: IP адрес / IP address |