Miért van szükség determinisztikus, elosztott be- és kimenetekre?
Sokcsatornás vagy nagy fizikai kiterjedésű, valós idejű rendszerek tervezésekor gyakran felmerül a be-kimeneti (I/O) bővítés igénye. A bővítéssel továbbfejleszthetjük vagy elosztott méréssel egészíthetjük ki eredeti alkalmazásunkat. Ugyanakkor a vezérlőrendszer determinisztikus működtetéséhez szükséges szinkronizálórendszer kialakítása hamar összetetté és nehezen skálázhatóvá válhat. Az ilyen jellegű alkalmazások leegyszerűsíthetők már létező, valós idejű ethernet I/O technológia (például EtherNet/IP, EtherCAT vagy PROFINET) segítségével, így érdemes megfontolni az elsődleges vezérlővel determinisztikus kapcsolatot fenntartó, valós idejű, távoli be- és kimeneti egységek hálózatának használatát.
EtherCAT RIO – vezérelt keret EtherCAT-hez
Az EtherCAT RIO bővítőkeret EtherCAT I/O-képességgel ruházza fel a CompactRIO, PXI vagy egyéb ipari vezérlőrendszert. A nyolc bővítőhelyes, „C" szériás modulokhoz tervezett, masszív keret az EtherCAT elnevezésű nyílt, valós idejű ethernetprotokollal nyújt determinisztikus kapcsolatot. Időzítéskritikus alkalmazásunkat több, az EtherCAT vezérlő után láncba kapcsolt EtherCAT RIO bővítőkerettel is kiegészíthetjük. Mindemellett a könnyen kezelhető, szoftveres beállítási felület és LabVIEW programozási környezet a valós idejű EtherCAT I/O-egység rendszerbe illesztését rendkívül egyszerűvé teszi.
Miért van szükség FPGA-alapú intelligenciára?
A LabVIEW Real-Time és a LabVIEW FPGA-modullal EtherCAT RIO vezérelt keret egyaránt programozható. A LabVIEW Real-Time segítségével NI Scan módban programozhatunk, célirányosan és könnyedén hajthatunk végre be-kimeneti bővítéseket. NI Scan módban az EtherCAT bővítőkeret fizikai I/O-értékeit egyszerűen a programba illeszthető („drag-and-drop") I/O-változókkal érhetjük el, a rendszer paramétereit figyelemmel kísérhetjük egy valós idejű tesztpanelen, továbbá magas szintű hibakeresést is végezhetünk. Akkor miért kellene FPGA-alapú intelligenciával felruházni az EtherCAT I/O-t?
EtherCAT RIO vezérelt keret FPGA-alapú programozásával az alkalmazás testreszabhatósága és rugalmassága jelentősen megnő. A döntési képesség beépítésével lecsökkenthetjük a válaszidőt, és központi kommunikáció nélkül, gyorsan reagálhatunk a környezeti eseményekre. Az intelligens eszköz a jelfeldolgozás egy részét is elvégezheti a központi vezérlő helyett, képes lehet a jel módosítására vagy elemzésére, illetve akár egyedi trigger-funkció megvalósítására is. Sőt, a LabVIEW FPGA használatával az adott terület szakértői VHDL-programozás nélkül is gyorsan előállíthatják prototípusaikat, kivitelezhetik ötleteiket.
Eltérések a LabVIEW FPGA-programozási API-ban
Ha bírunk LabVIEW FPGA-programozási ismeretekkel a CompactRIO-hoz és az NI más, konfigurálható be-kimeneti platformjához, észrevehetünk néhány különbséget a helyi FPGA és az EtherCAT RIO FPGA programozásában. Az NI a LabVIEW 2009-ben vezette be a felhasználói I/O-változókat a vezérelt FPGA által szolgáltatott adatok és a vezérlő valós idejű feldolgozása közötti adatcsere szinkronizálására. A vezérlő valós idejű programja és a bővítőkeret FPGA-programkódja közötti adatcsere kizárólag ezekkel a felhasználói I/O-változókkal történhet.
Ha a LabVIEW projektablakban az EtherCAT RIO vezérelt egységhez hozzárendeltük az FPGA céleszközt, akkor felhasználói I/O-változót az EtherCAT RIO eszközre jobb egérgombbal kattintva az „Add»User-Defined Variable" menüpontban hozhatunk létre. A változó nevét, adattípusát, valamint az adatátvitel irányát (a vezérlőtől az FPGA felé vagy fordítva) a „Properties" ablakban állíthatjuk be. Fontos, hogy a vezérelt egység FPGA-módjában létrehozható felhasználói I/O-változók száma korlátozott. Az EtherCAT RIO „Scan" módú I/O-változók és FPGA-módú felhasználói I/O-változók esetén mindösszesen 512 bájt bemeneti és ugyanennyi kimeneti adat tárolható. Egy lehetséges példa: 4 db, 32 csatornás modult „Scan" módban használva, csatornánként 32 bites adatot feltételezve a „Scan" mód I/O-változói összesen 256 bájt bemeneti adatterületet használnak. A fennmaradó 256 bájt bemeneti adatterületen létrehozhatunk például legfeljebb 64 db, ugyancsak 32 bites felhasználói I/O-változót FPGA-módban.
Különleges FPGA-funkciók, felhasználási példák
A felhasználói I/O-változók minden olvasási ciklusban egy-egy adatot visznek át a vezérlő felé/felől, így leginkább az EtherCAT RIO bővítőkeretben már feldolgozott adatok átvitelére célszerű őket használni. Lehetséges felhasználásra láthatunk példát az NIWeek 2009 egyik előadásán, ahol az előadók 6, EtherCAT RIO vezérelt keret felhasználásával, csőharangokkal szólaltattak meg egy dallamot. Az egyes csövek megszólalását a vezérlő valós idejű programja időzítette, de közben a vezérelt keretek FPGA-i egy-egy mikrofonnal rögzítették a hanghullámot, és gyors Fourier-transzformációs (FFT) elemzéssel meghatározták az egyes csövek frekvenciájához tartozó hangerőt. A vezérelt FPGA ezt követően az egyes csövek hangerejével összhangban, impulzusszélesség-modulációval (PWM) szabályozta egy LED-sor fényerősségét. A LED-ek így akkor is reagálnának bármilyen, a csövek frekvenciáján megszólaló, megfelelő erősségű hangra, ha a valós idejű program futása leáll, hiszen a feldolgozás az EtherCAT RIO bővítőkeret FPGA-jában zajlik.
A LabVIEW FPGA-függvénykönyvtárainak használata mellett a vezérelt keret számos beépített be-kimeneti jelet biztosít a további testreszabásra és szinkronizálásra. Például, az EtherCAT State segítségével a 7 EtherCAT-állapot mindegyikéhez egy-egy végrehajtandó FPGA-programrészlet rendelhető. Így, ha a vezérlővel a kapcsolat megszakad, az EtherCAT RIO bővítőkeret belép egy biztonsági működési módba, ahol az FPGA-progamkódban meghatározott biztonsági működési feladatokat hajt végre. További jól használható jelek az ún. virtuális bemeneti és kimeneti pontok. Ez a két időzítőjel minden egyes vezérelt eszköznél pontosan jelzi, mikor frissíti az adott vezérelt modul a be- és kimeneteit az adott olvasási ciklusban. Az időzítőjelek felfutó éle felhasználható több EtherCAT RIO bővítőkeret FPGA-programkódjának szinkronizálására. Az NI Industrial Communications for EtherCAT nevű eszközmeghajtó több fejlett FPGA-funkciót bemutató LabVIEW-példát is bemutat, úgymint NI Scan Engine szinkronizáció, különleges digitális jelek, valamint aszinkron felül-mintavételezés.
Összefoglalás
Determinisztikus működésű, elosztott be-kimeneti egység, például EtherCAT RIO bővítőkeret használatával biztosítható a valós idejű alkalmazásoknál szükséges pontos időzítés és szinkronizáció. Emellett az EtherCAT RIO vezérelt egységeket hardverszintű FPGA-programkóddal kiegészítve feldolgozási feladatokat vehetünk át a vezérlőtől, valamint a végpontban meghozott intelligens döntésekkel csökkenthetjük a rendszer válaszidejét.