Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2014, 13:16   #61
Warms
Junior Member
 
Регистрация: 29.07.2014
Сообщений: 13
Вес репутации: 0
Warms is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Modbus"

Про тестирование согласен.
Вопрос в том, что я увеличивал скорости и при этом получение данных не менялось ни коем образом. Так же проглатывал часть данных. Сначала я поставил задержку 100 мс стали приходить первые 2-4 байта, но когда снизил ее до 50 пошли стабильно полные кадры.
На длинных кадрах 22 байта данных 50 мс много отрезается конец кадра, поставил 25 мс все стало читаться.
На 50 байтах все развалилось, задержку поставил 10 мс читает за раз максимум 30-35 бай, но нестабильно.
Если читать по 10 байт со сдвигом то все нормально.

С нетерпением ожидаю 0х10 функцию

Последний раз редактировалось Warms; 30.07.2014 в 14:10.
Warms вне форума   Ответить с цитированием
Старый 30.07.2014, 15:00   #62
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Modbus"

Конец кадра может отрезаться из-за ограничения на время приёма пакета. Дело в том что считывание данных происходит по тайм-ауту. То есть некоторое время скрипт ждет данные и что попадает в буфер, то и принимается. Это время можно задать, по умолчанию 200 мсек, кажется, в скрипте установлено. В общем, можно подрегулировать для оптимальной работы.

П.С. Похоже, что у вас тайм-аут 100 мсек. Попробуйте увеличить это число.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 30.07.2014, 18:29   #63
Warms
Junior Member
 
Регистрация: 29.07.2014
Сообщений: 13
Вес репутации: 0
Warms is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Modbus"

Да увеличил таймаут стал читать 50 байтные кадры. 10-ти минутный тест без сбоев.
Warms вне форума   Ответить с цитированием
Старый 04.08.2014, 11:48   #64
Warms
Junior Member
 
Регистрация: 29.07.2014
Сообщений: 13
Вес репутации: 0
Warms is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Modbus"

Сориентируйте, когда можно ожидать 0x10 функцию?
Warms вне форума   Ответить с цитированием
Старый 05.08.2014, 12:05   #65
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Modbus"

Ко мне пришла плата Arduino. Попробую протестировать самостоятельно на ней. Функция почти написана, но она немного отличается от общего подхода, который я использую. Пишу в свободное время, а его не много. Не могу указать когда её ждать в готовом виде.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 05.08.2014, 15:33   #66
Warms
Junior Member
 
Регистрация: 29.07.2014
Сообщений: 13
Вес репутации: 0
Warms is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Modbus"

Спасибо и на том. :-)
Схему подключение MAX485 я брал здесь очень хорошо работает
Warms вне форума   Ответить с цитированием
Старый 17.10.2014, 15:12   #67
Михаил Т
Junior Member
 
Регистрация: 17.10.2014
Сообщений: 1
Вес репутации: 0
Михаил Т is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Modbus"

А как использовать ethernet для modbus rtu?
Михаил Т вне форума   Ответить с цитированием
Старый 24.10.2014, 21:31   #68
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Modbus"

Пока никак. Необходимости в этом не было и я не работал с modbus через Ethernet.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 28.10.2014, 14:37   #69
Sirocco
Senior Member
 
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0
Sirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant future
По умолчанию Re: CyberWrt модуль "Modbus"

Сегодня потребовалось проверить работоспособность одного устройства по ModBus. У меня был USB адаптер на чипе CH341SER, программа Modbus Poll, само устройство и документация к устройству.
Замутив такие настройки в Modbus Poll:



Я получил ответ от устройства:


Долго мучился, но получилось. В документации указано, например -
Adress____Type_____NAME_____Len
104________S_______IN vL1_____1
105________S_______IN vL2_____1
106________S_______IN vL3_____1

Так вот, теперь вопрос. Как я могу использовать Ваш модуль, чтоб получить по средствам его эти данные с устройства?

P.S. Устройства было два, одно ID1, другое ID2. Поэтому разница ID в настройках и ответе, не тот скрин вставил.

Последний раз редактировалось Sirocco; 28.10.2014 в 16:48.
Sirocco вне форума   Ответить с цитированием
Старый 28.10.2014, 22:14   #70
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Modbus"

Для начала нужно установить модуль и выполнить одиночный запрос:

Код:
modbus.OnFailure = function( handle, error ) { 

document.getElementById( 'console' ).value += '\nОшибка: ' + error; 
}

modbus.OnSuccess = function( handle ) {

document.getElementById( 'console' ).value += '\nRegister( ' + handle + ', 0 ): ' + modbus.Register( handle, 0 );
}

modbus.Serial = {

Name: '/dev/ttyUSB0',
BaudRate: EnModbusBaudRate.mbBaudRate9600,
DataBits: EnModbusDataBits.mbDataBits8Bits,
Parity: EnModbusParity.mbParityNone,
StopBits: EnModbusStopBits.mbStopBitsOne,
Timeout: 200
};

// ReadHoldingRegisters( handle, slaveid, address, quantity, updaterate )
// Starting Address: 0x0000 to 0xFFFF.
// Quantity of Inputs: 1 to 125 (0x7D).

modbus.ReadHoldingRegisters( 1, 1, 104, 1, 1000 );

modbus.DelayBetweenPoll = 200;

modbus.UpdateOnce(1);
Путь до порта нужно указать свой (Name: '/dev/ttyUSB0'). Показать результат из лога.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Ответ

Метки
modbus, modbus-rtu, скрипт, модуль


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:57. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика