DetStudio - výpis aplikace
Projekt |
| Název : | AMiNi2D 1MB RAM |
| Verze : | 1 |
| Autor : | Jaroslav Valter |
Stanice |
| Typ : | AMiNi2 (AMiNi2D) AMiNi2D 1 MB RAM |
| Verze : | 0 |
Generováno : | 22. března 2009 17:09:11 |
DetStudio : | DetStudio 1.2.16 |
|
Copyright (c) Máca měření a regulace 384 32 11 90 |
| |
Poznámky k procesní stanici
Vytvořil jsem algoritmus pro watchdog programu a kontrolu flash.
Primární funkce algoritmu je hlídání provedení procesu Proc00 s periodou 100mS pro načtení vstupů a zápisu výstupů řídícího systému alespoň jednou za 500mS, jinak se vyhodnotí program jako "zaseklý" a provede se restart.
Sekundární funkce algoritmu je v hlídání kontrolního součtu paměti flash a pokud nesouhlasí CRC součet po druhém a dalším restartu, tak je řídící systém restartován až do souhlasného CRC.
K algoritmu: Parametrem Timeout modulu Watchdog se udává doba, za kterou se modul Watchdog musí občerstvit. Tzn. musí vám do zadané doby alespoň jedenkrát proběhnout proces, ve kterém je modul Watchdog na daném kanále aktivní. Skutečná doba, po které vypršení limitu vyvolá restart systému, může být až o 100 mS delší, než je hodnota parametru Timeout. V této závěrečné fázi před restartem (po vypršení zadaného limitu) ovšem nelze zaručit, že případná obsluha vypršeného hlídacího časovače zabrání restartu systému. Minimální hodnota parametru Timeout modulu Watchdog je 320 mS. Pokud chceme provést restart bez zacyklení programu (řízený restart od špatného CRC paměti flash), je nutné umístit kód do procesu s periodou minimálně 420 mS, aby hodnota periody procesu byla větší než minimální zadatelný čas + 100mS. Nyní k "magické" hodnotě 320 resp. 420 mS. Pokud do parametru Watchdog zadáte jakoukoliv hodnotu, menší jak 320 mS, bude tato automaticky v modulu Watchdog zvětšena na 320 mS tj. parametr Timeout můžete zadat v rozmezí 0 .. XYZ, vždy se ale bude počítat v rozmezí (320 .. XYZ)+100. Toto neplatí pro větší hodnoty.
U řídících systémů s novým procesorem (řada "S") je počítání kontrolního součtu paměti flash zatím nefunkční (problém modulu MemCheck PSP3.53 a nižší). Následně má být tato nefunkčnost odstraněna.
...
Konfigurace procesních vstupů a výstupů
Typ/Signál | Jméno | Komentář | Log.kanál |
DIO | | | | 0 |
| DI.00 | | | |
| DI.01 | | | |
| DI.02 | | | |
| DI.03 | | | |
| DI.04 | | | |
| DI.05 | | | |
| DI.06 | | | |
| DI.07 | | NC | |
DIO_AC | | | | 1 |
| DI.00 | | NC | |
| DI.01 | | NC | |
| DI.02 | | NC | |
| DI.03 | | NC | |
| DI.04 | | NC | |
| DI.05 | | NC | |
| DI.06 | | NC | |
| DI.07 | | NC | |
DAI0 | | | | 2 |
| DI.00 | | NC | |
| DI.01 | | NC | |
| DI.02 | | NC | |
| DI.03 | | NC | |
| DI.04 | | NC | |
| DI.05 | | NC | |
| DI.06 | | NC | |
| DI.07 | | NC | |
DAI0_AC | | | | 3 |
| DI.00 | | NC | |
| DI.01 | | NC | |
| DI.02 | | NC | |
| DI.03 | | NC | |
| DI.04 | | NC | |
| DI.05 | | NC | |
| DI.06 | | NC | |
| DI.07 | | NC | |
DO0 | | | | 0 |
| DO.00 | | | |
| DO.01 | | | |
| DO.02 | | | |
| DO.03 | | | |
| DO.04 | | | |
| DO.05 | | | |
| DO.06 | | NC | |
| DO.07 | | NC | |
AI0 | | | | 0 |
| AI.00 | | NC | |
| AI.01 | | NC | |
| AI.02 | | NC | |
| AI.03 | | NC | |
| AI.04 | | NC | |
| AI.05 | | NC | |
| AI.06 | | NC | |
| AI.07 | | NC | |
Ni1000 | | | | 1 |
| AI.00 | | NC | |
| AI.01 | | NC | |
| AI.02 | | NC | |
| AI.03 | | NC | |
| AI.04 | | NC | |
| AI.05 | | NC | |
| AI.06 | | NC | |
| AI.07 | | NC | |
PWR | | | | 2 |
| AI.00 | Vpwr | Napájecí napětí 0..55 V. | |
| AI.01 | Vibatt | Napětí zálohovací baterie 0..5 V. | |
AO0 | | | | 0 |
| AO.00 | | NC | |
| AO.01 | | NC | |
| AO.02 | | NC | |
| AO.03 | | NC | |
...
Databázové proměnné:
Poř. | Jméno | Typ | WID | Warm | Init hodnota | St. | Komentář |
1 | DI0 | I | 1082 | | | 1 | Vstupy pro program |
2 | DO0 | I | 1407 | * | | 1 | Digitalni vystupy |
3 | f_FLASH | I | 1332 | | | 1 | Zabespečení flash |
4 | f_FLASH_CMP | I | 1338 | | | 1 | Flash při teplém restartu |
5 | f_FLASH_CRC | I | 1337 | | | 1 | Flash po nahrání programu |
6 | f_start | I | 1001 | | | 1 | Jaký nastal start systému |
7 | INDEX_PD | I | 1900 | | | 1 | Index provozního deníku |
8 | Ix | I | 1000 | | | 1 | Proměnná pro cyklus For |
9 | Lx | L | 1002 | | | 1 | Čítaní |
10 | PDENIK | MI[1,808] | 1901 | | | 1 | Provozní deník |
...
Alias-Proměnné
Poř. | Alias | proměnná. | Bit | Komentář |
1 | @zacykleni | f_FLASH | 5 | spust cyklus For (zacykleni) |
2 | @f_watchdog | f_FLASH | 3 | Selhání systému - restart watchdog |
3 | @f_FLASH_err | f_FLASH | 1 | Porucha FLASH |
4 | @f_FirstRun | f_FLASH | 0 | První rozběh systému |
...
Procesy
Nazev | Jazyk | Typ | Perioda | Offset | Komentář |
Proc00 | Pse | Normal_0 | 100 | 0 | Digitalni vstupy, vystupy + watchdog |
Proc01 | Pse | Normal_1 | 500 | 0 | Flash |
Proc02 | Pse | Normal_2 | 1000 | 0 | Proces pro zkoušku zacyklení |
ProcIDLE | Pse | Idle | 1000 | 0 | Obsluha LCD |
ProcINIT | Pse | Init | 1000 | 0 | Init po restartu |
...
Proc00 - Digitalni vstupy, vystupy + watchdog
Jazyk: | Pse |
Typ: | Normal_0 |
Perioda: | 100 |
Ofs/Hrana: | 0 |
//REM "Vstupy, výstupy"
//Čtení DI0
DigIn #0, DI0, 0x0000
//Zápis na DO0
DigOut DO0, #0, 0x0000
//Restart systému po načtení/zápisu V/V
Watchdog 0, 400
Proc01 - Flash
Jazyk: | Pse |
Typ: | Normal_1 |
Perioda: | 500 |
Ofs/Hrana: | 0 |
//Restart systému po kontrole FLASH
if @f_FLASH_err
Watchdog 1, 5
endif
Proc02 - Proces pro zkoušku zacyklení
Jazyk: | Pse |
Typ: | Normal_2 |
Perioda: | 1000 |
Ofs/Hrana: | 0 |
//Spuštění zacyklení
If @zacykleni
//Cyklus For (jen pro ukazku funkčnosti modulu Watchdog 0, 500)
For Ix,0,9999,1
Let Lx = Lx + Ix
EndFor
EndIf
ProcIDLE - Obsluha LCD
Jazyk: | Pse |
Typ: | Idle |
Perioda: | 1000 |
Ofs/Hrana: | 0 |
Lcw3Idle NONE
ProcINIT - Init po restartu
Jazyk: | Pse |
Typ: | Init |
Perioda: | 1000 |
Ofs/Hrana: | 0 |
//REM "Jaký start systému + RESTART od watchdog"
StartType f_start, @f_watchdog, NONE
Let @f_FirstRun = if( f_start == 0, true, false)
//REM "Kontrola FLASH"
If @f_FirstRun, :NONE
MemCheck NONE, f_FLASH_CRC
Else :NONE
MemCheck NONE, f_FLASH_CMP
Let @f_FLASH_err = bool(if(f_FLASH_CMP==f_FLASH_CRC, 0, 1))
EndIf
Podprogramy
...
- Funkční bloky -
Nejsou žádné funkční bloky.
...