![]() |
|
![]() |
#1 |
Member
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0 ![]() |
![]()
Я занимаюсь промышленной автоматизацией и знаю несколько удобен и надёжен модбас.
В ардуино можно довольно легко разобрать регистр на биты а также собрать биты обратно в регистр но как это сделать на web я полистал интернете вроде бы это можно сделать на JavaScript а потом передать результат в HTML. Я к чему это всё к тому что для нормального умного дом мало 20 переменных а у нас получается что целый регистр это всего лишь одна переменная так как мы не работаем с битами регистра. Надо либо переписать сервер на большее количество регистров либо решить проблему с битами. Последний раз редактировалось alexval2007; 06.12.2013 в 11:22. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
код ардуино, шлюз, web страницу html, php. А сколько вы хотите повесить переменных на 1-у ардуину? на все возможные входа-выхода? p.s Немного прочитав поздние вопросы добавлю. Минимальной единицей обмена информацией является байт, поэтому вам все равно придется биты переводить в байты (или слова) выделяя нужные вам биты операцией маскирования or, and и сдвижкой битов на нужное количество (выд.бит) вправо. В итоге получим байт с 0 или 1. Более приспособлен для этого Си, PHP. Пока не могу понять что вы хотите в итоге получить. В данном проекте я хотел реализовать сеть из нескольких ардуин, используя ModBus протокол не выдумывая своего велосипеда. Используя 1 ардуину можно конечно обойтись и без modbus. Используя например шлюз ser2net, либо напрямую из php считывать сериал порт подкл. к ардуино. |
|
![]() |
![]() |
![]() |
#3 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Можно на PHP
|
![]() |
![]() |
![]() |
#4 |
Member
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0 ![]() |
![]()
и как это реализовать на php хотелось бы взглянуть на идею
|
![]() |
![]() |
![]() |
#5 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
#6 |
Member
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0 ![]() |
![]()
ну команды для работы с битами похожи на сишные а примерчик можно как они выглядят на php можно на томже регистре r9 к примеру повесим кнопку вкл светодиода на его бит-0
|
![]() |
![]() |
![]() |
#7 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Я же ссылку дал с примерами
|
![]() |
![]() |
![]() |
#8 |
Member
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0 ![]() |
![]()
простите с телефона не понял что это ссылка почитаю
|
![]() |
![]() |
![]() |
#9 |
Junior Member
Регистрация: 23.05.2013
Сообщений: 24
Вес репутации: 0 ![]() |
![]()
Я вот тут одного не понимаю - почему 16 а не 8 (т.е. 1 байт)? По моему в байт влезает абсолютно все, ну или почти все (отдельные исключения разобрать легче же). Смысла до бит (включить-выключить) не вижу. Что, памяти не хватает?
Ну а в целом - конечно же от задач зависит. Вот у меня на одной дуине нужно под 1000 байт рулить (лед свет и пр. для аквариума - 8 каналов х каждые 10 мин (т.е байт) плюс прочее). На второй - под 60 точек китайских выключателей-димеров (с обратной связью работают, надежно - уже который год). Т.е. в моем случае - 10-20 регистров мало. Ну и фик с ними. Под эти две дуины свое почти приделал. А под все остальное - модбас сейчас поднимаю успешно. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Потому что используемая функция модбас работет со словом.
Я уже говорил, что для ардуино я не встречал библиотеку модбас работающую с битами т.е. с функциями 0x05(0x06). Да используется не рационально для дискретных сигналов. Если сильно захотеть можно немного "поизвращаться", как заметил alexval2007 рассматривать переменную - регистр, как 16 бит регистр и выделять каждый бит как цифровую переменную отдельно для дискретных сигналов типа вкл/выкл (1/0). |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|