Сообщение от
skinnbatter
Датчик: 1-канальный модуль аналогового ввода для мостов резисторов (тензометрический датчик).
Да вибраций особых нет, но очень большая чувствительность, поэтому при написании программы не могу точно выставить ноль. Пробовал фильтры среднего скользящего и FIW фильтр всёравно не помогает. Может какой вариант подскажите как искусственно загрубить эти скачки, чтобы система не чувствительна была к ним, т.к числа после десятого разряда постоянно меняются, хотя платформа в покое находится.
Попробуйте в Real уменьшить число знаков после запятой до двух.
В библиотеке OSCAT есть ф-ция ROUND(in,N), выгядит она почти так:
Код:
FUNCTION ROUND : REAL
VAR_INPUT
in : REAL;
N : INT;
END_VAR
VAR
X: REAL;
DECADES : ARRAY[0..8] OF REAL := 1.0,10.0,100.0,1000.0,10000.0,10000.0,100000.0,1000000.0,10000000.0;
END_VAR
X :=DECADES[LIMIT(0,N,8)];
ROUND := DINT_TO_REAL(REAL_TO_DINT(in * X)) / X;
in - входной сигнал
N - число знаков после запятой (0 ... 8)
Пример до "сотых" :
Y = ROUND(X, 2);