Stránka 1 z 1

Opätovné naštartovanie Ethernet shieldu

Napsal: 12 led 2021, 21:57
od romanm
Mám arduino uno + ethernet shield s pevnou IP. beží mi na ňom aj client aj server. Pokiaľ odpojím od siete switch, do ktorého je shield pripojený, tak komunikácia prestane komunikovať. Nefunguje ani client, ani server. Program v arduine beží ďalej, len komunikácia nefunguje. Existuje nejaká finta ako znova "nahodiť" ethernet?
Môžem v loope, keď zistím, že sa neviem pripojiť z arduina na server, znova inicializovať etnernet príkazom

Kód: Vybrat vše

  Ethernet.begin(mac, ip);
Môže sa vôbec vykonať viacnásobná inicializácia Ethernetu mimo funkciu setup?
Keď iba odpojím kábel, tak arduino opätovne naštartuje. Keď ale kábel prehodím z podružného do hlavného switcha, tak komunikácia sa neobnoví. Ako keby sa shield nevedel "dohovoriť" so switchom.

Re: Opätovné naštartovanie Ethernet shieldu

Napsal: 14 led 2021, 18:41
od romanm
Zistil som, že toto Ethernet shieldy s čipom W5100 niekedy robia. Asi to budem rišiť nejakým počítadlom nepodarených pokusov a následným sw resetom celého arduina, aj so shieldom.
Len musím poriešiť napočítané impulzy z elektromerov, aby sa nestratili. Asi zápisom na SD.

Re: Opätovné naštartovanie Ethernet shieldu

Napsal: 14 led 2021, 19:02
od pavel1tu
No, provozuji trvale 1-4 roky jeden 5100 a dva 5500 a problémy nemám.
Mám je ale jen jako klienty. Četl jsem že bývá problém při přepínání mezi client/server. Ale netestoval jsem to.
Jde udělat RESET jen toho LAN modulu (tedy vyčetl jsem to kdysi v datasheetu toho čipu), na nějakou adresu se uloží nějaká hodnota a měl by se resetnout. Také jsem to zatím netestoval.

Jinak já pro jistotu před každým odesíláním zkoumám připojení.
Odesílám 1x za 5minut, pokud je chyba připojení, zkouším to ještě 3x (po 20s), pak teprve hlásím chybu. Do databáze zapisuji i kody chyb všech modulů (0-OK, 1-3 opakované pokusy - chyby), nejen LANmodulu. S každou chybou prodlužuji koeficientem "delay" kdy čekám odpověď po odeslání dat - kdyby byl ucpaný NET.
Pravda je že za rok mi LANmodul asi 50x zapsal "1" a 2x "2". Ale zápisů je přes 100.000, tak tomu nepřikládám váhu.

Každých 5 minut zapisuji 3x (do 3 databází)
- data z meteostanice
- data všech baterek, zdrojů a solárního panelu (meteostanice, alarmu)
- eventy a poruchové data všech modulů/alarmu

Re: Opätovné naštartovanie Ethernet shieldu

Napsal: 14 led 2021, 20:23
od romanm
pavel1tu píše:
14 led 2021, 19:02
No, provozuji trvale 1-4 roky jeden 5100 a dva 5500 a problémy nemám.
No skus len tak skusmo odpojit napajanie samotneho switchu. Arduino nechaj bezat. Potom zapoj switch a sleduj, ci sa ti rozbehne. Nejde tu o to, ci je client, alebo server, ten ethernet shield jednoducho zamrzne. Skus to tak viackrat a sleduj ci sa rozbehne. Cital som, ze viaceri sa pokusali iba o restart shieldu, ale akosi sa im to nepodarilo. Skusim este googlit.
Ak odpojim iba kabel, tak mozno v 50% sa shield nerozbehne.
Chyby tiez zapisujem, ale zo snimacov. Chybu vypadku siete asi tazko zapisem :-)
Z teplotnych snimacov som uz prekonal 5mil. zapisov, v podstate zatial nenastal taky pripad, ako som popisoval vyssie. Prisiel som na to nahodou, ked som mal na stole jedno arduino, ktore som testoval a vypol som switch. Mozno v praxi, ked vypadne elektrina,tak vypadne aj arduino so shieldom, aj switch, arduino musi nabootovat a trva mu to dlhsie, ako nabootovanie switcha, preto sa v praxi tato chyba este neobjavila.

Re: Opätovné naštartovanie Ethernet shieldu

Napsal: 15 led 2021, 08:33
od pavel1tu
Aha, vyzkouším.
Celou síť mám doma zálohovanou, běží mi na tom kamera a alarm - tak výpadek nehrozí.

Re: Opätovné naštartovanie Ethernet shieldu

Napsal: 15 led 2021, 10:27
od martinius96
Aký je to switch? Možno drží IP adresu na tom switchporte po nejaký lease time a to znemožní komunikovať na inom porte kvôli kolízii rovnakej IP adresy... Nerozsvieti sa ti LED COL (COLLISION) na Ethernet shielde?
Ja síce využívam DHCP, ale možno by to fungovalo aj v tvojom prípade.
Použi v loope toto:

Kód: Vybrat vše

Ethernet.maintain();
Stačí to volať raz za x sekúnd...
V podstate to vyžiada IP adresu, resp. predĺži lease time...
Môžeš si nechať vypísať i to, aký to vráti stav...

Kód: Vybrat vše

byte:
0: nothing happened
1: renew failed
2: renew success
3: rebind fail
4: rebind success