kann es sein, dass eine FOR Schleife jeZyklus nur 1 Mal durchlaufen wird, und dsnn im nächsten Zyklus wieder ein weiteres Mal mit erhöhtem Zähler, u.s.w ...
Oder schaue ich nur falsch ?
Grüsse,
Dieter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
FOR,WHILE und REPEAT Schleifen werden immer komplett in einem Zyklus abgearbeitet. Das ist unabhängig von der Art der Task. Am besten nachvollziehen kann man das wenn man mal einen Breakpoint in die Schleife setzt und dann das Programm Schritt für Schritt abarbeitet. Probiers aber mit einer kleineren Schleife als 10000!
Gruß
Ralph
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Also kann ich auch unbesorgt immer den gleichen Counter (i) benutzen, wenn mehrere verschiedene FOR-Schleifen hintereinaner im selben Programm vorkommen ?!
Grüsse,
Dieter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
kann es sein, dass eine FOR Schleife jeZyklus nur 1 Mal durchlaufen wird, und dsnn im nächsten Zyklus wieder ein weiteres Mal mit erhöhtem Zähler, u.s.w ...
Oder schaue ich nur falsch ?
Grüsse,
Dieter
Hi
Mach doch mal den "Ultimativen Test" !
Schreibe eine FOR-Schleife, die bis 10.000 oder mehr Durchgänge hat.
ERGEBNIS: Watch-DOG Zeitüberlauf.
Die FOR und WHILE ... Schleifen laufen in einem SPS-Zyklus durch.
Erhöhe die Anzahl der Schleifendurchgänge, so erhöht sich auch die Zykluszeit der TAsk.
P.S:
O.g. Aussage nur gültig für "freilaufende" Task.
Bei "Zyklisch" macht er so viele Schleifen, solange er nach "Zeit" hat.
(Bin mir NICHT sicher, da möglicherweise Hardware/Hersteller-Abhängig)
Hallo Leute,
FOR,WHILE und REPEAT Schleifen werden immer komplett in einem Zyklus abgearbeitet. Das ist unabhängig von der Art der Task. Am besten nachvollziehen kann man das wenn man mal einen Breakpoint in die Schleife setzt und dann das Programm Schritt für Schritt abarbeitet. Probiers aber mit einer kleineren Schleife als 10000!
Gruß
Ralph
Hi
O.K! Probiere es mit 1000 dann aber mit extrem vielen Berechnungen
und Wandlungen. Schleifen in diesen sich auch O.K!
Verwechsel ich das mit "Preambles-Multitasking"
OK danke.
Also kann ich auch unbesorgt immer den gleichen Counter (i) benutzen, wenn mehrere verschiedene FOR-Schleifen hintereinaner im selben Programm vorkommen ?!
Grüsse,
Dieter
moin,
ja, kannst du, der wird innerhalb der for schleife ja wieder neu gesetzt.
=> FOR i:=0 TO ....
Hallo Miteinander
Genau! Bevor das einer nachschlägt das heist: "Preemptive" Und bedeutet grob gesagt eine Task darf eine andere Task unterbrechen.
Damit wieder zu Dieters Problem:
Du kannst die Zählvariable solange bedenkenlos mehrfach verwenden wenn:
Du entweder nur eine Task hast oder die Variable immer Lokal deklarierst.
Probleme kann und wird es geben wen du die Zählvariable global deklarierst und in mehreren Tasks verwendest - dann viel Spass beim fehlersuchen.
Gruß Ralph
Gibt es egtl in CoDeSys Semaphoren?
Ein passendes Zitat zum von Ralph genannten Problem von einem Prof.:
"Das kann dann zu sehr merkwürdigen Fehlern führen..."
Ich denke, merkwürdig ist gar kein Ausdruck..
Ja, und eine geeignete LIB dafür. (Soweit ich weiss)
Kannst auch Global Variablen dafür verwenden.
Oder eine Art "State-Maschine"
Hallo Karl,
wie kann man globale Variablen als Semaphore nehmen ?
Oder wie funktioniert das mit deiner State-Maschine ?
Würde mich interessieren.
Ich suche schon lange eine einfache, Variante.
Schon mal Danke für deine Hilfe
Uwe
Übrigens die Bibliothek heisst SysLibSem und ist targetspezifisch.
Naja, dass die Sema global sein muss, leuchtet ein - sonst könnte ja nicht jede Task dran.