Newbie Fragen zur S7-Programmierung

bbking

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

ich programmiere gerade kleine Beispiele für die Uni in S7 und stehe gerade bei einer Aufgabe an.

Meine Frage wäre, da ich die Antwort weder in der Online-Hilfe noch in der Beschreibung von der S7 finden konnte:
- werden Merker (zb M0.0) am Anfang von jedem Zyklus in den Init-Zustand zurückversetzt?

Ich möchte folgendes machen: wenn M0.0 nicht gesetzt, dann M0.0 auf 1 setzen und EB0 auf MB1 rüberkopieren. Danach schalte ich eine Lampe, wenn M0.0 1 ist.
Wir haben auf der Uni einen Simulator für die Ausführung der Aufgaben, und wenn ich dieses Programmstück ausführe, blinkt die Lampe sehr schnell -> für mich ein Zeichen, dass M0.0 immer wieder auf 1 gesetzt wird.
Ist das ein Bug in dem Simulator oder ist das mit den Merkern wirklich so wie in meiner Frage?

Vielen Dank im Voraus + viele Grüße
BBKing
 
Ein Merker bekommt in jedem Zyklus den Zustand des Verknüpfungsergebnisses (VKE), das direkt vor der Zuweisung des Merkers anliegt. Das kann auch bedeuten, daß der Merker jeden Zyklus seinen Zustand ändert - je nach dem Code der vor der Zuweisung steht.

Zeig doch mal, was Du programmiert hast.
 
Hi,

danke für die Antwort. Anbei die Projektdatei+AWL für den SPSSim, hoffentlich ausreichend kommentiert.
Gibt's eine empfehlenswerte S7-Doku, die auf solche "Tricks" eingeht?

Danke
 

Anhänge

  • Bsp2.zip
    2,6 KB · Aufrufe: 19
...
- werden Merker (zb M0.0) am Anfang von jedem Zyklus in den Init-Zustand zurückversetzt?
...
Nein, sie bleiben im letzten zugewiesenem Zustand des vorhergehenden Zyklus.

Ich hab' das jetzt nur kurz überflogen, aber das Problem in Deinem Programm wird der Takt im ersten Netzwerk sein, den Du vermutlich so nicht bauen wolltest.
Mit:
Code:
LDN M0.0
= M0.0
...
änderst Du in jedem Zyklus den Zustand von M0.0.
Ich schätze mal, Du wolltest den Merker eigentlich setzen, oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit:
Code:
LDN M0.0
= M0.0
...
änderst Du in jedem Zyklus den Zustand von M0.0.
Ich schätze mal, Du wolltest den Merker eigentlich setzen, oder?

Mit AWL kenn ich mich noch nicht so recht aus, mache es in KOP. Die Idee in Netzwerk1 war, wenn M0.0 nicht gesetzt, soll M0.0 gesetzt werden und EB0 auf MB1 kopiert werden. Theoretisch sollte M0.0 nur nach Ablauf von T37 und nur wenn M0.1 == 0 ist, zurückgesetzt werden -> das sollte aber nicht in jedem Zyklus vorkommen.
 
Mit AWL kenn ich mich noch nicht so recht aus, mache es in KOP.
...
Ich nehm auch lieber KOP, aber AWL läßt sich leichter posten ;)

Wenn Du in Dein erstes Netzwerk schaust, dann wird M0.0 dort nicht gesetzt (S) sonder mit gleich ( ) zugewiesen. Damit nimmt M0.0 immer den entgegengesetzten Zustand von sich an, da es ja gleich dem NICHT-Zustand von M0.0 sein soll.
 
Ich nehm auch lieber KOP, aber AWL läßt sich leichter posten ;)

Wenn Du in Dein erstes Netzwerk schaust, dann wird M0.0 dort nicht gesetzt (S) sonder mit gleich ( ) zugewiesen. Damit nimmt M0.0 immer den entgegengesetzten Zustand von sich an, da es ja gleich dem NICHT-Zustand von M0.0 sein soll.

Mist, das habe ich überlesen. Habe nur bei (|) beachtet, dass die Werte direkt gesetzt werden.

Vielen Dank!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde das Setzen von M0.0 auch nicht an der Stelle einfügen, wo jetzt das = ist, sondern im KOP-Pfad direkt hinter dem MOVB.
Dadurch wird M0.0 nur gesetzt, wenn der MOV-Befehl auch erfolgreich ausgeführt wurde.
In AWL sieht das dann so aus:
Code:
LDN    M0.0
MOVB   IB0, MB2
AENO
S      M0.0, 1

PS: In Microwin unter Ansicht auf AWL umschalten, obigen AWL-Code im Netzwerk 1 so eintragen/kopieren und Ansicht wieder zurückschalten. ;)
 
Ich würde das Setzen von M0.0 auch nicht an der Stelle einfügen, wo jetzt das = ist, sondern im KOP-Pfad direkt hinter dem MOVB.
Dadurch wird M0.0 nur gesetzt, wenn der MOV-Befehl auch erfolgreich ausgeführt wurde.
In AWL sieht das dann so aus:
Code:
LDN    M0.0
MOVB   IB0, MB2
AENO
S      M0.0, 1
PS: In Microwin unter Ansicht auf AWL umschalten, obigen AWL-Code im Netzwerk 1 so eintragen/kopieren und Ansicht wieder zurückschalten. ;)

LOL, ja, nachträgliche Änderungen in KOP sind ein Krampf. Auf die Umschaltung bin ich schon draufgekommen, v.a. wenn ich Netzwerke provisorisch auskommentieren will, ist das hilfreich.... :D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine Frage noch: wenn ich mir lokale Hilfsvariablen anlegen will, dann würde ich das normalerweise in der Liste oberhalb des Editors machen (Liste mit TEMP Einträgen...)

Mache ich das, hat der Simulator Schluckauf (die Deklaration in AWL vor BEGIN wird nicht akzeptiert) - gibt es eine andere Möglichkeit hierfür oder ist das einfach nicht implementiert im Simulator?
 
Sorry, ich kenn' den Simulator noch nicht.
Hatte bisher nur diesen hier gefunden, aber der hat bis dato Probleme mit der Parameterübergabe an Unterprogramme.

Ich hab' bei mir 'ne echte S7-224XP zum "Simulieren". :TOOL:
Sponsort by Chef.:D
 
Sorry, ich kenn' den Simulator noch nicht.

Die Frage ging ja in Richtung S7... :D

Hatte bisher nur diesen hier gefunden, aber der hat bis dato Probleme mit der Parameterübergabe an Unterprogramme.

Ich hab' bei mir 'ne echte S7-224XP zum "Simulieren". :TOOL:
Sponsort by Chef.:D

Wir müssen den von der Uni nehmen (simuliert S7-214), es gibt auch einige "echte" Geräte auf der Uni (will aber möglichst viel zu Hause arbeiten...), ansonsten bin ich eher Beckhoff-lastig - will aber Siemens zumindest ein bisschen kennen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... will aber Siemens zumindest ein bisschen kennen.
Das ist aber MicroWin S7 für die 200er-Serie, die es nur noch als "Ersatzteil" gibt.
Das S7 des Nachfolgers S7-1200, sowie der 300er & 400er sieht etwas anders aus.


Ach ja, das Vorgehen zum Anlegen der Temp-Variablen sollte richtig sein.
 
Das ist aber MicroWin S7 für die 200er-Serie, die es nur noch als "Ersatzteil" gibt.
Das S7 des Nachfolgers S7-1200, sowie der 300er & 400er sieht etwas anders aus.

Du weißt ja, Unis sind alle 5-10 Jahre am neuesten Stand der Technik, wenn sie neue Geräte bekommen...;)

Ach ja, das Vorgehen zum Anlegen der Temp-Variablen sollte richtig sein.

Danke, dann werde ich das mal lassen....

Nochmals vielen Dank an Alle für die Hilfe, jetzt komme ich schon besser voran!
 
Gerade entdeckt: wenn man in die Nähe der Bezeichnung eines Bausteins rechts-klickt, bekommt man im Context-Menü die Möglichkeit "Symbol definieren..." aufrufen zu können -> dort kann man dann zB dem Eingang einen sprechenden Namen geben.

Für einen Neugeborenen ist alles Neu.....oder so*ROFL*
 
Zurück
Oben