Добрый день, уважаемые коллеги!
В проекте используется связка СПК110 с модулями Мх110. Встала задача контроля и учета расхода сырья с использованием импульсного расходомера (Kracht VC). Для подсчета импульсов используем каналы счетчика модуля МВ110-24.32ДН.

Задача и решение тривиальное - опрашиваем каналы счетчика, раз в секунду сохраняем значения, обнуляем каналы.
Вроде бы ничего криминального в такой логике нет и все работает.

Вот выдержка исходного кода:
Код:
flush_cnt_on_timeout := FALSE;

IF cnt_timeout.Q THEN
	r1 := 1.48*WORD_TO_REAL(cnt_03_ch_16_19_read[1]);
	r2 := 0.45*WORD_TO_REAL(cnt_03_ch_16_19_read[3]);
	cnt_03_ch_16_19_write[1] := 0;	
	cnt_03_ch_16_19_write[3] := 0;
	flush_cnt_on_timeout := TRUE;		
END_IF

cnt_timeout(IN:=((auto_mode AND out_open_horizont AND out_open_vertical) OR ((manual_mal_circ OR manual_bol_circ) AND out_enable_invrtors)) AND NOT flush_cnt_on_timeout,PT:=T#1S);
где flush_cnt_on_timeout - булева переменная, по триггеру R_EDGE которой происходит обнуление каналов счетчика, cnt_timeout.Q - выход TON'a cnt_timeout, отрабатывающий с частотой раз в секунду, r1 и r2 - значения с каналов счетчика, уже преобразованные и умноженные на необходимый коэффициент.

Сам модуль в списке устройств выглядит следующим образом:
ss.PNG

Проблема в том, что стабильно раз в 3 секунды считанное значение "прыгает", являясь, по сути, суммой текущего и предыдущего, например ... 65,3 ; 60 ; 125,3 ... В отладчике та же картина, раз в 3 секунды значение счетчика не обнуляется. Но почему так выходит?

Как я понимаю, у модуля, после переполнения счетчика (значение 65535) автоматическое обнуление канала не происходит, поэтому непрерывный подсчет импульсов произвести не удастся. Сейчас думаю обнуление производить не ежесекундно, а по значению счетчика (скажем, по условию >50 000).
Такой подход корректен?