Alapfogalmak
Portok és adattípusok
A Komodok a portokon keresztül beszélnek egymással. Egy port típusos: csak azonos típusú kimenet és bemenet köthető össze (a gráfszerkesztő nem engedi a hibás kötést).
[Input("temperature", Deadline = "00:00:05")]
public required IInput<Scalar> Temperature { get; init; }
[Output("heater")]
public required IOutput<BoolValue> Heater { get; init; }
A KOFA tölti ki a property-ket a példány létrehozásakor (required … init). A port azonosítója ("temperature") a Komodon belül egyedi, és verziók között stabil legyen, mert a gráf kötései erre hivatkoznak.
Kimenet és bemenet
- Kimenet:
Publish(érték)(a mérés ideje a pillanat) vagyPublish(érték, időbélyeg). Egy kimenet több bemenetre is köthető (szétosztás). - Bemenet:
ReadAllAsync(folyam),ReadAsync(a következő üzenet),TryRead(nem blokkol),Latest(az utolsó, akkor is, ha már olvastad). - Az üzenet egy
KofaMessage<T>:Value,Seq(sorszám),TimestampUtc(a mérés ideje),SourceInstanceId.
Bemenet beállításai
[Input] tulajdonság |
Jelentés |
|---|---|
Deadline |
Idő ("00:00:00.300"). Ha ennyi ideig nem érkezik üzenet, meghívódik az OnInputTimeout. Működtető Komodnál kötelező. |
QueueCapacity |
0 (alap): csak a legfrissebb érték marad, a régit eldobja (szenzor, vezérlés). Pozitív szám: sor, eseményekhez, naplóhoz. |
Multiple |
Több kimenet köthető a bemenetre; az üzenetek összefésülődnek. Alapból egy forrás köthető. |
FromUi |
A bemenet értékét a böngésző adja, nem kötés. UI bemenet. |
Adattípusok
Az adat egy típus; minden típusnak van azonosítója (kofa.scalar/1: név és főverzió). Két port akkor köthető, ha az azonosító és a főverzió egyezik.
A KOFA kész, közös típusokat ad (Kofa.Abstractions.DataTypes), hogy a különböző szerzők Komodjai összekapcsolhatók legyenek:
| Típus | Azonosító | Mire való |
|---|---|---|
Scalar |
kofa.scalar/1 |
Általános mérőszám mértékegységgel. |
BoolValue |
kofa.bool/1 |
Kapcsoló, állapot. |
Trigger |
kofa.trigger/1 |
Esemény adat nélkül (vészleállítás, reset). |
DriveCommand |
kofa.drive.command/1 |
Autó: kormány, gáz, fék. |
SailCommand |
kofa.sail.command/1 |
Vitorlás: kormány, nagyvitorla, orrvitorla. |
ActuatorChannels |
kofa.actuator.channels/1 |
PWM csatornák értékei. |
CameraFrame |
kofa.camera.frame/1 |
Kamerakép. |
A teljes lista, a mezőkkel: Adattípusok.
Konvenciók: SI mértékegységek (m, m/s, rad, V, A); a szögek radiánban; a normalizált vezérlőjelek [-1, 1] vagy [0, 1] tartományban (a típus leírása megmondja). A felület fokra váltja a szögeket.
Fontos
Mindig a meglévő közös típust használd, ha van ilyen: így a Komodod más szerzők Komodjaival is összeköthető. Új típust csak akkor vezess be, ha egyik sem illik; lásd Saját típusok.
Hogyan utazik az adat
A szerveren belül az objektum maga (másolás nélkül) megy át a Komodok között. A böngésző felé JSON-ként (camelCase, az enumok szövegként) jut el, és a szerver ritkítja (maxRateHz). Nagy adatot (kamerakép) ezért csak szükség szerint, ritkábban küldj; távoli (relay-es) kapcsolatnál lásd a relay prioritást.