Вложений: 4
Modbus.lib портиться команда при таймауте
Здравствуйте! Помогите, пожалуйста, разобраться в проблеме.
ПЛК150-220.У.М
Версия таргета: 2.12
Использую библиотеку Modbus.lib для организации Modbus мастера на порту RS-485. Набросал программу на основе примеров с форума. Столкнулся с такой непонятной проблемой: если устройство не успело ответить до таймаута, то следующая Modbus-посылка от мастера будет испорчена: вместо команды от мастера будет выслана часть ответа слейв устройства с прикрепленной к ней чек суммой.
И даже не важно какой ФБ будет вызываться дальше, например: таймаут вышел на блоке MB_RD_HOLD_REGS, а следующим в программе будет запускаться блок MB_WR_REGS, все равно его посылка будет представлять часть предыдущего ответа.
Прикладываю тестовую программу, скриншот программы, скриншот Serial Port Monitor когда проблема возникает и когда нет (если увеличить размер таймаута). В высланной программе проблема проявляется, но вырезано все лишнее и используется только один MB блок.
И еще вопрос, нужно ли делать блоку Enable := FALSE после выполнения? Его наличие или отсутствие никак не влияет на проблему.