Среднее значение входных данных в 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, то возникнут проблемы с верхней границей INT32767

Если это не поможет, не могли бы вы предоставить более подробную информацию? Как это не работает?

Ps. WORD - это тип данных без знака, а не подписанный, как вы написали.

Другие вопросы по тегам