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

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

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

Прошу помощи!
у меня tcnm arduino mega с ModBus скетчем
которая чудно работает и тестируется через QModBus
в ответ на чтение приходит следующее:
0x02 0x03 0x04 0x03 0xff 0x00 0x00 0xf9 0x47

но когда я подключаю свой переходник к mr3020 и пытаюсь считать данные вот что приходит.

2014.07.29 19:16:57 [INFO:14112] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:16:57 [INFO:14112] ( <= ) 0x03_0xFF_0x00_0x00_0xF9_0x47
2014.07.29 19:16:58 [INFO:14176] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:16:58 [INFO:14176] ( <= ) 0xF9_0x47
2014.07.29 19:16:59 [INFO:14240] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:16:59 [INFO:14240] ( <= ) 0x03_0xFF_0x00_0x00_0xF9_0x47
2014.07.29 19:16:59 [INFO:14304] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:00 [INFO:14304] ( <= ) 0xF9_0x47
2014.07.29 19:17:00 [INFO:14368] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:00 [INFO:14368] ( <= ) 0xF9_0x47
2014.07.29 19:17:01 [INFO:14432] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:01 [INFO:14432] ( <= ) 0x03_0xFF_0x00_0x00_0xF9_0x47
2014.07.29 19:17:02 [INFO:14496] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:02 [INFO:14496] ( <= ) 0xF9_0x47
2014.07.29 19:17:18 [INFO:14582] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:18 [INFO:14582] ( <= )
2014.07.29 19:17:18 [INFO:14646] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:19 [INFO:14646] ( <= ) 0x03_0xFF_0x00_0x00_0xF9_0x47
2014.07.29 19:17:19 [INFO:14710] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:19 [INFO:14710] ( <= )
2014.07.29 19:17:20 [INFO:14774] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:20 [INFO:14774] ( <= ) 0x03_0xFF_0x00_0x00_0xF9_0x47
2014.07.29 19:17:21 [INFO:14838] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:21 [INFO:14838] ( <= )
2014.07.29 19:17:21 [INFO:14902] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:21 [INFO:14902] ( <= ) 0x47
2014.07.29 19:17:22 [INFO:14966] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:17:22 [INFO:14966] ( <= )
2014.07.29 19:18:02 [INFO:15052] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:03 [INFO:15052] ( <= )
2014.07.29 19:18:03 [INFO:15116] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:03 [INFO:15116] ( <= )
2014.07.29 19:18:04 [INFO:15180] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:04 [INFO:15180] ( <= ) 0xF9_0x47
2014.07.29 19:18:05 [INFO:15244] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:05 [INFO:15244] ( <= ) 0x47
2014.07.29 19:18:05 [INFO:15308] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:05 [INFO:15308] ( <= ) 0x47
2014.07.29 19:18:06 [INFO:15372] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:06 [INFO:15372] ( <= ) 0x03_0xFF_0x00_0x00_0xF9_0x47
2014.07.29 19:18:07 [INFO:15436] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:07 [INFO:15436] ( <= )
2014.07.29 19:18:15 [INFO:15522] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:16 [INFO:15522] ( <= )
2014.07.29 19:18:16 [INFO:15586] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:16 [INFO:15586] ( <= ) 0x47
2014.07.29 19:18:17 [INFO:15650] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:17 [INFO:15650] ( <= )
2014.07.29 19:18:17 [INFO:15714] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:18 [INFO:15714] ( <= )
2014.07.29 19:18:18 [INFO:15778] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:18 [INFO:15778] ( <= )
2014.07.29 19:18:19 [INFO:15842] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:19 [INFO:15842] ( <= ) 0x47
2014.07.29 19:18:20 [INFO:15906] ( => ) 0x02_0x03_0x00_0x00_0x00_0x02_0xC4_0x38
2014.07.29 19:18:20 [INFO:15906] ( <= ) 0x47

может подскажете почему читает только часть информации и то невсегда?
Warms вне форума   Ответить с цитированием
Старый 29.07.2014, 20:58   #52
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"

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

Одиночный тоже не работает. Скрипт чуть позже выложу, но он особо не отличается от того что в примере при установке.
Warms вне форума   Ответить с цитированием
Старый 30.07.2014, 10:15   #54
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: CyberWrt модуль "Modbus"

Скрипт который в примере работает?
Admin вне форума   Ответить с цитированием
Старый 30.07.2014, 11:08   #55
Warms
Junior Member
 
Регистрация: 29.07.2014
Сообщений: 13
Вес репутации: 0
Warms is an unknown quantity at this point
По умолчанию 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.mbStopBitsTwo,
Timeout: 100
};

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

modbus.ReadHoldingRegisters( 1, 2, 0, 2, 700 );
//modbus.WriteSingleCoil( 1, 2, 6, 0xFF00, 1000 );
//modbus.ReadHoldingRegisters( 2, 2, 1, 1, 950 );
//modbus.ReadHoldingRegisters( 3, 2, 2, 1, 750 );

modbus.DelayBetweenPoll = 200;

modbus.UpdateEnable(1);
//modbus.UpdateEnable(2);
//modbus.UpdateEnable(3);

setTimeout(

function() {

modbus.UpdateDisable(1);
// modbus.UpdateDisable(2);
// modbus.UpdateDisable(3);

}, 5000 );

На arduine библиотека modbusslave я на ней уже много чего реализовал и все работает.
И еще вопрос WriteHoldingRegistr 0x10 будет реализован? Просто эта библиотека работает только с 0x03 и 0x10

Последний раз редактировалось Warms; 30.07.2014 в 11:10.
Warms вне форума   Ответить с цитированием
Старый 30.07.2014, 12:00   #56
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"

Два стоповых бита у меня не реализовано ещё. Выбор есть, но в коде скрипта, насколько я помню, это не учитывается. Я просто ещё не смотрел какими параметрами устанавливаются стоп биты в shell, поэтому используется только вариант с одним стоп битом. Может быть проблема в этом.

По логу выглядит так, словно в буфер не попадает начало ответной посылки. Это может быть от того, что ответ слишком быстро приходит, хотя я не уверен. Можно попробовать вставить небольшую задержку в скетче при ответе.

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

Дело в том что библиотека ардуинки поддерживает только 2 стоп бита, но QModBus при выставлении одного стоп бита не выдавал никаких ошибок и все работало. В скрипте я пробовал выставлять и один стоп бит, но результат такой-же.
Я залез в библиотеку SimpleModbusSlave.cpp и перед отправкой void sendPacket(unsigned char bufferSize) добавил delay(50); и таки все заработало.
Спасибо за помощь.


Очень сильно жду 0x10 функцию.

Последний раз редактировалось Warms; 30.07.2014 в 12:17.
Warms вне форума   Ответить с цитированием
Старый 30.07.2014, 12:20   #58
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.

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

Библиотека SimpleModbusSlaveV9 по ссылке правдо только V8 но я нашел и 9-ую
https://code.google.com/p/simple-modbus/downloads/list

Меньшие скорости не тестировал 9600 по моему вполне подходящая.

Очень сильно жду 0x10 функцию.
p.s. решил проблему см. предыдущий пост.
Warms вне форума   Ответить с цитированием
Старый 30.07.2014, 12:42   #60
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"

Ясно. Про скорость, тут дело в том, что по стандарту минимальное время между посылками зависит от скорости передачи и равняется 3,5 символам. Соответственно, если скорость меньше, то интервал автоматически будет больше.

Я реализовывал только те функции, которые мог протестировать в симуляторе. У меня не было устройства для полноценного теста. Я могу реализовать функцию, а вы потестируете у себя.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Ответ

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


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

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

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

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


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


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