Ist das ein Problem der Zykluszeit?

petzi

Level-1
Beiträge
255
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ihr, habe da mal eine dumme Frage...

Es besteht ja die Möglichkeit über ein RS-Glied einen Merker zu setzen und rückzusetzen.

Warum klappt es dann nicht, wenn ich z.B. im OB1 in NW1 den Merker M10.0 setze und diesen Merker in NW10 rücksetze - kann das die SPS aufgrund ihrer Geschwindigkeit nicht mehr unterscheiden?

Vom Prinzip wäre es ja so, in NW1 wird der Merker gesetzt, in NW10 rückgesetzt, in NW 1 dann wieder gesetzt, usw.

Danke...
 
Das hat nichts mit der Zykluszeit zu tun, da stimmt vlt etwa in
deinen Programm nicht zb dopplzuweisung.

Code:
//Merker wird gesetzt
SET
= M 10.0

//Merker wird auf '1' abgefragt
U M 10.0
..
..
..

//Merker wird zurückgesetzt
CLR
= M 10.0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
setzt du den Merker noch irgendwo anderes zurück?
wird der Merker von einer anderen Anendung beschreiben (auf 1 oder 0 gesetzt)?
Im Simatic Manager kannst du unter Extras-Referenzdaten-Anzeigen nachschauen ob der Merker vielleicht nicht in irgendeiner anderen Funktion zruück gesetzt wird.

Gruß Jusch
 
Danke Helmut für deine Antwort.

Es handelt sich zwar um eine S7-1200 - aber da sollte ja eigentlich das Gleiche gelten, oder?

Habe im OB1 in NW1 in FUP den Merker M10.0 gesetzt - und diesen Merker in NW10 in FUP wieder rückgesetzt.

In NW5 soll dieser Merker M10.0 einen Sendeauftrag (positive Flanke) starten.

Der Merker wird zwar in NW1 gesetzt - aber in NW10 nicht mehr rückgesetzt...
 
Es trifft erstmal das gleiche zu, könnte es sein das der Merker
einer sonderfunktion zugeordnet ist. 1200er ist absolut nicht meine
Welt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Petzi

Danke Helmut für deine Antwort.

Es handelt sich zwar um eine S7-1200 - aber da sollte ja eigentlich das Gleiche gelten, oder?

Habe im OB1 in NW1 in FUP den Merker M10.0 gesetzt - und diesen Merker in NW10 in FUP wieder rückgesetzt.

In NW5 soll dieser Merker M10.0 einen Sendeauftrag (positive Flanke) starten.

Der Merker wird zwar in NW1 gesetzt - aber in NW10 nicht mehr rückgesetzt...


so wenn du im NW1 den Merser setzt bleibt dieser auch bis NW10 gesetzt.

Wenn dieser Merker in NW5 auf eine positive Flanke abgefragt wird, kann es nicht funktionieren, da dort dieser Merker immer gesetzt ist!

mfG
Andreas
 
Hallo Petzi

so wenn du im NW1 den Merser setzt bleibt dieser auch bis NW10 gesetzt.

Wenn dieser Merker in NW5 auf eine positive Flanke abgefragt wird, kann es nicht funktionieren, da dort dieser Merker immer gesetzt ist!

mfG
Andreas

Danke, ja stimmt Andreas!

Aber wie könnte ich das sonst lösen, dass in NW5 in jedem Zyklus eine pos. Flanke entsteht?

Und warum erscheint dann in der Beobachtungsliste der Merker M10.0 immer gesetzt - ist das ein Phänomen der Übertragung?
 
Das wird so nicht gehen, dass Du die Flanke in jedem Zyklus sehen willst. Du kannst höchstens 2 Merker spendieren, die hin und her togglen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wird so nicht gehen, dass Du die Flanke in jedem Zyklus sehen willst. Du kannst höchstens 2 Merker spendieren, die hin und her togglen.

D.h. tatsächlich wird der Merker schon in NW1 gesetzt und in NW10 rückgesetzt, richtig?

Aber ich sehe es aufgrund der (zu geringen) Übertragungsgeschwindigkeit (über Ethernet) nur nicht, stimmt das so?

Danke!
 
Dein Baustein muss eine Flanke sehen.
dazu muss auch der Merker den Zustand wechseln.

negiere doch nur den Merker
UN M10.0
= M10.0

und lösche den Setz- und Rücksetzvorgang raus.
Dadurch wird der Merker in jedem Zyklus seinen Zustand ändern

Dann wird dein Sendevorgang in jedem 2.Zyklus angestoßen.

mfG
Andreas
 
Danke Andreas, das hatte ich auch schon mal... siehe Anhang!

Dabei ergibt sich aber das Problem, dass der Sendeauftrag nur ca. alle 20s ausgeführt wird - wie ist das erklärbar?
 

Anhänge

  • Senden.jpg
    Senden.jpg
    23,8 KB · Aufrufe: 30
Zuviel Werbung?
-> Hier kostenlos registrieren
Um zu wissen, wann der TSEND_C-Baustein sendebereit ist, solltest du dir das Busy-Bit ansehen und ggf. im Programm auswerten. Daran erkennst du, wann du ihn wieder triggern kannst und ob vielleicht der Sendevorgang tatsächlich so lange dauert. Die Done- und Error-Bits sowie der Status-Ausgang sind ebenfalls sehr hilfreich.

bazooqa
 
Zuletzt bearbeitet:
Um zu wissen, wann der TSEND_C-Baustein sendebereit ist, solltest du dir das Busy-Bit ansehen und ggf. im Programm auswerten. Daran erkennst du, wann du ihn wieder triggern kannst und ob vielleicht der Sendevorgang tatsächlich so lange dauert.
bazooqa

Hm - es ist nur so, dass, wenn ich an den REQ-Eingang z.B. den Eingang E0.0 anlege und diesen über einen Taster betätige, so erfolgt der Sendeauftrag sofort.

Das ist sogar auch der Fall, wenn ich den Taster mehrmals hintereinander betätige - der Sedeauftrag erfolgt dann immer unmittelbar.

Warum also klappt das dann nicht, wenn der Sendeauftrag zyklisch angestoßen wird?
 
Vermutlich weil ein Zyklus nicht reicht, um den Sendeauftrag abzuarbeiten. Einen Taster wirst du sicherlich nicht mit mehr als 10 Hz betätigen können, die Zyklusfrequenz liegt jedoch deutlich höher.

Verriegle doch mal den REQ-Eingang mit dem Busy-Bit und lasse über eine Flankenauswertung des Busy-Bits einen Zähler mitlaufen. Dann wirst du sehen, wie oft der TSEND-C sich tatsächlich pro Sekunde, Minute,... starten lässt.

bazooqa
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum also klappt das dann nicht, wenn der Sendeauftrag zyklisch angestoßen wird?

Dia Abarbeitung eines Auftrags dauert länger als einen Zyklus. Je nach Protokoll muss die Verbindung aufgebaut werden, die Daten gesendet und dann evtl. von der Gegenstelle quittiert werden. Deshalb musst du das Busy-Flag auswerten.

Gruß
Dieter
 
D.h. tatsächlich wird der Merker schon in NW1 gesetzt und in NW10 rückgesetzt, richtig?

Aber ich sehe es aufgrund der (zu geringen) Übertragungsgeschwindigkeit (über Ethernet) nur nicht, stimmt das so?

Danke!

Der Merker wird in NW1 gesetzt und in NW10 zurückgesetzt. Du siehst den Wechsel in NW5 aber nicht, weil er in NW5 nur den Zustand von NW1 sieht. Das Programm wird zyklisch abgearbeitet und nicht parallel, d.h. alles was ab NW6 passiert sieht das NW5 erst wieder im nächsten Zyklus und wenn zwischendurch der Merker zurückgesetzt wird und dann wieder gesetzt, dann sieht man halt nur den letzten Zustand vor NW5.

Es hat also nichts mit der Zykluszeit zu tun, sondern einfach mit dem Prinzip, wie eine SPS arbeitet.
 
Es hat also nichts mit der Zykluszeit zu tun, sondern einfach mit dem Prinzip, wie eine SPS arbeitet.

Naja, das mit dem NW5 ist mir jetzt schon klar - hier gibt es keine Änderung.

Meine Frage hatte sich eigentlich auf NW1 und NW10 bezogen - wenn ich den besagten Merker in der Beobachtungsliste betrachte, so müsste ich ja unter normalen Umständen sehen, dass er gesetzt und anschließend wieder rückgesetzt wird - das sieht man jedoch nicht (auch nicht im OB1 selber, wenn man in den Beobachtungsmode schaltet). Der Merker scheint immer gesetzt zu sein... Und dafür ist doch die "zu träge" Ethernetverbindung zuständig, oder?

Das mit dem Busy-Bit versuche ich, sobald ich wieder in der Firma bin...
 
Zurück
Oben