Сообщение от
lazy
ок, попробую, спасибо )
Возможно придется немного модифицировать код
Код:
VAR
SumPlus: UDINT;
SumMinus: UDINT;
Curr: DINT;
Sum: UDINT;
Sign: BOOL;
END_VAR
IF Curr >=0 THEN
SumPlus:=SumPlus + Curr;
ELSE
SumMinus:=SumMinus - Curr;
END_IF
Sum:=ABS(SumPlus - SumMinus);
Sign:= SumMinus > SumPlus;
Здесь для итоговой суммы (Sum) используется UDINT (от 0 до 4294967295) и ввел переменную Sign для знака Sum.
Т.е. фактически диапазон вычислений Sum от - 4294967295 до 4294967295.
В конце вычислений (после деления), умножить результат на "-1", если Sign был BOOL.