Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cs:sw:01-mervis:setting-modbus-server-hidden [2020/05/12 14:28]
avsetula [Nastavení Modbus slave zařízení]
cs:sw:01-mervis:setting-modbus-server-hidden [2024/03/14 09:08] (current)
kcerny typos
Line 1: Line 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. ​
Line 17: Line 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) =====
Line 23: Line 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 |}}
Line 31: Line 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 |}}
Line 47: Line 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) =====
Line 92: Line 107:
 {{ :​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''​. ​
  
Line 106: Line 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 ====
Line 133: Line 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í**. ​