PDA

Просмотр полной версии : И снова Modbus



XsanyaX
07.02.2008, 19:52
Девайс ОВЕН ПЛК100 Р.М.
Создал и настроил Modbus мастер, в нем- Universal Modbus Device в режиме работы By Command. Читаю один регистр со слейв устройства. Записал в Command регистр Universal Modbus Device 0xff и.....?????

Как определить что слейв устройство мне ответило уже???

Вводить таймаут в теле программы и после его истечения проверять Last Error??? Не уверен что там будет ошибка , если устройство мне не ответит во время, даже если программный таймаут будет больше, чем Max timeout в настройках Universal Modbus Device.... Никаких событий касательно Modbus я в Task Configuration не нашёл...

Как можно ещё определить что слейв ответил?????

Филоненко Владислав
08.02.2008, 08:35
Анализируя код статуса и адрес посл. опрошенного устройства.
Если обмен удачен - в статусе 0, если не удачен 0х51 или др. код ошибки (см. документацию)

XsanyaX
08.02.2008, 10:22
А через какое время после записи в Command регистр 0xFF , проверять код статуса и адрес???? через большее чем в Max timeout выставлено????

Филоненко Владислав
08.02.2008, 11:35
Да. В командном режиме именно так.
Для чтения также есть возможность изменить значение канала ввода (по указателю) на некое число-флаг (такое число прибор не должен выдавать) и если число изменилось - значит акт чтения прошел удачно.

XsanyaX
08.02.2008, 13:04
Ну в канал ввода писать из основной проги не есть хорошо....
А вот в Last Error записать число , отличное от кодов ошибок можно....

Так я и сделал...

Но возникла другая проблема. Мне со слейва нужно считать два 16 разрядных регистра, лежащих в соседних адресах... Модуль Modbus мастер не читает их вместе командой Read Holding Registers. Чтоб считать оба регистра приходится два раза в писать в Command регистр - 0xFF Как их зачитать одним пакетом??? (Команду Read Bytes(0x70) слейв не поддерживает)...

Читать 32 бита а потом разбирать на два WORD????

Филоненко Владислав
08.02.2008, 13:25
Есть еще модуль String input.
Но разбирать ответ придётся всё равно, но это просто.