Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Я уверен что в плк все операции с переменными типа time идут через dword
Два места использования переменной типа TIME в расчетах:
1 . timeSec(clk := TIME_TO_DWORD(TIME()) MOD 1000 > 500);
2. peri := TIME() - t;
c := SEL(peri > tImpMax, c, 0);
IF c = 2 THEN
IF (peri >= period) AND (TIME_TO_DWORD(peri) <> 0) THEN
value := coef * 3600 * 1000 / TIME_TO_DWORD(peri);
END_IF
ELSE
value := 0;
END_IF
TIME() - t -- t откуда берётся?
И лучше бы Вы всю программу выложили
Тролль-наседка, добрый, нежный и ласковый
По фронту имульса сохраняется t := TIME();
Да и это значение не имеет, переменная perI при любых раскладах > 0, если она > tImpMax(T#3m) все что ниже не выполняется
peri := TIME() - t;
c := SEL(peri > tImpMax, c, 0);
fix(clk := IN);
IF fix.Q THEN
period := peri;
t := TIME();
c := MIN(2,c + 1);
dwACC := dwACC + 1;
ACC := dwACC * coef;
oldAcc := ACC;
END_IF
IF c = 2 THEN
IF (peri >= period) AND (TIME_TO_DWORD(peri) <> 0) THEN
value := coef * 3600 * 1000 / TIME_TO_DWORD(peri);
END_IF
ELSE
value := 0;
END_IF