BORIS-AutoCode-Generator für SCL
Der BORIS-AutoCode-Generator steht nunmehr auch für die SPS-Programmiersprache SCL (Structured Control Language) bzw. ST (Structured Text) zur Verfügung. Damit lassen sich mit BORIS aufgebaute und erprobte Steuerungen oder auch Regelungen direkt in auf der SPS ablauffähigen Programmcode überführen. Der generierte Code entspricht der SPS-Norm IEC 61131-3 und kann dann mit Hilfe der entsprechenden SPS-Programmierumgebung (z. B. STEP 7) zur direkten Programmierung der SPS benutzt werden.
Der SCL-Codegenerator stellt somit eine Alternative zur Kommunikation zwischen BORIS und der SPS über den entsprechenden SPS-Treiber dar. Während im letzteren Fall das eigentliche Steuerprogramm unter BORIS läuft, arbeitet die SPS mit Hilfe des vom SCL-Codegenerator erzeugten Codes autark. BORIS wird damit zur eigentlichen Steuerung nicht mehr benötigt, kann aber natürlich weiterhin zur Datenerfassung oder - im Zusammenwirken mit dem Flexible Animation Builder FAB - zur Prozessvisualisierung herangezogen werden. Unten stehende Grafik verdeutlicht die Zusammenhänge.

Das nachfolgende Listing zeigt einen Ausschnitt des aus dieser Struktur generierten SCL-Quellcodes.
(**********************************)
(* the controller function itself *)
(**********************************)
FUNCTION_BLOCK test_CONTROL
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
i : INT;
END_VAR
GLBVars.X_VEC[0,0]:=WF_BOOL_TO_REAL(RSFlipFlop_fct(p:=GLBVars.RSFLIPFLOP_V0,
e1:=WF_REAL_TO_BOOL(GLBVars.X_VEC[1,0]),
e2:=WF_REAL_TO_BOOL(GLBVars.X_VEC[10,0])));
GLBVars.X_VEC[2,0]:=WF_BOOL_TO_REAL(BOOL_IN_E_0_0());
GLBVars.X_VEC[3,0]:=WF_BOOL_TO_REAL(BOOL_IN_E_0_7());
GLBVars.X_VEC[5,0]:=WF_BOOL_TO_REAL(BOOL_IN_E_0_1());
GLBVars.X_VEC[6,0]:=WF_BOOL_TO_REAL(RSFlipFlop_fct(p:=GLBVars.RSFLIPFLOP_V6,
e1:=WF_REAL_TO_BOOL(GLBVars.X_VEC[4,0]),
e2:=WF_REAL_TO_BOOL(GLBVars.X_VEC[10,0])));
GLBVars.X_VEC[8,0]:=WF_BOOL_TO_REAL(BOOL_IN_E_0_2());
GLBVars.X_VEC[9,0]:=WF_BOOL_TO_REAL(RSFlipFlop_fct(p:=GLBVars.RSFLIPFLOP_V9,
e1:=WF_REAL_TO_BOOL(GLBVars.X_VEC[7,0]),
e2:=WF_REAL_TO_BOOL(GLBVars.X_VEC[10,0])));
GLBVars.X_VEC[10,0]:=WF_BOOL_TO_REAL(BOOL_IN_E_0_3());
BOOL_OUT_A_0_0(e:=WF_REAL_TO_BOOL(GLBVars.X_VEC[0,0]));
BOOL_OUT_A_0_1(e:=WF_REAL_TO_BOOL(GLBVars.X_VEC[6,0])); BOOL_OUT_A_0_2(e:=WF_REAL_TO_BOOL(GLBVars.X_VEC[9,0]));
GLBVars.X_VEC[1,0]:=WF_BOOL_TO_REAL(Logic2_fct(p:=GLBVars.LOGIK2_V1,
e1:=WF_REAL_TO_BOOL(GLBVars.X_VEC[2,0]),
e2:=WF_REAL_TO_BOOL(GLBVars.X_VEC[3,0])));
GLBVars.X_VEC[4,0]:=WF_BOOL_TO_REAL(Logic2_fct(p:=GLBVars.LOGIK2_V4,
e1:=WF_REAL_TO_BOOL(GLBVars.X_VEC[5,0]),
e2:=WF_REAL_TO_BOOL(GLBVars.X_VEC[0,0])));
GLBVars.X_VEC[7,0]:=WF_BOOL_TO_REAL(Logic2_fct(p:=GLBVars.LOGIK2_V7,
e1:=WF_REAL_TO_BOOL(GLBVars.X_VEC[8,0]),
e2:=WF_REAL_TO_BOOL(GLBVars.X_VEC[6,0])));
(* set all external outputs from the state of the system *)
FOR i:=0 TO MAX_X_VEC()-1 DO
GLBVars.X_VEC[i,1]:=GLBVars.X_VEC[i,0];
END_FOR;
END_FUNCTION_BLOCK
Weitere Leistungsmerkmale des SCL-Codegenerators:
| Zuweisung der SPS-I/O-Adressen direkt innerhalb von BORIS (d. h. ohne nachträgliche "Handarbeit") (siehe unten stehende Bildschirmgrafik 1) | |
| Paralleles Handling mehrerer I/O-Beschreibungsdateien (z. B. für unterschiedliche SPS-Konfigurationen) | |
Erzeugung einer Symboltabelle (SDF-Datei) mit allen erforderlichen Symbolen:
|
|
| Automatische dialoggeführte Generierung von I/O-Beschreibungsdateien anhand benutzerdefinierter I/O-Adressbereiche (siehe unten stehende Bildschirmgrafik 2) | |
| Optionale Einbindung einer Rahmenfunktion (z. B. für Echtzeitregelungen) |
![]() |
![]() |
|
|
SCL-AutoCode-Generator für BORIS (Demo-Version). Die Installation setzt eine bestehende WinFACT 7-Installation (Demo-Version reicht aus) voraus. |
|
|
Kurzeinführung zum SCL-AutoCode-Generator |


