1 logik-programm(2) befehle in der kontaktplan-programmierung
TRANSCRIPT
1
Logik-Programm(2)
Befehle in der Kontaktplan-Programmierung
2
Logik-Programm(2)-Befehle
Übersicht:
• Bit-Befehle
• Zeitgeber
• Zähler
• Vergleiche
• Daten kopieren
• Inkrementieren / Dekrementieren
• Arithmetische Befehle
• Datentyp umwandeln
3
RS-Flip-Flop(KEEP)
• Das RS(-Flip-Flop) ist ein Standard-FB und hat die gleiche Funktion wie bei
der CJ der KEEP-Befehl oder eine Selbsthaltung.
• Er braucht einen Instanznamen.
• Der Ausgang Q1 wird durch den Set-Eingang gesetzt und bleibt gesetzt,
auch wenn der Set-Eingang wieder weggeht. Er wird erst wieder
zurückgesetzt, wenn der Reset-Eingang angeht.
4
SET, RSET-Option
• Die Selbsthaltung kann man auch mit 2 Netzwerken
programmieren.
• Das erste enthält einen Ausgang, bei dem mit rechter Maustaste
die „Setzen-Befehl“-Option ausgewählt wird.
• Die Selbsthaltung kann man auch mit 2 Netzwerken
programmieren.
• Das erste enthält einen Ausgang, bei dem mit rechter Maustaste
die „Setzen-Befehl“-Option ausgewählt wird.
• Das Netzwerk zum Rücksetzen enthält den gleichen Ausgang aber
mit der „Rücksetzen-Befehl“-Option.
• Das Netzwerk zum Rücksetzen enthält den gleichen Ausgang aber
mit der „Rücksetzen-Befehl“-Option.
5
Flankengesteuerte Ausführung
• Kann als Eigenschaft eines Kontakts
ausgewählt werden.
• Kontakt markieren, rechte Maustaste
und dann z.B. „Ausführung bei
steigender Flanke“ auswählen.
SteigendeFlanke
Zykluszeit
FallendeFlanke
Zykluszeit
6
Flanken-FBs R_TRIG und F_TRIG
• Außerdem gibt es die Standard FBs
R_TRIG (rising edge) und F_TRIG (falling edge) .
• Als FB brauchen sie einen Instanznamen..
SteigendeFlanke
Zykluszeit
FallendeFlanke
Zykluszeit
7
Übung: Impulsrelais-Funktion
• Programmieren Sie eine Stromstoß-Schaltung für einen SPS-Ausgang mit symbolischem Namen ‚Lampe‘.
• Mit ‚Taster‘ wird die ‚Lampe‘ abwechselnd ein- und ausgeschaltet.
• Benutzen Sie im Programm ein Eingangs-Kontakt mit Flankenauswertung und den RS-FB.
• Weisen Sie bitte den Symbolen ‚Taster‘ und ‚Lampe‘ jeweils einen Ein- und eine Ausgang des Controllers zu.
Taster K1
Lampe
Controller
K1
Taster
Lampe
8
Übungslösung: Impulsrelais-Funktion
• Wenn Kontakt Taster mit steigender Flanke
• und Kontakt Lampe negiert
• dann Set-Eingang des RS-Flip-Flops der Lampe
• Wenn Kontakt Taster mit steigender Flanke
• und Kontakt Lampe
• dann Reset-Eingang des RS-Flip-Flops der Lampe
9
100ms – Zeitgeber: Timer
• Außer den IEC-kompatiblen Timern, die
nachfolgend besprochen werden, gibt es
noch einen Zeitgeber, der kompatibel zur
CJ-Serie ist:
• Timer ist eine Funktion und wird mit „I“
aufgerufen.
Eingang
Ausgang
SollwertZeit-
SollwertZeit-
• Timer ist eine Einschaltverzögerung
• Wenn ‚Eingang‘ EIN, dann läuft der Zeitgeber.
• Wenn die Zeit abgelaufen, dann schaltet der Ausgang auf EIN.
• PT:= Timer Sollwert, z.B. UINT#20 für 20 x 100 ms
10
IEC-kompatibler Timer TON
• Alle IEC-kompatiblen Timer sind
Standard-Funktionsblöcke und werden
mit Taste “F“ aufgerufen und benötigen
einen Instanznamen.Eingang
Ausgang
SollwertZeit-
SollwertZeit-
• TON ist eine Einschaltverzögerung
• Wenn ‚Eingang‘ EIN, dann läuft der Zeitgeber.
• Wenn die Zeit abgelaufen, dann schaltet der Ausgang auf EIN.
• PT:= Timer Sollwert, z.B. T#2s für 2 Sekunden.
• ET heißt elapsed Time und zeigt optional die abgelaufene Zeit.
11
IEC- Timer TOF: Ausschaltverzögerung
• Alle IEC-kompatiblen Timer sind
Standard-Funktionsblöcke und werden
mit Taste “F“ aufgerufen und benötigen
einen Instanznamen.
• TOF ist eine Ausschaltverzögerung
• Wenn ‚Eingang‘ EIN, gewesen ist, und ausgeht,
• dann bleibt ‚Ausgang‘ EIN, bis die Zeit abgelaufen ist..
• PT:= Timer Sollwert, z.B. T#2s für 2 Sekunden.
• ET heißt elapsed Time und zeigt optional die abgelaufene Zeit.
Eingang
Ausgang
SollwertZeit-
SollwertZeit-
12
IEC- Timer TP: verlängerter Impuls
• Alle IEC-kompatiblen Timer sind
Standard-Funktionsblöcke und werden
mit Taste “F“ aufgerufen und benötigen
einen Instanznamen.
• TP ist ein Monoflop
• Wenn ‚Eingang‘ EIN geht,
• dann geht ‚Ausgang‘ EIN, bis die Zeit abgelaufen ist..
• PT:= Timer Sollwert, z.B. T#2s für 2 Sekunden.
• ET heißt elapsed Time und zeigt optional die abgelaufene Zeit.
Ausgang
Eingang
SollwertZeit-
SollwertZeit-
13
Akkumulierende Einschaltverzögerung
• Wenn ‚Eingang4‘ EIN ist läuft die Zeit.
• Wenn ‚Eingang4‘ weggeht macht der
Timer nur eine ‚Pause‘.
• Wenn die Zeit abgelaufen ist, wird das
Timerbit gesetzt..
• Das Timer-Fertig-Bit wird erst
mit dem Reseteingang wieder
zurückgesetzt
14
IEC-kompatible Zähler: CTU, CTD, CTUD
• Alle IEC-kompatiblen Zähler sind
Standard-Funktionsblöcke und werden
mit Taste “F“ aufgerufen und benötigen
einen Instanznamen.
• CTU = Count Up, CTD = Count Down ist kompatibel mit dem CJ-Befehl CNT
• CTUD ist ein Aufwärts- Abwärts-Zähler und ähnlich dem CJ-Befehl CNTR
• Mit der positiven Flanke am Eingang „CU“ zählt der Zähler hoch.
• Mit dem Eingang „Reset“ wird der Zähler auf 0 zurückgesetzt.
• PV = Preset Value ist der Sollwert, bei dem der Ausgang „Q“ angeht.
• CV = Counter Value ist der aktuelle Zählerstand.
15
Datenvergleichs-Funktionen (“I”)
• Es gibt zahlreiche Vergleichsfunktionen, die die Daten miteinander vergleichen.
• EQ (=) Equal gleich
• NE(<>) Not Equal ungleich
• LT(<) Less Than kleiner
• LE(<=) Less or Equal kleiner gleich
• GT(>) Greater Than größer
• GE(>=) Greater or Equal größer gleich
• Wenn die Vergleichsbedingung erfüllt ist, ist der „Strompfad“ bzw. die
Ausführungsbedingung „EIN“.
16
Daten kopieren: MOVE
• Die MOVE- Funktion („I“) kopiert die
Werte aus der „In“-Variable in die „Out“-
Variable.
• Während bei der CJ nur ein Wort kopiert
wurde, gehen bei der NJ alle
Datentypen, sogar Array-Elemente und
Variablen mit benutzerdefinierten
Datentypen (Strukturen)
• z.B. alle Bits in einem Wort setzen:
17
Daten kopieren: MemCopy
• Diese Funktion ist ähnlich dem CJ-
Befehl XFER.
• Da es bei der NJ aber keine Adressen
mehr gibt, werden hier Array-Inhalte
kopiert. 0123
In[ ]In[ ]
AryOut[ ]AryOut[ ]
Size(Größe)=3
100200300400
0123
200300 100 0
Beispiel:
456
00 0
456
600 500700
18
Daten vorbesetzen: SetBlock
• Diese Funktion ist ähnlich dem CJ-
Befehl BSET.
• Da es bei der NJ aber keine Adressen
mehr gibt, werden hier Array-Inhalte
vorbesetzt.InIn
AryOut[ ]AryOut[ ]
Size (Größe)=3
100
0123
100100 100 0 00 0
456
19
Variablen bzw. Arrays initialisieren: Clear
• Wenn man ein ganzes Array löschen will
braucht man nicht die SetBlock-Funktion
benutzen, sondern kann mit Clear alles
schneller löschen.
• Ist ein Initialwert festgelegt, wird die
Variable bei „InOut“ auf den Initialwert
zurückgesetzt, sonst auf Null.
20
Inkrementieren=Inc, Dekrementieren=Dec
• Diese Funktionen sind gleich den CJ-
Befehlen ++ und --, aber funktionieren
für verschiedene Datentypen.
• Inc addiert 1 zu der Variable
(Inkrementieren)
• Dec subtrahiert 1 von der Variable
(Dekrementieren)
21
Arithmetik: Add +, Sub -, Mul *, Div /
• Diese Funktionen sind gleich den CJ-Befehlen
+, -,* und / aber funktionieren für verschiedene
Datentypen und + und * mit mehreren
Eingangsvariablen gleichzeitig.
• Add oder + Addieren
• Sub oder - Subtrahieren
• Mul oder * Multiplizieren
• Div oder / Dividieren
• Als Datentyp nicht INT sondern DINT nehmen:
200 * 200 = -25536 ?!
22
Datentyp umwandeln/konvertieren
• Variablen in der NJ haben einen festen Datentyp. Verarbeitung von Variablen
mit unterschiedlichen Datentypen mit einer Funktion ist meistens nicht
möglich. Die Datenwerte müssen in ihrem Datentyp daher oft gewandelt
werden.
**_TO_**
z.B.:
INT_TO_DINT
INT_TO_REAL
**_TO_**
z.B.:
INT_TO_DINT
INT_TO_REAL
TRUNC
Round
Roundup
RealToFormatString
LrealToFormatString
TRUNC
Round
Roundup
RealToFormatString
LrealToFormatString
Grundlegende TypumwandlungenGrundlegende Typumwandlungen
TO_**
z.B.:
TO_DINT
TO_REAL
TO_**
z.B.:
TO_DINT
TO_REAL
Andere TypumwandlungenAndere Typumwandlungen
IEC6113-3 TypumwandlungenIEC6113-3 Typumwandlungen
23
Grundlegende Datentyp-Umwandlung
• Nebenstehend ein
Beispiel und die
Datentyp-Schlüsselworte
mit denen die
verschiedenen
Wandlungsfunktionen
gebildet werden können.
BYTEWORDDWORDLWORD
USINTUINTUDINTULINT
SINTINTDINTLINT
REALLREAL
STRING
*** ***_TO_
BYTEWORDDWORDLWORD
USINTUINTUDINTULINT
SINTINTDINTLINT
REALLREAL
STRING
24
Beispiel Datentyp-Umwandlung
• Werte werden gerundet, wenn die Anzahl der Stellen nicht durch die
Gleitkommazahl dargestellt werden kann.
[Integer] _TO_ [Real]
DINT#10#12345DINT#10#12345 REAL#10#12345REAL#10#12345
25