На экране нет ответа. Есть сообщение об ошибке таймаута программы. Ответ должен быть HEX 01 01 01 E0 50. Это стандартное поведение протокола обмена MODBUS. Если слэйв получил запрос, то он должен ответить в течении определённого времени. Если не отвечает, то запрос посылается ещё несколько раз. В твоём случае 3. И только после того как 3 раза не получит ответ говорит таймаут. Количество раз настраивается. Картинка QModBus будет?
Я посчитал, что спрашиваешь о запросе Qmodbus к модулю. 01 01 01 E0 50, как понимаю, это сообщение об ошибке? А ответ модуля Bus monitor не показывает. Где его посмотреть в Qmodbus?
Так, похоже, у нас с тобой разные версии Qmodbus. Я скопировал его с месяц назад, когда заказал в Китае модуль. Откуда скопировал - не запомнил. Сейчас возьму с твоей ссылки, потом расскажу.
Нет. Это ответ модуля на команду 01 01 00 00 00 02 BD CB
Nic, привет. Посмотрел версию Qmodbus по твоей ссылке - мою, похоже, родили позже. Так что продолжил на своей. Как ни странно, по 5 функции (вкл 1 реле) сработало штатно - см вкладку Bus monitor. А 1 функцию (чтение сост. дискр. выходов) - не хочет, опять timeout. Скорее всего, по ф.1 китайса не понимает, что от него хотят. Полазил по Ali, посмотрел отзывы на такие блочки в других магазинах. Нашел в одном месте, что парень ругается на этот блочок - протокол Modbus у него не стандартный. Написал в чат продавцу, попросил руководство пользователя на блочок. Жду.
Qmodbus совсем другая программа. От того что родилась позже на качество не влияет, а работать удобнее - показывает все транзакции по шине и позволяет увидеть причину проблем.
Команды управление можно найти перебором чтения. И на страницах али есть список всех команд, правда на китайском, но для ИИ это не проблема.
На 5 функцию отвечает, на остальных - “не могу принять данные от slave”. Но реле при этом не включает. У QModmaster релюшка включалась. Погонял на Symple Modbus Master - slave хоть как-то откликается при RTS ON >=10 мС и OFF >=20мС. В-общем, буду ждать информацию из Китая.
Таблица функций команд
Спойлер
Спойлер
Таблица функций команд
| Изменение скорости передачи | 0 | 01 B0 00 00 00 40 10 |
1200 | Команда выполнена, возврат той же команды |
| 1 | 01 B0 00 00 01 40 80 |
2400 | ||
| 2 | 01 B0 00 00 02 40 70 |
4800 | ||
| 3 | 01 B0 00 00 03 40 E0 |
9600 | ||
| 4 | 01 B0 00 00 04 40 D0 |
19200 | ||
| 5 | 01 B0 00 00 05 40 40 |
115200 | ||
| Открытие одного канала | 0 | 01 05 00 00 FF 00 8C 3A |
Открыть канал 0 | Команда выполнена, возврат той же команды |
| 1 | 01 05 00 01 FF 00 DD FA |
Открыть канал 1 | ||
| 2 | 01 05 00 02 FF 00 2D FA |
Открыть канал 2 | ||
| 3 | 01 05 00 03 FF 00 7C 3A |
Открыть канал 3 | ||
| 4 | 01 05 00 04 FF 00 CD FB |
Открыть канал 4 | ||
| 5 | 01 05 00 05 FF 00 9C 3B |
Открыть канал 5 | ||
| 6 | 01 05 00 06 FF 00 6C 3B |
Открыть канал 6 | ||
| 7 | 01 05 00 07 FF 00 3D FB |
Открыть канал 7 | ||
| Закрытие одного канала | 0 | 01 05 00 00 00 00 CD CA |
Закрыть канал 0 | Команда выполнена, возврат той же команды |
| 1 | 01 05 00 01 00 00 9C 0A |
Закрыть канал 1 | ||
| 2 | 01 05 00 02 00 00 6C 0A |
Закрыть канал 2 | ||
| 3 | 01 05 00 03 00 00 3D CA |
Закрыть канал 3 | ||
| 4 | 01 05 00 04 00 00 8C 0B |
Закрыть канал 4 | Команда выполнена, возврат той же команды | |
| 5 | 01 05 00 05 00 00 DD CB |
Закрыть канал 5 | ||
| 6 | 01 05 00 06 00 00 2D CB |
Закрыть канал 6 | ||
| 7 | 01 05 00 07 00 00 7C 0B |
Закрыть канал 7 | ||
| Открытие всех каналов | 0-7 | 01 0F 00 00 00 08 01 FF BE D5 |
Открыть все каналы | Команда выполнена, возврат той же команды |
| Закрытие всех каналов | 0-7 | 01 0F 00 00 00 08 01 00 FE 95 |
Закрыть все каналы | Команда выполнена, возврат той же команды |
| Переключение одного канала | 0 | 01 05 00 00 55 00 F2 9A |
Переключить канал 0 | Команда выполнена, возврат той же команды |
| 1 | 01 05 00 01 55 00 A3 5A |
Переключить канал 1 | ||
| 2 | 01 05 00 02 55 00 53 5A |
Переключить канал 2 | ||
| 3 | 01 05 00 03 55 00 02 9A |
Переключить канал 3 | ||
| 4 | 01 05 00 04 55 00 B3 5B |
Переключить канал 4 | ||
| 5 | 01 05 00 05 55 00 E2 9B |
Переключить канал 5 | ||
| 6 | 01 05 00 06 55 00 12 9B |
Переключить канал 6 | ||
| 7 | 01 05 00 07 55 00 43 5B |
Переключить канал 7 | ||
| Переключение всех каналов | Все каналы | 01 05 00 00 5A 00 F7 6A |
Переключить все каналы | Команда выполнена, возврат той же команды |
| Мигание (с задержкой при выключении) команды | После открытия и прохождения задержки происходит немедленное закрытие. Задержка составляет 100 мс за единицу, то есть увеличение значения регистра на 1 означает увеличение задержки на 100 мс. | Команда выполнена, возврат той же команды | ||
| 1 | 01 05 02 00 07 00 CE 42 |
|||
01 05 02 01 08 00 9A 72 |
||||
01 05 02 01 08 00 9A 72 |
01-адрес, 0-канал, задержка 700мс | |||
| 01-адрес, 1-канал, задержка 800мс | ||||
| 01-адрес, 1-канал, задержка 800мс | ||||
| 2 | ||||
| Чтение состояния реле | 0-7 | 01 01 00 00 00 08 3D CC |
Если соответствующий бит регистра открытого канала равен 1, читается состояние всех реле. | Первый байт — адрес, третий с конца — данные состояния. |
01 01 01 5C 51 B1 |
||||
| Чтение состояния входов | 0-7 | 01 02 00 00 00 08 79 CC |
Если соответствующий бит регистра входного сигнала высокий уровень, читается состояние всех входов. | Входной сигнал независим от реле. |
01 02 01 FF E1 C8 |
||||
| Чтение адреса текущего модуля | 0-255 | 00 03 00 00 00 01 6A DB |
Если адрес равен 01, возвращается00 03 02 00 01 44 44. Третий с конца байт — это адрес устройства. Максимальный адрес — 255. |
Эта команда является широковещательной и действует для всех адресов. |
02 03 02 00 02 7D 85 |
||||
01 03 02 00 01 79 84 |
||||
| Изменение адреса текущего модуля | 01 | 00 10 00 00 00 01 02 00 01 6A 00 |
||
Установить адрес = 01 |
Установить адрес = 01 | 01 10 00 00 00 01 02 00 01 67 90 |
||
| 2 | 00 10 00 00 00 01 02 00 02 2A 01 |
|||
Установить адрес = 02 |
Установить адрес = 02 | 02 10 00 00 00 01 02 00 02 33 61 |
||
| 3 | 00 10 00 00 00 01 02 00 03 EB C1 |
|||
Установить адрес = 03 |
Установить адрес = 03 | 03 10 00 00 00 01 02 00 03 FF 31 |
||
| 255 | 00 10 00 00 00 01 02 00 FF EB 80 |
|||
Установить адрес = 255 |
Список команд. Что бы команда прошла её нужно сформировать точно по шаблону.
Например включение канала 1 - 01 05 00 01 FF 00 DD FA
Заметь, что для включения реле в поле дата надо вписать 255 или 0xff в НЕХ.
То что ты отправлял через QModBus выключает реле. Если оно было выключено то ничего происходить не должно. Если у тебя одно реле то это канал ноль! Для проверки можно посылать команду переключения реле канала 0 - `01 05 00 00 55 00 F2 9A. Здесь Start adress - 0, Data -0x55. Каждая посылка этой команды должна переключать реле. Вот только я не понимаю этих китайцев. Команда 05 - coil register это регистр типа 0 или 1. Все нормальные программы перед отправкой это проверяют и послать ничего кроме 0 или 0xff не дают. Самый простой путь это взять putty, открыть сериал соединение, набить строку 01 05 00 00 55 00 F2 9A и отправить в модуль. Или в ардуине написать отправку строки.
Последняя версия Qmodbus https://github.com/ed-chemnitz/qmodbus/releases/download/v0.3.0/QModBus-0.3.0-setup.exe
Да, с Putty хорошая идея, сам не сообразил. Спасибо. Китайцы прислали экселевский файл с набором команд. Переведу, попробую
Putty hex строку пересылать не умеет, у USB->RS485 (переключение Tx/Rx - автоматическое, без отдельного пина на перекл) диод Тх мигает при вводе каждого символа, после Enter мигание Тх и тишина. На How to type/send hex on a PuTTY session - Server Fault пишут, что Putty с hex строкой не работает. Похоже, не врут.
Китайцы прислали 2 программы, одна - sscom5.13.1, еще один вариант modbus-master. Вторая - сплошная китайская грамота. По внешнему виду - только вкл/откл реле. На входе модуля приемопередатчик RS-485 TP8485E. + еще одна неизвестная м/с с затертым обозначением. Есть 2 группы доп. контактов: (3,3 В, SCL,SDA, GND) + (3.3v, Rx,Tx,GND) Чтоб его пользовать, надо переписовать библиотеки Modbus. В-общем, модулек этот - геморрой с прицепом простатита. дрянь китайская, третьесортная
Еще китайцы прислали список команд. Погонял на Simple Modbus master - на нем можно вручную подобрать коды китайских команд, играя First registr, мinus regist, №of registr. Работает, проверял функции 1 (состояние катушек), 2(Read Discrete Inputs), 5(вкл/откл катушку). И еще раз: при этом RTS delay не меньше, чем on=10 mC, off=20mC
Был не прав в предыдущем ответе: коды китайских функций совпадают со штатными Modbus Function Code 03 | Read Holding Registers | Simply Modbus Software, нужно правильно выставить адреса оборудования (для этого - First registr, мinus regist) и его кол-во №of registr.
У этого китайского блочка в 5 функции команда на включение (1 реле) 0xFF00, отключение 0x0000, т.е : запрос =01 05 00 00 FF 00 8C 3A,
ответ будет 01 05 00 01 00 00 8C3A.
функция 2 чтение дискретных входов
запрос 01 02 00 00 00 08 79 CC
ответ 01 02 01 01 60 4 байт: вх1-включен вх2 - отключен
Общается блочок у меня только через Simple Modbus master и sscom5.13.1, остальные с ним не дружат. sscom5.13.1 мне понравился - RTU/TCP/ASCII, бесплатный, без ограничений на время и число команд, настроек много, окно запроса/ответа, рабочий блокнот с возможностью самому набирать команды (десятка два - точно), . В-общем, тем, с Modbus бодается, советую посмотреть программулю
Здравствуйте! Подскажите, через какую программу или как изменить скорость обмена данными в этом модуле, так как код 01 B0 00 00 05 00 43 40 вообще не стандартный.



