Ztráta nebo poškození prgoramu

Odpovědět
jarda_p
Příspěvky: 5
Registrován: 11 úno 2018, 23:01
Reputation: 0

Ztráta nebo poškození prgoramu

Příspěvek od jarda_p » 11 úno 2018, 23:19

Dobrý den
Mám takový problém že se mi nějakým způsobem dojde k poškození programu v "Arduinu Uno" .
Mám nahraný jednoduchý program pro regulaci teploty. S programem přes rozhraní RS485 komunikuje nadřazený PC který v intervalu 1 minuty vyčítá teplotu a stav zařízení a případně podle potřeby aktualizuje požadovanou hodnotu regulace. (komunikace je typem Master-slave od PC).

Problém je že program běží například dva dny bez problému a z ničeho nic přestane fungovat, restart nepomůže vždy pomůže pouze opětovné nahrání programu.

Nevím jestli nemůže dojít z důvodu nějakého rušení přicházejícího po sériové lince ke smazání programu, případně jestli nelze nějak uzamknout program aby nemohlo k těmto stavům docházet. Bohužel nevím si rady co s tím jediné co jsem ještě nezkoušel je udělat SW seriové rozhraní na jiných portech, ale zatím bych raději využíval to standardní

Děkuji za každý nápad

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Ztráta nebo poškození prgoramu

Příspěvek od ohruska » 12 úno 2018, 07:25

Jenom poznámka, máš zapojeny zakončovací odpory na vedení 120ohm.
scheme_2.jpg

jarda_p
Příspěvky: 5
Registrován: 11 úno 2018, 23:01
Reputation: 0

Re: Ztráta nebo poškození prgoramu

Příspěvek od jarda_p » 12 úno 2018, 08:22

Děkuji ale to asi nebude řešení.
Zakončovací i vyvažovací rezistory, napětí mezi A-B 0,2V, vyvažovací rezistory 680R, Dokud to komunikuje tak je to bez problému s minimálním počtem ztracených zpráv, Akorát dojde ke ztrátě programu,
Podezření že to dělá RS485 je z toho důvodu že stejným rozhraním provádím i programování (pomocí integrovaného USB prevodníku), samozřejmě že nemusí být způsobeno tímto, může vznikat i jiným rušením od přechodových děju od ostatních prvků v rozvaděči, jde jen o to že se mě zatím nikdy nestalo, že by se smazal nebo poškodil program v procesoru.
Čekal bych například zničení Modulu, nebo zaseknutí programu, které bych řešil restartem (od watchdogu), ale né řešení opětovným nahráním programu. Proto byl dotaz jestli lez nějak uzamknout nebo nastavit ochranu před smazáním pomocí programování pomocí seriové linky (pomocí paralelního programátoru by možná šlo nastavit při programování pojistky ale takto nevím.

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Ztráta nebo poškození prgoramu

Příspěvek od ohruska » 12 úno 2018, 08:55

Pokud ti pojede měření na arduinu, bez komunikace po RS485, tak se ta havárie nestane?

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Ztráta nebo poškození prgoramu

Příspěvek od jankop » 12 úno 2018, 12:04

Jsou asi tři možnosti:
1. Vlastní program, nebo použitá knihovna obsahuje nějaký problematický kód, který modifikuje něco, co nemá
2. Dojde k přepsání, protože se v čase vyskytne konstelace, jako že chci přehrát sketch přes USB převodník.
3. Dojde k destruktivnímu přepsání, kosmické záření, elektrický výboj, nízký přelet UFO
Práci s pojistkami u Arduina neznám, programoval jsem kdysi Microchip. Ten dovoloval především chránit program před přečtením.
Já bych hledal problém především podle 1.
No a pro vyloučení 2. bych zkusil třeba primárně nastavit na nadřazeném PC u sériového portu Flow control=non, respektive zakázat signál DTR. Nebo můžeš zkusit hardwarově zablokovat signál DTR přímo na Arduinu.
Ta třetí varianta - plašič UFO a různá opatření proti přepětí, galvanické oddělení apod.

jarda_p
Příspěvky: 5
Registrován: 11 úno 2018, 23:01
Reputation: 0

Re: Ztráta nebo poškození prgoramu

Příspěvek od jarda_p » 12 úno 2018, 19:02

Bohužel uvedeny problém je pouze u připojené komunikaci 485. Nebo alespoň při odpojení se neprojevil. Bohužel uvedena závada ke cca po 2 dnech a špatně se ladi.

Ohledně kódu je to opravdu triviální kód čtení třech teploměru. Ds18b20 a spínání relé na základě teploty. V každém případě zreviduji.
Mám podezření při té komunikaci zde Dtr na 485 není řešeno nebo mě není jasné jak by vstupovali do komunikace.

U posledního pokusu jsem se zaměřil na ty úkony. Dal jsem nějaké filtry na napájení a dal galvanicky převodník a zatím běží druhý den ale stejně tomu neverim

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Ztráta nebo poškození prgoramu

Příspěvek od jankop » 12 úno 2018, 19:29

Napodruhé jsem to snad správně pochopil, Arduino je osazeno na Tx/Rx převodníkem RS485 a USB port je v luftě. Pak bych asi zkusil stejně to DTR na Arduinu zablokovat. Nejjednodušší metoda je na pin RST proti zemi zapojit velký kondenzátor, třeba 100uF. Tím se eliminuje malý vazební kondenzátor 100nF na desce a reset od USB nemůže přijít. Je to asi nejlepší, protože to uděláš přes konektor bez zásahů do Arduina.
Neukládáš někde v programu ty nebo knihovny něco do trvalé paměti. Nějaké konstanty či co?

jarda_p
Příspěvky: 5
Registrován: 11 úno 2018, 23:01
Reputation: 0

Re: Ztráta nebo poškození prgoramu

Příspěvek od jarda_p » 12 úno 2018, 20:39

Ok to bych mohl zkusit, počkám jestli pomohla ta moje poslední úprava a přidám i toto. Na to jsem nepomysle určitě napíšu jak do dopadlo, ale bude to chvilku trvat minimálně aby alespoň týden vydrželo.

Jinak osobně v programu nic do trvalé paměti neukládám (nemůžu posoudit za knihovnu 1wire a Ds18B20, ale ani tam myslí nic není. Ale ten kondenzátor by mohl pomoci (to by mohlo zabránit přepsání pokud je to problém po lince)

Děkuji vyzkouším a dám vědět jak to dopadlo

jarda_p
Příspěvky: 5
Registrován: 11 úno 2018, 23:01
Reputation: 0

Re: Ztráta nebo poškození prgoramu

Příspěvek od jarda_p » 23 úno 2018, 18:13

Tak vypadá to že to opravdu bylo tím přehráváním po komunikační lince, možná i rušením, po instalaci kondenzátoru funguje, už zatím bez problému.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Ztráta nebo poškození prgoramu

Příspěvek od jankop » 23 úno 2018, 22:35

To by bylo prima.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů