26.3.2024

Komunikácia so zariadením FAG SmartCheck

Asi pred týždňom som dostal do ruky zariadenie, o ktorom som ani len netušil, na čo slúži. Na prvý pohľad by bol problém to zistiť aj podľa obrázku:

Obrázok 1 - Zariadenie FAG SmartCheck

Po krátkom preskúmaní a googlení som zistil, že ide o moderné a inovatívne zariadenie od spoločnosti Schaeffler, slúžiace na nepretržité monitorovanie rotačných strojov, napríklad motorov, čerpadiel, ventilátorov, prevodoviek, kompresorov atď. Tento senzor dokáže včas zistiť blížiacu sa chybu stroja, a to na základe monitorovania jeho vibrácií a voliteľne otáčok. Senzor je pomerne inteligentný, nakoľko je možné ho prepnúť do módu „učenia sa“. Ide o mód, v ktorom nazbiera vzorky z monitorovaného zariadenia (štandardne 1000 hodnôt), z ktorých vytvorí charakteristiku zariadenia. Na základe tejto charakteristiky bude senzor generovať alarm, ak sa správanie zariadenia začne odlišovať od hodnôt nazbieraných počas módu „učenia sa“.

K zariadeniu je možné pripojiť aj niekoľko analógových a digitálnych vstupov a výstupov – napríklad je možné merať otáčky motora (čo vo fáze učenia umožní zohľadniť pri akých otáčkach boli namerané konkrétne hodnoty vibrácií) alebo vyviesť informáciu o alarme ako analógový signál 4-20 mA (napr. pre vyvedenie do PLC).

Aké sú komunikačné možnosti?

Výrobca ponúka SmartWeb ako webovú aplikáciu s intuitívnym používateľským rozhraním, kde je možné „naživo“ sledovať dáta, ktoré zariadenie zbiera. Dáta sú obnovované približne každých 5 sekúnd.

Obrázok 2 - Webová aplikácia pre FAG SmartCheck. Živé dáta sú v dolnej časti vpravo

Ďalej výrobca integroval podporu pre PLC značky Mitsubishi (System Q a L series). FAG implementuje klientsku časť protokolu SLMP, ktorým dokáže čítať/zapisovať hodnoty z /do nakonfigurovaných adries PLC. Tento spôsob komunikácie by si vyžadoval implementáciu serverovej časti SLMP protokolu v D2000, čo by bolo pomerne náročné (a zrejme by to nebolo znovupoužiteľné nikde inde). Alternatívou by bolo zakúpenie a inštalácia niekoľkých PLC Mitsubishi u zákazníka – opäť drahé aj časovo náročné.

Takže ako dostať dáta do D2000?

Keďže sme tieto dáta potrebovali dostať do D2000, museli sme ich získavať inak ako pomocou webovej aplikácie. Za týmto účelom bolo potrebné vytvoriť komunikačný protokol pre komunikáciu so zariadením FAG SmartCheck. Komunikácia sa nadväzuje voči IP adrese zariadenia a prebieha pomocou XML Soap správ (Simple Object Access Protocol) na princípe zasielania http requestov na zariadenie a prijímania http odpovedí zo zariadenia. Na komunikáciu pre získanie meraných dát sú potrebné 2 typy Soap správ:

Prvý typ správy slúži na prihlásenie používateľa do zariadenia. Iba prihlásený používateľ môže čítať dáta zbierané prístrojom FAG SmartCheck. Ako odpoveď na túto správu zariadenie odošle odpoveď o úspešnosti prihlásenia používateľa.

Druhý typ správy slúži na „vypýtanie“ dát, ktoré zariadenie zbiera v reálnom čase. V tejto správe sa taktiež overuje správnosť prihlasovacích údajov používateľa, aby dáta nemohol čítať len tak niekto iný. Na túto správu odošle zariadenie Soap odpoveď, z ktoej je možné vyčítať namerané hodnoty. Na záver ostáva už len odpoveď preložiť do ľudskej reči (rozparsovať XML Soap) a získané dáta zobraziť koncovému používateľovi.

Implementácia protokolu v D2000

Vzhľadom k povahe protokolu sme sa rozhodli implementovať komunikáciu v Jave ako multithreadový serverovský event. Na komunikáciu s každým zariadením je vyhradený jeden komunikačný thread.

Aby mohol konfigurátor D2000 rozbehnúť takúto komunikáciu, musí naplniť konfiguračnú štruktúru potrebnými údajmi:

  • IP adresa zariadenia
  • používateľské meno
  • heslo na prihlásenie do zariadenia
  • perióda (v sekundách), s akou majú byť dáta obnovované

Ako poslednú vec používateľ aktivuje komunikáciu – nastavením hodnoty True do stĺpca Active.

Obrázok 3 -Konfigurácia troch komunikácií pomocou štruktúrovanej premennej

Kde ale sú namerané dáta? Tieto sme uložili do oddelenej štruktúrovanej premennej. Prečo? Je predpoklad, že v budúcnosti budeme pre niektoré merače potrebovať vyčítavať aj sekundárne dáta (údaje o alarmoch), pre ktoré budeme potrebovať ďalšiu štruktúrovanú premennú. Preto sme oddelili konfiguráciu od nameraných dát, aby sme mohli obidve štruktúry flexibilne rozširovať bez „miešania“ stĺpcov.

V štruktúre s nameranými dátami môže používateľ sledovať vibrácie, teplotu, napätie, zaťaženie a otáčky. Stĺpec Status udáva stav komunikácie - či je zariadenie pripojené, odpojené, alebo s ním nie je možné komunikovať z dôvodu nesprávnych prihlasovacích údajov, resp. z dôvodu nesprávnej IP adresy zariadenia.

Čo sa stane, ak užívateľ zväčší počet riadkov konfiguračnej štruktúry a pridá nové zariadenie? Mysleli sme aj na to – po pridaní nového zariadenia v konfiguračnej štruktúre sa automaticky redimenzuje štruktúra s nameranými dátami – presne na toľko riadkov, koľko riadkov obsahuje konfiguračná štruktúra.

Obrázok 4 - hodnoty zistené z komunikácií

Záver

Komunikácia so zariadením FAG SmartCheck je funkčná a je odolná voči výpadkom zariadenia. Momentálne sa čaká na montáž FAG snímačov u zákazníka, aby sa mohla komunikácia plošne nasadiť na niekoľko desiatok snímačov.

Jednu výhodu implementácie komunikácie v Java evente sme nespomenuli – kvôli nasadeniu nie je nutné aktualizovať D2000 na najnovšiu verziu (ako by to bolo v prípade protokolu implementovaného v rámci KOM procesu). Takže komunikačný event je možné nasadiť na ľubovoľnú podporovanú verziu D2000.

Keďže som študent a s takýmto projektom (na ktorom som pracoval úplne sám) som sa stretol prvý krát, bolo náročné začať a zorientovať sa najmä v prepojení D2000 s jazykom Java. Nakoľko som v takýchto veciach nový, narazil som na niekoľko problémov a preto by som sa rád poďakoval kolegovi Marekovi za pomoc s rozbehaním komunikácie v Jave, kolegovi Tomášovi za nápad komunikácie pomocou multithreadingu, no v neposlednom rade aj kolegovi Peťovi, ktorého som na dennom poriadku otravoval síce maličkosťami, no vždy mi pomohol a nasmeroval na správny smer.

Iné blogy