Tabellarische Auflistung aller JSON-Attribute einer RAP-Datei (Compact)

In diesem Kapitel findest Du eine tabellarische Auflistung alle Attribute, die Du zum Erstellen einer RAP-Datei benötigst.

Wie Du diese Datei erstellst, in PiCtory einbinden kannst und worauf Du dabei achten solltest, erfährst Du hier.

IDKurzbezeichnungErläuterung / BeispielTypnotwendig /optional
AidHersteller-interne ID des Moduls / GerätsStringnotwendig
BversionModule / Geräte können in verschiedenen Versionen vorliegen (alle Versionen haben dieselbe ID, unterscheiden sich jedoch in der Versionsnummer)Stringnotwendig
CcommentInterner Kommentar, z.B. zur Erläuterung des DateiinhaltsString-Arrayoptional
DscreencommentVorbelegter Kommentar zum Gerätetyp, der in der Geräte-Informationstabelle der Applikation in der Kommentarspalte angezeigt wird; kann dort vom Anwender je Gerät geändert werdenStringnotwendig
EsizeBreite der Baugruppe; kann z.B. verwendet werden um zu ermitteln ob noch genug Platz auf der Hutschiene vorhanden istStringoptional
FdevicetypePositionierungstyp des Geräts; bestimmt an welcher Position ein Gerät eingefügt werden kann (bitte in Großbuchstaben eingeben)

BASE Basisgerät; muss als erstes positioniert werden

LEFT Gerät kann nur LINKS vom Basisgerät positioniert werden

RIGHT Gerät kann nur RECHTS vom Basisgerät positioniert werden

LEFT_EDGE Gerät muss als als LINKES Abschlussgerät positioniert werden

RIGHT_EDGE Gerät muss als RECHTES Abschlussgerät positioniert werden

LEFT_RIGHT Gerät kann LINKS oder RECHTS vom Basisgerät positioniert werden

RIGHT_LEFT Gerät kann LINKS oder RECHTS vom Basisgerät positioniert werden

VIRTUAL Virtuelles Gerät – wir automatisches nach rechts in den virtuellen Gerätebereich plaziert

Stringnotwendig
GproducttypeGerätenummer der KUNBUS ProduktlinieNumnotwendig
Einput / output / memoryEigentliche Arbeitsdaten (‚Attribute‘) des Geräts, die während seines Betriebs modifiziert werden; eine Datendeklaration besteht aus nachfolgend (E.1 bis E.x) beschriebenen Teilwerten. Sowohl input, output als auch memory-Array muss in Datei vorhanden sein – kann jedoch ggf. leer sein ([])Objekt-Arraynotwendig
E.1nameName des Wertes
WICHTIG: sind Blanks im Namen enthalten werden diese beim Einlesen der Datei durch Unterstriche ersetzt! Blanks deshalb möglichst vermeiden.
Stringnotwendig
E.2typeDIN61131 Datentyp; z.B. BOOL, BYTE, WORD; in GroßbuchstabenStringnotwendig
E.3rangeGültigkeitsbereich des Werteeingabe; hieraus werden, je nach Typ, Plausibilitätsprüfungen oder vorgegebene Dropdown-Listen erzeugt. Jeder ‚range‘ Eintrag besteht aus zwei Unter-Einträgen nach diesem Muster:

“range”:{
“type”: “tooltip_loop”,
“values”: [0,1,1]
}

Verfügbare type/values Kombinationen, siehe E.3.1 bis E.3.3

Objektnotwendig
E.3.1Rangetyp 01:
loop
Erzeugt ein Dropdown-Feld aus den im ‚values‘ Array definierten Schleifenwerten, z.B. “values”: [0,10,1.5]

Erzeugt ein Dropdown-Feld mit Werten von 0 bis 10 in Schrittweite 1.5 (also: 0, 1.5, 3, 4.5, 6 … etc.)

E.3.2Rangetyp 02:
tooltip_loop
Erzeugt ein normales Texteingabe-Feld, das bei Berührung mit der Maus den gültigen Wertebereich in einem Tooltip anzeigt; der Wertebereich wird nach Eingabe überprüft und erzeugt bei Falscheingabe eine Fehlermeldung
E.3.3Rangetyp 03:

 

list

Erzeugt ein Drop-Feld aus den im ‚values‘ Array definierten Werte-Konstanten:

“values”: [
“M01|1”,
“M02|2”,
“M03|3”
]

Die Einträge vor dem „|“ Symbol werden als lesbarer Text im Dropdown Feld angezeigt, die Einträge hinter dem „|“ Symbol werden als eigentlicher Arbeitswert exportiert

FdefaultVorgegebener Standardwert des Attributs; wichtig: bitte darauf achten, dass er innerhalb des bei ‚range / values‘ definierten Wertebereichs liegt! Bei ‚list‘ Rangetyp muss hier der Wert HINTER dem ‚|‘ Trennzeichen angegenben werden!Stringnotwendig
GunitTextstring, der die Einheit des Attributwerts beschreibt; erscheint in ‚Unit‘ Spalte der Editiertabelle; wird hier nichts angegeben wird als Einheit der Datentyp angezeigt.Stringoptional
HtagsBeliebige beschreibende Text-Tags des Attributs; es müssen jedoch mindestens der Attributbereich (‚input / output / memory‘) und der ‚type‘ des Attributs (bool, byte, word etc.) mit Komma getrennt angegeben werden!

Hinweis: Bereich und Typ des Attributs werden in den Tags redundant zur einfacheren und performanteren Verarbeitung der RAP Datei abgelegt. SIE DÜRFEN NICHT IM WIDERSPRUCH ZUR DEN TECHNISCHEN Bereich/Typ ANGABEN SEIN!

Stringnotwendig
IeditEdit-Modus des Attributs; bestimmt welcher Teil vom Anwender erfasst bzw. geändert werden kann; gültig sind hier die Werte von 0-4

weder Name noch Wert des Attributs editierbar
Wert des Attributs ist editierbar
Name des Attributs ist editierbar
sowohl Name als auch Wert des Attributs sind editierbar

Werte-Zeile wird in der Edit-Tabelle nicht dargestellt (für konstante, nicht änderbare Werte, die dem Anwender nicht angezeigt werden sollen)

Stringnotwendig
JorderSortierfolge, d.h. relative Position in der Editiertabellen-Anzeige; hier können beleibige numerische Werte mit Lücken eingegeben werden, die dann zu einer aufsteigenden Sortierung führen, z.B. 10, 20, 25, 99 etc. HINWEIS: bitte Werte nicht doppelt verwenden, da die Sortierung sonst zu nicht vorhersagbaren Ergebnissen führtNum.notwendig
KoffsetSpeicher-Offset des Attributs; erstes Attribut des Geräts beginnt bei ‚0‘; um eine korrekte fortlaufende Belegung der Offsets zu gewähleisten bitte je nach Wertetyp (‚type‘-eintrag, z.B. BYTE) den entsprechende Offset-Abstand zum nächsten Attribut eingeben, Beispiel:

“name”: “Input01”,
“type”:“WORD“,
“offset”: 0,
:
“name“: “Input02”,
“type“:“BYTE“,
“offset“: 2

Input01 belegt als WORD-Wert die Bytes 0 und 1; der Offset von Input02 beginnt deshalb bei Byte 2 … etc.

Num.notwendig
LmultiInteger Wert von 1 bis n; erzeugt aus dem Attribut die gewünschte Zahl an multiplen Attributen (primär zur Einsparung redundanter Erfassungen bei vielen gleichartigen oder zusammengehörigen Werten); an den Namen des Attributs wird eine laufende Nummer angehängt, Beispiel:

“name”: “Input01”,
“multi”: 3

… erzeugt Attribute Input01_1 bis Input01_3

WICHTIG:

Ist kein multi Wert enthalten wird als Standard der Wert 1 angenommen

ist bei BOOL Werten kein ‚multi‘ Wert definiert wir beim Einlesen von RAP-Dateien intern der multi-Wert automatisch fix auf ‚8‘ gesetzt, um sie auf Byte-Grenzen zu setzen. Ein in der Datei vorhandener ‚multi‘ Wert überschreibt diesen Automatismus – hier ist darauf zu achten, grundsätzlich nur Vielfache von ‚8‘ zu definieren!

Num.optional
Mactivetrue oder false; definiert ob ein Attributwert beim Einlesen der RAP-Datei überhaupt berücksichtigt wird, oder nicht. Hierdurch können Attributwerte zum Beispiel für Testzwecke komplett deaktiviert werden.Booloptional
Nexporttrue oder false; bestimmt, ob der Attributwert in der ‚Export‘ Spalte der Editiertabelle standardmässig zum Exportieren markiert ist, oder nicht.Booloptional
OcolorEditHex-Farbwert zwischen #000000 und #ffffff; legt eine individuelle Hintergrundfarbe für das editierbare Eingabefeld fest; ist dieser Wert nicht vorhanden wird der Standardwert aus der config.json Datei verwendet („colors“:{colorEdit …Hex-Farbwertoptional
PcolorReadOnlyHex-Farbwert zwischen #000000 und #ffffff; legt eine individuelle Hintergrundfarbe für ein NICHT editierbares (read only) Eingabefeld fest; ist dieser Wert nicht vorhanden wird der Standardwert aus der config.json Datei verwendet („colors“:{colorReadOnly …Hex-Farbwertoptional
QcolorTextEditHex-Farbwert zwischen #000000 und #ffffff; legt eine individuelle Textfarbe für das editierbare Eingabefeld fest; ist dieser Wert nicht vorhanden wird der Standardwert aus der config.json Datei verwendet („colors“:{colorTextEdit …Hex-Farbwertoptional
RcolorTextReadOnlyHex-Farbwert zwischen #000000 und #ffffff; legt eine individuelle Textfarbe für ein NICHT editierbares (read only) Eingabefeld fest; ist dieser Wert nicht vorhanden wird der Standardwert aus der config.json Datei verwendet („colors“:{colorTextReadOnly …Hex-Farbwertoptional
SVarianten-spezifischUm eine Varianten-Hierarchie (siehe 4.) zu erfassen sind folgende zusätzlichen Einträge UNTERHALB eines Input / Output Eintrags notwendig:

“variants”: [
{
“id”: “Variante 001”,
“isDefault”: true,
“data”: [
:
:

Die Varianten „id“ wird in zukünftigen Versionen von ‚PiCtory‘ zur Varianten-Auswahl angezeigt. Hier sollte ein sprechender Text eingetragen werden, der EINDEUTIG sein muss.

„isDefault“ gibt die nach dem Einlesen der RAP-Datei in ‚PiCtory‘ voreingestellte Variante an. Bitte hier auf ggf. definierte ‚rules‘ achten und diese beim Setzen von ‚isDefault‘ berücksichtigen. ‚PiCtory‘ wendet die ‚rules‘ aktuell nur bei manueller Änderung der Variante durch den Anwender an und kann Widersprüche bei ‚isDefault‘ Einträge nicht selbst auflösen!

Innerhalb des „data“ Arrays erfolgt dann wieder die ‚normale‘ Erfassung der einzelnen Input / Output Attribute, wie sie auch ohne Varianten durchgeführt würde.

BITTE BEACHTEN: durch die Verwendung von Varianten ändert sich der Typ eines Input / Output-Eintrags von Array zu Objekt (eckige klammer zu geschweifter Klammer), d.h. von

“input”: [ …

zu

“input”: { …

Arrayoptional
TlangUm eine Internationalisierung der Werte-Anzeige zu ermöglichen werden die Namen (Labels) der Arbeitswerte ggf. als Zeiger auf die entsprechenden nationalen Bezeichnungen verwendet. Beginnt ein Label-Eintrag mit dem Präfix: ‚lang_‘ wird er als Zeiger interpretiert. Ohne dieses Präfix wird der Wert wie gegeben in die Anzeige übernommen.

Beispiel:
Arbeitswert: “lang_input”:”8″

Internationalisierungs-Bereich

“lang”:{
{
“de”: {
“input”: “Eingang”,
“output”: “Ausgang”
},
“en”: {
“input”: “Input”,
“output”: “Output”
}
}
}

Rendering im Werteeditor bei Deutscher Spracheinstellung:

Eingang: 8

Objektoptional
rules

 

 

 

 

 

Enthält die RAP Datei Varianten sowohl für Input- als auch für Output-Einträge kann durch Angabe von ‚rules‘ eine logische Verknüpfung zwischen Input und Output Varianten hergestellt werden. Diese bewirkt, dass ‚PiCtory‘ z.B. automatisch die verknüpften Varianten ‚synchronisiert‘ (nachzieht), sobald eine Variante ausgewählt wird. Beispiel:

“rules”: {
“IO”: [
{
“sync” : [0,0]
},
{
“sync” : [1,1]
}
]
}

In diesem Beispiel sind die 0.te Input und die 0.te Output-Variante, sowie die 1.te Input und die 1.te Output-Variante verknüft. Ändert der Anwender also den Input auf Variante 1 stellt ‚PiCtory‘ automatisch auch den Output auf Variante 1 um. Wird Output anschliessend auf 0 zurück gestellt, springt auch Input auf 0 zurück.

Objektoptional
includeZur Integration von Datendefinitionen, die von externen Konfigurationstools erzeugt wurden, kann der Inhalt eines input, output und memory Blocks auch zur Laufzeit (Zeitpunkt an dem ‚PiCtory‘ eine RAP-Datei einliest) aus einer externen Datei eingelesen werden. Ein entsprechender Block muss dann z.B. so kodiert werden:

“input”:
{
“include”:”[Pfad zur Include-Datei]”
}

Folgendes ist hier zu beachten:
Der Pfad zur Include Datei muss physikalisch und Rechte-bezogen so definiert sein, dass er von einem Ajax-Zugriff erreicht werden kann (User-Kontext des Webservers)

Der Inhalt der Include-Datei muss im JSON-Format vorliegen; er ERSETZT den „input“ Objekt-Block {} komplett, d.h. er wird NICHT nur IN den Objekt-Block an die Stelle des „include“-Eintrags eingefügt. Dies bedeutet, dass die include-Datei für einen normalen (nicht-Varianten) Inhalt die eckigen Klammern des Arrays enthalten muss, Beispiel:

[
{
“name”: “RevPiLED”,
“type”: “BYTE”,
“offset”: 1,
:
:

Und im Fall einer Varianten-Definition entsprechend so aussehen muss:

{
“variants”: [
{
“id”: “001”,
“isDefault”: true,
:
: