Испытал вариант, предложенный Timoshuk.
У меня он тоже прекрасно работает.
Что же получается? Если устройство само меняет значение в регистре, то и дискретные выходы управляются. А если значения в регистре меняются из вне, то устройство эти изменения не видит. Хотя в инструкции написано, что одним из назначений внутренних регистров, как я понял, является управление выходами по командам от PC. Вот выдержка из инструкции.
Internal Register (Integer) represents a status flag to link the status of the first logic to the second one. It
is used most often with the Timer function, or to combine other input statuses together. The Internal Register
function also allows a PC to control the ioLogik’s local output when the remote output is controlled by a
Click&Go log (e.g., digital output, active message, e-mail, or SNMP Trap).
NOTE Internal Registers can be controlled by Modbus/TCP protocol.
Это что, глюк в ПО устройства? Как быть? Обращаться к производителям?