Jste zde

PLC ABB PM564 – jak naprogramovat ethernetovou komunikaci

Moderní PLC již stále častěji obsahují Ethernetové rozhraní. To se často dá použít pro nahrání programu a ladění PLC z PC. Také je však velmi zajímavé jej využít v samotném uživatelském programu například pro přenos dat (komunikaci) s jiným vzdáleným PLC připojeným na LAN síti. V případě PLC ABB jsou sice k dispozici příkazy (funkční bloky), ale přesto je zde několik úskalí. O tom stručně v tomto článku...

V dříve zveřejněných článcích PLC ABB – nejlevnější řada AC500-eCo, TEST - PLC ABB PM564 – 1.díl – popis hadwaru a TEST - PLC ABB PM564 – 2.díl – programování jste se mohli blíže seznámit s možnostmi nižší řady PLC ABB AC500-eCo.

V tomto článku jsem se pak rozhodl k těmto PLC ještě jednou krátce vrátit a zkráceně přiblížit, jak se naprogramuje a zprovozní ethernetová komunikace z pohledu jejího využití samotným programem PLC (například pro přenos dat s jiným PLC). Konkrétně jde o zprovoznění UDP komunikace, která je v rámci ethernetu nejjednodušší možnost vzájemného přenosu dat. I když je to dobře podporováno ABB prostřednictvím knihoven příkazů, není pro nováčka zprovoznění přenosu zrovna triviální záležitost a pokud začínáte "s čistým štítem" chvilku to trvá, než se zde u PLC ABB zorientujete, co je nutné provést.

Běžící PLC ABB typ PM564-T-ETH obsahuje ethernetové rozhraní s klasickým konektorem RJ-45, které slouží nejen pro nahrání programu a ladění PLC, ale i pro UDP komunikaci mezi libovolnými zařízeními (např. dalšími PLC).

Co je nutné nastavit v ABB Configuratoru ?

Pro programové zprovoznění UDP ethernetové komunikace je nejdříve nutné zadat do konfigurace PLC, že ji hodláme použít. Samo o sobě to totiž v konfiguračním souboru PLC není obsaženo a následně tedy i PLC (v mém případě typ PM564) komunikovat prostřednictvím UDP neumí. Dále uvedené příkazy v programu vytvořeném v CoDeSysu pak sice jsou přeloženy bez chyby a i bez protestů CoDeSysu nahrány do PLC bez jakýchkoliv problémů, ale komunikace neběhá a funkční bloky realizující vysílání či příjem dat jen vykazují komunikační chybu. To je způsobeno právě chybějícím zavedením UDP komunikace v ABB Configuratoru.

Okno konfigurační utility ABB Configurator pro PLC typ PM564, které obsahuje ethernetové rozhraní s konektorem RJ-45
(vlevo ve stromě je již stav po vložení UDP komunikace do konfigurace PLC).

Zprovoznění UDP komunikace v PLC s ethernetem (konektorem RJ-45) se provádí kliknutím pravou packou myši na záložku stromu ABB Configuratoru popisující Ethernet (v mém případě konkrétně položka "Add Device"). Následně se zvolí položka a zobrazí se okno výběru dostupných ethernetových komunikačních rozhraní, které lze zavést:

Okno výběru zavedení ethernetového komunikačního režimu pro program v CoDeSysu (zde konkrétně příklad PLC typ PM564).

V mém případě bylo možné realizovat buď MODBUS komunikaci pomocí ethernetu (položka "MODBUS on TCP"), či UDP přenos dat bez hlavičky (druhá položka "UDP (no AC31 header)") a s hlavičkou (poslední třetí položka "UDP data exchange"). Zde záleží na tom, zda chcete identifikační hlavičku komunikačního rámce vidět či "ručně" zadávat v programu jako součást přijímaného či vysílaného datového souboru paketu či zda má být skryta. Podle toho jakou UDP položku vyberete, podle toho je nutné i dále použít příslušný příkaz v CoDeSys. UDP s hlavničkou a bez hlavičky má v ABB knihovně rozdílné příkazy (funkční bloky), které se liší.

Po výběru již stačí kliknout na tlačítko "Add Device" a zavedená konfigurace se objeví ve stromě. Pokud na ni kliknete, zobrazí se pak některé parametry pro nastavení UDP režimu, jako například nastavení UDP portu (kanálu), velikost vysílacího a přijímacího bufferu aj. IP adresa komunikace se pak nezadává zde, ale jako vstupní hodnota příkazu (funkčního bloku) v CoDeSysu.

Nastavitelné parametry UDP rozhraní v režimu "UDP (no AC31 header)".

Nastavitelné parametry UDP rozhraní v režimu "UDP data exchange".

Naprogramování UDP komunikace v CoDeSysu

Já konkrétně pro programování použil režim CFC (Continuous Function Chart), ale je možné využít i další režimy jako například LD (Ladder) ši ST (Structure Text):

Příklad funkčního bloku pro UDP komunikaci: vyslání dat v režimu s hlavičkou (vlevo) a příjem dat v režimu bez hlavičky (vpravo).

V ABB knihovnách jsou k dispozici funkční bloky pro realizaci UDP příjmu a vyslání dat, vypsání stavových informací přenosu a také bloky převodu klasického formátu IP adresy (např. 192.168.1.1). Ta se v programu definuje jako textový řetězec STRING, na HEXA hodnotu, která je vstupní či výstupním parametrem IP adresy bloků vysílání či příjmu.

Příklad zadání IP adresy UDP komunikace jako STRING řetězec, který je však nutné příkazem IP_ADR_STRING_TO_DWORD převést na HEXA hodnotu pro vstup do příkazů příjmu a vysílání dat.

Konkrétně pro realizaci UDP komunikace jde o funkční bloky:

  • ETH_UDP_STD_SEND - Vysílání dat UDP přenosem v režimu bez hlavičky
  • ETH_UDP_SEND - vysílání dat UDP přenosem v režimu s hlavičkou
  • ETH_UDP_STD_REC - příjem dat UDP přenosem v režimu bez hlavičky
  • ETH_UDP_STD_REC - příjem dat UDP přenosem v režimu s hlavičkou
  • ETH_OWN_IP_INFO - zjištění aktuálního nastavení komunikačního rozhraní

 

Ukázka zapojení funkčních bloků pro vyslání UDP komunikace:

 

Ukázka zapojení funkčních bloků pro příjem UDP komunikace:

Závěr...

Ethernetová komunikace mezi PLC po LAN síti je velmi užitečná a z pohledu síťové komunikace velmi efektivní. Její správné zprovoznění však obvykle bývá o něco složitější než např. v případě sériové komunikace RS-232. U PLC ABB to díky knihovně příkazů není na první pohled moc složité, ale je nutné vědět některé "fígle", které bohužel v manuálu či HELPu nejsou uvedeny nebo zdůrazněny...

Vytvořil na základě vlastních zkušeností s produktem: Antonín Vojáček

DOWNLOAD & Odkazy

Hodnocení článku: