DrTurkelten
Level-1
- Beiträge
- 6
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo zusammen,
ich möchte in einem Hardware Interrupt einen Timer laufen lassen.
Laut Zyklusablauf einer SPS würde man ja bei Flankendetektion ins
z.B. OB40 wechseln
dort alles abarbeiten
zurück ins OB1
Ich konnte leider nichts finden im Internet, aber nach meinen ganzen Versuchen, vermute ich, dass wenn man einen IEC-Timer (TON) nimmt, dieser
bei jedem neuen Zyklus aktualisiert wird oder hardwaretechnisch parallel läuft. Da aber der OB40 nach einem Zyklus wieder deaktiviert ist, ist der Timer im OB40
unsinnig
Jetzt habe ich verschiedene Sachen ausprobiert. Unter anderem habe ich die Idee verfolgt, ein Bit im OB40 zu setzen, welcher im OB1 dann abgefragt wird und ein entsprechenden FB startet.
Hat aber leider auch nicht funktioniert, da es da an der Rücksetzbedingung des Bits Schwierigkeiten gab.
Habe ich etwas übersehen? Gibt es noch eine Einstellung, die ich machen muss? Oder vllt. ist dies ein allgemeines Problem mit einem entsprechenden Lösungspattern?
Mein Ziel ist es per Flanke (Flanke => vermutlich Fehler) und einer entsprechenden Entprellzeit (oben genannter Timer) verschiedene Aktionen (Einschaltsperre, Fehlermeldung,...) durchzuführen.
Einfachste Idee wäre alle min. 40 Eingänge bei jedem Zyklus abzufragen, also ohne Flankendetektion, sondern einfach if-else. Ist derzeit auch so realisiert und funktioniert auch.
"Never touch a running system" ist zwar schön, ich würde aber trotzdem den Gedanken noch etwas weiterverfolgen, dass über ein Interrupt zu lösen.
Beste Grüße,
DrTurkelten
ich möchte in einem Hardware Interrupt einen Timer laufen lassen.
Laut Zyklusablauf einer SPS würde man ja bei Flankendetektion ins
z.B. OB40 wechseln
dort alles abarbeiten
zurück ins OB1
Ich konnte leider nichts finden im Internet, aber nach meinen ganzen Versuchen, vermute ich, dass wenn man einen IEC-Timer (TON) nimmt, dieser
bei jedem neuen Zyklus aktualisiert wird oder hardwaretechnisch parallel läuft. Da aber der OB40 nach einem Zyklus wieder deaktiviert ist, ist der Timer im OB40
unsinnig
Jetzt habe ich verschiedene Sachen ausprobiert. Unter anderem habe ich die Idee verfolgt, ein Bit im OB40 zu setzen, welcher im OB1 dann abgefragt wird und ein entsprechenden FB startet.
Hat aber leider auch nicht funktioniert, da es da an der Rücksetzbedingung des Bits Schwierigkeiten gab.
Habe ich etwas übersehen? Gibt es noch eine Einstellung, die ich machen muss? Oder vllt. ist dies ein allgemeines Problem mit einem entsprechenden Lösungspattern?
Mein Ziel ist es per Flanke (Flanke => vermutlich Fehler) und einer entsprechenden Entprellzeit (oben genannter Timer) verschiedene Aktionen (Einschaltsperre, Fehlermeldung,...) durchzuführen.
Einfachste Idee wäre alle min. 40 Eingänge bei jedem Zyklus abzufragen, also ohne Flankendetektion, sondern einfach if-else. Ist derzeit auch so realisiert und funktioniert auch.
"Never touch a running system" ist zwar schön, ich würde aber trotzdem den Gedanken noch etwas weiterverfolgen, dass über ein Interrupt zu lösen.
Beste Grüße,
DrTurkelten