![]() |
![]() |
#61 |
Junior Member
Регистрация: 29.07.2014
Сообщений: 13
Вес репутации: 0 ![]() |
![]()
Про тестирование согласен.
Вопрос в том, что я увеличивал скорости и при этом получение данных не менялось ни коем образом. Так же проглатывал часть данных. Сначала я поставил задержку 100 мс стали приходить первые 2-4 байта, но когда снизил ее до 50 пошли стабильно полные кадры. На длинных кадрах 22 байта данных 50 мс много отрезается конец кадра, поставил 25 мс все стало читаться. На 50 байтах все развалилось, задержку поставил 10 мс читает за раз максимум 30-35 бай, но нестабильно. Если читать по 10 байт со сдвигом то все нормально. С нетерпением ожидаю 0х10 функцию Последний раз редактировалось Warms; 30.07.2014 в 14:10. |
![]() |
![]() |
![]() |
#62 |
Senior Member
|
![]()
Конец кадра может отрезаться из-за ограничения на время приёма пакета. Дело в том что считывание данных происходит по тайм-ауту. То есть некоторое время скрипт ждет данные и что попадает в буфер, то и принимается. Это время можно задать, по умолчанию 200 мсек, кажется, в скрипте установлено. В общем, можно подрегулировать для оптимальной работы.
П.С. Похоже, что у вас тайм-аут 100 мсек. Попробуйте увеличить это число.
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
#63 |
Junior Member
Регистрация: 29.07.2014
Сообщений: 13
Вес репутации: 0 ![]() |
![]()
Да увеличил таймаут стал читать 50 байтные кадры. 10-ти минутный тест без сбоев.
|
![]() |
![]() |
![]() |
#64 |
Junior Member
Регистрация: 29.07.2014
Сообщений: 13
Вес репутации: 0 ![]() |
![]()
Сориентируйте, когда можно ожидать 0x10 функцию?
|
![]() |
![]() |
![]() |
#65 |
Senior Member
|
![]()
Ко мне пришла плата Arduino. Попробую протестировать самостоятельно на ней. Функция почти написана, но она немного отличается от общего подхода, который я использую. Пишу в свободное время, а его не много. Не могу указать когда её ждать в готовом виде.
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
#67 |
Junior Member
Регистрация: 17.10.2014
Сообщений: 1
Вес репутации: 0 ![]() |
![]()
А как использовать ethernet для modbus rtu?
|
![]() |
![]() |
![]() |
#68 |
Senior Member
|
![]()
Пока никак. Необходимости в этом не было и я не работал с modbus через Ethernet.
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
#69 |
Senior Member
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Сегодня потребовалось проверить работоспособность одного устройства по 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. |
![]() |
![]() |
![]() |
#70 |
Senior Member
|
![]()
Для начала нужно установить модуль и выполнить одиночный запрос:
Код:
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);
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
Метки |
modbus, modbus-rtu, скрипт, модуль |
Здесь присутствуют: 5 (пользователей: 0 , гостей: 5) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|