RDC – Komunikační blok
Symbol blokuPotřebná licence: ADVANCED
Popis funkce
Blok RDC je speciální vstupně-výstupní blok. Hodnoty se předávají mezi dvěma
bloky se stejným číslem, ale na různých počítačích (popřípadě na stejném
počítači mezi dvěma Simulinky nebo Simulinkem a systémem REXYGEN). Hodnoty se
předávají UDP/IP protokolem. Komunikace tedy funguje na všech lokálních sítích
LAN i na linkách sítě Internet. Algoritmus v každém kroku provádí následující
operace:
- Pokud je vstup HLD=on, je vykonávání bloku pozastaveno.
- Má-li parametr period kladnou hodnotu, je vyhodnocen rozdíl mezi systémovým časovačem a časem posledního odeslaného paketu. Vykonávání bloku je zastaveno, pokud rozdíl nepřesahuje hodnotu parametru period. Je-li parametr period nulový nebo záporný, rozdíl časů se nekontroluje.
- Vytvoří se datový paket. Paket obsahuje číslo bloku, tzv. invoke číslo (pořadové číslo paketu) a hodnoty u0 až u15. Všechny hodnoty jsou uloženy ve standardním tzv. síťovém bytovém pořadí, takže aplikace je nezávislá na počítači a/nebo procesoru.
- Paket je odeslán na zadanou IP adresu a port.
- Číslo invoke je zvětšeno o 1.
- Je zkontrolováno, zda byly přijaty nějaké příchozí pakety.
- Pokud ano, je zkontrolována platnost paketu (velikost, číslo id, invoke číslo).
- Pokud je paket v pořádku, jsou všechny výstupy y0 až y15 nastaveny na hodnoty obsažené v přijatém paketu.
- Je aktualizován výstup fresh. V případě chyby je chybový kód zobrazen na výstup err.
V každém směru je mezi dvěma bloky se stejným id číslem periodicky přenášeno 16 hodnot. Vstup u(i) prvního bloku je přenesen na výstup y(i) druhého bloku. Na rozdíl od TCP/IP protokolu nemá UDP/IP protokol žádný mechanismus pro zacházení se ztracenými nebo duplicitními pakety, takže je třeba se s tím vypořádat algoritmem samotným. Pro tento účel slouží invoke číslo. Tato stavová proměnná je zvětšena o 1 pokaždé, když je odeslán paket. Blok také uchovává invoke číslo posledního přijatého paketu. Je možné rozlišit různé události porovnáním těchto dvou čísel. Pakety s invoke čísly menšími než invoke číslo posledního přijatého paketu jsou zamítnuty, pokud rozdíl není větší než 10. Tím je vyřešena situace, kdy je jeden z bloků RDC restartován a s ním jeho invoke číslo.
Poznámka: Všechny bloky RDC ve stejné aplikaci musí mít stejný local port a počet bloků RDC je z implementačních důvodů omezen na 64. Pokud běží na stejném počítači dvě aplikace používající blok RDC, musí každá z nich používat jiný local port.
Příklady
Konstanty 3 a 5 jsou odesílány z Počítače 1 na Počítač 2, kde se objeví na
výstupech y0 a y1 bloku RDC2. Konstanty jsou sečteny, vynásobeny a odeslány zpátky
na Počítač 1 prostřednictvím vstupů u11 a u12 bloku RDC2. Zobrazení připojená k
výstupům y11 a y12 bloku RDC1 zobrazují výsledky matematických operací
a
.
Signál z generátoru SG běžícího na Počítači 2 je přenášen na
výstup y0 bloku RDC1, kde může být snadno zobrazen.
Jednoduchost příkladu je záměrná. Cílem je demonstrovat funkčnost bloku, nikoliv složitost systému. Ve skutečnosti je blok RDC používán v komplexnějších úkolech, například pro vzdálené ladění PID regulátoru, jak je ukázáno níže. PID algoritmus běží na Počítači 1, zatímco ladící algoritmus je prováděn na Počítači 2. Viz bloky PIDU, PIDMA a SSW pro více informací.
Tento blok nepropaguje kvalitu signálu. Více informací je uvedeno v sekci 1.4.
Vstup
HLD | Pozastavení | Bool |
u0..u15 | Signál k odeslání do vzdáleného RDC bloku | Double (F64) |
Parametr
target | Jméno/IP adresa vzdáleného počítače | String |
rport | Port vzdáleného počítače 1288 | Word (U16) |
lport | Lokální port 1288 | Word (U16) |
id | Identifikátor bloku 1 32767 1 | Long (I32) |
period | Minimální perioda komunikace [s] | Double (F64) |
Výstup
iE | Kód chyby | Long (I32) |
|
|
|
fresh | Čas uplynulý od příjmu posledního paketu [s] | Double (F64) |
y0..y15 | Signál přijatý ze vzdáleného RDC bloku | Double (F64) |
[Předchozí] [Na začátek] [Výše] [Další]
2024 © REX Controls s.r.o., www.rexygen.com