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/11 11:08] avsetula [Instalace] |
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 na bázi démona 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 užívaného běhovým prostředím Mervis a Mervis IDE. Démona lze spustit kdekoliv - v systému se spuštěným běhovým prostředím Mervis, v systému společně s databázovým serverem či na jiném vzdáleném zařízení. | + | 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|}} | ||
- | ===== Možnosti instalace a užívání ===== | + | |
- | * **Démon je spuštěn na PLC** | + | |
- | * V tomto případě je démon spuštěn 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. | + | ===== Scénáře instalace ===== |
- | * **Démon je spuštěn na jiném zařízení/serveru** | + | * **Služba je spuštěna na jednotce** |
- | * Toto řešení lze rozdělit na dvě možná nasazení v závislosti na přítomnosti či absenci síťového spojení mezi démonem a PLC. | + | * 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 |
- | * **Démon má IP přístup k PLC** | + | * **Služba je spuštěna na jiném zařízení/serveru** |
- | * Jedná se o opačný přístup než v prvním případě (tj. démon běží na 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 |
- | * Démon je nainstalován na serveru, komunikuje s PLC a odesílá data na databázový server. | + | * **Služba má IP přístup k jednotce** |
- | * Databázový server může běžet na stejném serveru jako démon, nebo na zcela jiném zařízení. | + | * Jedná se o opačný přístup než v prvním případě, kde služba běží na jednotce |
- | * **Démon NEMÁ IP spojení s PLC** | + | * 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í | ||
+ | * **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 démon IP přístup k PLC nevyžaduje, server s démonem 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 serveru | * Omezeno max. přenosovou rychlostí proxy serveru | ||
+ | |||
===== 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. | ||
Line 34: | Line 41: | ||
*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 43: | 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. 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 66: | 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) |
- | * **sscp_username** — přihlašovací jméno pro SSCP, lze nastavit v Mervis IDE | + | * **sscp_username** — přihlašovací jméno pro SSCP, lze nastavit v Mervis IDE |
- | * **sscp_password** — heslo pro SSCP, lze nastavit v Mervis IDE | + | * **sscp_password** — heslo pro SSCP, lze nastavit v Mervis IDE |
- | * **db_user** — přihlašovací jméno pro databázový server | + | * **db_user** — přihlašovací jméno pro databázový server |
- | * **db_pass** — heslo pro databázový server | + | * **db_pass** — heslo pro databázový server |
- | * **db_ip** — IP adresa databázového serveru (pokud je spuštěn na stejném zařízení jako démon, lze použít adresu 127.0.0.1) | + | * **db_ip** — IP adresa databázového serveru (pokud je spuštěn na stejném zařízení jako démon, lze použít adresu 127.0.0.1) |
- | * **db_port** — port databázového serveru (3306 ve výchozím stavu) | + | * **db_port** — port databázového serveru (3306 ve výchozím stavu) |
- | * **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 |
- | * **table_name** — název tabulky v rámci //db_mysql_schema// | + | * **table_name** — název tabulky v rámci //db_mysql_schema// |
- | * **reading_period** — vyčítací interval, nastavení probíhá v krocích po 100 ms | + | * **reading_period** — vyčítací interval, nastavení probíhá v krocích po 100 ms |
- | * **vars** — seznam proměnných přiřazených k projektu | + | * **vars** — seznam proměnných přiřazených k projektu |
- | * **var_name** — název proměnné v rámci Mervis projektu | + | * **var_name** — název proměnné v rámci Mervis projektu |
- | * **field_name** — název sloupce v //table_name// | + | * **field_name** — název sloupce v //table_name// |
~~NOTOC~~ | ~~NOTOC~~ |