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.

ID Kurzbezeichnung Erläuterung / Beispiel Typ notwendig /optional
A id Hersteller-interne ID des Moduls / Geräts String notwendig
B version Module / Geräte können in verschiedenen Versionen vorliegen (alle Versionen haben dieselbe ID, unterscheiden sich jedoch in der Versionsnummer) String notwendig
C comment Interner Kommentar, z.B. zur Erläuterung des Dateiinhalts String-Array optional
D screencomment Vorbelegter 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 werden String notwendig
E size Breite der Baugruppe; kann z.B. verwendet werden um zu ermitteln ob noch genug Platz auf der Hutschiene vorhanden ist String optional
F devicetype Positionierungstyp 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

String notwendig
G producttype Gerätenummer der KUNBUS Produktlinie Num notwendig
E input / output / memory Eigentliche 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-Array notwendig
E.1 name Name des Wertes
WICHTIG: sind Blanks im Namen enthalten werden diese beim Einlesen der Datei durch Unterstriche ersetzt! Blanks deshalb möglichst vermeiden.
String notwendig
E.2 type DIN61131 Datentyp; z.B. BOOL, BYTE, WORD; in Großbuchstaben String notwendig
E.3 range Gü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

Objekt notwendig
E.3.1 Rangetyp 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.2 Rangetyp 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.3 Rangetyp 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

F default Vorgegebener 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! String notwendig
G unit Textstring, der die Einheit des Attributwerts beschreibt; erscheint in ‚Unit‘ Spalte der Editiertabelle; wird hier nichts angegeben wird als Einheit der Datentyp angezeigt. String optional
H tags Beliebige 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!

String notwendig
I edit Edit-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)

String notwendig
J order Sortierfolge, 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ührt Num. notwendig
K offset Speicher-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
L multi Integer 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
M active true 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. Bool optional
N export true oder false; bestimmt, ob der Attributwert in der ‚Export‘ Spalte der Editiertabelle standardmässig zum Exportieren markiert ist, oder nicht. Bool optional
O colorEdit Hex-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-Farbwert optional
P colorReadOnly Hex-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-Farbwert optional
Q colorTextEdit Hex-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-Farbwert optional
R colorTextReadOnly Hex-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-Farbwert optional
S Varianten-spezifisch Um 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”: { …

Array optional
T lang Um 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

Objekt optional
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.

Objekt optional
include Zur 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,
:
: