Nastavení Modbus slave (serverového) zařízení

Doposud jsme v tutoriálech používali kontroléry Unipi jako master zařízení, tj. veškeré stahování či nahrávání dat do Modbus slave zařízení (rozšiřující moduly, elektroměry apod) byly iniciovány kontrolérem. V tomto tutoriálu si ukážeme, jak PLC Unipi nastavit jako Modbus server, či (při použití odlišné terminologie) jako Modbus slave.

Patron
Neuron
Gate
Unipi 1.1
Axon

Prvním krokem je rozhodnutí, jaký typ fyzické vrstvy budeme používat. U PLC Unipi se spuštěným Mervis IDE máme na výběr buď RS485 (protokol Modbus RTU), případně ethernet (protokol Modbus TCP). Tato volba je založena na zbytku existující infrastruktury, a na možnostech zařízení, která mají s PLC komunikovat.

Fyzická vrstva RS485 je typicky limitovaná svou max. rychlostí (115200 bps) a povahou poloduplexní komunikace, která rychlost snižuje ještě více. Na druhou stranu je vrstva RS485 snadná na implementaci a stále jde na poli průmyslové automatizace o velmi populární volbu.

K nastavení komunikace mezi master a slave je nutné používat nějakou formu adresace. V protokolu Modbus RTU musí mít každé slave zařízení unikátní identifikaci, či adresu, která může být v rozsahu 0-255.

V síti Modbus RTU může jako master fungovat pouze jedno zařízení. Mervis IDE proto nedovolí vytvořit master i slave zařízení na jednom portu RS485. Zároveň ale nezobrazí varování, pokud nastavíte master zařízení na síti, ve které je master již přítomen.

Fyzická vrstva Ethernetu umožňuje připojit výrazně více zařízení, než RS485. Zároveň zde neexistuje žádný praktický limit přenosové rychlosti či propustnosti. S protokolem Modbus TCP rovněž nejste omezeni pouze na jedno master zařízení na síť.

V Modbus TCP probíhá adresování skrze IP adresu a port. Výchozím portem je port 502.

V tomto tutoriálu budeme používat jednotku Unipi Neuron L503, která je vybavena dvěma porty RS485. Začněme s běžným projektem v plném módu, ve kterém máme připojené PLC s nastaveným Autogenem, a jeden FBD program. Ujistěte se, že kompilace i nahrání sestavy fungují bez problémů. Váš pracovní prostor by měl vypadat následovně:

Nyní je třeba přidat kanál serveru. V levém panelu klikněte pravým tlačítkem na PLC a v kontextovém menu klikněte na Přidat kanál serveru.

Doposud jsme přidávali kanál, nikoliv kanál serveru. Kanál je označení pro komunikaci iniciovanou kontrolérem Unipi. Kanál serveru je oproti tomu komunikace řízená jiným zařízením, kterému PLC odpovídá.

Pod PLC se objeví položka server-channel. Dvojitě na ni klikněte a v panelu Vlastnosti změňte jeho název na něco více popisného. Kanál bude sloužit pro komunikaci Modbus RTU v režimu slave, nazvěme jej proto třeba ModbusRTU-slave.

Na stejném panelu změňte Protokol na ModbusServer.

Linkový protokol je již přednastaven na Serial, nicméně stále je třeba nastavit správný port.

Kanál je nyní nakonfigurovaný, je na čase nastavit na něm zařízení. V levém panelu klikněte pravým tlačítkem na název kanálu, a v kontextovém menu klikněte na Přidat zařízení serveru.

Pod kanálem ModbusRTU-slave se objeví nové zařízení. Dvojitě na něj klikněte a v panelu Vlastnosti změňte Adresu zařízení na něco více popisného. Můžeme změnit i jméno, na tomto kanálu ale budeme mít pouze jedno zařízení.

Nyní máme připravené vše potřebné k tomu, abychom mohli ostatním zařízením povolit číst a zapisovat proměnné na naše PLC skrze protokol Modbus RTU. Posledním krokem je definovat Modbus registry a coily, a namapovat je na naše proměnné. Tento proces probíhá stejně i na serveru Modbus TCP, u něj proto můžete přejít do sekce Definice registrů

Nastavení Modbus TCP serveru (slave) probíhá podobně jako u Modbus RTU serveru, budeme zde ale provádět jiná nastavení kanálu serveru. Začněme se stejným základním projektem. Váš pracovní prostor by měl vypadat následovně:

Nyní je třeba přidat Kanál serveru. V levém panelu klikněte pravým tlačítkem na PLC a v kontextovém menu klikněte na Přidat kanál serveru.

Pod PLC se objeví položka server-channel. Dvojitě na ni klikněte a v panelu Vlastnosti změňte jeho název na něco více popisného. Kanál bude sloužit pro komunikaci Modbus TCP v režimu slave, nazvěme jej proto třeba ModbusTCP-slave.

Na stejném místě změňte Protokol na ModbusServer.

Jako Linkový protokol pak vyberte Tcp.

Tím jsme dokončili nastavení Kanálu serveru, nyní je třeba nadefinovat zařízení. V levém panelu klikněte pravým tlačítkem na ModbusTCP-slave a v kontextovém menu klikněte na Přidat zařízení serveru.

Pod kanálem ModbusTCP-slave se objeví nové zařízení s názvem device. Vyberte jej a v panelu Vlastnosti změňte Adresu zařízení na platnou hodnotu.

V sekci Parametry TCP můžete vidět kolonky IP adresa zařízení a Port zařízení.

IP adresu zařízení můžete ponechat na výchozí hodnotě (0.0.0.0). Mervis IDE interně nastaví adresu stejnou jako pro PLC.

Naopak Port zařízení je třeba nastavit. Obvyklým Modbus TCP portem je port 502, na něm již ale jedna aplikace běží. Nastavte jej proto např. na 503.

Nyní máme připravené vše potřebné k tomu, abychom mohli ostatním zařízením povolit číst a zapisovat proměnné na naše PLC skrze protokol Modbus TCP. Posledním krokem je definovat Modbus registry a coily, a namapovat je na naše proměnné.

Komunikace přes Modbus je určena pouze pro výměnu dat. Master zařízení vyčítá a nastavuje datové body, které jsou nakonfigurovány na slave zařízení. V protokolu Modbus existují čtyři druhy datových bodů pro čtení i zápis, které ale mohou používat pouze dva datové typy - boolean a word (16-bitový integer). Toto omezení je zde kvůli stáří protokolu Modbusu (více než 40 let) a k udržení komunikace co nejjednodušší. Jakýkoliv jiný datový typ (32-bit real, string aj.) je třeba nejprve převést na 16-bitovou hodnotu, například použitím více datových bodů.

Datové body

Coil je booleanovský datový bod, u kterého může master zařízení provádět čtení i zápis. Coily se obvykle používají pro ovládání digitálních či reléových výstupů, které mohou nabývat pouze hodnot TRUE nebo FALSE.

Druhým booleanovským datovým bodem je vstup či stav vstupu, který může master pouze číst. Typicky jej využijete u digitálních vstupů.

Datový bod typu word se nazývá registr či holding registr a master jej může číst i zapisovat do něj. Tento datový bod je vhodný pro výměnu analogových hodnot.

Druhý datový bod typu word má název vstupní registr. Z něj může master pouze vyčítat. Obvykle se tento datový bod používá pro odečty teploty.

Vytvoření datového bodu

K nastavení datových bodů klikněte v levém panelu na položku device pod Modbus slave kanálem.

V hlavním panelu se objeví seznam registrů exportovaný zařízením. Na dolním okraji hlavního panelu můžete vidět záložky Analogové a Digitální. V záložce Analogové můžete spravovat registry a vstupní registry. V záložce Digitální pak můžete měnit nastavení coilů a vstupů.

Nový registr přidáte kliknutím pravým tlačítkem do prázdného prostoru. V kontextovém menu pak vyberte Přidat proměnnou. Tento způsob je rychlejší, než Přidat registr.

Objeví se seznam dostupných proměnných, ve kterým můžete vyhledávat. Vyhledejte CNT_1.01 a vyberte proměnnou s názvem “Neuron_L503_CNT_1.01” či podobným. Potvrďte kliknutím na OK.

V seznamu se objeví nový registr, u kterého můžeme vidět jeho vlastnosti:

Těmito vlastnostmi jsou:

  1. Počáteční prvek je adresou registru. Tuto adresu nelze změnit.
  2. Prostá transformace je způsob, jakým se převádí hodnota z namapované proměnné na Modbus registr (např. převod na int, pokud je mapovaná proměnná typu real).
  3. Funkce označuje Modbusovou funkci, která umožňuje z registru vyčítat
  4. Mapovaná proměnná udává název namapované proměnné
  5. Typ udává typ namapované proměnné

Nastavení coilů / vstupů probíhá prakticky shodně, pouze se tak děje v záložce Digitální.