|
затруднение с RS485 |
|
|
|
Oct 24 2007, 04:09
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 18-04-06
Пользователь №: 16 238

|
По RS485 объединены мастер и несколько слейвов (все на mega128) мастер с интервалом в 100мс шлёт команду вида: префикс ":", байт - номер команды, байт - id слейва, 2 байта - аргументы для команды, постфикс ";". 1 из слейвов должен ответить что он подключен. Вот фрагмент кода слейва (codevisionAVR): Код while (1) { delay_ms(50); command=0; number=0;
while (getchar() != ':');
command=getchar(); number=getchar();
if ((command==1)&&(number==id)) { PORTE.7=1; printf(":%d online;",id); PORTE.7=0; } // delay_ms(50);
}; } на деле отвечает только 1 раз первый запрошенный слейв. что я делаю неправильно подскажите плз поигрался интервалом отправки команд с мастера, начали отвечать несколько слейвов
|
|
|
|
|
 |
Ответов
|
Oct 24 2007, 05:21
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 18-04-06
Пользователь №: 16 238

|
Цитата(Палыч @ Oct 24 2007, 10:51)  ИМХО, слэйв отвечает на команду мастера не дождавшись окончания передачи мастера: передача слэйва начинается. когда получен id слэйва, но мастер еще передаёт 3 байта (аргументы и постфикс) Вы правы. Поставил задержку перед ответом, все слейвы отвечают нормально Дальше экспериментирую.. Буду благодарен за фрагмент исходника для слейвов с RS485 или хотябы словесное объяснение алгоритма. Вечером отпишу что получилось у меня
Сообщение отредактировал Athlon128 - Oct 24 2007, 05:46
|
|
|
|
|
Oct 24 2007, 07:54
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Athlon128 @ Oct 24 2007, 09:21)  Буду благодарен за фрагмент исходника для слейвов с RS485 или хотябы словесное объяснение алгоритма. В глаза бросаются недостатки примененного в Вашей работе протокола. Например, префикс и постфикс могут совпадать с другими полями команды (кодом, адресом, аргументами); если они применяются для целей нахождения начала и конца команды, то в этом случае - это будет сделать затруднительно. Да, и проверка "правильности" приема пакета (например, с помощью контрольной суммы) - дело не последнее. Рекомендую ознакомится с тем, как это делают другие. Например, тут http://www.caxapa.ru/lib/wake/ И исходники для AVR приведены...
|
|
|
|
Сообщений в этой теме
Athlon128 затруднение с RS485 Oct 24 2007, 04:09 DASM Не понял - это симулятор ? А где код вкл-выключени... Oct 24 2007, 04:20 Athlon128 код вкл-выключения 485 драйвера на передачу
КодPOR... Oct 24 2007, 04:28 DASM Ничего не понял. Какого буфера переполнение ? Заче... Oct 24 2007, 04:32 alexander55 Цитата(Палыч @ Oct 24 2007, 08:51) ИМХО, ... Oct 24 2007, 05:19 DASM Точно Oct 24 2007, 04:59 prm Работу слейва,как вариант, можно описать следующим... Oct 24 2007, 07:10 DASM В данном случае думаю проще Modbus ASCII использов... Oct 24 2007, 08:05 prm Либо ModBus RTU, тоже вещь очень хорошая. Я бы даж... Oct 24 2007, 08:08 DASM Modbus RTU не люблю по причине определенных сложно... Oct 24 2007, 08:13 prm Пользую ModBus RTU (вернее ModBus RTU-подобный про... Oct 24 2007, 09:22 DASM Цитатаесли данные не идут в течении определенного ... Oct 24 2007, 09:32 alexander55 Цитата(DASM @ Oct 24 2007, 13:32) А Modbu... Oct 24 2007, 10:07 defunct Цитата(DASM @ Oct 24 2007, 12:32) А Modbu... Oct 24 2007, 11:41  alexander55 Цитата(defunct @ Oct 24 2007, 15:41) Рабо... Oct 24 2007, 11:48 prm Нет, перед приемом пакета устанавливаю время, в те... Oct 24 2007, 10:41 alexander55 Цитата(prm @ Oct 24 2007, 14:41) Нет, пер... Oct 24 2007, 11:02 DASM Ну так в любом случае этот ложный таймаут может по... Oct 24 2007, 10:52 DASM Мужики, то, что ложных пакетов таким образом не на... Oct 24 2007, 11:10 alexander55 Цитата(DASM @ Oct 24 2007, 15:10) Мужики,... Oct 24 2007, 11:16 DASM Ну не знаю.. меня системы на жесткой времянке нерв... Oct 24 2007, 11:43 defunct Цитата(DASM @ Oct 24 2007, 14:43) Ну не з... Oct 24 2007, 12:01 DASM А зачем ? Если есть Wake ? Стаффинг и ноль проблем... Oct 24 2007, 12:04 defunct Цитата(DASM @ Oct 24 2007, 15:04) А зачем... Oct 24 2007, 12:15  alexander55 Цитата(defunct @ Oct 24 2007, 16:15) Приг... Oct 24 2007, 12:22 DASM RS485 вообще программный уровень не стандартизируе... Oct 24 2007, 12:35 alexander55 Цитата(DASM @ Oct 24 2007, 16:35) RS485 в... Oct 24 2007, 12:53 Athlon128 Пытался днём на бумаге прикинуть программу.
В ос... Oct 24 2007, 16:22 Прохожий Цитата(Athlon128 @ Oct 24 2007, 20:22) Пы... Oct 24 2007, 16:36  Dog Pawlowa Цитата(Прохожий @ Oct 24 2007, 20:36) От ... Oct 24 2007, 18:18   Т.Достоевский hттp://ru.wikipedia.org/wiki/Modbus
Удивительно х... Oct 24 2007, 20:28 Athlon128 Ладно, всем спасибо, буду читать про modbus Oct 25 2007, 01:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|