Из того, что увидел я - это то, что регистры битовых масок читаются кусками по 16 бит.
Их надо заменить на 32bit Module и писать сразу DWORD. В этом случае указывается адрес первого регистра (для чтения 99, для записи 97).
Если бы ПЛК умел сам групповые запросы через конфигурацию - то может и прокатило бы, а так да - нужен DWORD