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/05/12 15:09] – [Vytvoření datového bodu] avsetulacs: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 (serverového) zařízení  ======
 +<WRAP group>
 +<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.  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 [[#definice_registru_a_coilu|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 ====