Die Programmierung der IBHsoftec Steuerungen S7-SoftSPS 315 und S7-SoftSPS 416 erfolgt in STEP® 7 über die Programmierwerkzeuge S7 für Windows® oder STEP® 7 der Firma Siemens. Es wird der komplette Befehlsvorrat der Programmiersprache STEP® 7 unterstützt.
Die S7-SoftSPS 315 besitzt den kompletten Befehlsvorrat der SIMATIC® S7-315 CPU.
Die S7-SoftSPS 416 besitzt den kompletten Befehlsvorrat der SIMATIC® S7-416 CPU.
Binäre Verknüpfungsoperationen
Operation |
Operand |
Funktionsbeschreibung
|
U |
|
UND mit Abfrage auf ,,1“
|
UN |
|
UND mit Abfrage auf ,,0“
|
O |
|
ODER mit Abfrage auf ,,1“
|
ON |
|
ODER mit Abfrage auf ,,0“
|
X |
|
Exklusiv-ODER mit Abfrage auf ,,1“
|
XN |
|
Exklusiv-ODER mit Abfrage auf ,,0“
|
|
E |
eines Eingangs
|
|
A |
eines Ausgangs
|
|
M |
eines Merkers
|
|
L |
eines Lokaldatenbits
|
|
T |
einer Zeitfunktion
|
|
Z |
einer Zählfunktion
|
|
DBX |
eines Globaldatenbits
|
|
DIX |
eines Instanzdatenbits
|
==0 |
|
Ergebnis gleich Null
|
<>0 |
|
Ergebnis ungleich Null
|
>0 |
|
Ergebnis größer Null
|
>=0 |
|
Ergebnis größer-gleich Null
|
<0 |
|
Ergebnis kleiner Null
|
<=0 |
|
Ergebnis kleiner-gleich Null
|
UO |
|
ungültiges Ergebnis
|
OV |
|
Overflow
|
OS |
|
Überlauf (speichernd)
|
BIE |
|
Binärergebnis
|
Sonstige Verknüpfungen
Operation |
Operand |
Funktionsbeschreibung
|
U( |
|
UND Klammer auf
|
UN( |
|
UND-NICHT Klammer auf
|
O( |
|
ODER Klammer auf
|
ON( |
|
ODER-NICHT Klammer auf
|
X( |
|
Exklusiv-ODER Klammer auf
|
XN( |
|
Exklusiv-ODER-NICHT Klammer auf
|
) |
|
Klammer zu
|
O |
|
ODER-Verknüpfung von UND
|
NOT |
|
VKE negieren
|
SET |
|
VKE setzen
|
CLR |
|
VKE rücksetzen
|
SAVE |
|
VKE ins BIE retten
|
Operation |
Operand |
Funktionsbeschreibung
|
= |
|
Zuweisung
|
S |
|
Setze
|
R |
|
Rücksetze
|
FP |
|
Positive Flanke
|
FN |
|
Negative Flanke
|
|
E |
eines Eingangsbits
|
|
A |
eines Ausgangsbits
|
|
M |
eines Merkerbits
|
|
L |
eines Lokaldatenbits
|
|
DBX |
eines Datenbits
|
|
DIX |
eines Instanz-Datenbits
|
Master Control Relay
Operation |
Operand |
Funktionsbeschreibung
|
MCRA |
|
MCR-Bereich aktivieren
|
MCRD |
|
MCR-Bereich deaktivieren
|
MCR( |
|
MCR-Zone öffnen
|
)MCR |
|
MCR-Zone schließen
|
Lade / Transferoperationen
Operation |
Operand |
Funktionsbeschreibung
|
L |
|
Operand laden
|
T |
|
Operand transferieren
|
|
EB |
Eingangsbyte
|
|
EW |
Eingangswort
|
|
ED |
Eingangsdoppelwort
|
|
AB |
Ausgangsbyte
|
|
AW |
Ausgangswort
|
|
AD |
Ausgangsdoppelwort
|
|
MB |
Merkerbyte
|
|
MW |
Merkerwort
|
|
MD |
Merkerdoppelwort
|
|
LB |
Lokaldatenbyte
|
|
LW |
Lokaldatenwort
|
|
LD |
Lokaldatendoppelwort
|
|
DBB |
Datenbausteinbyte
|
|
DBW |
Datenbausteinwort
|
|
DBD |
Datenbausteindoppelwort
|
|
DIB |
Instanz-Datenbausteinbyte
|
|
DIW |
Instanz-Datenbausteinwort
|
|
DID |
Instanz-Datenbausteindoppelwort
|
|
STW |
Statuswort
|
L |
konst |
Laden einer Konstanten
|
L |
#Pointer |
Laden eines Zeigers
|
L |
T |
Zeitwert
|
LC |
T |
Zeitwert (BCD codiert)
|
L |
Z |
Zähler
|
LC |
Z |
Zähler (BCD codiert)
|
L |
DBNO |
Lade Datenbausteinnummer
|
L |
DBLG |
Lade Datenbausteinlänge
|
L |
DINO |
Lade Datenbausteinnummer (Instanz-DB)
|
L |
DILG |
Lade Datenbausteinlänge (Instanz-DB)
|
Peripheriezugriffe
Operation |
Operand |
Funktionsbeschreibung
|
L |
PEB |
Peripherieeingangsbyte
|
L |
PEW |
Peripherieeingangswort
|
L |
PED |
Peripherieeingangsdoppelwort
|
T |
PAB |
Peripherieausgangsbyte
|
T |
PAW |
Peripherieausgangswort
|
T |
PAD |
Peripherieausgangsdoppelwort
|
Akkumulatorbefehle
Operation |
Operand |
Funktionsbeschreibung
|
PUSH |
|
Akkus ,,nach oben“ schieben
|
POP |
|
Akkus ,,nach unten“ schieben
|
ENT |
|
Akkus schieben (ohne Al) A2->A3, A3->A4
|
LEAVE |
|
Akkus schieben (ohne Al) A4->A3, A3->A2
|
TAK |
|
Akku 1 und Akku 2 tauschen
|
TAW |
|
Akku 1 Bytes 0 und 1 tauschen
|
TAD |
|
Akku 1 alle Bytes tauschen
|
Schiebe- und Rotieroperationen
Operation |
Operand |
Funktionsbeschreibung
|
SLW |
|
Schieben links wortweise
|
SLD |
|
Schieben links doppelwortweise
|
SRW |
|
Schieben rechts wortweise
|
SRD |
|
Schieben rechts doppelwortweise
|
SSI |
|
Schieben mit Vorzeichen wortweise
|
SSD |
|
Schieben mit Vorzeichen doppelwortweise
|
RLD |
|
Rotieren links doppelwortweise
|
RLDA |
|
Rotieren links durch Al
|
RRDA |
|
Rotieren rechts durch Al
|
RRD |
|
Rotieren rechts doppelwortweise
|
|
konst |
um feste Anzahl von Bits
|
|
|
Schiebezahl im Akku 2
|
Zeitoperationen
Operation |
Operand |
Funktionsbeschreibung
|
SI |
T |
Starten als Impuls
|
SV |
T |
Starten als verlängerter Impuls
|
SE |
T |
Starten als Einschaltverzögerung
|
SS |
T |
Starten als speichernde Einschaltverzögerung
|
SA |
T |
Starten als Ausschaltverzögerung
|
R |
T |
Zeitfunktion rücksetzen
|
FR |
T |
Zeitfunktion freigeben
|
Zähloperationen
Operation |
Operand |
Funktionsbeschreibung
|
ZV |
Z |
Zählfunktion vorwärtszählen
|
ZR |
Z |
Zählfunktion rückwärtszählen
|
S |
Z |
Zählfunktion setzen
|
R |
Z |
Zählfunktion rücksetzen
|
FR |
Z |
Zählfunktion freigeben
|
Wortoperationen
Operation |
Operand |
Funktionsbeschreibung
|
UW |
|
UND wortweise
|
UD |
|
UND doppelwortweise
|
OW |
|
ODER wortweise
|
OD |
|
ODER doppelwortweise
|
XOW |
|
Exklusiv-ODER wortweise
|
XOD |
|
Exklusiv-ODER doppelwortweise
|
|
konst |
Mit einer Wort- bzw. Doppelwortkonstanten
|
|
|
mit dem Inhalt von Akku 2
|
Arithmetische Operationen
Operation |
Operand |
Funktionsbeschreibung
|
==I |
|
Integervergleich GLEICH
|
<>I |
|
Integervergleich UNGLEICH
|
>I |
|
Integervergleich GRÖSSER
|
>=I |
|
Integervergleich GRÖSSER GLEICH
|
<I |
|
Integervergleich KLEINER
|
<=I |
|
Integervergleich KLEINER GLEICH
|
==D |
|
Doppel-Integervergleich GLEICH
|
<>D |
|
Doppel-Integervergleich UNGLEICH
|
>D |
|
Doppel-Integervergleich GRÖSSER
|
>=D |
|
Doppel-Integervergleich GRÖSSER GLEICH
|
<D |
|
Doppel-Integervergleich KLEINER
|
<=D |
|
Doppel-Integervergleich KLEINER GLEICH
|
==R |
|
REAL-Zahl Vergleich GLEICH
|
<>R |
|
REAL-Zahl Vergleich UNGLEICH
|
>R |
|
REAL-Zahl Vergleich GRÖSSER
|
>=R |
|
REAL-Zahl Vergleich GRÖSSER GLEICH
|
<R |
|
REAL-Zahl Vergleich KLEINER
|
<=R |
|
REAL-Zahl Vergleich KLEINER GLEICH
|
SIN |
|
Sinus
|
COS |
|
Cosinus
|
TAN |
|
Tangens
|
ASIN |
|
Arcussinus
|
ACOS |
|
Arcuscosinus
|
ATAN |
|
Arcustangens
|
SQR |
|
Quadrieren
|
SQRT |
|
Wurzel (Radizieren)
|
EXP |
|
Exponent zur Basis e
|
LN |
|
Natürlicher Logarithmus
|
+I |
|
Integer Addition
|
-I |
|
Integer Subtraktion
|
*I |
|
Integer Multiplikation
|
/I |
|
Integer Division
|
+D |
|
Doppel-Integer Addition
|
-D |
|
Doppel-Integer Subtraktion
|
*D |
|
Doppel-Integer Multiplikation
|
/D |
|
Doppel-Integer Division
|
+R |
|
Realzahl Addition
|
-R |
|
Realzahl Subtraktion
|
*R |
|
Realzahl Multiplikation
|
/R |
|
Realzahl Division
|
MOD |
|
Doppel-Integer Division (Rest)
|
+ |
konst |
Addieren einer Konstante
|
+P# |
konst |
Addieren eines Zeigers
|
DEC |
|
Dekrementieren
|
INC |
|
Inkrementieren
|
Umwandlungsfunktionen
Operation |
Operand |
Funktionsbeschreibung
|
ITD |
|
Wandlung INT nach DINT
|
ITB |
|
Wandlung INT nach BCD
|
DTB |
|
Wandlung DINT nach BCD
|
DTR |
|
Wandlung DINT nach REAL
|
BTI |
|
Wandlung BCD nach INT
|
BTD |
|
Wandlung BCD nach DINT
|
RND |
|
Rundung zur nächsten ganzen Zahl
|
RND+ |
|
Rundung zur nächstgrößeren Zahl
|
RND- |
|
Rundung zur nächstkleineren Zahl
|
TRUNC |
|
ohne Rundung
|
INVI |
|
INT-Einerkomplement
|
INVD |
|
DINT-Einerkomplement
|
NEGI |
|
INT-Negation
|
NEGD |
|
DINT-Negation
|
NEGR |
|
REAL-Negation
|
ABS |
|
REAL-Betragsbildung
|
Sprungoperationen
Operation |
Operand |
Funktionsbeschreibung
|
SPA |
Ziel |
Sprung absolut (unbedingt)
|
SPB |
Ziel |
Sprung wenn VKE = 1
|
SPBB |
Ziel |
Sprung wenn VKE = 1 (VKE speichern)
|
SPBN |
Ziel |
Sprung wenn VKE = 0
|
SPBNB |
Ziel |
Sprung wenn VKE = 0 (VKE speichern)
|
SPBI |
Ziel |
Sprung wenn BIE = 1
|
SPBIN |
Ziel |
Sprung wenn BIE = 0
|
SPZ |
Ziel |
Sprung bei Vergleichsergebnis = 0
|
SPN |
Ziel |
Sprung bei Vergleichsergebnis ≠ 0
|
SPP |
Ziel |
Sprung bei Vergleichsergebnis > 0
|
SPPZ |
Ziel |
Sprung bei Vergleichsergebnis >= 0
|
SPM |
Ziel |
Sprung bei Vergleichsergebnis < 0
|
SPMZ |
Ziel |
Sprung bei Vergleichsergebnis <= 0
|
SPU |
Ziel |
Sprung bei Vergleichsergebnis ungültig
|
SPO |
Ziel |
Sprung bei Overflow
|
SPS |
Ziel |
Sprung bei speicherndem Overflow
|
SPL |
Ziel |
Sprungverteiler
|
LOOP |
Ziel |
Schleife
|
Aufruf-Operationen
Operation |
Operand |
Funktionsbeschreibung
|
CALL FB |
|
Sprung zum Funktionsbaustein
|
CALL FC |
|
Sprung zur Funktion
|
CALL SFB |
|
Sprung zum System-Funktionsbaustein
|
CALL SFC |
|
Sprung zur System-Funktion
|
UC FB |
|
Funktionsbaustein absolut aufrufen
|
CC FB |
|
Funktionsbaustein bedingt aufrufen
|
UC FC |
|
Funktion absolut aufrufen
|
CC FC |
|
Funktion bedingt aufrufen
|
BEA |
|
Bausteinende absolut
|
BEB |
|
Bausteinende bedingt
|
BE |
|
Bausteinende
|
AUF |
DB |
Datenbaustein öffnen
|
|
DI |
Instanz-Datenbaustein öffnen
|
TDB |
|
Datenbausteinregister tauschen
|
Indirekte Adressierung
Operation |
Operand |
Funktionsbeschreibung
|
LAR1 |
|
AR1 laden
|
LAR2 |
|
AR2 laden
|
|
MD |
mit Merkerdoppelwort
|
|
LD |
mit Lokaldatendoppelwort
|
|
DBD |
mit Datenbausteindoppelwort
|
|
DID |
mit Instanz-Datenbausteindoppelwort
|
LAR1 |
|
AR1 laden mit Inhalt aus Akku1
|
LAR2 |
|
AR2 laden mit Inhalt aus Akku1
|
LAR1 |
AR2 |
AR1 laden mit Inhalt aus A2
|
LAR1 |
P# |
AR1 laden mit Zeiger
|
LAR2 |
P# |
AR2 laden mit Zeiger
|
TAR1 |
|
Schreibe AR1
|
TAR2 |
|
Schreibe AR2
|
|
MD |
in Merkerdoppelwort
|
|
LD |
in Lokaldatendoppelwort
|
|
DBD |
in Datenbausteindoppelwort
|
|
DID |
in Instanz-Datenbausteindoppelwort
|
TAR1 |
|
Schreibe AR1 in Akku1
|
TAR2 |
|
Schreibe AR2 in Akku1
|
TAR1 |
AR2 |
AR1 nach AR2 transferieren
|
TAR |
|
AR1 mit AR2 tauschen
|
+AR1 |
|
Addiere Akku1 zu AR1
|
+AR2 |
|
Addiere Akku1 zu AR2
|
+AR1 |
P# |
Addiere Pointer zu AR1
|
+AR2 |
P# |
Addiere Pointer zu AR2
|
Sonstige Operationen
Operation |
Operand |
Funktionsbeschreibung
|
NOP |
0 |
Nulloperation
|
NOP |
1 |
Nulloperation
|
BLD |
konst |
Bildaufbau
|
Aufbau des SPS-Speichers der S7-SoftSPS
Der Speicher der SoftSPSPLC S7-315 und SoftSPS PLC S7-416 gleicht im Wesentlichen dem Speicher der SIMATIC®-Steuerung S7-315 bzw. S7-416.
Beachten Sie, dass bei einem Zugriff von Windows-Programmen auf diesen Speicher das niederwertige mit dem höherwertigen Byte getauscht werden muss.
Aufbau der Systemdaten SoftSPS
Der Aufbau der Systemdaten in den Systemdatenbausteinen gleicht im Wesentlichen dem Aufbau der Systemdaten in der SIMATIC®-Steuerung S7-315 bzw. S7-416.
Integrierte Organisationsbausteine
Die in der folgenden Tabelle aufgeführten Organisationsbausteine werden ausgeführt, sofern sie programmiert sind:
OB-Nr |
Kurzbeschreibung
|
OB 1 |
Hauptprogramm
|
OB 10 – OB 17 |
Uhrzeitalarm
|
OB 20 – OB 23 |
Verzögerungsalarm
|
OB 30 – OB 38 |
Zeitbausteine (zyklischer Aufruf)
|
OB 80 – OB 87 |
Fehlerbausteine
|
OB 90 |
Hintergrundbearbeitung
|
OB 100/OB 101 |
Neustart bzw. Wiederanlauf
|
OB 121/OB 122 |
Programmierfehler
|
Integrierte Systemfunktionen
In der SoftSPS sind die für eine Software-SPS relevanten Systemfunktionen (SFC) integriert
Die folgende Tabelle zeigt (in numerischer Aufzählung) die vorhandenen SFC's.
SFC-Nr |
SFC-Name |
Kurzbeschreibung
|
SFC 0 |
SET_CLK |
Setzen der Systemzeit
|
SFC 1 |
READ_CLK |
Lesen der Systemzeit
|
SFC 5 (3) |
GADR_LGC |
Logische Basisadresse einer Baugruppe ermitteln
|
SFC 6 |
RD_SINFO |
Startinformation des aktuellen OBs auslesen
|
SFC 13 (1) |
DPNRM_DG |
Slave-Diagnose eines DP-Slaves
|
SFC 14 (2) |
DPRD_DAT |
Konsistente Daten eines DP-Normslaves lesen
|
SFC 15 (2) |
DPWR_DAT |
Daten konsistent auf DP-Normslave schreiben
|
SFC 20 |
BLKMOV |
SPS-Variable in Zielbereich kopieren
|
SFC 21 |
FILL |
SPS-Variable in Zielbereich vorbesetzen
|
SFC 22 |
CREAT_DB |
Anlegen von Datenbausteinen
|
SFC 23 |
DEL_DB |
Datenbaustein löschen
|
SFC 24 |
TEST_DB |
Attribute eines Datenbausteins testen
|
SFC 25 |
COMPRESS |
Ladespeicher komprimieren
|
SFC 28 |
SET_TINT |
Stellen eines Uhrzeitalarms
|
SFC 29 |
CAN_TINT |
Uhrzeitalarm anhalten (nicht ausführen)
|
SFC 30 |
ACT_TINT |
Uhrzeitalarm freigeben
|
SFC 31 |
QRY_TINT |
Status des Uhrzeitalarms
|
SFC 32 |
SRT_DINT |
Starte Verzögerungsalarm
|
SFC 33 |
CAN_DINT |
Unterbreche Verzögerungsalarm
|
SFC 34 |
QRY_DINT |
Statusabfrage des Verzögerungsalarms
|
SFC 36 |
MSK_FLT |
Maskieren eines synchronen Fehlerereignisses
|
SFC 37 |
DMSK_FLT |
Demaskieren eines synchronen Fehlerereignisses
|
SFC 38 |
READ_ERR |
Auslesen des Ereignisstatusregister
|
SFC 39 |
DIS_IRT |
Sperren der Asynchron- und Alarmfehlerbearbeitung
|
SFC 40 |
EN_IRT |
Freigeben der Asynchron- und Alarmfehlerbearbeitung
|
SFC 41 |
DIS_AIRT |
Verzögerung höherpriorer Asynchron- und Alarmfehlerbearbeitung
|
SFC 42 |
EN_AIRT |
Freigabe höherpriorer Asynchron- und Alarmfehlerbearbeitung
|
SFC 43 |
RE_TRIGR |
Nachtriggern des Watchdogs
|
SFC 46 |
STP |
CPU Betriebszustand STOP
|
SFC 49 (3) |
LGC_GADR |
Ermitteln des Steckplatzes einer logischen Adresse
|
SFC 50 (3) |
RD_LAGADR |
Ermitteln aller logischer Adressen einer Baugruppe
|
SFC 51 |
RDSYST |
Systemzustandsliste (SZL) auslesen
|
SFC 64 |
TIME_TCK |
Timer Tick
|
SFC 81 |
UBLKMOV |
Block Move der nicht unterbrochen werden kann
|
(1) Die SFC 13 ist nur vorhanden, wenn der Treiber Cifcfg.dll eingebunden ist. Zudem kann diese nur gültige Ergebnisse liefern, wenn die PROFIBUS®-Konfiguration über den S7 für Windows® Hardwarekonfigurator oder den STEP®7 Hardwarekonfigurator erzeugt wurde. Dies ist nur bei Verwendung des Treibers (im Lieferumfang) CIFCFG.DLL möglich.
(2) Die SFC 14 und SFC 15 sind nur verfügbar, wenn diese über den Treiber CIF30D0.dll oder den Treiber CIFCFG.DLL eingebunden sind.
(3) Die SFCs können nur gültige Ergebnisse liefern, wenn die PROFIBUS®-Konfiguration über den S7 für Windows® Hardwarekonfigurator oder den STEP®7 Hardwarekonfigurator erzeugt wurde. Dies ist nur bei Verwendung des Treibers (im Lieferumfang) CIFCFG.DLL möglich.
Integrierte Systembausteine
In der SoftSPS sind die für eine Software-SPS relevanten Systembausteine (SFB) integriert.
S7 für Windows® unterstützt die SFB-Aufrufe durch intern vorhandene Bausteinkopf-Deklarationen (siehe Kapitel "Integrierte Systemfunktionen").
Folgende Systemfunktionsbausteine werden unterstützt:
SFB-Nr |
SFB-Name |
Kurzbeschreibung
|
SFB 0 |
CTU |
Vorwärtszähler (Counter Up)
|
SFB 1 |
CTD |
Rückwärtszähler (Counter Down)
|
SFB 2 |
CTUD |
Vorwärts- und Rückwärtszähler
|
SFB 3 |
TP |
Zeitimpuls
|
SFB 4 |
TON |
Einschaltverzögerung
|
SFB 5 |
TOF |
Ausschaltverzögerung
|
SFB 32 |
DRUM |
Schaltwerk zur Steuerung von Schrittketten
|
SFB 52 (4) |
RDREC_DP |
Datensatz lesen
|
SFB 53 (4) |
WRREC_DP |
Datensatz schreiben
|
(4) Die SFB 52 und SFB 53 sind nur unter Verwendung des Treibers CIFCFG.DLL und entsprechendem Eintrag DPV1=1 in der Sektion [CIFCFG] der Konfigurationsdatei PLC43.ini verfügbar.