RDC – Komunikační blok
Symbol blokuPotřebná licence: ADVANCED
Popis funkce
Tento blok 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. Tento protokol je stejně rozšířený jako
známější TCP/IP (tj. 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:
- Otestuje vstup HLD. Pokud je , činnost bloku končí.
- Má-li parametr period kladnou hodnotu, zjistí rozdíl mezi systémovým časem a časem posledního vyslání paketu. Pokud je tato doba menší než hodnota period, činnost bloku končí. (Pokud je hodnota parametru period menší nebo rovna nule, testování rozdílu času se neprovádí.)
- Vytvoří paket, který obsahuje číslo bloku, tzv. číslo invoke (pořadové číslo paketu), hodnoty u0 až u15. Všechny hodnoty se do paketu ukládají ve standardně užívaném pořadí (tzv. network byte order), takže aplikace může běžet na libovolném počítači/procesoru.
- Odešle paket na zadanou IP adresu a port.
- Zvětší o 1 číslo invoke.
- Otestuje, jestli přišel nějaký paket.
- Pokud ano, otestuje, zda je paket v pořádku (souhlasí velikost, číslo bloku, číslo invoke).
- Pokud je paket v pořádku, nastaví výstupy y0 až y15 na hodnoty z přijatého paketu.
- Nastaví výstup iE (pokud došlo k nějaké chybě) a výstup fresh.
Z uvedeného popisu je zřejmé, že dvojice bloků (se stejným číslem, ale každý na jiném počítači) periodicky přenáší 16 hodnot v každém směru. Vždy se přenese u(i) z jednoho bloku na y(i) druhého bloku. Protože protokol UDP/IP (na rozdíl od TCP/IP) nemá mechanismus pro ošetření ztráty ani duplicity paketu, musí se to zajistit v algoritmu. K ošetření ztráty slouží mechanismus čísla invoke. To je stavová proměnná, která se zvětší o 1 při každém odeslaném paketu. Protože blok si pamatuje invoke číslo minulého přijatého paketu, pozná, k čemu došlo, a podle toho reaguje – pakety s číslem invoke menším než číslo invoke posledního přijatého paketu odmítá. Protože se však po ukončení a opětovném spuštění programu číslo invoke vynuluje, algoritmus přesto přijme paket s číslem menším než číslo posledního paketu, pokud je rozdíl velký (větší než 10). Z implementačních důvodů musí mít všechny bloky v jedné aplikaci stejný local port a v jedné aplikaci může být nejvýše 64 bloků RDC. Pokud by na jednom počítači běžely dva programy, které používají blok RDC, musí být parametr local port v každé aplikaci jiný.
Vstupy
HLD | Vstup pozastavující činnost bloku. Pokud je , blok nevysílá ani nepřijímá žádné pakety. | Bool |
u0..u15 | Hodnoty, které se předávají/zapisují na hodnoty y0 až y15 spolupracujícího bloku RDC | Double (F64) |
Výstupy
iE | Zobrazuje kód poslední chyby. Použitá čísla jsou v následující tabulce: | Long (I32) |
|
|
|
| Trvalé chyby, vznikají v inicializační části bloku, systém je nedokáže sám opravit () |
|
|
|
|
| Přechodné chyby, mohou vzniknout ve kterémkoliv průchodu kódu, systém je dokáže sám opravit () |
|
|
|
|
fresh | Udává počet sekund od přijetí posledního paketu. Má význam pro detekci chyby protilehlého bloku. | Double (F64) |
y0..y15 | Signál přijatý ze vzdáleného bloku RDC – hodnoty naposledy přijatého paketu | Double (F64) |
Parametry
target | Zde se napíše jméno nebo IP adresa počítače, kde běží spolupracující blok RDC. Může to být i broadcast adresa a pak spolupracující blok může být na libovolném počítači v síti, ale při malých periodách (orientačně kratších než 50ms) může docházet k zahlcení sítě. Pro typickou lokální síť (tj. IP adresa 192.168.1.x, maska 255.255.255.0) je broadcast adresa 192.168.1.255 . | String |
rport | Vzdálený port (tzv. remote port). Je to vlastně upřesňující adresa nebo též adresa služby protokolu UDP/IP. Pokud nenastane kolize s jinými programy, které používají protokol UDP/IP, je vhodné tento parametr neměnit. 1288 | Word (U16) |
lport | Místní port (tzv. local port), význam podobný jako u parametru rport. Remote port platí pro počítač, kam je paket posílán, local port platí pro počítač, ze kterého je paket posílán. 1288 | Word (U16) |
id | Identifikátor bloku. Toto číslo se posílá v paketu a bloky ve druhém počítači podle něj poznají, pro který blok RDC jsou data určena. Principiálně jej přijmou všechny bloky, ale jen blok, který má stejné číslo id, jej akceptuje a nastaví výstupy na hodnoty z paketu. 1 32767 1 | Long (I32) |
period | Perioda v sekundách, určující nejkratší dobu, po které se vysílají a případně čtou došlé pakety. V případě hodnoty , se vysílají (a případně i čtou) pakety při každém spuštění bloku. Nastavení kladné hodnoty je výhodné zejména ve spojitých modelech simulovaných systémem Simulink (při použití solveru typu Variable step). | Double (F64) |
Příklad
Následující obrázky představují možné použití bloku RDC. Příklad představuje
„vzdálený autotuner“. Jeden počítač (označený Computer1) představuje standardní
PID regulátor, který řídí technologický proces. Jeho signály pv, sp, mv jsou vedeny na
vstupy bloku RDC a přenášeny na druhý počítač (označený Computer2). Na tomto
počítači je autotuner (viz popis bloku PIDMA), který po náběžné
hraně na vstupu TUNE provede identifikační experiment a vypočte parametry
,
,
vhodného regulátoru (výstup pk, pti, ptd bloku PIDMA). Aby toto mohl
udělat, musí se přenášet hodnota mv autotuneru na akční veličinu technologického
procesu. Proto je výstup mv (hodnota akční veličiny) a TBSY (slouží k přepínání
mezi mv PID regulátoru a autotuneru). Všimněme si ještě, že hodnoty pk, pti, ptd
jsou vyvedeny na vstupy bloku RDC2, takže se hodnoty přenesou na odpovídající
výstupy bloku RDC1, kde by je bylo možné rovnou použít. Příklad je záměrně
jednoduchý, aby byl dobře vidět princip bloku RDC a nikoliv složitost algoritmu, který
lze v Simulinku vytvořit. Pro pochopení funkce si stačí uvědomit, že funkce
uvedeného schématu je stejná, jako když bloky RDC1 a RDC2 vypustíme, zbytek obou
výkresů sloučíme do jednoho a spojíme to, co původně vedlo na vstup u0
bloku RDC1, s tím, co původně vedlo na výstup y0 bloku RDC2, atd. pro u1,
y1,….
Existuje OPC server, kterým se lze připojit k bloku RDC.
V popisu bloku RDC (viz výše) je uvedeno, že dva bloky RDC si vzájemně vyměňují hodnoty u a y. Jeden z této dvojice bloků může být emulován popisovaným OPC serverem. Jediný parametr, který se zadává je číslo portu. Je to lport bloku (resp. všech bloků), které OPC server emuluje. Hodnota se zadává jako parametr target name v textové podobě. Implicitní hodnota tohoto parametru je stejná, jako pro blok RDC (tj. 1288), takže ji obvykle není nutno měnit.
Pokud je přesto potřeba číslo portu změnit, tak hodnotu je možné zadat buď
přímo systémovým programem Windows regedit (klíč je
SOFTWARE\REX Controls\REX_<version>\RdcOPCSvr\TargetName
- hodnotu je možné zadat do buď do sekce LocalMachine nebo CurrentUser, někdy je
hodnota ve speciální podsekci VirtualStore a na 64-bitových počítačích je ještě
podsekce Wow6432Node) nebo pomocí programu RexOPCcfg.exe (je součástí instalace
systému REXYGEN, ale není na něj odkaz ve startmenu Windows - je potřeba v položce
Key změnit text RexOPCsvr na RdcOPCsvr a požadované číslo portu zadat do pole
Target name).
Server emuluje bloky všech identifikačních čísel na tomto portu. Protože takových bloků je velké množství, jsou při procházení platných signálů (tzv. browse) zobrazeny jen bloky, od kterých server dostal již nějaká data. OPC klient však může číst i zapisovat hodnoty i od ostatních bloků (čtené hodnoty jsou samozřejmě nesmyslné, ale operace čtení neselže, což je v některých případech důležité).
V adresním prostoru OPC serveru jsou položky ve tvaru
RDC<ID>.<pin>,
kde
<ID> | je číslo remote/emulovaného bloku |
<pin> | je název signálu nabývající jedné z hodnot: |
-
- y0 až y15 – výstupy vzdáleného bloku (tj. vstupy u0 až u15 emulovaného bloku), které lze pouze zapisovat
- u0 až u15 – vstupy vzdáleného bloku (tj. výstupy y0 až y15 emulovaného bloku), které lze pouze číst
- fresh – doba uplynulá od přijetí posledního paketu v sekundách (tj. výstup fresh emulovaného bloku)
[Předchozí] [Na začátek] [Výše] [Další]
2020 © REX Controls s.r.o., www.rexygen.com