Сообщение от
arelavv
Для того чтобы знать количество воды прошедшее через фильтры за определенное время, в ST написал следующее выражение:
a=a+(QF1)\3600- где QF1-тэг расход в т\час , 3600сек - т.е. вычисляем т\сек. Все вроде логично, но в конечном итоге не получилось того чего хотел - подскажите где ошибка. Методом научного втыка подобрал число в 2100000 на которое надо делить чтобы получить нужные данные...Проверял на контроллере ПЛК63. В режиме эмуляции число отличается на порядок... Чувствую что надо как то привязаться к TIME? но не знаю как...Жду помощи от специалистов...
Код:
r1(clk:=i8);(*триггер на вход от счетчика*)
IF r1.Q THEN(*если сработал триггер*)
IF one=FALSE(*доп. переменная, если она false запоминаем время сейчас, если TRUE, то вычитаем от текущего запомненное в t1 = получаем сколько прошло между сигналами в мс*)
THEN
one:=TRUE;
t1:=TIME();
ELSE
t2:=TIME()-t1;
one:=FALSE;
END_IF
END_IF
Liters:=DWORD_TO_WORD(3600000/TIME_TO_DWORD(t2));(*счетчик 1 имп\л liters - выходная переменная WORD литров в час*)