Dimenzió #23

Valahol kinn az űrben...

(csillagászat, spektroszkópia, meteorészlelés)

                          AZ ÉSZLELŐPROGRAM LEÍRÁSA

   A  program  listája  mellékletként  megtalálható,  valamint  a lemezen is
szerepel   forráskódban.  Az  ebben  a  fejezetben  szereplő  oldalszámok  a
nyomtatott listára vonatkoznak.

   Egy  kész  programot  alakítottam  át. Ez folyamatosan figyeli az ADC-ről
jövő  jeleket,  de  nem  tárolja  mindet.  Mivel  az  alapzajra  nem vagyunk
kíváncsiak,  csak  egy  bizonyos  szint  felett  kezd  el  rögzíteni.  Ennek
vizsgálata az Evaluation eljárásban történik (5. oldal).

   A  programnak  kétfajta  üzemmódja  lehetséges.  Az egyik esetben állandó
szinttől  vág.  A második esetben viszont átlagolja a beérkező jeleket, és a
vágási  szintet  ettől  függően  állítja  be. A vágási szint az alapzajszint
2,5%-a.  Ha  az  alapzajtól  való  eltérés  ennél  nagyobb,  akkor  kezd  el
rögzíteni. Egy meteor jele légköri mozgások, és egyéb okok miatt többször is
felerősödhet.  Emiatt  a  program egészen addig rögzít, míg a jel az átlagos
alá  nem  megy  Előfordulhat,  hogy emiatt két egymást követő meteort egynek
vesz, de ezt az adatok utólagos vizsgálatánál kiszűrhetjük.

   Rögzítéskor a következő adatok kerülnek a winchesterre: a meteor sorszáma
(minden    egyes    adatnál),    a   mérés   időpontja   (perc,   másodperc,
századmásodperc), a jelszint és az átlagtól való eltérés. Ez utóbbi két adat
esetében  közvetlenül  az  ADC  által  szolgáltatott  12  bites egész számot
rögzítem (nem számolom át feszültségre).

   Sajnos  a DOS csak másodpercenként tizennyolcszor állítja a belső óráját,
így  több  adat  azonos  idővel  szerepel.  Gondoltam  rá,  hogy  esetleg az
időadatokat  utólag egyenletes időközökre "széthúzzam", de az adatok enélkül
is alkalmasak voltak a kiértékelésre.

   A  program  óránként  új  fájlt  nyit (OpenNewDataFile eljárás). Ez azért
célszerű,  mert így, ha a program esetleg valami miatt leáll, csak az utolsó
óra  adatai  vesznek  el.  A  fájl  neve  (pl.  07150322.dat)  tartalmazza a
megnyitásának napját (7-ike), időpontját (15 óra 3 perc 22 másodperc). Ebből
tehát minden adat esetében tudjuk, melyik órában történt a rögzítése.

   A  program  indításkor  kiszámolja  az  első ezer észlelés átlagát. Ebből
számítja  ki  a  vágás  szintjét.  Ezután  a  program  az  "s"  billentyűvel
indítható.  Az  észlelés  ideje alatt az autoexec.bat fájlba beírtam, hogy a
programot  auto  paraméterrel indítsa. Ilyenkor az észlelés az átlagszámítás
után  automatikusan  indul.  Így a gép egy esetleges áramkimaradás után újra
indul.

   A  mentés idejének csökkentése érdekében a szokásos cache programok közül
az nwcache-t alkalmaztam.

   A  főprogram  (6.  old.) legelőször az Init eljárást (2. old.) hívja meg,
amely beállítja a változók kezdő értékeit, nullázza az átlagoláshoz használt
tömböt.  A  Form  eljárás  (3. oldal) megrajzolja a keretet, amibe azután az
adatokat   írjuk.  A  képernyőkép  kerete  teljes  egészében  a  7.  oldalon
található.  A  program  további  része egy végtelen ciklus (repeat ... until
False;).  Ennek  belső ciklusa gombnyomásig figyeli az ADC-ről jövő jeleket.
Gombnyomás  esetén  a leütött billentyűtől függően különböző változtatásokat
hajt végre. A program részletezését ezzel a résszel kezdem.

   Ha  "B"-t  nyomtunk,  a  program BackGroundMes (Háttérmérés) eljárást (4.
oldal)  hívja.  Ez  leállítja  az adatok képernyőre való kiírását, a program
mindenféle  visszajelzés  nélkül  működik.  Ezt  úgy éri el, hogy a BackGrnd
logikai változónak igaz értéket ad. Ugyanezzel a billentyűvel érhetjük el az
eredeti állapot visszaállítását.

   Az  észlelés  ─  és  egyben  a  program  ─  leállítása  a  "Q"  billentyű
lenyomásával  lehetséges.  Ekkor  a  program  futása  a ReallyQuit (4. old.)
eljárásra  ugrik. Megkérdezi, hogy a felhasználó valóban be akarja-e fejezni
a  mérést.  Igenlő  válasz  esetén  a program bezárja a megnyitott fájlt, és
Halt(0)  utasítással  kilép  a  programból.  Más  gomb  nyomására  a program
zavartalanul folytatódik.

   Alapértelmezésben  a  program az utolsó 1000 adat átlagát számolja, ez az
alapzajszint.   Az   átlagolandók   számát   a   program  futása  közben  is
változtathatjuk  100  és  2000  között  tízesével  a  +  és  a  - gombokkal.
Állításkor a program a tömböt és az utolsó jelek összegét (SumSig) nullázza.
Emiatt  az  átlag  ilyenkor  nulláról fut fel. Ilyenkor tehát, amíg az átlag
ismét  be  nem  áll  az  eredeti  szintre, addig folyamatosan a vágási határ
felett  lenne  a  mért  jel,  folyamatosan  rögzítene.  Hogy  ezt elkerüljük
ilyenkor az Operated logikai változónak igaz értéket ad. Amíg ez igaz, addig
a  program  nem  rögzíti  az  mért  adatokat.  A hamis értéket az Evaluation
eljárás  állítja  vissza,  amikor  a mért adat alapzajszinttől való eltérése
feleakkora mint a vágási határ.

   Ha  az észlelés folyamán valamilyen okból új fájlt szeretnénk nyitni, ezt
az  "O" billentyű megnyomásával tehetjük meg. Ez az OpenNewDataFile eljárást
(2.  oldal)  hívja  meg,  amely  bezárja  az  eredeti fájlt, leolvassa a DOS
óráját, ebből előállítja az adatfájl nevét.

   A program indításkor a vágási szintet folyamatosan állítja. Ha át akarunk
térni  állandó  vágási  szintre,  az  "A"  gombot  kell lenyomnunk. Ekkor az
AutoCut  logikai  változó értékét hamisra állítja. A vágási szint 10-re áll.
Az  A  gomb  újabb megnyomása esetén az eredeti állapot visszaáll. Lehetőség
van  állandó  szintű  vágás  esetén  a  vágási szint állítására a "<" és ">"
gombokkal.

   Ha  még  nem  indult  el  az  észlelés,  az  "S"  billentyű  lenyomásával
indíthatjuk  el.  Ekkor  a  Start  eljárás  (6.  oldal) hajtódik végre. Ez a
Started  logikai  értékét  igazra  állítja. A dátumot és időpontot bekéri és
kiírja  a képernyőre. Megnyitja az adatfájlt. A gombnyomás vizsgálata után a
program visszatér az adatok méréséhez.

   Az  adatok  olvasását, rögzítését a főprogram belső ciklusa végzi (repeat
...  until Keypressed;) Egymás után kétszer kér be adatot az ADC-ről, ezeket
átlagolja, a számunkra szükségtelen hirtelen változásokat kiszűrve ezzel. Az
ADC  olvasását  a ReadSignal függvény (3. oldal) végzi. Ez beállítja a mérés
csatornáját,  trigger  jelet küld ki. Megvárja míg a konverter kész nem lesz
az  adattal.  Ezután leolvassa az időt. Ha az észlelés elkezdődött és új óra
kezdődött (a perc 59-ről 0-ra váltott), a program új adatfájlt nyit.

   Az  Evaluation eljárás (5. oldal) végzi az adatok értékelését. Először az
utolsó 1000 adat összegét korrigálja. Az utolsó értékek összegéből levonja a
legrégebben  tömbbe  vitt  adatot,  majd hozzáadja az új jelet és ezt írja a
tömbbe  a régi adat helyére. A tömb megfelelő elemére a WrPtr változó mutat.
Ezután  az  új átlagot számolja ki, majd a jel eltérését ettől. Kiszámolja a
vágási  szintet.  Amikor  az eltérés ezt a szintet meghaladja, akkor kezd el
rögzíteni  a program. Ha a program meteort észlelt, a vágási határt gyorsan
nullára csökkenti (minden ciklusban 0,3-mal szorozza). Csak azután fejezi be
a rögzítést, ha a meteorjel ez alá a csökkentett szint alá megy.

   Az  adatok  rögzítését  a GetMeteorData eljárás (5. oldal) végzi. Ha csak
most kezdett el rögzíteni a program, jelzi a képernyőn, hogy meteort talált.
Növeli  az  összes és az utolsó órában talált meteorok számát. A MeteorFound
változó  értékét  igazra álltja. A rögzítés ideje alatt a program nem számol
új  vágási  szintet.  Ezt az AutoCut logikai változó hamisra állításával éri
el.  Eredeti  értékét  a TMPBool őrzi, és a meteor eltűnte után innen íródik
vissza.   Ezután   a   meteor  adatait  kiírja  az  adatfájlba  a  következő
formátumban:

                              FType = Record
                                 Num : Word;
                                 Min : Byte;
                                 Sec : Byte;
                                 TSec: Byte;
                                 Value : Word;
                                 Diff: Real;
                              End;

   A  főprogramba  való  visszatéréskor  írja  ki  az  adatokat a képernyőre
(Display  eljárás;  3.  oldal).  A  ciklus  utolsó sora megvizsgálja, hogy a
program  indításakor  használtuk-e az auto paramétert. Ekkor a program a már
részletezett  Start  eljárással  elindítja az észlelést, miután az átlagolás
megtörtént.
Google
 
Web iqdepo.hu
    © Copyright 1996-2024
    iqdepo / intelligence quotient designing power - digitális kultúrmisszió 1996 óta
    All rights reserved. Minden jog fenntartva.