Hi
normalerweise (was ist schon normal? -- wer will denn schon normal sein? -- ich verzettel ich, nochmal von vorne)
Ein SPS Programm lebt von der Endlosschleife. Eingänge lesen, Verarbeiten, Ausgänge schreiben und von vorne. Die reine Lehre sagt, dass man nicht auf Eingänge schreibt und jeder Ausgang nur einmal im Programm beschrieben wird. Um zu sehen, wie schnell die CPU niemals wird, schreibt man ein Programm
und verbindet A0.0 mit E0.0. Dann kann man am Oszilloskop sehen wie viel Zeit das Betriebssystem mit sich selbst verbringt. Das ist damit auch die minimale Zykluszeit für den freilaufenden OB1.
Wenn man nun Ausgänge mit Relais hat, dann hört man die ganz deutlich klappern. Sollte die Zykluszeit unter die Schaltzeit des Relais kommen, dann tut das dem Relais gar nicht gut. Und hängt an dem Relais noch ein Schütz unter Last, dann sind dessen Kontakte auch bald abgebrannt.
Da man aber im praktischen Leben mit dem Grundsatz "jeden Ausgang nur ein mal schreiben" selten klar kommt, schreibt man eben doch mehrmals auf einen Ausgang. Das stört in den seltensten Fällen, dann A0.0 ist ja gar nicht wirklich der Ausgang. A0.0 ist nur irgend ein Speicher, der, so es in HWCN eingestellt, erst am Zyklusende auf ein Modul kopiert wird und damit das Relais betätigt.
Wenn du jedoch auf PAB0 schreibst, so dauert das um Faktoren länger, denn nun wird tatsächlich sofort das Byte auf die echten Ausgänge geschrieben. Kopieren aus dem Speicher auf die Peripherie macht einen beträchtlichen Teil der Zeit aus, die die CPU außerhalb deines Programmes verbringt. Die ziehst du damit mehrfach in das Programm rein. Aber dafür klappern die Relais jetzt noch hektischer.
Schau dir
Code:
PAB0 := 16#FF
PAB0 := 0
PAB0 := 16#FF
PAB0 := 0
PAB0 := 16#FF
PAB0 := 0
mal auf einem Oszi an.
Bei der 1200/1500 muss man übrigens in der Tagtable ein Signal für AB0 definieren um dann mittels "signalname"
auf den Ausgang zu ballern.
'n schön' Tach auch
HB