Funktionsprinzip des Timers

poschi8

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

Ich beschäftige mich gerade mit der Programmabarbeitung in einer SPS.
Das Grundprinzip ist mir klar: Eingänge werden kopiert, die Befehle werden Schritt für Schritt ausgeführt, und danach werden die Ausgänge wieder geschrieben.
Das verstehe ich auch wenn es sich nur um UND, ODER, NAND usw handelt.
Wie läuft das aber bei einem Timer ab?
Wird die Anweisungskette unterbrochen wenn der Timer einen Overflow auslöst?

Wenn ja, wird die Kette anschließend neu gestartet, oder springt sie zum Ausstiegspunkt zurück?

Ich hoffe jemand kann mir dabei helfen :)

Gruß,
poschi
 
Hallo,
ein Timer erzeugt keinen Overflow oder eine Execption. Er läuft einfach nur ab und verhält sich gemäß deiner Vorauswahl für den Typ des Timers (Einschaltverzögert, Auschaltverzögert etc.)
Z.B. erwartet ein einschaltverzögerter Timer für die gesamte Dauer seines Laufs ein "True" am Eingang und bringt dir dann ein "True" an seinem Ausgang wenn er abgelaufen ist (solange, wie das True am Eingang auch ansteht).
Hierzu vielleicht auch in der Step7-Hilfe einfach mal die Impuls-Zeit-Diagramme zu den Timer-Typen anschauen ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für den Tip mit den Zeit-Diagrammen, an das hatte ich gar nicht gedacht.

Aber bedeutet das, dass der timer parallel zum Programm läuft, also quasi in einem eigenen Thread der nur den Timer hochzählt?

Gruß,
poschi
 
Zuletzt bearbeitet:
Ja ... im Prinzip stimmt das so.
Bei manchen Impuls-Timern kann einem das sogar ganz schön "in die Suppe spucken" ... (das mit dem Parallel-Thread)

Gruß
Larry
 
Ok.
Das bedeutet aber, das je nach Abhängig von der Größe des Programms, eine gewisse "Fehlzeit entstehen kann.

z.B.: Der Timer erreicht seinen Wert mitten im Programmablauf, die Anweisung die den Timer benutzt wurde aber bereits abgearbeitet. In diesem Fall wird erst beim nächsten Zyklus auf den Timer reagiert --> Die Zeit die der Zyklus bis zu der Anweisung benötig wäre somit eine Fehlzeit.

Stimmt das ungefähr? :)

Gruß,
poschi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Finde ich auch interessant, müsste ja theoretisch so sein, ja.
Ich denke, so etwas muss man bei zeitkritischen DIngen einfach berücksichtigen. theoretisch kann es ja dann bis zu 1,x-facher zykluszeit verzögerung beim Timer kommen.

Timer, welche im Millisekundenbereich arbeiten, siond somit fast nutzlos, zumindest wenn die Zykluszeit über der TImerzeit liegt.
Dann wäre der TImer hinfällig und es könnte eine einfache Anweisung genutzt werden, welche nach Zykluszeit aufgeführt wird.
 
Ja ... das ist genau so. Die Zykluszeit ist bei der Timer-Bearbeitung generell die Unschärfe und müßte berücksichtigt werden.
Jetzt sollte man aber auch bedenken, dass wenn etwas hochpräzise sein soll, der Timer sowieso nicht die richtige Wahl ist.

Gruß
Larry
 
Alles klar :)

Wie würde die Implementierung eines "präzisen" Timers aussehen?
Bzw. ist es in der Praxis nötig solche präzisen Timer zu verwenden.

Gruß,
poschi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Alles klar :)

Wie würde die Implementierung eines "präzisen" Timers aussehen?
Bzw. ist es in der Praxis nötig solche präzisen Timer zu verwenden.

Gruß,
poschi

Ein Präziser Timer ist immer relativ ungenau ;-)

Was verstehst du unter präzise?
Ob es nötig ist hängt meist nicht von der SPS sondern von der Anlage ab. Ein Timer der eine Trocknungsdauer von Holz in der Trockenkammer abschalten soll wird bei einr Woche Laufzeit nicht auf 1ms genau arbeiten müssen.
Wenn du Sprengstoff anrührst und könnte es schon sein dass du genau 10ms rühren musst damit dir das nicht um die Ohren fliegt. :ROFLMAO:
 
Dann ist eine SPS wahrscheinlich das falsche, evtl eine Atomuhr :ROFLMAO:

um da eine qualifizierte Aussage treffen zu können müsstest du schon eine Toleranz angeben. Bei 10ms +/- 1um kannst du eine SPS komplett löten bei +/- 2ms kommst du langsam in den Bereich wo eine SPS mitspielen kann
 
Zuviel Werbung?
-> Hier kostenlos registrieren
höher schneller weiter...

Juhu, mein SPS-Programm ist das schnellste ;)

Ohne konkrete Anwendung ist die Diskussion bestenfalls akademisch und führt zu relativ wenig. So ähnlich wie diese "Echtzeitdiskussion".

Je nach SPS-Typ (und Preis) kannst Du für eine ähnliche Aufgabe unterschiedliche Zykluszeiten erreichen. Alles was Du dann steuerst wird keine schnellere Reaktionszeit haben als die Zykluszeit, im Worstcase vielleicht sogar 2xZykluszeit. Ein Timer hat damit relativ wenig zu tun. Egal wo der Timer steht wird die Reaktion nur immer in einem Vielfachen der Zykluszeit erfolgen können, und dann noch u.U. einen Zyklus früher oder später.

In der Praxis kann man jetzt noch wichtige Programmteile in einen schnellen OB und unwichtige in einen langsamen OB legen. Das verbessert die Reaktion für die wichtigen Programmteile.

Wie das Abtasttheorem schon besagt, sollte die Zykluszeit aber höchstens halb so lang sein, wie die notwendige Reaktionszeit.

Also kurz gesagt, es kommt immer drauf an, was Du in der Praxis machen willst.

Gruß.

Um welchen Timer geht es denn hier überhaupt konkret?
 
Zusätzlich sollte man bei dem Thema "schnelle Timer" auch berücksichtigen, dass die Aktion nicht nur von der Zykluszeit der SPS abhängig ist. Oft muss hier auch noch der Buszyklus hinzukommen, sowie die Reaktionszeit des Aktors bei Ansteuerung.
Für eine Applikation, bei der man unter 10ms reagieren muss, sollte mit einer speziel dafür konzipierten Steuerung angegangen werden, wo auch alle anderen Komponenten dazu passen.

Reaktion Timer:
Erfassungszeit Sensor -> Eingang -> Zykluszeit Bussystem -> Einlesen PEW -> Zykluszeit Programm -> Bearbeiten Timer -> Zykluszeit Programm -> Schreiben PAW -> Zykluszeit Bussystem -> Reaktionszeit Aktor :)
 
Vielen Dank für eure Antworten.
Ich denke aber eher dann in Richtung "eigenes" System, und habe mich einfach nur gefragt wie so ein Timerbaustein am besten realisiert werden kann/sollte.

Gruß,
poschi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich klinke mich jetzt aus, wenn du uns eine konkrete Frage stellen würdest könnten wir auch qualifiziert antworten. Mit einen Wischi-Waschi-Statements kann keiner was anfangen. Kauf dir ne Atomuhr - präziser wirst du es nicht bekommen.
 
Ich denke aber eher dann in Richtung "eigenes" System, und habe mich einfach nur gefragt wie so ein Timerbaustein am besten realisiert werden kann/sollte.

jetzt will man nicht nur mit eine fertigen SPS schneller höher weiter fliegen, sondern baut sich gleich ne eigene SPS, die noch schneller höher weiter fliegt ;) Zumal wenn man keinen Plan hat, wie man einen Timer realisieren könnte, hört sich dass für mich schon etwas größenwahnsinnig an ;) Aber manche denken immer sie sind soo viel schlauer als alle anderen ;)

nimms nicht persönlich ;)

Trotzdem wärs ja schon interessant zu erfahren, was Du eigentlich vorhast. Dann könnten wir u.U. noch etwas in die richtige Richtung lenken.

Viel Erfolg.
Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das System ist bereits fertig und der Timer wurde in mit eigenen Threads implementiert.
Beim Testen der Durchlaufzeiten ist mir dann aber aufgefallen das der Timer "ungenau" ist.
Darum hat sich mir die Frage gestellt wie man das besser Implmentieren könnte,
da es aber keinen SPS in der Leistungsklasse einer S7 sein soll ist das ja auch nicht so schlimm.
 
Zurück
Oben