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:08-sscp-bridge [2020/05/11 11:10]
avsetula
cs:sw:01-mervis:08-sscp-bridge [2021/08/06 12:47]
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 IDEDé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ěna PLC** + 
-    * V tomto případě je démon ​spuště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ě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 ​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 ​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) 
-  - **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) 
-  - **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) 
  
 ===== Podporované platformy ===== ===== Podporované platformy =====
- +  ​* Program je navržen pro platformy **x64** a **ARM*** včetně všech ​jednotek ​Unipi. ​
-  ​* Program je navržen pro platformy **x64** a **ARM*** včetně všech ​PLC 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 42: Line 46:
 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 65: Line 71:
 </​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~~