Цитата Сообщение от 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 ...