Связь со мной: 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 | Как правильно задавать вопросы | PRO32 Connect
В общем, попробовал я этот макрос. В целом, получилось сформировать необходимое количество секунд, с 2000 года по текущую дату и время, с доработкой макроса. Проблема теперь в другом. Панель никак не может корректно записать эти секунды в регистр 61553 ПР103. Саму запись организовал по кнопке вот таким способом:
PSW[310]=LOWORD(UnixTime);
PSW[311]=HIWORD(UnixTime);
ArrValue[1]=PSW[300];
ArrValue[2]=PSW[301];
Writes(PLC, 1, MODBUS_RTU_REGS_4X, 61553, 2, ArrValue);
Где UnixTime и есть то необходимое количество секунд с 2000 года (не с 1970, уже вычислено).
Если записывать как есть, то дата получается какая-то странная, 2044 год, что неправильно. Если поменять местами регистры в массиве таким образом:
PSW[310]=HIWORD(UnixTime);
PSW[311]=LOWORD(UnixTime);
то дата пишется всегда корректно, но время постоянно какое-то разное. Пробую писать нажимая кнопку подряд примерно каждые 3-4 секунды, время в ПР103 увеличивается на минуты и часы. Такое чувство, что нужно как-то сформировать байты, но пока не знаю как.
Есть ли где-то информация, как именно нужно писать время в регистр 61553? В документации толком ничего про это не написано.