HEISCH AT

Standard-Software
für die
Automatisierungsindustrie

-> zum Ingenieurbüro:
Projektierung
Inbetriebnahme
und
Service
Home Aktuelles Produkte Know How Download
Kunden Xforms etc. Links Wir über uns Preise Kontakt
Produkte: Linux: xf_visu.

in Vorbereitung:
Kostenlose Visualisierung xf_visu (Chaotische Vorschau) .

Dokumentation (Fragmente) Dokumentation, aktueller chaotischer Stand
Inhalt Dokumentation noch ziemlich chaotisch und total veraltet aber die Softwarestruktur und der innere Aufbau wird klar.
Beim aktuellen Stand wird fast alles über xfEdit projektiert, das ist in der Dokumentation noch nicht dokumentiert.
Benötigt rk*_server, XForms
Bemerkung  

xf_visu Info:

xf_visu realisiert den Aufbau einer Linux-basierten Visualisierung zur Simatic-Familie S5 und S7 (classic und TIA).

Aktuell gibt es 3 Implementierungen. Alle Displays sind Touch-Displays.
Die älteste Applikation läuft produktiv seit Januar 2018.
Gekoppelt wird dort zwischen einem Raspberry Pi und einer S7-200SP.
( Der Pi hat sich als erstaunlich robust erwiesen, bisher gab es noch keinerlei Probleme.)
Die 2. Implementierung hat 2 Visualisierungen: ein Pi und ein PicoSys koppeln an eine CPU1516F.
Die 3. Implementierung hat ebenfalls 2 Visualisierungen: ein Pi und ein PicoSys koppeln an eine CPU317PN/DP.

Eckdaten:
Weg zur SPS:

* Gekoppelt wird über die S7-Kommunikation ( rktcp_server ).
Natürlich wäre auch die Kopplung an eine Simatic S5 über einen 'rk512_server' oder einen 'rk511_server' möglich.
* Kopplung über einen 'rk*_server' bedeutet natürlich: Nur Datenbausteine.
Für 1200er oder 1500er CPUs: Die DBs nicht optimiert.
* (Die Adressrechnung muss auch (noch) per Hand gemacht werden, da wird aber noch Einiges per Scripte automatisiert werden:
TIA-DB -> Excel -> CSV -> durch Script .. erzeugt Namen und Adressen. .. wäre z.B. möglich.)

Darstellung:
Die darzustellenden Variablen werden für Xforms mit den Forms-Designer erzeugt und mit einem Namen versehen.
Die Hintergrundbilder der Visu sind in XPM-Format, werden gemalt und in Forms eingelesen.
Die grafischen Variablen sind XPM-Bitmaps, für jeden Typ ( z.B. "Motor_64x64" ) muss einmalig eine C-function geschrieben werden die die Bitmaps austauscht.
( Mit einer der bereits bestehenden grafischen Variablen als Vorbild ist das eher trivial.
( Bereits existierende grafisch Variablen können kopiert und angepasst werden, dadurch ist die Erstellung einer neuen grafischen Variablen auch nicht mehr Aufwand als bei einer Grafikliste.)

Bei Ein-Ausgabevariablen wird der Farbumschlag für 'Bedienbar', 'Grenzwertverletzung' etc. zentral eingestellt, kann aber auch individuell überschrieben werden.

xf_visu - Teil:
Herstellung der Verbindung der SPS-Variablen und der grafischen Repräsentanz.

( Wesentliche, ganz unten beschriebene Programmieraufgaben werden aktuell bereits von xfEdit übernommen. )

xfEdit

ist die IDE, mit der xfVisu-Applikationen entwickelt werden.

Der grobe Überblick zeigt die Zusammenhänge:



xfEdit (ganz rechts) verwaltet Informationen über das Projekt. (siehe 'Projektdaten')
(1) xfEdit kann deshalb fdesign (links oben) gezielt mit der fd-Datei starten.
Die fd-Datei beinhaltet alle Informationenm die fdesign zum Arbeiten braucht.
(2) fdesign startet dann automatisch den 'Form Editor' für die angewählte Form.
(3) Wenn im 'Form Editor' ein FL_OBJECT angewählt wird, öffnet sich der 'Attribute Editor'.
(4) Wenn der 'Attribute Editor' geöffnet ist und das FL_Object einen Namen hat, werden Informationen über das FL_OBJECT sowie alle zugehörigen Inhalte der 'Hooks' an xfEdit übertragen.
Die 'Hooks'-Inhalte werden in xfEdit editiert und mit 'Write' an fdesign zurück übertragen.
Mit dem 'Attribute Editor' werden die 'Hooks' abgespeichert.
Die Daten in den 'Hooks' bleiben also beim FL_OBJECT und werden in der fd-Datei abgespeichert.
Siehe: 'Beispiel: Numerische Ein-Ausgangs-Variable'.


Projektdaten:


Die Projektdaten werden im Projektverzeichnis in der Datei 'ProjConfig.txt' gespeichert.


Beispiel für eine Numerische Ein-Ausgangs-Variable:
Numerische Ein-Ausgangs-Variable

Eine Variable benötigt mindestens folgende Informationen:
Immer Modus: IN / OUT / InOut / etc.
Adresse in der SPS
Zahlendarstellung in der SPS : BYTE / WORD / DINT / etc.
Falls Boolsche Variable: Bit-Adresse
falls Numerisch: Zahlen-Darstellung in der Visu
Optional: Falls Skalierung : Skalierungsfaktor
Begrenzung der Eingabewerte : Minimum, Maximum
Bedienbarkeit : gesteuert aus SPs oder anderer Variablen
Farbumschlag, abhängig von aktuellem Wert
etc.

Wie man sieht, wird das bereits in xfEdit editiert und an fdesign zurück geschrieben.

C-Quellen generieren und Projekt kompilieren:
C-Quellen generieren und Projekt kompilieren

Wenn die Daten mit fdesign gespeichern wurden, kann mit xfEdit die C-Quelldateien generiert werden.
Das komplette C-Programm kann ebenfalls kompiliert werden.

* Generierfenster öffnen
* fd-Datei lesen
* "(projekt_name)_inc.h" - Datei schreiben
Dies erzeugt die Header-Datei zur Definition der forms.
* "(projekt_name)_inc.c" - Datei schreiben
Dies erzeugt die C-Datei, die ihrerseits alle projektspezifischen Forms und Functions erzeugt.
Es werden die Daten aus den Hooks-Einträgen und der Projekt-Datei verarbeitet.
* compile
Kompiliert das Projekt



Beispielbildschirme einer der Applikationen:

Der Bildschirmaufbau ist natürlich wahlfrei, für diese Anlage wurde dieses Design gewählt, da eine ältere Anlage gleicher Funktion mit einem Siemens-OP ausgestattet ist und die Bedienung möglichst gleich sein soll.
Die großen Schaltflächen erleichtern außerdem dem Bediener die Arbeit.
Die Visu mit dem PicoSys hat ca.1700 Variablen, ca. 1000 davon werden über den xf_visu-Mechanismus angesteuert.



Beispielbildschirm Gruppe 2:


Störmelde-Archiv:


Die Definition der Störmeldungen liegen in einer Textdatei:
N: 0009
:T: " changeent de la recepture pas posible, machine courant"
:N: 0010
:T: " Commutateur entretien / reglage : Mauvaise position pour l´automatique"
:N: 0011
:T: " Commutateur Marche / Arret"
:N: 0012
:T: " res 0012"
:N: 0013
:T: " res 0013"
:N: 0014
:T: " res 0014"
:N: 0015
:T: " res 0015"
:N: 0016
:T: " res 0016"

Die alten S5-Programmierer erkennen sofort die Protool-Syntax.
Nicht besonders aktuell, aber das Störmeldesystem hatte ich noch aus alten Zeiten.
Die Erfassung macht ein demon der zusammen mit den Rechner startet, er versorgt über shared memory die Störmelde-Anzeige der Visu.


Rezepteditor:


Das Rezept hat 30 Zeilen Einträge, mit den Pfeilen kann darin geblättert werden.
( Die meisten Variablen wurde sowohl auf der xf_visu- als auch auf der Xforms-Seite durch ein awk-script erzeugt. )


Diese Applikation basiert auf der Grafikbibliothek

Xforms

Falls Sie Xforms nicht kennen:
Xforms ist eine alte, solide und schlanke Grafikbibliothek, ausgeliefert mit einem GUI-Designer und einer guten Dokumentation.
Wir haben schon eine Reihe von Visualisierungsprojekten damit realisiert.

Xforms: Infos und Download


xf_visu setzt einen laufenden rk*_server voraus. Sie können entweder die DEMO-Version (s.o.) von rk*_server oder die zeitlich nicht beschränkte Vollversion benutzen.
Nach oben   Zur Hauptseite  

Hier folgen noch 'Innereien', die bereits weitestgehend von 'xfEdit' erledigt werden.

Zuerst muss der Datenbaustein (zentral ) definiert werden:
xfplc_block_init ( OP_IN, /* number of this block Numbers have to start with 1 */
CPU_NR, /* CPU number to process */
90, /* db_nr to process */
0, /* starting DBB inside the block */
154, /* size of this block in Bytes */
900, /* [ms] if update requested */
1 /* update_req 1 = always, 0 = if needed by a form */
);

(Der erste Parameter ist nur eine Zahl (ab 1) es ist für die Lesbarkeit aber sinnvoll, hierfür ein '#define' zu benutzen, das erhöht die Lesbarkeit.)
CPU_NR : auch hier ein #define, über den rktcp_server können 16 CPUs angesprochen werden.


Definition der Variablen:
Beispiel: Die im Datenbaustein 90.DBD 80 befindliche Zahl ist einer Realzahl und soll in dem Bild "Gruppe_3" auf der Bildschirmvariablen "Ausgangswert" mit 3 Nachkommastellen angezeigt werden.
  stru = xf_inout_create ( fd_Gruppe_3->Ausgangswert, OP_IN,80) ;
  xf_add_show_auto ( stru, S7TYPE_REAL, "%.3f");
Die erste Zeile stellt die Verbindung zwischen der Bildschirm-Variablen und der PLC-Variablen her.
Die zweite Zeile definiert was zu tun ist:
 xf_add_show_auto () < - Nur Anzeigen,
 S7TYPE_REAL, "%.3f" < - ist Realzahl, mit 3 Nachkommastellen anzeigen.
oder als Ein-Ausgangsvariable:
 xf_add_inout_auto () < - Lesen und Schreiben

oder DB90.DBW 200 steuert die Darstellung eines Motors:
  stru = xf_inout_create ( fd_Gruppe_3->Ausgangswert, OP_IN,200) ;
  xf_add_show_fun ( stru, PROCNO_TYPE, motor_64x64);


Wenn der Datenbaustein also bereits definiert ist, sind das pro Variable grad mal 2 Zeilen
... und da alles in einem normalen Text-Editor stattfindet, kann man viel kopieren
... oder bei vielen Wiederholungen einfach C die Arbeit machen lassen
... oder Teile des Programms per Script schreiben lassen.

Das gilt auch für den Xforms-Teil:
Die komplette Projektierung liegt in einer einfach aufgebauten Text-Datei.


© 2000 ... 2023 Werner Heisch
Ausgabestand dieser Seite : 2023-04-23 16:43:12