====== [ST] Vlastní sériový protokol ======
#;;
Patron
Neuron
Gate
Unipi 1.1
Axon
#;;
Při implementaci systému se občas setkáte také s potřebou použití protokolu, který není v prostředí Mervis k dispozici. Taková situace může nastat například tehdy, kdy instalujete PLC Unipi jako náhradu za jiné PLC a potřebujete připojit i některé původní periferie, nebo v případě, kdy potřebujte PLC Unipi připojit k vlastnímu zařízení s vlastním protokolem.
V následujícím článku jsou popsány základní informace potřebné k úspěšné implementaci sériového protokolu a v závěru také ukázkový projekt.
Co budete potřebovat?
* Jednotku Unipi s [[cs:files:software:os-images:00-start|Mervis OS]] a [[cs:files:software:mervis:00-start#aktualni_verzi_mervis_ide_naleznete_zde|Mervis IDE]] ve verzi 2.4.2 nebo novější
* [[https://www.unipi.technology/cs/accessories-c4|24 V⎓ napájení]]
* Připojení k místní síti (libovolný switch, nebo router)
* Základní znalost programování ve strukturovaném textu (ST)
===== Příprava sestavy =====
Vzhledem k tomu, že implementace sériového protokolu diagramem funkčních bloků (FBD) je náročnější a složitější, než implementace ve strukturovaném textu (ST), doporučujeme implementaci jazykem ST.
Aby bylo možné vytvářet programy, funkce či funkční bloky jazykem ST, je nejprve nutné přepnout sestavu do [[cs:sw:01-mervis:creating-new-project-hidden#prepnuti_do_plneho_modu|plného módu]].
===== Funkce dostupné v Mervis =====
V Mervis je dostupných celkem 5 funkcí pro práci s (sériovými) porty:
- **Open Port** - otevře komunikaci podle zadaných parametrů
- **Get Port Status** - vrací status komunikace
- **Write Port** - zapíše data na zadaný port
- **Read Port** - čte data z daného portu
- **Close Port** - uzavře komunikaci na daném portu
Popis vstupů a výstupů výše zmíněných funkcí je dostupný v nápovědě Mervis IDE \\
(cesta: Tvorba software -> Knihovny -> Communications -> Input/Output Functions)
===== Ukázkový projekt =====
V rámci ukázkového projektu je implementován stavový automat pro komunikaci po vybraném sériovém portu na principu dotaz/odpověď, kdy je po zaslání dotazu očekávána odpověď. Tento ukázkový projekt tedy neobsahuje stavový automat, který by očekával spontánní tok dat ze vzdáleného zařízení.
Implementována je také tabulka sériových portů (dle tabulek níže) pomocí odvozených datových typů (struktur) a webové rozhraní HMI simulující terminálové okno pro jednoduché otestování komunikace.
{{ .:custom-serial-protocol:240924_web_serial_terminal_ide265.zip |Ukázkový projekt vlastní sériové komunikace}}
Projekt je vytvořen v Mervis IDE 2.6.5.
===== Značení sériových portů Unipi v jazyce ST =====
Od Mervis IDE 2.6.5 je tabulka sériových portů (struktura) součástí Lib.Unipi, což umožňuje jednoduchý výběr dle typu kontroléru.
=== Příklad použití: ===
FUNCTION_BLOCK Custom_Serial
VAR
serialPort : unipi_serial.v1_0.Patron_M567;
str,def : string;
END_VAR
INIT
def := 'serial:'; // první část definice
def := CONCAT(IN1:=def,IN2:=serialPort.RS485_1_1); // sloučení první části definice s vybraným sériovým portem
def := CONCAT(IN1:=def,IN2:=':9600,8,N,1'); //sloučení s poslední částí definice
END_INIT
str := serialPort.RS485_1_1;
END_FUNCTION_BLOCK
==== Unipi Edge ====
|< 100% 20% 40% 40%>|
^ ^RS485-S1 ^RS232-S2 ^
|E410|1|2|
|E411|1|-|
|E412|1|2|
|E413|1|2|
=== Společné porty ===
|< 100% 20% 80% >|
|USB1|10|
|USB2|11|
|< 100% 20% 80% >|
|LTE|20|
|< 100% 20% 80% >|
|M-Bus M1|30|
|M-Bus M2|31|
==== Unipi Patron ====
|< 100% 20% 20% 20% 20% 20%>|
^ ^RS485-1 ^RS232(485)-2 ^RS485-3 ^RS485-4 ^
|S107|6|2|1|-|
|S117|6|3|2|1|
|S167 LTE|6|1|-|-|
|S207|1|-|-|-|
|< 100% 20% 20% 20% 20% 20%>|
^ ^RS485-1.1 ^RS232(485)-1.2 ^RS485-1.3 ^RS485-2.1 ^
|M207|6|2|1|-|
|M267 LTE|6|1|-|-|
|M527|6|2|1|7|
|M537|6|2|1|7|
|M567 LTE|6|1|-|7|
|L207|6|2|1|-|
|L527|6|2|1|7|
=== Společné porty ===
|< 100% 20% 80% >|
|USB1|10|
|USB2|11|
|< 100% 20% 80% >|
|LTE|20|
==== Unipi Neuron ====
|< 100% 20% 26.6% 26.6% 26.6%>|
^ ^RS485-1.1 ^RS485-2.1 ^RS485-3.1 ^
|S103 |6 |- |- |
|S103-G |6 |- |- |
|M103 |6 |- |- |
|M203 |6 |- |- |
|M303 |6 |- |- |
|M403 |6 |- |- |
|M503 |6 |7 |- |
|M523 |6 |7 |- |
|L203 |6 |- |- |
|L303 |6 |- |- |
|L403 |6 |- |- |
|L503 |6 |7 |- |
|L523 |6 |7 |- |
|L513 |6 |7 |8 |
|L533 |6 |7 |8 |
=== Společné porty ===
|< 100% 20% 80% >|
| USB1 | 10 |
| USB2 | 11 |
| USB3 | 12 |
| USB4 | 13 |
|< 100% 20% 80% >|
|GSM|1|
==== Unipi Gate ====
|< 100% 20% 40% 40%>|
^ ^RS485-1 ^RS485-2 ^
|G100|2|-|
|G110|2|3|
=== Společné porty ===
|< 100% 20% 80% >|
| USB | 10 |
==== Unipi 1.1 / Lite====
|< 100% 20% 80% >|
| UART | 1 |
|< 100% 20% 80% >|
| USB1 | 10 |
| USB2 | 11 |
| USB3 | 12 |
| USB4 | 13 |
==== Unipi Axon ====
|< 100% 20% 20% 20% 20% 20%>|
^ ^RS485-1 ^RS232(485)-2 ^RS485-3 ^RS485-4 ^
|S105|6|3|2|-|
|S115|6|1|3|2|
|S155|6|3|2|-|
|S165 LTE|6|2|-|-|
|S205|2|-|-|-|
|S215|2|3|-|-|
|S505|2|-|-|-|
|S515|2|3|-|-|
|< 100% 20% 20% 20% 20% 20%>|
^ ^RS485-1.1 ^RS232(485)-1.2 ^RS485-1.3 ^RS485-2.1 ^
|M205|6|3|2|-|
|M265 LTE|6|2|-|-|
|M505|6|3|2|7|
|M515|2|3|-|6|
|M525|6|3|2|7|
|M535|2|3|-|6|
|M565 LTE|6|2|-|7|
|L205|6|3|2|-|
|L505|6|3|2|7|
|L525|6|3|2|7|
=== Společné porty ===
|< 100% 20% 80% >|
|USB1|10|
|USB2|11|
|< 100% 20% 80% >|
|LTE|20|
/* https://kb.unipi.technology/cs:sw:01-mervis:serial-port-numbers-hidden */