Switch CASE Anweisung

sweber

Level-1
Beiträge
36
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wie kann man eine effiziente Case- Anweisung
in Step7 programmieren?
Habe 15 verschiedene Peripherieeingänge die man unterscheidet.
Bei jeder Peripherieeingang muss ein anderer Merker gesetzt werden
und zum Schluß der Funktion eine weiteren FC aufrufen.

MFG
sweber
 
in AWL SPL - Sprungleiste (such mal danach im Forum)
(für deinen Falll wohl eher nicht)

oder SCL programmieren

Warum nicht einfach

U E...
= M ...

15 mal

dann deine Funktion ?
 
Zuletzt bearbeitet:
U E0.0
= M0.0

oder

U E0.0
S M0.0

mußt dann natürlich irgendwann den Merker 0.0 zurücksetzen (wenn er nicht mehr gebraucht wird.

Du kannst also folgendes machen

SET //VKE auf 1, falls du nicht weißt, was davor passierte
U E0.0
= M0.0

U E0.1
= M0.1

...

oder für 16 zusammenhängende Wertg ginge auch

L EW0
T MW0

dann sind alle Merker auf 1, deren Korrespondierender Eingang 1 ist.
 
L #IN1 // aktuelle Peripherieeingabeadresse in AKKU 1
L 299 // 299hex (Saugdruck)
==I // vergleicht, wenn == VKE = 1

wenn Saugdruckadresse,
dann
L MW 130 //ist der generierte Wert aus InTouch

und diesen Vorgang brauche ich 15 mal
(15 verschidene Analogeingänge die simuliert werden)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Möglich wäre:

L #IN
L 16#299
==I
SPBN M1
L MW130
T MWxyz
M1: NOP 0
L #IN
L 16#298
==I
SPBN M2
L MW128
T MWxyz
M2: NOP 0
....
usw.

oder dafür eine FC mit Parameterübergabe.

Gruß
raika
 
Ich habe die Problemstellung nicht verstanden aber CASE geht so:

Code:
CASE hexPAdress OF

  16#298: bBla1 := TRUE; (* Adresse 298 Bladruck *)

  16#299: bBla3 := TRUE; (* Adresse 299 Saugdruck *)

ELSE
  (* Falsche Adresse! *)
  bBla1 := FALSE;    (* Tue was*)

END_CASE
 
Zuletzt bearbeitet:
Zurück
Oben