1. Скажите, можно ли вычитать друг из друга переменные типа date_and_time?
2. Как записать в такую переменную текущее системное значение даты и времени?
Спасибо.
1. Скажите, можно ли вычитать друг из друга переменные типа date_and_time?
2. Как записать в такую переменную текущее системное значение даты и времени?
Спасибо.
Как-то так:
http://www.codesys.ru/docs/TimeExperience.pdf
Мануал толковый, но не нашёл ответов.
А как определили что толковый ?
1.Можно, но рез-т - TIME; //что естественно коли читали толковый документ
2.Способов много:
2.1. Надыбать формул и вычислить. В толковом документе - есть.
2.2. Надыбать функцию и применить.
2.3. Не парить моск и заставить пахать германский трактор через строки
2.4 ..
Последний раз редактировалось Валенок; 22.11.2015 в 21:53.
Валенок, спасибо за наводку! Так и сделал, всё работает отлично!
Код:VAR cur_datetime_dt:DT; // текущее время в формате DT cur_datetime_str:STRING; // текущее время в формате TIME_NOW: CurTimeEx; YEAR,MONTH,DAY,HOUR,MINUTE,SEC:UINT; MONTH_S,DAY_S,HOUR_S,MIN_S,SEC_S:STRING(2); YEAR_S:STRING(4); SystemTime: SysTime64; TimeDate: SystemTimeDate; END_VAR // получаем текущее время и дату в формате DT TIME_NOW(SystemTime:=SystemTime , TimeDate:=TimeDate ); YEAR:=TimeDate.Year; MONTH:=TimeDate.Month; DAY:=TimeDate.Day; HOUR:=TimeDate.Hour; MINUTE:=TimeDate.Minute; SEC:=TimeDate.Second; YEAR_S:=UINT_TO_STRING(YEAR); MONTH_S:=UINT_TO_STRING(MONTH); DAY_S:=UINT_TO_STRING(DAY); HOUR_S:=UINT_TO_STRING(HOUR); MIN_S:=UINT_TO_STRING(MINUTE); SEC_S:=UINT_TO_STRING(SEC); cur_datetime_str:=concat('dt#',concat(year_s,concat('-',concat(month_s,concat('-',concat(day_s,concat('-',concat(hour_s,concat(':',concat(min_s,concat(':',sec_s))))))))))); // 2015-04-19-12:59:01 cur_datetime_dt := STRING_TO_DT(cur_datetime_str);
Дальше дело техники. Если кому интересно - могу скинуть управление ПРкой для освещения в квартире.
Народ, а еще вопрос - с DT# можно в визуализации выдернуть значения, например “%t[ddd MMM dd.MM.yyyy HH:mm:ss]”.
А как вытащить данные в нормальном виде HH:mm:ss из T# (TIME)?
Всё, разобрался, только руками![]()
Последний раз редактировалось vnkorol; 22.11.2015 в 13:56.
Можно оживить тему?
Мне нужно отобразить время запуска и время работы программы.
Делаю это так:
В визуализации отображаю переменные StartTime и WorkTime.PHP код:
PROGRAM PLC_PRG
VAR
RTC: Real_Time_Clock; // FB из библиотеки SPK Tools 1.3.0
Year, Month, Day, Hour, Minute, Second: UINT;
DT_STRING: STRING;
START: BOOL:= FALSE;
StartTime: DATE_AND_TIME;
NOW: DATE_AND_TIME;
WorkTime: TIME;
END_VAR
IF NOT START THEN // первый запуск
RTC(
Year=> Year,
Month=> Month,
Day=> Day,
Hour=> Hour,
Minute=> Minute,
Second=> Second,
w_str_time=> ,
w_str_dateM=> );
DT_STRING:= 'DT#';
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Year));
DT_STRING:= CONCAT(DT_STRING, '-');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Month));
DT_STRING:= CONCAT(DT_STRING, '-');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Day));
DT_STRING:= CONCAT(DT_STRING, '-');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Hour));
DT_STRING:= CONCAT(DT_STRING, ':');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Minute));
DT_STRING:= CONCAT(DT_STRING, ':');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Second));
StartTime:= STRING_TO_DT(DT_STRING);
START:= TRUE;
END_IF;
RTC(
Year=> Year,
Month=> Month,
Day=> Day,
Hour=> Hour,
Minute=> Minute,
Second=> Second,
w_str_time=> ,
w_str_dateM=> );
DT_STRING:= 'DT#';
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Year));
DT_STRING:= CONCAT(DT_STRING, '-');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Month));
DT_STRING:= CONCAT(DT_STRING, '-');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Day));
DT_STRING:= CONCAT(DT_STRING, '-');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Hour));
DT_STRING:= CONCAT(DT_STRING, ':');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Minute));
DT_STRING:= CONCAT(DT_STRING, ':');
DT_STRING:= CONCAT(DT_STRING, UINT_TO_STRING(Second));
NOW:= STRING_TO_DT(DT_STRING);
WorkTime:= NOW - StartTime;
В отладчике вижу то, что надо: StartTime - время запуска (не изменяется), WorkTime - время работы (тикает, как положено).
На визуализации же вижу и StartTime, WorkTime тикают и показывают текущее реальное время.
Где я мог ошибиться и сделать что-то не так?
Последний раз редактировалось Selya; 09.09.2016 в 14:35.
Вероятно, вы столкнулись с этим:
http://www.owen.ru/forum/showthread.php?t=24638
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Спасибо. Обновился до CODESYS v3.5 SP7 Patch 4 и всё заработало как надо.