Спасибо. Это сработало.
Вид для печати
Спасибо. Это сработало.
Добрый день! Подскажите пожалуйста по функции SysTimeRtcGet из библиотеки SysTimeRtс, для применения на виртуальном ПЛК CoDeSys Control Win V3. Как правильно её применять, для использования системного времени в программе? Сложность в том, что системное время отображается некорректно ( к примеру время из функции показывает 15.23 на самом же деле время 16.10 ).
Запись в программе выглядит следующим образом: tdVar:= TO_TOD (SysTimeRtc.SysTimeRtcGet (dwErrorCode)*1000 ); . Без умножения на 1000 на выходе совсем даже не приблизительное время, а с умножением со стабильной разницей в 47 мин. )). Как устроена эта функция неведомо, и описание её работы очень скудно. Примеры её применения мною не обнаружены, поэтому надеюсь на вашу помощь в изучении этого вопроса.
Задача состоит в том, чтобы время с выхода этой функции применить в программе, для работы оборудования в определённые часы. Например, чтобы с 0 до 6 часов оно работало в одном режиме, а с 6ти до 23.59 в другом.
Добрый день.
Если нужен именно TOD - то см. ниже пример от kondor3000.Код:dtVar:= TO_DT(SysTimeRtc.SysTimeRtcGet(dwErrorCode) ); // получаем системное время в виде значения типа DT
Здравствуйте! Да, нужен именно ТОD, но как "делить" на разряды и "собирать" из них TOD, я не знаю. Может где-то пример есть ?
У меня работает конвертация DT_TO_TOD, ничего не раскладывая Вложение 81535
Это отлично, благодарю за подсказку ! Меня терзают смутные сомнения по поводу дальнейших действий и в целом поведения функции SysTimeRtcGet. Выходит мне нужно конвертировать 2 раза ( сперва DWORD_TO_DT, затем DT_TO_TOD) ? Почему не выходит корректная конвертация с одного перевода? Особенности конвертации или я что-то неверно исполняю?
Если я правильно понимаю, то функция SysTimeRtcGet возвращает DWORD а не дату и время. Но опыт показал, что переводя результат этой функции в время суток - получается несоответствие. А вот двойная конвертация (DWORD_TO_DT, затем DT_TO_TOD) возвращает вполне адекватное время . Только нужно его подкорректировать ещё каким-то средством, потому как получается системное -2ч.
Вложение 81558
Благодарю Вам душевно! Это верно, коротко и главное работает! Я в восторге - зарррабоооталаааа!!! Сколько пришлось повозиться, чтобы решить эту задачку, но спасибо добрым людям, и долгие вам лета!
Кстати, тем кому придётся когда-то как мне заморочиться - следует знать, что некорректная конвертация этой функции, даёт неверные результаты выражений с её использованием. Это нужно учитывать прежде, чем грешить на свои ошибки в коде.