Отговори на тема  [ 34 мнения ]  Отиди на страница 1, 2, 3  Следваща
Помощ за RS485 протокол? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение Помощ за RS485 протокол?
Не съм работил до сега с този протокол, по точно с режим на USART-а Master-Slave и днес като си свърших останалата работа реших да се занимая с това.
До колкото разбрах идеята е следната /Рic/ - мастера изпраща данни в 9 битов формат, като 9 бит се използва да се индицира от слейв устройството като адрес. След това очаква отговор от устройството със съвпадащ адрес.
При подчинените устройства се слуша линията за данни с дължина 9 бита, ако е така 8-те бита се използват за адрес и се сравняват с зададения адрес и ако съвпада - прави си нещо - или минава в режим на приемане на данни или изпраща нещо към мастера.
Написах си програмка за слейв устройството, реших да си я симулирам в Proteus-a. Не знам дали аз бъркам нещо или симулатора ме лъже но без значение дали предавам към него данни с 1 или 2 стоп бита /с 2-рия стоп бит реших да симулирам адресния 9-ти бит/ RCSTA.0 /RX9D/ винаги ми се установява и ми се генерира прекъсването от USART модула. RCSTA съм го конфигурирал така - 11011000.
Не знам дали сте ме разбрали :( но ако някой помогне със съвет или примерен софт ще ми помогне доста.
Иначе утре ми пристигат процесорчетата и ще си ги пробвам както си му е реда...


Нед Фев 04, 2007 8:39 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Окт 21, 2005 8:45 am
Мнения: 499
Мнение 
RS485 не е протокол, а хардуерен леер за данни!

_________________
Простотията е Божи дар, но човек не бива да парадира с подаръците си!


Нед Фев 04, 2007 10:33 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Втория стопов бит е просто традиция.
Няма никакъв протоколен смисъл.
Ползва се само да даде още една глътка време на бавни приемници, нищо повече.
485 наистина е само физическата среда - не е протокол, но трябва да управляваш с отделен изход трансмитера, защото линията е само полудуплекс.
Включваш предавателя, предаваш, и веднага изключваш


Пон Фев 05, 2007 12:11 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Ясно ми е какво представлява 485, по лесно ми е да си мисля че е протокол :D Иначе какво - среда за пренос по която трябва да реализирам асинхронно предаване на данни в полудуплексен режим с мастер - слейв устройства.
Интересно ми е дали аз бъркам или виртуалния терминал в Протеуса ми генерира 9 битови данни защото в слейв устройството при получаване на данни постоянно ми се дига RX9D без начение как се опитвам да настроя терминала - с един стоп бит или с два стоп бита, флага се вдига дори и като си избера режим 7N1 8O
Но явно никой не се е блъскал с него, днес ще го пробвам на хардуера, до тогава приемам че всичко с кода си е ОК :D


Пон Фев 05, 2007 9:10 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Фев 21, 2005 2:14 pm
Мнения: 191
Местоположение: Varna
Мнение 
Не мога да разбера защо си включил и 9 бит. В твоя случай не е необходим.

_________________
Шанс едно на милион, обикновено се случва девет от десет пъти.


Пон Фев 05, 2007 10:22 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Цитат:
cvetanov
Не мога да разбера защо си включил и 9 бит. В твоя случай не е необходим.


Ами за да се знае че това което се предава по линията е адрес за някой от слейв устройствата. Наистина може да се мине и без него, но съществува вероятност някой от предаваните данни да съвпаднат с адрес на слейв устройство и тогава - каша, ще приказват 2 устройства едновременно...


Пон Фев 05, 2007 10:28 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Фев 21, 2005 2:14 pm
Мнения: 191
Местоположение: Varna
Мнение 
Правил съм подобна система и там предавах пакет от 3 байта - 0хАА,адрес,инвертиран адрес. Като никое устройство няма адрес 0хАА. В твоя случай можеш да минеш с предаване само на един байт - адреса. Стига да гарантираш, че в отговорите на слейв устройството няма да се съдържа адреса на някое друго слейв устройство.

_________________
Шанс едно на милион, обикновено се случва девет от десет пъти.


Пон Фев 05, 2007 10:53 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Там е проблема че отговорите на слейв устройствата са от 00000000 до 11111111 и затова не може да се гарантира такова условие, трябва да си ползвам 9-тия бит!


Пон Фев 05, 2007 11:26 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
milenjs,
aз бих те посъветвал да разделиш малко нещата...так ще стане по-ясно..и на теб и на нас...
имаш задача да спретнеш комуникационна система която позва като физически интерфейс RS485, и ти трябва логически да адресираш до ххх устройства така ли? трябва ли ти корекция на грешките по линията или само с CRC ще детекваш грешен пакет...ако са ти пактено ориентирани данните...

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Пон Фев 05, 2007 11:45 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Максимум 16 устройства, корекция на грешките няма да има, само CRC, мастера ще запитва с - <ID 9бит> <CMD> <CRC> подчиненито с съвпадащ адрес ще връща <ID 8бит> <DATA> <CRC>.
Физическата час - 16Ф688 - 16Ф877, хардуерен USART, 9600, sn75176a, максимална дължина около 150 м.
Като софт съм го нахвърлял, както казах пробвах със симулация в протеуса ама ударих на камък, ще го направя както си му е реда с платките и тогава ще стане ясно :? . Дано да няма проблеми...


Пон Фев 05, 2007 12:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
бе тия 150 метра... ако си в индустриална среда...ще опреш и до шумоустойчиво кодиране......
ама предполагам като тестваш протипите ще се похвалиш/оплачеш :) от ефектите

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Пон Фев 05, 2007 12:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Закачи се за модбъс L - ASCII варианта.
Протокола е свободен, има литература доста в мрежата, и е удобен за закачване на малки процесори.
Колкото до 485 - има и са евтини и достъпни чипчета - 8 крака, с предавател и приемник и управление, с много добри показатели


Пон Фев 05, 2007 11:57 pm
Профил WWW
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Окт 21, 2005 8:45 am
Мнения: 499
Мнение 
milenjs написа:
... корекция на грешките няма да има, само CRC...
както казах пробвах със симулация в протеуса ама ударих на камък, ще го направя както си му е реда с платките и тогава ще стане ясно :? . Дано да няма проблеми...


CRC е корекция на грешките или поне проверка на грешките! Както и да е!
Хвърли "Протеус"-а и ще сполучиш!
Не е абсолютно задължително да използваш стандартен (утвърден в практиката) протокол за обмен, но понякога ... помага!

_________________
Простотията е Божи дар, но човек не бива да парадира с подаръците си!


Вто Фев 06, 2007 12:25 am
Профил ICQ
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Сря Юли 05, 2006 1:54 pm
Мнения: 279
Мнение 
аз правя така - разрешил съм прекъсване при получаване на 9 битва дума, съответно тя си има определено значение. Всички устройства "слушат" за следващите - вече 8 бита - "номера" на устройството което ще адресираме. Всички останали излизат от режим "слушане". Не е сложно пък и работи :)


Вто Фев 06, 2007 10:18 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
evc,
незнам дали ти е ясно животното CRC.....
то не е за корекция на грешки(пък за "проверка" на грешки да не говорим щото ще си умра от смях), а за откриване на разлики в съобщението...т.е. за откриване на евентуални грешки внесени от транспортната медия(комуникационната среда)...
така че си прав само, че симулацията е добра като начало ама в самото начало.... после трябва екперименти на живо

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Фев 06, 2007 11:32 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 34 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни