-> Hier kostenlos registrieren
Hallo, ich bin in der SCL-Programmierung noch neu. Ich habe angefangen einen Baustein von AWL nach SCL umzuschreiben. Soweit seiht das im TIA-Portal V14 ja auch ganz übersichtlich aus. Bei den längeren Logikverknüpfungen bin ich mir aber noch etwas unsicher. Ich habe die Onlinehilfe dazu gelesen, finde bei Siemens außer der Beschreibung aber kaum Beispiele.
Operatoren und ihre Auswertungsreihenfolge
Ausdrücke können durch Operatoren miteinander verknüpft oder ineinander geschachtelt sein.
Die Reihenfolge der Auswertung von Ausdrücken hängt von der Rangfolge der Operatoren und der Klammerung ab. Grundsätzlich gelten folgende Regeln:
// Auszug in AWL
U #inout_Bereich_Ende
O(
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_00_M090_PLC_Kanal_0"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_01_M091_PLC_Kanal_1"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_02_M092_PLC_Kanal_2"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_03_M093_PLC_Kanal_3"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_04_M094_PLC_Kanal_4"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_05_M095_PLC_Kanal_5"
)
U #in_Standby_erlauben
O #in_Halt_Vorschub
UN #in_Tippen_plus
UN #in_Tippen_minus
UN #in_Referenzfahrt_starten
U #stat_Regler.ProgPos.Statuswort."1_Bit_01_Einschaltbereit"
= #stat_Verz_StandBy.VAR_IN
// Auszug in SCL
#stat_Verz_StandBy.VAR_IN := (
(#stat_Regler.ProgPos.Statuswort."1_Bit_01_Einschaltbereit" AND
NOT #in_Referenzfahrt_starten AND
NOT #in_Tippen_minus AND
NOT #in_Tippen_plus) AND
#in_Halt_Vorschub OR
#in_Standby_erlauben AND
((NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_00_M090_PLC_Kanal_0"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_01_M091_PLC_Kanal_1"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_02_M092_PLC_Kanal_2"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_03_M093_PLC_Kanal_3"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_04_M094_PLC_Kanal_4"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_05_M095_PLC_Kanal_5")
OR #inout_Bereich_Ende));
Ist die Umsetzung Richtig oder gibt es auch eine einfachere Lösung?
Kennt Ihr Beispiele zu solchen Umsetzungen Vergleich AWL / SCL Programmierung?
Vielen Dank!
Operatoren und ihre Auswertungsreihenfolge
Ausdrücke können durch Operatoren miteinander verknüpft oder ineinander geschachtelt sein.
Die Reihenfolge der Auswertung von Ausdrücken hängt von der Rangfolge der Operatoren und der Klammerung ab. Grundsätzlich gelten folgende Regeln:
- Arithmetische Operatoren werden vor Vergleichsoperatoren und diese vor logischen Operatoren ausgewertet.
- Gleichrangige Operatoren werden nach ihrem Auftreten von links nach rechts ausgewertet.
- Wertzuweisungen werden von rechts nach links ausgewertet.
- Operationen in Klammern werden zuerst ausgewertet.
// Auszug in AWL
U #inout_Bereich_Ende
O(
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_00_M090_PLC_Kanal_0"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_01_M091_PLC_Kanal_1"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_02_M092_PLC_Kanal_2"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_03_M093_PLC_Kanal_3"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_04_M094_PLC_Kanal_4"
UN #stat_Regler.ProgPos.Steuerwort."2_Bit_05_M095_PLC_Kanal_5"
)
U #in_Standby_erlauben
O #in_Halt_Vorschub
UN #in_Tippen_plus
UN #in_Tippen_minus
UN #in_Referenzfahrt_starten
U #stat_Regler.ProgPos.Statuswort."1_Bit_01_Einschaltbereit"
= #stat_Verz_StandBy.VAR_IN
// Auszug in SCL
#stat_Verz_StandBy.VAR_IN := (
(#stat_Regler.ProgPos.Statuswort."1_Bit_01_Einschaltbereit" AND
NOT #in_Referenzfahrt_starten AND
NOT #in_Tippen_minus AND
NOT #in_Tippen_plus) AND
#in_Halt_Vorschub OR
#in_Standby_erlauben AND
((NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_00_M090_PLC_Kanal_0"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_01_M091_PLC_Kanal_1"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_02_M092_PLC_Kanal_2"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_03_M093_PLC_Kanal_3"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_04_M094_PLC_Kanal_4"
AND NOT #stat_Regler.ProgPos.Steuerwort."2_Bit_05_M095_PLC_Kanal_5")
OR #inout_Bereich_Ende));
Ist die Umsetzung Richtig oder gibt es auch eine einfachere Lösung?
Kennt Ihr Beispiele zu solchen Umsetzungen Vergleich AWL / SCL Programmierung?
Vielen Dank!
Zuletzt bearbeitet: