
Сообщение от
Евгений Кислов
Предположу, что вы используете DATA_RW для всех запросов (в т. ч. "Функции 04 и 03").
Теперь предположение:
Считали в буфер, например, значение 345 (функцией 04 или 03). Т.е. DATA_RW[0] имеет значение 345 - оно же 2#0000_0001_0101_1001.
Теперь вызвали код с вашего скриншота - считываем один дискрет инпут с адресом 97.
В ответ получает байт со значением 00 - бит сброшен (01 02 01 00 ... ).
Соответственно, этот байт копируется в буфер, затирая младший байт в DATA_RW[0].
Получаем 2#0000_0001_0000_0000, оно же 256.
В рамках данного предположения - это совершенно закономерный результат.