Цитата Сообщение от Владимир Ситников Посмотреть сообщение
Смотрите: значения входов меняются только _до_ начала работы программы, но никак не во время её работы.
Т.е. программа из if/case пишется из того расчёта, что значения входов НЕ меняются во время её работы.

Вопрос снят?
Спасибо за ответ.

Становится немного понятно принцип работы.
Нашел причину такого странного поведения ПЛК.
while(1)
{
ReadInputs();
PLC_PRG();
WriteOutputs();
}
Вопрос увы не снят, а изменился.
Мы не можем получить новое значение, пока цикл не завершиться, но реальное значение может быть другим.
Как быть?

И тут нужно разбираться с прерываниями, как происходит передача управления между основной программой и обработчиком прерывания.