TIA TIA V13 S7 315-2DP Abfrage Anzahl Bits gleich 1

mstars

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe lange keine S7 mehr programmiert und auch nicht gerade viel Erfahrung mit TIA Portal und was Programmierung angeht. Die einfache Bit-Logik ist kein Problem.

Ich habe nun ein Projekt auf dem Tisch wo ich mit einer S7 315-2DP eine kleine Applikation umsetzen soll. An sich nicht schwierig, nur ich wollte fragen ob dies auch eleganter möglich ist.
Folgende Anforderung ist gegeben:

Ich bekomme 4 Temperaturen. Die Temperatur 1,2,3 muss ich vergleichen mit der Temp. 4. Sollte eine Temperatur größer sein als die Temp 4 muss ich das jeweilige Magnetventil öffnen was zu der Temperatur gehört. Je nachdem ob dann 1,2 oder 3 Magnetventile offen sind muss ich einer Umwälzpumpe einen Sollwert vorgeben. Dieser wäre dann bei 1 Magnetventil 33%, bei 2 66% usw.

Ganz primitiv gesehen würde ich einfach alle 3 Temperaturen einlesen, diese vergleichen mit der Temperatur 4 und dann das jeweilige Magnetventil schalten.
Anschließend würde ich über einfache UND Verknüpfungen abfragen ob die MV1 offen ist und MV2 und MV3 nicht oder MV2 offen und MV1 und MV3 nicht usw. Und dann über den MOVE Befehl den Sollwert in das Peripherie Ausgangswort schreiben. Das wäre jetzt meine einfache Lösung. Ist aber finde ich etwas unelegant. Gibt es was wo man abfragen kann ob 1, 2 oder 3 MV offen sind?
Wenn es geht bitte nur FUP oder KOP.

Was AWL angeht bin ich sehr sehr unerfahren.

Danke für eure Hilfe.
 
Hallo
Die Temperatur-Vergleicherei bekommst du hin?
Hysterese mit einbauen, sonst gibt das ein ziemliches Geflattere.

Zur Sollwertvorgabe:
Ich würde 3 Hilfsdatenwörter nehmen
Ventil 1 ist ON -- > MOVE "9216" ins Hilfsdatenwort 1 -- > andernfalls MOVE "0" ins Hilfsdatenwort 1
genauso mit Ventil 2 und 3 ins Hilfsdatenwort 2+3

Dann die 3 Hilfsdatenwörter addieren und das Ergebnis ins Ausgangswort transferieren (MOVE in FUP)
3 x 9216 = 27648 entspricht 100% am Peripherieausgangswort
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei deiner Aufgabe solltest du dir evtl. auch noch Gedanken über eine Hysterese machen. Ansonsten
hättest du u.U. das Problem das z.B. dein Wert 1 sich langsam Wert 4 nähert und dann das Magnetventil
an/aus/an/aus/an/aus geht.
 
Danke für den Tipp mit der Hysterese. Wie macht ihr die? Ich würde einfach 2 Vergleicher an ein RS Glied setzen. Setzen sobald T1>T4 und Rücksetzen wenn T1-x<T4.

Oh Danke. Eine wirklich simple Lösung mit dem Addieren. Nur mal so als Frage, was mache ich wenn der Kunde sagt der Sollwert soll nicht 0,33%,66% und 100% sein, sondern 0, 40,70 und 100%. Dann kann ich die einzelnen Ventile ja nicht mehr so einfach addieren damit es passt.
 
Danke für den Tipp mit der Hysterese. Wie macht ihr die? Ich würde einfach 2 Vergleicher an ein RS Glied setzen. Setzen sobald T1>T4 und Rücksetzen wenn T1-x<T4.
Genau so.
Edit:
T1-x<T4. stimmt nicht. Muss heißen T1< T4-x



... was mache ich wenn der Kunde sagt der Sollwert soll nicht 0,33%,66% und 100% sein, sondern 0, 40,70 und 100%....
Dann musst du das ein bisschen anders angehen: Nicht so übersichtlich aber auch kein Hexenwerk
Du "MOVEst" in deine Hilfswörter beispielsweise "10" addierst diese wie gehabt.
Dann vergleichst du auf ==0 /==10 /==20 /==30
Je nachdem welches Ergebnis du bekommst transferierst 11059 (40%), 19353 (70%), 27648 (100%)
 
Zuletzt bearbeitet:
Ich bekomme 4 Temperaturen. Die Temperatur 1,2,3 muss ich vergleichen mit der Temp. 4. Sollte eine Temperatur größer sein als die Temp 4 muss ich das jeweilige Magnetventil öffnen was zu der Temperatur gehört. Je nachdem ob dann 1,2 oder 3 Magnetventile offen sind muss ich einer Umwälzpumpe einen Sollwert vorgeben. Dieser wäre dann bei 1 Magnetventil 33%, bei 2 66% usw.
Du musst die Bits gar nicht zählen, da Du nicht beliebige Kombinationen der 3 Bits hast!

T3 > T2 > T1

T3 <= T4 und T2 <= T4 und T1 <= T4 ==> 0 0 0 (Bit1=0 ==> 0 Bit)
T3 <= T4 und T2 <= T4 und T1 > T4 ==> 0 0 1 (Bit2=0 UND Bit1=1 ==> 1 Bit)
T3 <= T4 und T2 > T4 und T1 > T4 ==> 0 1 1 (Bit3=0 UND Bit2=1 ==> 2 Bit)
T3 > T4 und T2 > T4 und T1 > T4 ==> 1 1 1 (Bit3=1 ==> 3 Bit)

Aber, wenn Du unbedingt die Bits zählen willst, kannst Du Dir einen "1-Bit-VollAddierer" basteln:
1BitVA.jpg
Q1 = 1 wenn ungerade Anzahl von In = 1 (Bit0 der Anzahl)
Q2 = 1 wenn mindestens zwei von In = 1 (Bit1 der Anzahl)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@Heinileini
Jeder Instandhalter wird dir bestimmt vor lauter Begeisterung um den Hals fallen......
Sofort und klar nachvollziehbar was da läuft.
Und dann erst die Freude wenn das mal auf 5 Ventile erweitert werden muss. :ROFLMAO::ROFLMAO:
 
@Heinileini

T3 > T2 > T1 gilt hier nicht, alle 3 Temperaturen sind unabhängig voneinander zu betrachten.

Das heißt es würde zum Beispiel gelten:
[FONT=&quot]T3 <= T4 und T2 <= T4 und T1 > T4 = 1bit oder
[/FONT]
[FONT=&quot]T3 <= T4 und T2 > T4 und T1 <= T4 = 1bit oder
[/FONT]
[FONT=&quot]T3 > T4 und T2 <= T4 und T1 <= T4 = 1bit

[/FONT]
@Paul
Vielen Dank. Wäre ich nicht so einfach drauf gekommen. Aber gute und einfache Lösung.
Wahrscheinlich denke ich noch zu kompliziert.
 
@mstars
Ich bitte vielstmals, mein Missverständnis bezüglich T3 > T2 > T1 zu entschuldigen. Das war ein Schuss in den Ofen!

@Heinileini
Jeder Instandhalter wird dir bestimmt vor lauter Begeisterung um den Hals fallen......
Sofort und klar nachvollziehbar was da läuft.
Und dann erst die Freude wenn das mal auf 5 Ventile erweitert werden muss.
@ alle Instandhalter, die jetzt mit Spannung darauf warten, ob/wie man die Schaltung erweitern könnte :ROFLMAO:
Hier die Erweiterung auf 7 Ventile:
T1bisT7.jpg

@Paul
Du hast ja sooo Recht! Die Belange der Inbetriebnehmer & Instandhalter darf man nicht aus den Augen verlieren und die leichte Erweiterbarkeit einer Schaltung bzw. eines Programmes auch nicht.
Deine Lösung der Aufgabe finde ich sehr gut, keine Frage!
Ich wollte mit Deinem Ansatz nicht in Konkurrenz treten, sondern nur eine weitere denkbare Lösung zeigen, im Rahmen der Aufgabenstellung:

Gibt es was wo man abfragen kann ob 1, 2 oder 3 MV offen sind?

Gruss, Heinileini
 
Zurück
Oben