-> Hier kostenlos registrieren
Hallo zusammen,
ich stehe etwas auf dem Schlauch und könnte Hilfe von Fachleuten gebrauchen.
Ich hoffe, dass ich alle relevanten Angaben sofort richtig eingestellt habe.
Also als neuer S7-User habe ich folgende „Herausforderung:“
Ich möchte Analoge Ausgänge mit Tastern im Tippbetrieb ansteuern. (keine Regelung)
Also einen Taster für – am Ende der Nahrungskette – Ventil etwas mehr auf und der andere Taster für Ventil etwas mehr zu.
Das Ganze dann 3 mal – aber um es nicht zu verkomplizieren erst einmal einfache Variante,
ich möchte das „verstehen“ nicht die Lösung.
Ich habe auch schon einige hilfreiche Tipps auf der Siemens Seite gefunden.
In diesem Fall S7-200 Tip009a.
Mein Grundgedanke ist, mit dem einen Taster zähle ich einen Merker um Betrag X hoch und
mit dem anderen Taster zähle ich den Merker um Betrag X runter.
Den Wert des Merkers übergebe ich an den analogen Ausgang und der steuert mein Ventil (4-20mA).
Das ich das Ganze dann nachher im Zahlenbereich noch begrenzen muss und Sicherheiten einbauen muss ist alles klar.
Es geht erst einmal um das GRUNDSÄTZLICHE….
Sytem:
S7-200
CPU 224XP
Software S7-Micro/WIN
Allerdings habe ich ein (wahrscheinlich syntax) Problem.
Hier mal der Quellcode, wobei ich anmerken möchte, dass das alles erst mal auf meinem Schreibtisch als Testversion liegt,
um überhaupt mal ein Gefühl für S7 zu bekommen.
Ich weiß, dass man das später mit Unterprogrammen programmieren soll usw.
Ich habe jetzt damit begonnen, den Tip009a für mich umzubauen, da ich nur positive Flanken nutzen möchte.
Soweit ist alles klar.
Mit LD E0.7 kann ich dann den Merker runterzählen. Usw.
Wenn ich mir nun die dazugehörige „Programmstatus Tabelle“ anschaue, dann sehe ich, wie LD E0.6 beim Tippen umspringt ABER
in der Zeile „+I“ – also dort wo ich eigentlich zählen möchte zeigt die Tabelle OP1 = 1000 (was ja meiner Konstanten entspricht) und OP2 bleibt beharrlich auf 0 …..
Das gleiche eine Zeile tiefer beim Übergeben an den Merker MW5
(war mal so ein Gedanke, dass ich das Ergebnis erst einem neuen Merker müsste.
Wobei die ONLINE HILFE ja sagt, dass bei „ +I IN1+OUT=OUT wäre…..)
Fragen:
1. Wo ist mein Gedankenfehler?
2. Welche Größe sollte der Merker haben? Sollte er schon in der Testphase in WORD-Breite sein oder reicht da byte?
3. Noch ne andere Baustelle:
Was bedeuten die „#“ Zeichen z.B. in folgender Zeile (Tipp 38 Übergabe an Analog OUT)
z.B.
MOVR #OSH:LD6, #Ausgang:LD14 // Berechneten Ausgangswert in Ausgang
// übertragen
So ich hoffe, ich habe mich verständlich ausgedrückt bei meinem kleinen Problem.
Danke für die Hilfe
Detto
Nachtrag hab das ganze mal mit Code "verschönert"
ich stehe etwas auf dem Schlauch und könnte Hilfe von Fachleuten gebrauchen.
Ich hoffe, dass ich alle relevanten Angaben sofort richtig eingestellt habe.
Also als neuer S7-User habe ich folgende „Herausforderung:“
Ich möchte Analoge Ausgänge mit Tastern im Tippbetrieb ansteuern. (keine Regelung)
Also einen Taster für – am Ende der Nahrungskette – Ventil etwas mehr auf und der andere Taster für Ventil etwas mehr zu.
Das Ganze dann 3 mal – aber um es nicht zu verkomplizieren erst einmal einfache Variante,
ich möchte das „verstehen“ nicht die Lösung.
Ich habe auch schon einige hilfreiche Tipps auf der Siemens Seite gefunden.
In diesem Fall S7-200 Tip009a.
Mein Grundgedanke ist, mit dem einen Taster zähle ich einen Merker um Betrag X hoch und
mit dem anderen Taster zähle ich den Merker um Betrag X runter.
Den Wert des Merkers übergebe ich an den analogen Ausgang und der steuert mein Ventil (4-20mA).
Das ich das Ganze dann nachher im Zahlenbereich noch begrenzen muss und Sicherheiten einbauen muss ist alles klar.
Es geht erst einmal um das GRUNDSÄTZLICHE….
Sytem:
S7-200
CPU 224XP
Software S7-Micro/WIN
Allerdings habe ich ein (wahrscheinlich syntax) Problem.
Hier mal der Quellcode, wobei ich anmerken möchte, dass das alles erst mal auf meinem Schreibtisch als Testversion liegt,
um überhaupt mal ein Gefühl für S7 zu bekommen.
Ich weiß, dass man das später mit Unterprogrammen programmieren soll usw.
Ich habe jetzt damit begonnen, den Tip009a für mich umzubauen, da ich nur positive Flanken nutzen möchte.
Soweit ist alles klar.
Code:
Netzwerk 1 (alle Merker auf Null setzen einmalig
mit Sondermerker SM0.1 um defineirte Zustände zu erhalten)
LD Erst_Zykl_ein:SM0.1 // SM0.1 laden.
MOVW +0, Steigende_Flanke:MW1
MOVW +0, Fallende_Flanke:MW3
MOVW +0, Summe:MW5
Netzwerk 2
LD E0.6 // E0.6 laden.
EU // Bei einer steigenden
// Flanke an E0.6,
+I +1000, Steigende_Flanke:MW1 // MW1 um 1000 erhöhen.
MOVW Summe:MW5, Steigende_Flanke:MW1
Wenn ich mir nun die dazugehörige „Programmstatus Tabelle“ anschaue, dann sehe ich, wie LD E0.6 beim Tippen umspringt ABER
in der Zeile „+I“ – also dort wo ich eigentlich zählen möchte zeigt die Tabelle OP1 = 1000 (was ja meiner Konstanten entspricht) und OP2 bleibt beharrlich auf 0 …..
Das gleiche eine Zeile tiefer beim Übergeben an den Merker MW5
(war mal so ein Gedanke, dass ich das Ergebnis erst einem neuen Merker müsste.
Wobei die ONLINE HILFE ja sagt, dass bei „ +I IN1+OUT=OUT wäre…..)
Fragen:
1. Wo ist mein Gedankenfehler?
2. Welche Größe sollte der Merker haben? Sollte er schon in der Testphase in WORD-Breite sein oder reicht da byte?
3. Noch ne andere Baustelle:
Was bedeuten die „#“ Zeichen z.B. in folgender Zeile (Tipp 38 Übergabe an Analog OUT)
z.B.
MOVR #OSH:LD6, #Ausgang:LD14 // Berechneten Ausgangswert in Ausgang
// übertragen
So ich hoffe, ich habe mich verständlich ausgedrückt bei meinem kleinen Problem.
Danke für die Hilfe
Detto
Nachtrag hab das ganze mal mit Code "verschönert"
Zuletzt bearbeitet: