Цитата Сообщение от Asbi Посмотреть сообщение
Как-то раз тех поддержка тоже такое советовало, но это замедляет работу протокола. И у меня в общей сложности устройств намного больше, а 16 привел только для примера.

Кнопки только импульсные, на самом деле в алгоритме делаю, что-то наподобие самоподхвата. А читаю регистры, потому что было такое, что при изменении какого-либо бита в остальные биты записывались False (0), поэтому я начал туда записывать актуальные значения.
Попробуйте так:
Код:
    Выход.Value.0    :=    x0;
    Выход.Value.1    :=    x1;
    Выход.Value.2    :=    x2;
    Выход.Value.3    :=    x3;
    Выход.Value.4    :=    x4;
    Выход.Value.5    :=    x5;
    Выход.Value.6    :=    x6;
    Выход.Value.7    :=    x7;
    Выход.Value.8    :=    x8;
    Выход.Value.9    :=    x9;
    Выход.Value.10   :=    x10;
    Выход.Value.11   :=    x11;
    Выход.Value.12   :=    x12;
    Выход.Value.13   :=    x13;
    Выход.Value.14   :=    x14;
    Выход.Value.15   :=    x15;
 Выход.StatusCode := Вход.StatusCode;
т.е. просто упаковать сигналы с кнопок (импульсы) и присвоить выходу статус входного слова.
А для надёжности было бы в конце программного цикла ПЛК обнулять регистр с командами (если конечно есть такая возможность)