Jste zde

TEST - Výkonné kompaktní PLC Omron NX1P2 - 5.díl - ModbusTCP server

V 5. díle se podíváme na zprovoznění Modbus-TCP komunikace s PLC Omron NX1P2. Konkrétně si ukážeme jako v PLC zprovoznit Modbus-TCP server, který je potřeba pro přístup k PLC například z nadřazeného PC systému.

V minulém 4. díle "TEST - Výkonné kompaktní PLC Omron NX1P2 - 4.díl - úvod programování" jsme si ukázali jak si vytvořit jednoduchý prográmek pro první seznámení s PLC a s přiblížením, jak se programuje v PLC v počítačovém softwaru Sysmac Studio.

Dnes postoupíme o krok dále a přiblížím, jak si zprovoznit Modbus-TCP komunikace v režimu server (slave), tedy pro aplikaci, kdy PLC čeká na požadavek zaslaný z nadřazeného systému, například PC. V mém případě jsem pro jednoduchost pro potřeby testování použil můj oblíbený jednoduchý PC Modbus terminál OmniMBT. Samozřejmě v praxi pak může být nadřazený systém nějaký SCADA software běžící například na průmyslovém PC, HMI PC panelu či centrální nadřazené výkonnější PC (například S7-400 apod.).

Příprava programu na Modbus-TCP komunikaci

Průmyslová sběrnicový protokol Modbus-TCP využívá pro svůj běh klasickou "přenosovou cestu" ethernetu (fyzickou, síťovou a přenosovou vrstvu OSI modelu). Proto v případě PLC Omron NX1P2 pro něj musíme použít RJ-45 port pro EtherNet/IP. Neplést s podobně vypadajícím portem na EtherCAT. To je zcela jiná sběrnice, i když využívá stejný fyzický konektor RJ-45.

Již v předchozím díle "úvod programování" jsem přiblížil, kde se v Sysmac Studiu nastavují parametry EtherNet/IP rozhraní. Musíte zabrousit do záložky "Controller Setup->Built-In Ethernet/IP". Zde je pak hlavní správně nastavit IP adresu, masku a případně bránu (Gateway). Ostatní parametry mohou zůstat pro první testy standardní.

Pak již lze přistoupit k vytvoření programu. 

Naprogramování Modbus-TCP komunikace

Modbus-TCP totiž není podporována zcela standardně, ale musí se realizovat v programu. Nicméně naštěstí není nutné přímo vytvářet funkční blok Modbusu, ale lze jej zdarma získat/stáhnout ze stránek podpory společnosti Omron https://www.myomron.com/, případně je Vám zašle i Váš kontaktní obchodních českého zastoupené Omronu, když jej o to požádáte (moje osobní zkušenost).

Po stažení balíčku na Váš disk v PC a po jeho rozbalení v něm najdete nejen zdroják funkčního bloku pro Modbus-TCP pro režim server (podobně je k dispozici i balíček pro režim Modbus-TCP client) i pdf soubory popisující v anglickém jazyce, jak funkci nejlépe použít. Nicméně zde nenajdete popis, jak tu funkci načíst do "Toolbox" seznamu dostupných funkcí Sysmac Studiu.

To se musí přejít přes nabídku "Project->Library->Show Preferences" otevřít okno "Library Reference". Zde je nutné přes tlačítko "+" ("Create Reference"). Pak v otevřeném okně nalistovat na Vašem harddisků rozbalený stáhnutý Modbus balíček a v něm soubor "*.slr" soubor (zde v mém případě konkrétně soubor "MTCP_NJ.slr"), kliknout "Otevřít" a pak možná potvrdit informační okno o použitelnosti funkce (pokud Vám vyskočí). To se už v "TOOLBOX" seznamu objeví nová položka "MTCP_NJxxxx". Současně se objeví nový záznam i v okně "Library Reference". Zde je pak také možné, a podle mě i vhodné, zatrhnout položku "Include the referenced libraries, when saving the project" ("Zahrnout vložené knihovny, když se ukládá projekt").

Postup vložení nového funkčního bloku ModbusTCP v softwaru Sysmac Studio do seznamu "Toolbox" (postup od leva nahoře).

Pak už stačí jen přetáhnout do programu příslušný požadovaný Modbus blok a správně jej použít. V mém případě Modbus-TCP serveru stačí jen do programu vložit blok "MTCP_Server" a přiřadit vstupů (vývody bloku na levé straně) a výstupům (vývody na pravé straně bloku) konkrétní lokální nebo globální proměnné (podle toho zda je chcete využívat jen v této sekci programu nebo napříč celým programem PLC).

Pro správnou funkci je na vstupu bloku "START" je důležité přiřadit spouštění (Enable) bit, který danou konkrétní Modbus komunikaci aktivuje/deaktivuje (v mém případě BOOL proměnná "Start_Modbus_TCP_server"). Programové zapínání/vypínání bloku umožňuje v programu použít více různě nakonfigurovaných komunikačních bloků nebo možnost přepínání mezi režimem Server a Client podle potřeby.

Vložený funkční blok realizující Modbus-TCP komunikaci v režimu Server v PLC NX1P2.

Pak je nutné vstupu "Registers" přiřadit proměnnou typu pole slov (Array of WORDs), který definuje (namapuje) v paměti PLC místa tvořící jednotlivé Modbus "Holding Registers", tedy ty, co se čtou příkazem "0x03 Read Holding Registers" či zapisují příkazy "0x10 Write Multiple Registers". Podobně je nutné přiřadit k vstupu "Coils" proměnnou typu pole bitů (Array of BOOL) pro namapování místa v paměti PLC tvořící Modbus registry "Coils" pro jejích čtení Modbus příkazem "0x01 Read Coils" nebo zápis příkazem "0x05 Write Single Coil".

Z výstupů bloku je pak hlavně důležité odebírat "ErrorID" (číslo chyby komunikace), tedy informaci o stavu Modbus komunikace.

 

Testovací program funkce Modbus-TCP Server při jeho běhu v PLC NX1P2 s on-line zobrazením stavů programu v softwaru Sysmac Studio.

Testování Modbus-TCP

Při testování jsem použil jako ModbusTCP client terminál na PC, kterým jsem se připojil na dané PC NX1P2. Funguje jak zápis dat do Modbus registrů PLC, tedy v mém případě do pole "ModbusTCP_registers", pomocí Modbus příkazu "0x10 Write Multiple Registers",  tak i čtení jeho hodnot "0x03 Read Holding Registers". Lze tedy přečíst 1 až maximální počet slov WORD, na které je v PLC vytvořené pole "ModbusTCP_registers" nastaveno. Tedy v mém případě 1 až 10.

 

Hodnoty nastavené/uložené v PLC v proměnné "ModbusTCP_registers" (obr. vlevo) byly úspěšně načteny do PC Modbus terminálu (obr. vpravo).

 

Hodnoty odeslané z PC Modbus terminálu (obr. vlevo) se úspěšně přenesly přes Ethernet a uložily v paměti PLC v proměnné "ModbusTCP_registers" (obr. vpravo).

V programu PLC pak samozřejmě lze obsah pole "ModbusTCP_registers" dále libovolně zpracovávat, například v mém testovacím prográmku jsem vyseparoval hodnoty z pole do jednotlivých proměnných, se kterými se pak lépe dále jednotlivě pracuje či se lépe dále adresují pro zobrazování např. na HMI. V mém případě pak například první hodnotu Modbus registru, tedy první v poli "ModbusTCP_registers" (adresovaná jako ModbusTCP_registers[0]), kopíruji funkcí "MOVE" do proměnné "ModbusTCP_hodnota1", druhou hodnotu v poli "ModbusTCP_registers" (adresovaná jako ModbusTCP_registers[1]), kopíruji do proměnné "ModbusTCP_hodnota2" atd.

Hodnoty proměnných, včetně proměnných typu pole, je možné si během sledování funkce PLC v programu Sysmac Studio prohlížet v reálném čase v oknech "Watch". Má to však jeden malý háček. Aby proměnné bylo možné vložit do okna "Watch" je nutné, aby byly definované jako globální (ne jako lokální proměnné).

Hodnoty globálních proměnných programu v PLC, lze v Sysmac Studiu v on-line režimu prohlížet v reálném čase v oknech "Watch".

Závěr 5. dílu

Dnes jsem se pokusil krátce představit, jak zprovoznit Modbus-TCP komunikace v režimu Server u  PLC Omron řady NX1P2 v programu Sysmac Studio. V příštím 6. díle podíváme prakticky na zprovoznění komunikace EtherCAT se zařízením, které není z nabídky Omron. V tomto režimu je několik malých "špeků", které nejsou na první pohled hned zřejmé...

Odkazy:

Přílohy: 
PřílohaVelikost
PDF icon mtcpnjservere.pdf204.35 KB
Package icon modbustcp.zip1.72 MB
Hodnocení článku: