Добрый день. Столкнулся с проблемой периодического сброса плк по watchdog с равными интервалами времени. Смущает что интервал близок к макс. значению переменной типа TIME - 4194967295ms(49d17h2m47s295ms)
Добрый день. Столкнулся с проблемой периодического сброса плк по watchdog с равными интервалами времени. Смущает что интервал близок к макс. значению переменной типа TIME - 4194967295ms(49d17h2m47s295ms)
Если посмотреть debug.txt из этой темы https://owen.ru/forum/showthread.php?t=36247 - интервал сброса по watchdog в этих же пределах!
Таймеры TON, TOF, TP ограничены PT, я думаю их тяжело переполнить. Функция TIME() возвращает время в миллисекундах от начала работы системы в формате TIME должна наверное с нуля начать или нет?
Время то начнётся с нуля, но в программе может например считаться наработка, как разница текущего времени и времени включения.
При обнулении функции TIME(); время наработки может стать отрицательным и вачдог обеспечен. К переполнению времени надо очень внимательно относиться. 49 дней и аут)))
С таймерами тоже может случиться казус, зависит от программы.
Последний раз редактировалось kondor3000; 16.06.2022 в 13:29.
Обычно такое бывает если у Вас есть какой-либо цикл, в котором неправильно вычисляется разница времени между текущим и временем начала. Т.к. начало обычно бывает при T чуть выше 0, то через 49 дней++ получается отрицательное значение и тут то и ошибка вылазит.
Тролль-наседка, добрый, нежный и ласковый
Приведите пример когда время может стать отрицательным?
t3(T#71582m47s291ms):= t1(T#0ms) - t2(T#5ms);
Только что закинул пример на ПЛК110
Поэтому время переводим в DWORD, вычитаем и сравниваем
Тролль-наседка, добрый, нежный и ласковый