Seriova komunikace RS485
Jirka Mww
jirka.mww na gmail.com
Středa Listopad 22 20:57:06 CET 2023
Ja jsem zatim nemel nikdy potrebu studovat detaily, jak ty rutiny pro
seriove porty funguji, krome snad sw serial na arduinu Nano, kde je hw jen
jeden seriovy port. Tam jsem do toho trochu pronikal, ale my skleroticti
duchodci si stejne nic nepamatujeme....
st 22. 11. 2023 v 20:34 odesílatel Petr Labaj <labaj na volny.cz> napsal:
> Mně se zdálo, že jste psal, že to Arduino nevyšle. Nikoli že by něco
> nepřijalo.
> Vysílání je v knihovnách Arduino dělané jako neblokující, přes nějaký
> buffer?
> Pak by se zřejmě dalo použít i nějaké blokující, kde by jiné IRQ neměly
> vliv na funkci.
>
> PL
>
> ********************
>
> Dne 22.11.2023 v 20:21 Jirka Mww napsal(a):
>
> Pane Zárubo,
> přivedl jste mne na jednu myšlenku, kterou zítra vyzkoušim. Mám tam
> přerušení 4mS, opsané z jiného projektu, ale v podstatě to tak často
> nepotřebuju, počítám ta přerušení do 250 a hlavní smyčku pouštím po
> sekunde. Nějak jsem na to zapomněl, že to tak je, dělám na tom je po
> chvilkach.
> Zitra to přerušení přepisu na delší interval a uvidím, jestli to bude mít
> efekt. Ještě jednou díky za nakopnuti. Pokud neuspěji, vyndáme ten
> osciloskop..
>
>
> Dne st 22. lis 2023 19:07 uživatel Martin Záruba <swz na volny.cz> napsal:
>
>> Mám podezření, že to bude souviset s ne plnohodnotnou obsluhou přerušení.
>> Tedy to, co jsem sám nevěděl, že pokud nastane více přerušení současně,
>> priority pouze určují pořadí spuštění rutin, ale neznamená to, že jestliže
>> běží rutina s nižší prioritou a vznikne vyšší přerušení, že se ta nižší
>> přeruší, obslouží se ta výšší, pak pokračuje ta nižší a pak hlavní program.
>> Jinak řečeno... Neumí vnořovat přerušení.
>>
>> Mám podobný problém, kde, přerušení časovačem mám každých 50uS. Ono to
>> není v mém případě důležité, aby to bylo přesně 50uS. Pokud nenastává jiné
>> přerušení, vidím na osciloskopu, že to sedí. Pokud ale nastává přerušení od
>> seriového portu, interval 50uS není přesný.
>>
>> Nevím, zda to nemůže být Váš případ, kdy dojde k tak zásadní deformaci
>> šířku pulzu na seriovém portu, že se data přenesou špatně. Takže se
>> přikláním k tomu, co napsal pan Labaj.
>>
>> Martin Záruba
>>
>> Dne 22.11.2023 v 18:36 Petr Labaj napsal(a):
>>
>> Přiznávám, že by mě to zajímalo.
>> Tedy pro obecnou osvětu a poučení, i když ve Vašem konkrétním případě to
>> dokážete ošéfovat pomocí SW.
>>
>> Připojil bych na ten převodník jen osciloskop a kontrolní PC, nic jiného.
>> Na druhé straně by nikdo neodpovídal.
>> A do Arduina dát jednoduchý program, který bude vysílat stále dokola
>> třeba po 2 sekundách ten string.
>>
>> Pokud to tady bude OK (na osciloskopu i přijetím na na kontrolním PC),
>> tak nechat HW stejně, ale posílat to Vašim původním programem, pokud umí
>> posílat výzvy i bez odpovědi.
>> Pokud to opět bude OK, tak teprve pak připojit ten odpovídač a hledat tam.
>>
>> Máte 4-kanál, tak by asi nebyl problém ho odpíchnout od Tx dat, která by
>> byla vstupem pro ten převodník (tj. výstupní drát z Arduina).
>>
>> PL
>>
>> **********************
>>
>> Dne 22.11.2023 v 18:13 Jirka Mww napsal(a):
>>
>> Dobrý den,
>> To s tím rozdělením jsem zkoušel, nebyla tam žádná změna i když jsem tam
>> dal ještě navíc delay. Osciloskop mám, 4 kanál paměťový, ale nevím, na co
>> ho synchronizovat. Necháme to být, SW to řeší
>>
>> Dne st 22. lis 2023 18:05 uživatel Petr Labaj <labaj na volny.cz> napsal:
>>
>>> Myslel jsem, že se Vám to s těmi odpory spravilo. A ono ne.
>>> Tak to je skoro čas na plán B.
>>> Máte osciloskop? Pokud je to jeden ze 40 pokusů, tak tohle chytnout by
>>> měla být brnkačka. A zřejmě budou "načaté" i ostatní přenosy, jen budou
>>> ještě v toleranci.
>>>
>>> Co by udělalo Serial2.print("X1A") a pak Serial2.println("") nebo jak se
>>> ty funkce na Arduinu jmenují? Prostě poslat to CR dalším voláním.
>>>
>>> PL
>>>
>>> ********************
>>>
>>> Dne 22.11.2023 v 17:42 Jirka Mww napsal(a):
>>>
>>> Díky za další rady, on ale bude problém asi jinde. Po doplnění těch
>>> opěrných odporů na A+ a B- se to začalo chovat o dost líp, ale po dopsání
>>> nějakých dalších řádků do Arduina ATMEGA se to zase trochu zhoršilo.
>>> Mám podezření, že ty procedury Arduina pro obsluhu sériových portů
>>> nejsou asi úplně nezávislé, nebo tomu vadí něco jiného z mého SW. V
>>> podstatě s tím můžu žít, ty posílané povely se dají opakovat, když nepřijde
>>> včas relevantní odpověď. Schema těch převodníků nemám, je to z Ali, drát
>>> na řízení směru toku nemají, to co poslu se zároveň zpětně načte. Ten co
>>> komunikuje s měničem GOODWE problémy nemá, komunikace 100% chodí včetně
>>> CRC. Vyhození převodníků je trochu problém, relova deska pro obsluhu je SMD
>>> , musel bych tam okolo převodníku RS485 škrbat spoje, to se mi nechce.
>>> Raději budu řešit ty výpadky přes úpravu SW a už se tím dál nebudu zabývat
>>>
>>> Zdravi
>>> Jirka Sloupenský OK1MWW
>>>
>>>
>>>
>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Neobsahuje
>>> žádné viry.www.avast.com
>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>
>>> út 21. 11. 2023 v 20:28 odesílatel Dodo Racek <dodoracek na gmail.com>
>>> napsal:
>>>
>>>> Tazko hadat, malo vstupnych informacii.
>>>>
>>>> Obe strany su v istej chvili prepnute na vysielanie ?
>>>>
>>>> Pri riadenom prepinani mozete prepnut na prijem skor ako je odoslany
>>>> posledny znak.
>>>> Niektore obsluhy seriovej linky povazuju odoslanie za skoncene, ked je
>>>> posledny byte vo vysielacom registri (ale este neodisiel po seriovej linke )
>>>>
>>>> Automaticke prepinania sa robia rozne, od detekcie startbitu hrubym
>>>> casovanim MKO, niektore sa snazia detekovat rychlost vysielania a nastavit
>>>> cas prepnutia podla casu vyslania bytu a odhadnutej rychlosti... byva to
>>>> rozne.
>>>>
>>>> Mate linku zakoncenu na oboch stranach prislusnou zatazou ? Napr 120R +
>>>> 1n
>>>>
>>>> Mate definovane urovne linky, ked su obe strany na prijme ?
>>>> Niektore prevodniky to robia "automaticky" a u niektorych je potrebne
>>>> jeden vodic potiahnut odporom na zem a druhy vodic na +5v.
>>>>
>>>> Niektore zapojenia prevodnikov 422/485 umoznuju zaroven citat, co sa
>>>> lokalne vysiela a napr. detekovat chybu vysielania, ked sa iny vysielac na
>>>> linke namontuje do komunikacie....
>>>>
>>>> Chcelo by to ozajstne schemy tych prevodnikov.
>>>> Ci mate chybu v prograne mozete overit tak, ze vyhodite prevodniky a
>>>> pojdete Rx-Tx priamo na TTL urovniach.
>>>>
>>>> Dodo
>>>>
>>>>
>>>> Dňa ut 21. 11. 2023, 15:31 Jirka Mww <jirka.mww na gmail.com> napísal(a):
>>>>
>>>>> Dobrý den,
>>>>> ladím tady komunikaci mezi dvěma Arduiny, jedno je Arduino Nano a
>>>>> druhé je Arduino Mega , příslušný seriový kanál je na Mega serial2. Na Nano
>>>>> používám HW seriový kanál. SW seriový kanál není vůbec využit. Na Arduinu
>>>>> Nano je modul RS485, který má externí vstup pro přepínání směru přenosu,
>>>>> ten obsluhuji svým SW a vše zdá se funguje správně. Na Arduinu Mega mám
>>>>> nějaký čínský modul RS485, který takový vstup nemá , přepíná se sám,
>>>>> posílám jen čtyři znaky pomocí funkce Serial2.println("X1A") t.j. včetně
>>>>> CR na konci, většinou to funguje, ale ten koncový znak, na který
>>>>> protistrana čeká, aby příkaz provedla, se občas ( cca 1 x za 40 přenosů )
>>>>> nepošle. Linku monitoruji přes externí převodník a PC ale efekt je stejný,
>>>>> jak na straně Arduino Nano, tak na straně PC. Prostě ten koncový znak
>>>>> nepřijde tam ani tam. Komunikace s FVE měničem Goodwe přes další port
>>>>> toho Arduino Mega mi funguje normálně. Je tam podobný modul RS485 opět bez
>>>>> řízení směru přenosu, je jenom galvanicky oddělený. Nemáte nějaký nápad,
>>>>> na co se zaměřit ? Vkládání zpoždění do různých relevantních částí
>>>>> programu nepomáhá.
>>>>>
>>>>> Zdravi
>>>>> Jirka Sloupenský OK1MWW
>>>>>
>>>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>>
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>>
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20231122/7df21d27/attachment.htm>
Další informace o konferenci Hw-list