1 Logik-Programm(2) Befehle in der Kontaktplan-Programmierung

Preview:

Citation preview

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

Recommended