Ещё есть вопрос, 5 значений, потом следующие 5? Или 5, а потом 4 старых и 1 новое, и т.д.?
Вид для печати
Ещё есть вопрос, 5 значений, потом следующие 5? Или 5, а потом 4 старых и 1 новое, и т.д.?
Спасибо, ознакомился с блоком, Я использовал штатный STATISTICS_INT он так-же сглаживает, но из за того что я предварительно фильтрую случайные и не корректные значения,часть их не записывается, поэтому установление времени выборки в блок, сильно влияет на результат, вот я и хочу просто брать выборку из последних пяти правдивых значений и усреднять без привязки ко времени а просто по наличию.
Да, получил 5, обсчитал затем сброс и жду следующие 5.
Чем среднее скользящее не угодило?
Критерий такой, каждое следующее значение меньше предыдущего, не равно 0 и расход в пределах верхней и нижней границ допуска,ну это работает вроде хорошо
Я и не хотел ничего переделывать- заставили, ищем способ точнее дозировать компоненты
input
value: real;
cnt_average:byte; //1..255
output
average:real;
var
i,j:byte; //byte!
m:array[0..255]of real;
---------
if value = m[i] then
return; //в опу время
end_if
i:=i +1;
m[i]:=value;
cnt_average:=max(1,cnt_average);
average :=0;
for j:=0 to cnt_average - 1 do
average :=average + m[word_to_byte(i-j)];
end_for
average:=average/cnt_average;
делаем prorgram и вставляем евоный квадратик в поле квадратиков
Две палки слева, и одна справа думаю понятно что.
Добрый день! Подскажите есть ли в 2.3 опция сбросить значения регистров в ноль при потере связи по modbus с устройством по аналогии с codesys 3.5 (работаю только в этой версии, но тут нужно залезть в чужую программу)