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
Last revision Both sides next revision
cs:sw:01-mervis:setting-modbus-server-hidden [2020/03/05 13:25]
jan_kozak
cs:sw:01-mervis:setting-modbus-server-hidden [2023/08/18 09:26]
zrusek [Nastavení Modbus TCP serveru (slave)]
Line 1: Line 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. ​
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 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 118: Line 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 |}}
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í**. ​