This is topic Текущее время в программе на ST in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/33/t/000033.html

Posted by mokeichev (Участник № / Member № 2070) on :
 
Помогите чайнику вытянуть в программу текущее время в виде DATE_AND_TIME.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В программе время в формате DATE_AND_TIME не будет воспринято.
Надо его передавать в формате LONG. Внутри TRACE MODE эта конвертация осуществляется автоматически.

Если Вы получили строку извне, например, из БД, надо ее привязать к каналу класса TIME. Он автоматически произведет преобразование.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Уточнения.
В настоящее время приведение данных в формате DATE_AND_TIME автоматически осуществляется во всех процедурах передачи значения времени при любых реализуемых межкопонентных связях.
Если речь идет о передаче в программу текущего времени системы, то это можно сделать двумя способами.
Если в базе каналов есть какой-либо канал, значение которого изменяется с каждым циклом пересчет базы, то можно взять его атрибут "Время изменения" (45).
Если такого канала нет, можно создать канал класса TIME и привязать его к системной переменной @t_Set_Date (Input), а его значение ввести в программу.
 
Posted by mokeichev (Участник № / Member № 2070) on :
 
Спасибо, все работает.
 
Posted by mokeichev (Участник № / Member № 2070) on :
 
Еще вопрос.
Из программы вывожу на Экран значения аргументов программы. Они периодически показывают то нормальное значение то ноль. Текст программы простой. Не пойму в чем дело. Помогите.

PROGRAM
VAR_OUTPUT DateTimeToDysplay_R : DATE_AND_TIME; END_VAR
VAR_OUTPUT TimeSiemens_R : UDINT; END_VAR
VAR_OUTPUT DateSiemens_R : USINT; END_VAR
VAR_OUTPUT DateTimeToDysplayHEX_R : UDINT; END_VAR
VAR_INPUT Set_Time_Value_R : DATE_AND_TIME; END_VAR
VAR VAR_000 : DATE_AND_TIME := dt#1990-01-01-00:00:00; END_VAR

DateTimeToDysplayHEX_R = Set_Time_Value_R;
DateTimeToDysplay_R = Set_Time_Value_R;
TimeSiemens_R = (Set_Time_Value_R%(24*3600))*1000;
DateSiemens_R = (Set_Time_Value_R - VAR_000)/(24*3600);

END_PROGRAM
 
Posted by mokeichev (Участник № / Member № 2070) on :
 
Если я задаю для канала программы период несколько секунд, то видно, что некоторые действительные значения появляются на Экран МРВ на один цикл, а затем сбрасываются в ноль. Такое впечатление, что каналы постоянно сбрасываются в ноль.
Что я делаю не правильно?
 
Posted by mokeichev (Участник № / Member № 2070) on :
 
Прошу, прощения. Сам разобрался.
Спасибо!
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2