Tabellarische Auflistung aller JSON-Attribute einer RAP-Datei.

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; damit kann z. B. ermittelt werden, 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 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 – wird automatisch 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 der Werteeingabe; hieraus werden je nach Typ Plausibilitätsprüfungen oder vorgegebene Dropdown-Listen erzeugt. Jeder ‚range‘-Eintrag besteht aus zwei Untereinträ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 Texteingabefeld, 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 Dropdown-Feld aus den im ‚values‘ Array definierten Wertekonstanten:

“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 Rangetyp ‚list‘ muss hier der Wert HINTER dem ‚|‘-Trennzeichen angegeben werden!
String notwendig
G unit Textstring, der die Einheit des Attributwerts beschreibt; erscheint in der Spalte ‚Unit‘ 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 STEHEN!

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.

Wertezeile 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 beliebige 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, wird 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 Variantenhierarchie (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 Variantenauswahl 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ägen 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 Werteanzeige 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 der Output anschliessend auf 0 zurück gestellt, springt auch der Input auf 0 zurück.

Objekt optional
include Zur Integration von Datendefinitionen, die von externen Konfigurations-Tools 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 rechtebezogen 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,
:
:

Im Fall einer Varianten-Definition muss sie entsprechend so aussehen:

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