Добрый день, уважаемое сообщество.

Мне необходимо посылать из PC в ПЛК (ПЛК 110) определенное количество байт данных и читать из ПЛК в PC определенное количество байт данных (ПЛК - Slave), т.е. стандартная задача. Используется интерфейс RS-485 и протокол MODBUS RTU. Для того чтобы организовать этот обмен я решил использовать функции с кодами 3 (Чтение регистров из контроллера) и 16 (Запись регистров в контроллер). В PLC Configuration ПЛК я необходимое количество байт зарезервировал. Если я пытаюсь только читать или только писать регистры то все прекрасно работает, т.е. идет нормальный обмен. Когда я пытаюсь чередовать эти команды (мне необходима двухсторонняя передача данных), то тут с откликом от контроллера творится что-то непонятное (контрольные суммы принятые и расчетные не совпадают). Я пытался использовать команду с кодом 23 (чтение/запись регистров за одну транзакцию), но ПЛК ее вообще отказывается понимать. В ответ на эту посылку ПЛК правильно возвращает свой адрес, а далее в пакете отклика все не то что надо и длина пакета не та что должна быть. Я так понял, что эту функцию ПЛК вообще не поддерживает. Может кто-то что-то посоветуете.

С уважением, Владимир Михайлович.