Среднее значение входных данных в Mitsubishi GX Works 2
Мне нужно получить среднее значение моих входных сигналов от модуля ввода Mitsubishi Q64AD. Я работаю в GX Works 2 в структурированном тексте.
Вот как я использовал для получения среднего значения в Codesys:
timer_sr(IN:= NOT timer_sr.Q , PT:= T#5s );
SUM1:= SUM1 + napr1;
Nsum:=Nsum + 1;
IF timer_sr.Q THEN
timer_sr(IN:= NOT timer_sr.Q , PT:= T#5s);
outsr := SUM1 /Nsum;
Nsum := 0;
SUM1 := 0;
END_IF;
напр1 - это значение из модуля
Этот фрагмент кода не работает в GX Works 2, и я думаю, что SUM1 - это не тип данных INT, а просто тип Word[подписанный].
Есть ли способ сделать SUM1 типом INT или может быть другая логика для этого решения?
1 ответ
На других платформах это должно работать, но компилятор выдает предупреждение, так что я думаю, он все равно будет компилироваться? Конечно, если значение будет отрицательным, возникнут проблемы.
Вы можете конвертировать WORD
в INT
по функции IEC WORD_TO_INT
, Я не уверен, насколько хорошо ваша система соответствует стандарту, но если это так, попробуйте следующее:WORD_TO_INT(SUM1)
, Если SUM1 > 65535, то возникнут проблемы с верхней границей INT
32767
Если это не поможет, не могли бы вы предоставить более подробную информацию? Как это не работает?
Ps. WORD - это тип данных без знака, а не подписанный, как вы написали.