Funktionsauswahl in OP17

Willibald

Member
Beiträge
12
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo User,

ich grübele an einem Problem mit einer Funktionsanwahl in S7.
Es soll in einem OP17 eine Betriebsartenauswahl von 0-3
möglich sein. Die Werte von 0-3 werden in einen DB geschrieben.
Für jede dieser Betriebsart müssen bestimmte
Voraussetzungen erfüllt sein. Wenn die Voraussetzungen nicht
erfüllt sind, darf die angewählte Betriebsart nicht aktiviert werden
und der DB muss mit dem Wert 4 beschrieben werden. Im OP soll
dann der Text „Anwahl nicht möglich“ oder ähnlich erscheinen.
Wer kann mir bitte detaillierte Tipps zur Problemlösung geben.
Ich bedanke mich schon jetzt für Eure Hilfe.

Freundliche Grüße, Willibald.
 

Guido

Well-known member
Beiträge
104
Punkte Reaktionen
7
Hallo Willibald,

Ich will mal versuchen dir einige Tips zu deinem Problem zu geben.
Als erstes würde ich die zulässigen Werte für die erlaubten Betriebsarten anders wählen.
zb.
Wert = 0 bedeutet „Anwahl nicht möglich“
Wert = 1 bedeutet „Betriebsart 1"
Wert = 2 bedeutet „Betriebsart 2"
Wert = 3 bedeutet „Betriebsart 3"
Wert = 4 bedeutet „Betriebsart 4"
usw.

Der Vorteil ist im Fall dass eine neue, noch nicht vorhandene "Betriebsart"
hinzugefügt wird, deine Werte-Skala nach oben "offen" bleibt und beliebig viele
Betriebsarten hinzugefügt werden können.

Im OP17 würde ich die Variable "Betriebsart" (zb. DB1.DBB0) mit einer Symboliste verbinden.
Die Liste "Betriebsart" würde dann folgendermassen aussehen.
Wert;Textsymbol
0 = "Anwahl nicht möglich"
1 = "Betriebsart 1"
2 = "Betriebsart 2"
3 = "Betriebsart 3"
4 = "Betriebsart 4"

Ich geh mal davon aus, dass dir bekannt ist wie die Symbollisten in Protool erstellt und mit einer Variabeln verbunden werden.
Der Bediener kann dann mittels "SHIFT" und Pfeiltaste "UP" / "DOWN" die Betriebsart auswählen.

So, jetzt weiter zum S7 Programm....
Als erstes ist es wichtig zu wissen wann die Betriebsart gewechselt wurde.
Dafür würde ich dir empfehlen mit einer Hilfsvariabeln zu arbeiten.
Nennen wir sie einfach mal.... "MB0 = Aktuelle Betriebsart der Maschine"
MB 0 ist also die Betreibsart in der die Maschine augeblicklich arbeitet.
In deinem Programm müsstest du überall DB1.DBB0 in MB 0 umändern.
MB 0 muss verschieden von 0 sein, damit die Maschine eingeschaltet werden kann.

Wie kann man jetzt einen Betriebsarten-Wechsel im Progarmm abfangen? Ganz einfach im OB1.
Es bietet sich an, im OB 1 einen kleinen Test zu machen, der dir sagt dass einen neue Eingabe gemacht wurde.

L DB1.DBB0
L MB 0
<>I
CC FC1

Im FC1 kann jetzt die eigentliche Überprüfung der Bedingungen für die einzelnen Betriebsarten stattfinden.

FC1

Netzwerk 1 :Sprungverteiler für OP17-Eingabe "Betriebsart"
L DB1.DBB 0
SPL ERR //Wert liegt ausserhalb des zulässigen Bereichs
SPA ERR //Wert=0 und ist ebenfalls unzulässig.
SPA BA1 //Wert=1 für "Betriebsart 1" / Sprung zur Marke "BA1"
SPA BA2 //Wert=2 für "Betriebsart 2" / Sprung zur Marke "BA2"
SPA BA3 //Wert=3 für "Betriebsart 3"
SPA BA4 //Wert=4 für "Betriebsart 4"
ERR: SPA END

Netzwerk 2 :Bedingungen für "Betriebsart 1"
BA1: SET
U(
//Hier stehen deine Bedingungen für "Betriebsart 1"
)
SPBN END
L DB1.DBB0
T MB 0
BEA

Netzwerk 3 :Bedingungen für "Betriebsart 2"
BA2: SET
U(
//Hier stehen deine Bedingungen für "Betriebsart 2"
)
SPBN END
L DB1.DBB0
T MB 0
BEA

Netzwerk 4 :Bedingungen für "Betriebsart 3"
BA3: SET
U(
//Hier stehen deine Bedingungen für "Betriebsart 3"
)
SPBN END
L DB1.DBB0
T MB 0
BEA

Netzwerk 5 :Bedingungen für "Betriebsart 4"
BA4: SET
U(
//Hier stehen deine Bedingungen für "Betriebsart 4"
)
SPBN END
L DB1.DBB0
T MB 0
BEA

Netzwerk 6 :Wenn die Bedingungen nicht erfüllt waren um eine Änderung zu übernehmen.
END: NOP 0
L 0
T DB1.DBB0 // Die Eingabe im OP wird überschrieben und der Text „Anwahl nicht möglich“ angezeigt.
T MB 0 // Die Hilfsvariable "Aktuelle Betriebsart" wird auch auf 0 gesetzt. !
BE

So müsste es eigentlich funktionieren.
Zu bedenken ist lediglich die Tatsache dass die Komunikation zwischen S7 und OP17 etwas Zeit braucht
und der Text „Anwahl nicht möglich“ erst nach 1-2 Sekunden angezeigt wird.
Mit der Protool Variabeln-Eigenschaft "Erfassungszyklus" kann man das aber bis auf 0,2 Sek reduzieren.
(Protool Voreinstellung ist hier immer 1 Sek.)
Ich hoffe ich konnte dir hiermit einige gute Tips geben.....

Gruss
Guido
 

AndyPed

Well-known member
Beiträge
254
Punkte Reaktionen
1
Hallo Guido,

Sag mal wie kann ich den die Variable mit der Symbolliste verbinden.

Bin ich blind .... :oops: ??

Ciao
 

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
Meldungen

ich weiß ja nicht ob das beim OP17 geht, aber Guido meint sicher Betriebs- und Störmeldungen, die er dann programmtechnisch anstößt ?

Die Symbolliste hat sicher nichts damit zu tun ......


Gruß

Martin
 

Guido

Well-known member
Beiträge
104
Punkte Reaktionen
7
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo zusammen,

hier scheint ein kleines Missverständniss bezüglich der gemeinten "Symbollisten" vorzuliegen.
Mir scheint, ihr meint die Symbolliste aus STEP7. Diese ist aber definitiv NICHT gemeint.

Die Rede war oben von den Symbollisten die in PROTOOL erzeugt/angelegt werden können.
Diese Listen enthalten Werte und diesen Werten zugeordnete Texte.
Beispiel:
Wert; Textsymbol
0 ; Text 0
1 ; Text 1
2 ; Text 2

Wird nun in einem OP-Bild eine Variable eingefügt, und deren "Darstellung" auf "Textsymbol" eingestellt, zeigt das OP im Betrieb
bei Wert=1 nicht "1" sondern den in der Symbolliste zugewiesenen Text an. Also hier : "Text 1"

Ich hoffe ich konnte die gemeinte Protool-"Symbolliste" hiermit besser erklären.
Gruss Guido
 

AndyPed

Well-known member
Beiträge
254
Punkte Reaktionen
1
Sorry Guido,

Ich hatte schon das Op gemeint.
Blos hatte ich bei der Variablen dei Einstellung mit der Darstellung übersehen :oops:
Hast ja recht :oops:

Ciao
 
Oben