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:08-sscp-bridge [2020/05/21 12:05] tomhora |
cs:sw:01-mervis:08-sscp-bridge [2024/04/18 10:40] (current) avsetula |
||
---|---|---|---|
Line 1: | Line 1: | ||
======%hide Ukládání do SQL ====== | ======%hide Ukládání do SQL ====== | ||
- | + | | |
====== Ukládání dat z Mervis do SQL databáze ====== | ====== Ukládání dat z Mervis do SQL databáze ====== | ||
- | Tato služba **SSCP to SQL Bridge** na umožňuje obousměrný přenos dat mezi programovatelným logickým kontrolérem Unipi se spuštěným SW Mervis a SQL databází. Komunikace probíhá pomocí SSCP protokolu, tj. proprietárního protokolu řešení Mervis. Tuto službu lze provozovat na systémech Linux (společně s databázovým serverem či na jiném vzdáleném zařízení), ale je ji možné spustit i přímo na PLC. | + | Tato služba **SSCP to SQL Bridge** na umožňuje obousměrný přenos dat mezi jednotkou Unipi se spuštěným SW Mervis a SQL databází. Komunikace probíhá pomocí SSCP protokolu, tj. proprietárního protokolu řešení Mervis. Tuto službu lze provozovat na systémech Linux (společně s databázovým serverem či na jiném vzdáleném zařízení), ale je ji možné spustit i přímo na jednotce. |
+ | |||
+ | {{:cs:sw:01-mervis:schema-db_final_cze.png|}} | ||
- | {{:cs:sw:01-mervis:schema-db_final_cze.png| | ||
- | }} | ||
===== Scénáře instalace ===== | ===== Scénáře instalace ===== | ||
- | * **Služba je spuštěna na PLC** | + | * **Služba je spuštěna na jednotce** |
- | * V tomto případě je služba spuštěna přímo na PLC společně s Mervis RT a odesílá data do vzdálené databáze. Vyžaduje IP spojení mezi PLC a databázovým serverem. | + | * V tomto případě je služba spuštěna přímo na jednotce společně s Mervis RT a odesílá data do vzdálené databáze. Vyžaduje IP spojení mezi jednotkou a databázovým serverem |
* **Služba je spuštěna na jiném zařízení/serveru** | * **Služba je spuštěna na jiném zařízení/serveru** | ||
- | * Toto řešení lze rozdělit na dvě možná nasazení v závislosti na přítomnosti či absenci síťového spojení mezi službou a PLC. | + | * Toto řešení lze rozdělit na dvě možná nasazení v závislosti na přítomnosti či absenci síťového spojení mezi službou a jednotkou |
- | * **Služba má IP přístup k PLC** | + | * **Služba má IP přístup k jednotce** |
- | * Jedná se o opačný přístup než v prvním případě (tj. služba běží na PLC). | + | * Jedná se o opačný přístup než v prvním případě, kde služba běží na jednotce |
- | * Služba je nainstalována na serveru, komunikuje s PLC a odesílá data na databázový server. | + | * Služba je nainstalována na serveru, komunikuje s jednotkou a odesílá data na databázový server |
- | * Databázový server může běžet na stejném serveru jako služba, nebo na zcela jiném zařízení. | + | * Databázový server může běžet na stejném serveru jako služba, nebo na zcela jiném zařízení |
- | * **Služba NEMÁ IP spojení s PLC** | + | * **Služba NEMÁ IP spojení s jednotkou** |
* __Tato možnost bude brzy dostupná__ | * __Tato možnost bude brzy dostupná__ | ||
- | * V tomto případě se pro odečet údajů z PLC užívá Mervis Proxy server, který data následně odesílá na databázový server. Výhoda tohoto přístupu spočívá v tom, že služba IP přístup k PLC nevyžaduje, server s službou se proto může nacházet v geograficky zcela odlišné lokaci, oddělený od interní sítě firewallem či NAT. | + | * V tomto případě se pro odečet údajů z jednotky užívá Mervis Proxy server, který data následně odesílá na databázový server. Výhoda tohoto přístupu spočívá v tom, že služba IP přístup k jednotce nevyžaduje, server s službou se proto může nacházet v geograficky zcela odlišné lokaci, oddělený od interní sítě firewallem či NAT |
- | * Vyžaduje připojení PLC k proxy serveru | + | * Vyžaduje připojení jednotky k proxy serveru |
- | * Omezeno max. přenosovou rychlostí proxy ser | + | * Omezeno max. přenosovou rychlostí proxy serveru |
- | veru | + | |
===== Podporované operace ===== | ===== Podporované operace ===== | ||
+ | - **SELECT** - Tato operace přečte určitý řádek z vybrané tabulky a přenese hodnoty na relevantní proměnné pro Mervis na jednotce. Řádek lze specifikovat použitím parametru "where", který lze užít přímo jako klauzuli "WHERE" v SQL výrazu (nastaví proměnnou Mervisu dle databáze) | ||
+ | - **UPDATE** - Tato operace aktualizuje řádek ve vybrané tabulce zadáním hodnot proměnných na jednotce. Řádek lze specifikovat použitím parametru "where", který lze užít přímo jako klauzuli "WHERE" v SQL výrazu. (Nastaví řádek v DB podle proměnné Mervisu) | ||
+ | - **INSERT** - Tato operace vloží řádek s aktuálními hodnotami jednotky do vybrané tabulky pokaždé, když je stav dané proměnné vyčítán jednotkou. (Mervis proměnná se loguje do DB) | ||
- | - **SELECT** - Tato operace přečte určitý řádek z vybrané tabulky a přenese hodnoty na relevantní proměnné pro Mervis na PLC. Řádek lze specifikovat použitím parametru "where", který lze užít přímo jako klauzuli "WHERE" v SQL výrazu (nastaví proměnnou Mervisu dle databáze) | + | <WRAP center round tip 90%> |
- | - **UPDATE** - Tato operace aktualizuje řádek ve vybrané tabulce zadáním hodnot proměnných na PLC. Řádek lze specifikovat použitím parametru "where", který lze užít přímo jako klauzuli "WHERE" v SQL výrazu. (Nastaví řádek v DB podle proměnné Mervisu) | + | Aktuálně není podporováno přenášet datové typy long (LREAL, LINT, ULINT, atp.), nebo STRING a DT. |
- | - **INSERT** - Tato operace vloží řádek s aktuálními hodnotami PLC do vybrané tabulky pokaždé, když je stav dané proměnné vyčítán kontrolérem. (Mervis proměnná se loguje do DB) | + | </WRAP> |
- | ===== Podporované platformy ===== | ||
- | * Program je navržen pro platformy **x64** a **ARM*** včetně všech PLC Unipi. | + | |
+ | ===== Podporované platformy ===== | ||
+ | * Program je navržen pro platformy **x64** a **ARM*** včetně všech jednotek Unipi. | ||
* Software je distribuován jako balík Debian (.deb) a je testován na distribucích Linux založených na Debianu 9/10. | * Software je distribuován jako balík Debian (.deb) a je testován na distribucích Linux založených na Debianu 9/10. | ||
* Software **není** open-source. V případě potřeby použití programu na jiné než uvedené platformu kontaktujte technickou podporu Unipi. | * Software **není** open-source. V případě potřeby použití programu na jiné než uvedené platformu kontaktujte technickou podporu Unipi. | ||
*v současnosti jsou podporovány platformy arm64 a armhf | *v současnosti jsou podporovány platformy arm64 a armhf | ||
+ | |||
===== Návod na rychlé spuštění ===== | ===== Návod na rychlé spuštění ===== | ||
+ | |||
==== Instalace ==== | ==== Instalace ==== | ||
- | - Do seznamu apt-sources přidejte repozitář Unipi Debian (__tento krok přeskočte, pokud používáte PLC Unipi__). **<distro>** **nahraďte** názvem Vaší distribuce Debianu, tj. **stretch** nebo **buster** <code>sudo su | + | - Do seznamu apt-sources přidejte repozitář Unipi Debian (__tento krok přeskočte, pokud používáte jednotku Unipi__). **<distro>** **nahraďte** názvem Vaší distribuce Debianu, tj. **stretch** nebo **buster** <code>sudo su |
echo "deb https://repo.unipi.technology/debian <distro> main" >> /etc/apt/sources.list.d/unipi.list | echo "deb https://repo.unipi.technology/debian <distro> main" >> /etc/apt/sources.list.d/unipi.list | ||
wget https://repo.unipi.technology/debian/unipi_pub.gpg -O - | apt-key add apt-get update </code> | wget https://repo.unipi.technology/debian/unipi_pub.gpg -O - | apt-key add apt-get update </code> | ||
Line 45: | Line 51: | ||
Balíčky s externími knihovnami (libyaml, libmysqlcppconn, libboost-system, libssl) se v případě potřeby automaticky nainstalují do adresáře ///opt/unipi/tools | Balíčky s externími knihovnami (libyaml, libmysqlcppconn, libboost-system, libssl) se v případě potřeby automaticky nainstalují do adresáře ///opt/unipi/tools | ||
//. | //. | ||
+ | |||
==== Konfigurace ==== | ==== Konfigurace ==== | ||
Veškerá konfigurace je tvořena dvěma soubory: | Veškerá konfigurace je tvořena dvěma soubory: | ||
- **/etc/unipi/sscp-sql-bridge.d/mapping.yaml**: hlavní konfigurační soubor obsahující IP adresy a identifikační údaje pro databázový server/y, zařízení se spuštěným Mervis RT a rovněž i všechna nastavení týkajících se přenášených proměnných. Ve výchozím stavu tento soubor obsahuje komentovanou vzorovou konfiguraci; tuto konfigurace **je nutné nahradit správnými hodnotami dle dané aplikace.** | - **/etc/unipi/sscp-sql-bridge.d/mapping.yaml**: hlavní konfigurační soubor obsahující IP adresy a identifikační údaje pro databázový server/y, zařízení se spuštěným Mervis RT a rovněž i všechna nastavení týkajících se přenášených proměnných. Ve výchozím stavu tento soubor obsahuje komentovanou vzorovou konfiguraci; tuto konfigurace **je nutné nahradit správnými hodnotami dle dané aplikace.** | ||
- | - jeden či více souborů **.vlist**, které obsahují seznam všech proměnných používaných v projektu či projektech Mervis. Tyto soubory jsou automaticky generovány prostředím Mervis IDE a jsou umístěny v kořenovém adresáři Mervis projektu. Výchozí cesta v souborovém systému PLC je /opt/unipi/data a lze ji změnit v souboru souboru *mapping.yaml*. Upozornění: důrazně nedoporučujeme soubory .vlist editovat manuálně. | + | - jeden či více souborů **.vlist**, které obsahují seznam všech proměnných používaných v projektu či projektech Mervis. Tyto soubory jsou automaticky generovány prostředím Mervis IDE a jsou umístěny v kořenovém adresáři Mervis projektu. Výchozí cesta v souborovém systému jednotky je /opt/unipi/data a lze ji změnit v souboru souboru *mapping.yaml*. Upozornění: důrazně nedoporučujeme soubory .vlist editovat manuálně. |
U konfiguračních souborů je třeba klást důraz na dodržování validního formátu .yaml. Pokud si nejste jistí, využijte online YAML validátor (např. https://codebeautify.org/yaml-validator). Rovněž do souboru nepřidávejte žádná pole, která nejsou zahrnutá v příkladu níže. | U konfiguračních souborů je třeba klást důraz na dodržování validního formátu .yaml. Pokud si nejste jistí, využijte online YAML validátor (např. https://codebeautify.org/yaml-validator). Rovněž do souboru nepřidávejte žádná pole, která nejsou zahrnutá v příkladu níže. | ||
Struktura souboru mapping.yaml je popsána níže. | Struktura souboru mapping.yaml je popsána níže. | ||
+ | |||
==== Povolení služby ==== | ==== Povolení služby ==== | ||
Line 68: | Line 76: | ||
</code> | </code> | ||
- | ---- | + | |
===== Struktura konfiguračního souboru ===== | ===== Struktura konfiguračního souboru ===== | ||
Důsledně dodržujte YAML strukturu souboru. Nejsnadněji tak lze učinit prostou editací výchozího nastavení. | Důsledně dodržujte YAML strukturu souboru. Nejsnadněji tak lze učinit prostou editací výchozího nastavení. | ||
- | * **plc_n** - seznam adresovaných PLC, na kterých je spuštěn Mervis. Lze definovat více než jedno PLC | + | * **plc_n** - seznam adresovaných jednotek, na kterých je spuštěn Mervis. Lze definovat více než jednu jednotku |
* **sscp_ip** — IP adresa zařízení se spuštěným mervisr (pokud je démon spuštěn na místní síti, lze použít adresu 127.0.0.1) | * **sscp_ip** — IP adresa zařízení se spuštěným mervisr (pokud je démon spuštěn na místní síti, lze použít adresu 127.0.0.1) | ||
* **sscp_port** — TCP port, na kterém mervisr naslouchá (12346 ve výchozím stavu) | * **sscp_port** — TCP port, na kterém mervisr naslouchá (12346 ve výchozím stavu) | ||
Line 82: | Line 90: | ||
* **db_mysql_schema** — název databázového schématu | * **db_mysql_schema** — název databázového schématu | ||
* **vlist_filename** — seznam proměnných (generováno Mervis IDE) | * **vlist_filename** — seznam proměnných (generováno Mervis IDE) | ||
- | * **variable_sets** - seznam provozních skupin - na jednom PLC lze definovat více skupin | + | * **variable_sets** - seznam provozních skupin - na jedné jednotce lze definovat více skupin |
* **type** — typ operace (podporovány operace SELECT, UPDATE a INSERT) | * **type** — typ operace (podporovány operace SELECT, UPDATE a INSERT) | ||
* **set_name** — název sady jedné či více proměnných | * **set_name** — název sady jedné či více proměnných |