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:08-sscp-bridge [2020/05/11 11:10]
avsetula
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 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 ​í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 ​enášet datové typy long (LREALLINT, 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 42: 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 65: 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~~