Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
cs:sw:01-mervis:setting-modbus-server-hidden [2020/03/05 13:25] jan_kozak |
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 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 1.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 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í**. |