26.3.2024

Komunikácia - roboty Fanuc - Druhá časť

V prvej časti tohto blogu som sa zaoberal popisom priemyselného robota Fanuc LR-Mate 200iD s kontrolérom R30iBPlus Mate a jeho komunikačnými možnosťami. Tento robot nám zapožičal náš OEM partner, ktorý potreboval navrhnúť optimálny spôsob výmeny údajov s aplikačným serverom reálneho času D2000.

 

Blog končil vymenovaním komunikačných možností robota Fanuc LR-Mate 200iD. Z ponúkaných možností boli najrýchlejšie použiteľné protokoly Modbus TCP a Ethernet/IP, cenovo najvýhodnejšie vychádzala komunikácia cez User Socket Messaging (naprogramovanie si vlastného protokolu postaveného na TCP/IP).

 

Ktorú možnosť sme odporučili ako optimálnu?

 

Odpoveď znie – žiadnu z existujúcich. Prečo? Vymenovaný zoznam nepokrýva všetky komunikačné možnosti robotov Fanuc.

 

Existuje proprietárny protokol SRTP (Service Request Transport Protocol). Wikipédia udáva, že tento protokol vyvinula firma GE Fanuc Intelligent Platforms (dnes je súčasťou GE Automation & Controls), ktorá sa predtým volala GE Fanuc. GE Fanuc vznikla v r. 1986 ako joint venture firiem General Electric a FANUC. Firma GE Fanuc vyvinula najskôr proprietárny sériový komunikačný protokol SNP (Series 90 Protocol), ktorý používala na komunikáciu so svojimi PLC Series 90. Neskôr, po modernizácii PLC a po osadení Ethernet portami, tento protokol upravila a vznikla varianta postavená nad TCP protokolom, ktorá bola nazvaná SRTP.

 

Wikipédia zároveň udáva, že tento protokol je používaný pre komunikáciu s takmer všetkými zariadeniami priemyselnej automatizácie firmy GE, ktoré sú vybavené Ethernet portom.

 

Prvým testom, ktorý sme realizovali, bolo pripojenie sa na TCP port 18245 kontroléra R30iBPlus Mate. Príjemným prekvapením bolo, že TCP spojenie sa podarilo nadviazať (napriek tomu, že robot nemal aktivované žiadne špeciálne komunikačné možnosti). Povzbudení týmto faktom sme sa pustili do implementácie protokolu.

 

Protokol SRTP je proprietárny a na webe sa dajú nájsť iba útržky neoficiálnych informácií. Sčasti pomôže popis protokolu SNP, z ktorého SRTP vychádza, sčasti rôzne fóra.

 

Jedná sa o štandardný request-response protokol podobný Modbus TCP. Ponúka rôzne služby, nás zaujímali iba „read system memory“ a „write system memory“.

 

Pri špecifikácii čítanej a zapisovanej pamäte sa najskôr udáva typ pamäte (Memory Area), potom 16-bitová adresa prvého adresovaného elementu (číslo 1-65535) a nakoniec počet elementov.

Niektoré typy pamäte umožňujú pristupovať k elementom po bitoch aj po bajtoch. Implementovali sme prácu s nasledovnými typmi pamäte:

MemoryArea 

Popis typu pamäte a veľkosti elementov

%I

InputBit (Discrete inputs, prístup po 1 bite)

%IB

InputByte  (Discrete inputs, prístup po 1 byte)

%Q

OutputBit (Discrete outputs, prístup po 1 bite)

%QB

OutputByte (Discrete outputs, prístup po 1 byte)

%T

TemporaryBit (Temporary references, prístup po 1 bite)

%TB

TemporaryByte (Temporary references, prístup po 1 byte)

%M

MemoryBit (Internal references, prístup po 1 bite)

%MB

MemoryByte (Internal references, prístup po 1 byte)

%S

SBit (System status references, prístup po 1 bite)

%SSB

SByte (System status references, prístup po 1 byte)

%SA

SABit (System status references A, prístup po 1 bite)

%SAB

SAByte (System status references A, prístup po 1 byte)

%SB

SBBit (System status references B, prístup po 1 bite)

%SBB

SBByte (System status references B, prístup po 1 byte)

%SC

SCBit (System status references C, prístup po 1 bite)

%SCB

SCByte (System status references C, prístup po 1 byte)

%G

GlobalBit (Discrete globals, prístup po 1 bite)

%GB

GlobalByte (Discrete globals, prístup po 1 byte)

%AI

AnalogInput (Analog input registers, prístup po 2 bytoch)

%AQ

AnalogInput (Analog output registers, prístup po 2 bytoch)

%R

Registers (System register reference, prístup po 2 bytoch)

%L

LocalSubblock (Local registers, prístup po 2 bytoch)

%P

ProgramBlockData (Program registers, prístup po 2 bytoch)

 

Okrem týchto natívnych typov pamäte sme podporili typ pamäte %IGNORE (meraný bod bude ignorovaný – slúži na vyradenie meraného bodu z komunikácie bez potreby jeho vymazania) a dva kompozitné typy, ktoré chápu 2 za sebou idúce registre ako 32-bitové číslo (celé alebo floating point):

 

MemoryArea 

Popis typu pamäte a veľkosti elementov

%RD

Registers Double (System register reference, 2 registre ako double word)

%RF

RegistersFloat (System register reference, 2 registre ako float)

 

Pre každý celočíselný typ sme navyše podporili interpretáciu ako číslo so znamienkom aj bez neho (signed/unsigned).

Pri testovaní voči kontroléru R30iBPlus Mate sme zistili, že vieme čítať hodnoty z pamätí nasledovných typov: %I, %IB, %Q, %QB, %M, %MB, %G, %GB, %AI, %AQ, %R (a teda aj %RD, %RF)

 

Overili sme čítanie z pamäte typu Registre (%R) – načítané hodnoty korešpondovali s dátami, ktoré zobrazoval teach pendant.

Implementovali sme aj zápis do horeuvedených typov pamäte. Pri testovaní sme zistili, že R30iBPlus Mate síce reportuje úspešný zápis, ale iba pri pamäti typu Registre došlo k zmene hodnôt. Pre ostatné typy pamäte nasledovné čítanie vrátilo pôvodné hodnoty. Toto ešte môže súvisieť s tým, že kontrolér, s ktorým sme komunikovali, nemal osadené žiadne vstupno-výstupné karty. Uvidíme, ako dopadne ďalšie testovanie u OEM partnera.

 

Ďalšou užitočnou vlastnosťou, ktorú sme podporili, je vyčítavanie viacerých elementov do položiek štruktúrovanej premennej v meraných bodoch, ktoré majú nakonfigurovaný Cieľový stĺpec štruktúry. Táto vlastnosť systému D2000 umožňuje – pokiaľ je v konkrétnom protokole podporená - načítanie súvislého intervalu elementov do stĺpca štruktúrovanej premennej s použitím jediného meraného bodu. To šetrí jednak tagy (a teda aj peniaze zákazníkov) a jednak čas potrebný na nakomunikovanie väčšieho množstva elementov.

 

Okrem typov pamäte uvedených v tabuľke vyššie obsahuje robot ďalšie typy objektov. Napríklad Robot Inputs (RI – binárne vstupy umiestnené na ramene), Robot Outputs (RO – reléové výstupy ramena), Position Registers (PR – sada 20 zapamätaných pozícií) alebo Current Position (POS – aktuálna pozícia ramena). Takéto typy objektov sme nevedeli stotožniť s nijakým typom pamäte. Takže nebudeme vedieť tieto dôležité informácie vyčítavať?

 

Odpoveď sme našli v dokumentácii. Príručka s dlhým názvom FANUC Robot series R-J3/R-J3iB/R-30iA CONTROLLER CIMPLICITY HMI for Robots OPERATOR’S MANUAL (B-82604EN/01) popisujúca komunikáciu robotov s vizualizačným systémom GE CIMPLICITY obsahovala presne tie informácie, ktoré sme potrebovali.

 

Veľa z typov objektov je priamo mapovaných na konkrétne typy pamäte. Napríklad Robot Outputs sú mapované na binárne vstupy (RO[1] na %I5001, RO[2] na %I5002 až RO[8] na %I5002). Keďže tieto mapovania sú dôležité, skopírovali sme ich aj do dokumentácie.

 

Registre robota (R), pozičné registre (PR) a aktuálna pozícia (POS) sú voliteľne dostupné. Čo to znamená? Robot obsahuje systémovú premennú $SNPX_ASG (v skutočnosti je to pole štruktúr), pomocou ktorej je možné namapovať tieto typy objektov do pamäte typu Registre (%R). Okrem zadania pozície sa konfiguruje, či sa objekty mapujú na jeden register (ako 16-bitové číslo so znamienkom – %R) alebo na dva register (buď ako 32-bitové číslo so znamienkom - %RD, alebo ako 32-bitové reálne číslo - %RF). Zároveň sa im zadáva multiplikátor prevodu – konštanta, ktorou sa pri prevode násobia.

 

Podobne sa mapujú aj iné typy objektov, napr. SR (string registers), F (flags), ALM (história alarmov), PRG (stav programu), textové komentáre k jednotlivým objektom, stavy simulácie výstupov robota a systémové premenné.

 

Pri praktickom skúšaní sme otestovali čítanie a zápis Robot Outputs (zmeny sa prejavili aj počuteľným cvakaním relé a zmenou hodnôt na teach pendante), čítanie a zápis Position Registers (ak boli zobrazené na teach pendante, bolo nutné zo zobrazenia odísť a znovu doň vojsť, aby sa zobrazili zmenené hodnoty) a čítanie Current Position (zápis nefungoval možno z bezpečnostných dôvodov).

 

Záver

Ako sa roboty stávajú čím ďalej tým dôležitejšou súčasťou priemyslu – aj v rámci Industry 4.0 – rastie potreba zberu výrobných aj diagnostických informácií z nich. Aplikačný server reálneho času D2000 dokáže svojimi vlastnosťami komplexne pokryť aj takúto funkcionalitu – od zberu dát, cez ich ďalšie automatické spracovanie, vyhodnocovanie, archiváciu a alarmovanie až po tvorbu reportov.

 

15.6.2020, Ing. Peter Humaj, www.ipesoft.com

Iné blogy