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/06/08 13:13]
avsetula
cs:sw:01-mervis:setting-modbus-server-hidden [2024/03/14 09:08] (current)
kcerny typos
Line 6: Line 6:
 <WRAP half column 15%> <WRAP half column 15%>
 ;;# ;;#
-<​html><​span class="​dev-tag dev-axon">Axon</​span></​html>​ \\+<​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-neuron">​Neuron</​span></​html>​ \\
-<​html><​span class="​dev-tag dev-unipi11">​Unipi&​nbsp1.1</​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>​
 </​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 26: 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 32: 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 40: 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 56: 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 [[#​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) =====
Line 101: 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 115: 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 ====