RDC – Komunikační blok

Symbol blokuPotřebná licence: ADVANCED
Qt SVG Document Exported by REXYGEN Studio HLD u0 u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12 u13 u14 u15 iE fresh y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 RDC

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 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 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í 3 + 5 a (3 + 5) 5. 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.

image/svg+xmltarget computer name = "Computer2" Block ID = 1 Computer1 Computer 2 target computer name = "Computer1" Block ID = 1 ||||||||||||||||||||| Scope2 SLEEP SLEEP y SG HLDu0u1u2u3u4u5u6u7u8u9u10u11u12u13u14u15iEfreshy0y1y2y3y4y5y6y7y8y9y10y11y12y13y14y15 RDC2 HLDu0u1u2u3u4u5u6u7u8u9u10u11u12u13u14u15iEfreshy0y1y2y3y4y5y6y7y8y9y10y11y12y13y14y15 RDC1 u1u2y MUL 0 Display1 0 Display 5 CNI1 3 CNI u1u2y ADD

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í.

image/svg+xmltarget computer name = "Computer2" Block ID = 1 Computer1 Computer 2 target computer name = "Computer1" Block ID = 1 Scope1 Scope u1u2SWy SSW SLEEP1 SLEEP HLDu0u1u2u3u4u5u6u7u8u9u10u11u12u13u14u15iEfreshy0y1y2y3y4y5y6y7y8y9y10y11y12y13y14y15 RDC2 HLDu0u1u2u3u4u5u6u7u8u9u10u11u12u13u14u15iEfreshy0y1y2y3y4y5y6y7y8y9y10y11y12y13y14y15 RDC1 dvsppvtvhvMANIHmvdmvdeSAT PIDU dvsppvtvhvMANIHTUNETBRKTAFFipsmvdmvdeSATTBSYTEitetrempkptiptdpndpbpc PIDMA uy MDL tvUPDNrvLOCy MCU [proces_pv] [proces_mv] [proces_mv] [proces_pv] 0 Display 1 CNB

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)

0 ....

bez chyby

-1 ...

překročen maximální počet bloků (>64)

-2 ...

konflikt lokálních portů

-3 ...

nelze otevřít socket

-4 ...

nelze přiřadit lokální port

-5 ...

nelze nastavit tzv. neblokující mód socketu

-6 ...

chyba v IP adrese

-10 ..

chyba v inicializaci socketové knihovny

1 ....

bez chyby, ale zatím nepřišla žádná data

2 ....

přijat neplatný paket

4 ....

chyba při příjmu paketu

8 ....

chyba při odesílání paketu

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)

2024 © REX Controls s.r.o., www.rexygen.com