Сообщение от
Cs-Cs
Туплю. Что тут не так? Если у меня Value равно 99, то если я прибавлю Config.DimValStep * 2 (который может быть чем угодно) - то получу Value больше 100.
Согласен
Сообщение от
Cs-Cs
Код:
IF (Value < Config.DimLimitMax) THEN
Value := Value + Config.DimValStep * 2; (* Прибавляем значение на шаг *)
ELSE
Value := Config.DimLimitMax; (* Уравниваем значение с максимумом, ограничивая его сверху *)
END_IF
При исходных данных чему будет равно Value по завершению этого куска кода?
Сообщение от
Cs-Cs
Value - это сразу же выход диммера. Напрямую, выход FB. Поэтому я и не хотел его фигачить со знаком, а хотел чтобы он был WORD - чтобы сразу в регистры его можно было пихать без преобразований типов. Поэтому написал муть с проверкой на отрицательные значения в дополнительном коде.
А я и не предлагаю преобразовывать Value, а преобразовать результат операции Value - Step в значение со знаком и результат сравнивать с нулем. Либо, как вариант:
Код:
if Value + 100 - Step < 100 then ...