Здравствуйте!
Как узнать текущее время и дату в виде DATE_AND_TIME на ПЛК160? Про CurTimeEx знаю и поля структуры SystemTimeDate меня не интересуют — там всё по отдельности.
Спасибо.
Здравствуйте!
Как узнать текущее время и дату в виде DATE_AND_TIME на ПЛК160? Про CurTimeEx знаю и поля структуры SystemTimeDate меня не интересуют — там всё по отдельности.
Спасибо.
Не понятен вопрос.
Вам надо собрать дату и время в один параметр??? А зачем?
Чтобы без костылей передавать это по модбасу на ПК, где ведётся протокол событий. Полагаться на часы ПК при этом нельзя.
Я не пробовал, но на сколько знаю есть операторы сбора параметров.
Так же в интернете есть статьи Игоря Петрова - временные сложности (скорее всего есть и на сайте www.codesys.ru)
Там есть ответы на все случаи работы с часами.
Да, спасибо, нашёл, пошёл читать. А стандартных средств для этого нет что ли? Во деревня![]()
В назидание потомкам
Качаем архив с codesys.ru и подключаем оттуда библиотеку TimeExp.lib, после чего делаем прыжок с переподвыподвертом:
Код:VAR timedate: SystemTimeDate; systime: SysTime64; datetime_packed: DT; GetTime: CurTimeEx; END_VAR SysMemSet(ADR(systime), 0, SIZEOF(systime)); SysMemSet(ADR(timedate), 0, SIZEOF(timedate)); GetTime(SystemTime := systime, TimeDate := timedate); datetime_packed := DATE_TO_DT( PackDate(timedate.Year, timedate.Month, timedate.Day) + PackTime(timedate.Hour, timedate.Minute, timedate.Second, timedate.Milliseconds) / 1000);
Последний раз редактировалось Yegor; 14.12.2012 в 06:47.
Так... А почему на ПЛК - если верить функции CurTimeEx - время неравномерно идёт?
У меня в одном блоке вызывается TIME() и CurTimeEx(), их показания идут в регистры Modbus, эти регистры "одновременно" считываются на ПК и там видно, что TIME() идёт равномерно, а в CurTimeEx() секунды меняются то быстрее, то медленнее. Чё за нафиг?
Это не глюки. Оно иногда чуть ли не перепрыгивает через одну-две секунды.
Окей. Но почему так сильно прыгает-то? Ужас.
Вышел из положения: при подключении к ПЛК запоминаем его текущий аптайм и дату/время, а дальше смотрим только аптайм и добавляем его дельту к запомненному значению даты и времени. Можно и на самом ПЛК до записи в Modbus-регистры сделать.