Работаю через терминал и moxo 5150 с реле WB-MR6LV/I.
Может чтото я плохо понял, но ситуация такова, что я не могу включить канал по команде 05. Выключить могу, а включить нет.
Ниже скрин с терминала. Если включить кнопкой, выключается удаленно, а включить удаленно никак и ответа нет.
Евгений, ну очень странный ответ. Я задаю вопрос, что неверно в посылке, что реле не реагирует на команду, а вы спрашиваете, зачем делать это вручную.
Как же иначе управлять вашим реле, кроме как не формируя посылки в модбас?
Сейчас у меня нет контроллера WB. В некоторых задачах я планирую его использовать, а в других он лишний, так как там есть другой контроллер, и он тоже умеет работать с 485 портом.
Зачем мне ставить два контроллера, а потом налаживать межконтроллерное взаимодействие? Ради того, чтобы управлять пятью устройствами?
В малых задачах мне вообще не нужен контроллер, так как есть приложение иридиума и шлюз тсп-485 и они прекрасно работают безо всяких лишних железок. Также ваш контроллер, как я писал ранее в другой теме, не работает с кнопочными панелями, которые мы используем, поэтому его использование пока затруднительно.
Вопрос возник именно с этим реле - почему оно реагирует на команду выключения канала и не реагирует на команду включения.
Смысл сообщения был не в том, что вы должны использовать наш контроллер, чтобы управлять реле.
Ситуация мне видится так: вы говорите, что наше устройство WB-MR6LV/I не работает. Разумеется, это нужно как-то проверить. Вы в качестве подтверждения присылаете сформированную руками Modbus-посылку, на которую модуль “не реагирует”.
Евгений же предлагает не формировать байты посылки вручную, а воспользоваться специальной программой, которой задаётся в какой coil какое значение записать. Например, для Linux удобно пользоваться modbus_client:
root@wirenboard-APSX7P7L:~# modbus_client -mrtu -pnone -b9600 -s2 --debug /dev/ttyRS485-1 -a0x37 -t5 -r0 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[37][05][00][00][FF][00][89][AC]
Waiting for a confirmation...
<37><05><00><00><FF><00><89><AC>
SUCCESS: written 1 elements!
root@wirenboard-APSX7P7L:~# modbus_client -mrtu -pnone -b9600 -s2 --debug /dev/ttyRS485-1 -a0x37 -t5 -r0 0
Data to write: 0x0
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[37][05][00][00][00][00][C8][5C]
Waiting for a confirmation...
<37><05><00><00><00><00><C8><5C>
SUCCESS: written 1 elements!
Если пользоваться ей, то нам не придётся думать, верную ли вы посылку составили, и декодировать ответ.
Сейчас я сверил - да, судя по всему, вы отсылаете верную команду. Попробуйте проверить настройки порта - должно быть 8N2. Попробуйте поуправлять с компьютера через переходник USB-RS-485.
Если ничего не поможет, то напишите ещё раз сюда - будем договариваться об отправке на экспертизу.
Павел, по вашему написать такое проще чем собрать прямую команду?:)) CRC мой терминал считает сам.
Удивительно, но сейчас нашел и подключил второе реле с адресом 0x34, и первое тоже заработало. Почему оно вчера не отвечало - неясно.
Разобрался я, почему возникла такая проблема. Оставлю пояснения на форуме, вдруг кому пригодится.
У терминала RealTerm при открытии порта для отправки в ip есть выбор режима отправки - Raw или telnet. Переключатель небольшой, заметить достаточно сложно. Если выбран телнет (по умолчанию), то он байт FF дублирует, и в шину 485 уходит FF FF. В экран дубль не отправляется, и шлюз показывает только ответ. Точнее его отсутствие.
Был бы переходник USB-485, я бы понял это быстрее, но он у меня почему то сгорел (завонял горелым кремнием) при попытке прописать адрес на втором десятке реле, а новые переходники еще в пути.