![]() |
|
![]() |
#1 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Отправляю пост запросом скрипту AWK
Сам скрипт выглядит вот так Код:
#!/usr/bin/awk -f function unescape(s) { gsub(/\+/," ",s) res = "" do { p = match(s,/%[0-9a-fA-F]{2}/) if(p>0) { res = res substr(s,0,p-1) sprintf("%c",0+("0x" substr(s,p+1,2))) s = substr(s,p+3) } } while(p>0) return res s } BEGIN { RS = "&" FS = "=" } { if($1 == "SERIAL_DATA" ) print unescape($2) > "/dev/ttyUSB0" } END { print "202" } |
![]() |
![]() |
![]() |
#2 |
Junior Member
Регистрация: 07.04.2013
Сообщений: 14
Вес репутации: 0 ![]() |
![]()
подскажите как сделать modbus slave на роутере
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Самый простой способ воспользоваться библиотекой libmodbus от Stéphane Raimbault.
Разумеется придется самому писать на C и делать кросс компиляцию под роутер. Вот прямая ссылка на эту библиотеку http://libmodbus.org/ Как пример можете посмотреть исходники в 1-ом посте для шлюза и make файл под роутер. |
![]() |
![]() |
![]() |
#4 | |
Member
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0 ![]() |
![]()
Установил всё
запустил root@OpenWrt:~# mbserv -p 1502 -d /dev/ttyUSB0 -b 19200 -deb & ответ bind: Address already in use на страничке Сообщение от сервера: server: Not Found установленные пакеты Цитата:
Последний раз редактировалось alexval2007; 06.10.2013 в 13:59. |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
1. убейте mbserv
killall mbserv 2. проверьте в процессах чтобы не было mbserv ps 3. не забудьте поменять в dsp.php порт на ваш 1502 4. запустите без & в конце и не закрывайте терминал чтобы понаблюдать за обменом в режиме debug нажимая кнопки на вэб странице mbserv -p 1502 -d /dev/ttyUSB0 -b 19200 -deb Остановить можно Ctrl+C 5. Когда будет усё OK ![]() mbserv -p 1502 -d /dev/ttyUSB0 -b 19200 & либо поместите в автозагрузку |
![]() |
![]() |
![]() |
#6 |
Member
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0 ![]() |
![]()
спасибо завтра обязательно попробую
|
![]() |
![]() |
![]() |
#7 |
Junior Member
Регистрация: 23.05.2013
Сообщений: 24
Вес репутации: 0 ![]() |
![]()
А можно организовать по модбасу обмен данными между слейв устройствами?
Я так понимаю только через мастер? скрипт который будет считывать с одного и отправлять другому, так? |
![]() |
![]() |
![]() |
#8 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Напрямую между слэйвами нельзя.
Помощники не могут выступать инициаторами начала обмена. |
![]() |
![]() |
![]() |
#9 |
Member
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0 ![]() |
![]()
Установил и настроил Smart Home modbus web очень понравилось надежно работает. Посмотрел код как включается светодиод на 13пине ардуино 9й регистр. Както это неправильно 16битную переменную использовать для одной кнопки есть ли возможность добраться до бит в переменных чтобы считывать биты и выводить на 16 лампочек или записывать нужный бит с 16 кнопок или этого невозможно добиться в web?
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Приятно услышать, что хоть кто-то опробовал и написал об этом.
К сожалению в библиотеке модбас для ардуино не реализовано функций для побитной работы с регистрами. Но я не вижу в этом большого недостатка, разве что длина пакета увеличивается. Вы можете анализировать передаваемое значение как хотите. Ардуино передает и принимает в пакете сразу несколько регистров. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|