Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
cs:sw:01-mervis:setting-modbus-server-hidden [2020/03/05 13:24] jan_kozakcs:sw:01-mervis:setting-modbus-server-hidden [2024/07/24 14:35] (aktuální) – [Nastavení Modbus TCP serveru (slave)] kcerny
Řádek 1: Řádek 1:
-FIXME - přeloženo +====== Nastavení Modbus slave (serverového) zařízení  ====== 
-====== Nastavení Modbus slave zařízení  ====== +<WRAP group> 
-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 Unipio nastavit jako Modbus server, či (při použití odlišné terminologie) jako Modbus slave. +<WRAP half column 81%> 
 +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.  
 +</WRAP> 
 +<WRAP half column 15%> 
 +;;# 
 +<html><span class="dev-tag dev-patron">Patron</span></html> \\ 
 +<html><span class="dev-tag dev-neuron">Neuron</span></html> \\ 
 +<html><span class="dev-tag dev-gate">Gate</span></html> \\ 
 +<html><span class="dev-tag dev-unipi11">Unipi&nbsp1.1</span></html> \\ 
 +<html><span class="dev-tag dev-axon">Axon</span></html> 
 +;;# 
 +</WRAP> 
 +</WRAP> 
  
 ===== Fyzická vrstva ===== ===== Fyzická vrstva =====
 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.  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í (115 200 bps) a povahou [[https://en.wikipedia.org/wiki/Duplex_(telecommunications)#Half_duplex|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. +Fyzická vrstva RS485 je typicky limitovaná svou max. rychlostí (115200 bps) a povahou [[https://en.wikipedia.org/wiki/Duplex_(telecommunications)#Half_duplex|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.  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. 
Řádek 17: Řádek 30:
  
 V Modbus TCP probíhá adresování skrze IP adresu a port. Výchozím portem je port 502.  V Modbus TCP probíhá adresování skrze IP adresu a port. Výchozím portem je port 502. 
 +
  
 ===== Nastavení Modbus RTU serveru (slave) ===== ===== Nastavení Modbus RTU serveru (slave) =====
Řádek 23: Řádek 37:
 {{ :en:sw:01-mervis:modbus-server-01-workspace.png?direct |}} {{ :en:sw:01-mervis:modbus-server-01-workspace.png?direct |}}
  
-Nyní je třeba přidat **kanál serveru**. V **levém panelu** klikněte pravým tlačíkem na **PLC** a v kontextovém menu klikněte na **Přidat kanál serveru**. +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**. 
  
 {{ :en:sw:01-mervis:modbus-server-02-add-server-channel.png?direct |}} {{ :en:sw:01-mervis:modbus-server-02-add-server-channel.png?direct |}}
Řádek 31: Řádek 45:
 </WRAP> </WRAP>
  
-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 master, nazvěme jej proto třeba **Modbus RTU-master**.+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**.
  
 {{ :en:sw:01-mervis:modbus-server-03-channel-name.png?direct |}} {{ :en:sw:01-mervis:modbus-server-03-channel-name.png?direct |}}
Řádek 47: Řádek 61:
 {{ :en:sw:01-mervis:modbus-server-06-add-server-device.png?direct |}} {{ :en:sw:01-mervis:modbus-server-06-add-server-device.png?direct |}}
  
-Pod kanálem **ModbusRTU-master** 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í. +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í. 
  
 {{ :en:sw:01-mervis:modbus-server-07-device.png?direct |}} {{ :en:sw:01-mervis:modbus-server-07-device.png?direct |}}
  
-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 [[#defining_registers|Definice registrů]]+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_registru_a_coilu|Definice registrů]] 
  
 ===== Nastavení Modbus TCP serveru (slave) ===== ===== Nastavení Modbus TCP serveru (slave) =====
Řádek 87: Řádek 102:
 **IP adresu zařízení** můžete ponechat na výchozí hodnotě (0.0.0.0). Mervis IDE interně nastaví adresu stejnou jako pro PLC.  **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. +Od verze Mervis IDE 2.6.5 byl port 502 uvolněn volně k použití, pro starší verze platí následující: **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. 
 </WRAP> </WRAP>
  
 {{ :en:sw:01-mervis:modbus-server-12-device-port.png?direct |}} {{ :en:sw:01-mervis:modbus-server-12-device-port.png?direct |}}
  
-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é. +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é.  
  
 ===== Definice registrů a coilů ===== ===== Definice registrů a coilů =====
 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ů.  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  ==== 
  
 +==== 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'' **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''
  
Řádek 106: Řádek 122:
  
 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.  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 ==== ==== Vytvoření datového bodu ====
Řádek 118: Řádek 135:
 {{ :en:sw:01-mervis:modbus-server-14-add-variable.png?direct |}} {{ :en:sw:01-mervis:modbus-server-14-add-variable.png?direct |}}
  
-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**. +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**. 
  
 {{ :en:sw:01-mervis:modbus-server-15-select-variable.png?direct |}} {{ :en:sw:01-mervis:modbus-server-15-select-variable.png?direct |}}
Řádek 126: Řádek 143:
 {{ :en:sw:01-mervis:modbus-server-16-register-detail.png?direct |}} {{ :en:sw:01-mervis:modbus-server-16-register-detail.png?direct |}}
  
-Těmito vlastnostmi jsou: +Těmito vlastnostmi jsou:
   - **Počáteční prvek** je **adresou registru**. Tuto adresu nelze změnit.    - **Počáteční prvek** je **adresou registru**. Tuto adresu nelze změnit. 
   - **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).    - **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). 
Řádek 133: Řádek 150:
   - **Typ** udává typ namapované proměnné   - **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í**. +Nastavení **coilů** / **vstupů** probíhá prakticky shodně, pouze se tak děje v záložce **Digitální**.