Сообщение от
Sulfur
В спецификации ПЛК указано что до 1000Гц. Но есть сомнения, так как нет аппаратных счетчиков, а программа (один цикл скана) должна выполняться за 1 мс с учетом времени на служебные нужны ПЛК.
Можно попробовать сделать свой ФБ
VAR_In
In:bool; Счетный вход.
Reset (Global): bool; Сброс счетчика.
---
Var_Out
Out:WORD (или DWORD); Результат счета.
----
Var_Global
Old_In:bool; Предыдущее состояние входа.
====
IF Reset THEN Out:=0; Reset:=FALSE; END_IF; Обнуляем счет по условию, сбрасываем флаг сброса.
IF In<>Old_In THEN Old_In:=In; Out:=(Out+1)/2; END_IF; Если состояние входа изменилось, то инкрементируем счетчик. Деление на 2 потому что будут считаться как передние фронты, так и задние.
---------
В ПЛЦ ПРГ
VAR Imp: DWORD; Количество импульсов в секунду.
Тащим на поляну наш ФБ.
1. Делаем постоянно работающий блинк с периодом верх\них по 500мс.
2. По переднему фронту блинка через R_TRIG считываем в переменную Imp из Оut сделанного ФБ, а так же делаем Reset ФБ = TRUE (он сбросится при вызове ФБ)
В результате получаем количество импульсов в секунду.
Но стабильности высокой ожидать не стоит, ибо скоростной счет не для данного ПЛК.
===========
Ну или как вариант в вашей проге поменять ТР10 на блинк с периодом верх\них по 500мс, и возможно вместо F_TRIG10 поставить R_TRIG.