-> Hier kostenlos registrieren
An einer Anlage ist ein A/B Drehgeber am HSC (High-Speed-Counter) Eingang einer 1200er SPS angeschlossen und es werden die Inkremente des Gebers mit 100kHz gezählt. Mittels Interrupt wird der Nulldurchgang erkannt und der Zähler zurückgesetzt. Ab einem definierbaren Zählwert wird programmtechnisch eine Aktion ausgelöst.
Es besteht nun folgendes Problem:
Bei langsamen Geschwindigkeiten funktioniert das Ganze ohne Probleme. Ist die Geschwindigkeit allerdings höher, ca. 200 Inkr. / Sekunde (was nicht wirklich viel ist), kann es sein, dass die SPS schon nicht mehr auf den Zählerwert reagiert.
Das Problem ist eigentlich schnell erkannt. Der Zählwert wird zyklisch im Programm ausgewertet und trotz Bereichserfassung kommt die Steuerung einfach nicht mehr hinterher. Meine Lösung wäre, den Zählerwert per Interrupt mit dem Sollwert zu vergleichen. Nur gibt es hier 2 Probleme. Erstens, kann in der Konfig nur 1 Interrupt definiert werden und dort findet bei Überlauf schon der Reset statt. Das zweite Problem wäre, dass der Referenzwert um den Interrupt auszulösen, ein einzelner fester Wert im gesamten Bereich sein muss. Somit fällt die Lösung flach, bei jedem Inkrement einen Interrupt auszulösen um hier dann den einen möglichen Reset und den Ist/Soll-Vergleich durchzuführen. Es sein denn, man setzt den Referenzwert auf 1 und zählt dann gar nicht mehr in der HW sondern im Interrupt-Programm mit dem Nachteil, dass die CPU komplett in die Knie geht?
Hat jemand eine Lösung wie dieses Problem mit dieser Hardware oder evtl. auch mit zus. HW zu lösen sein könnte?
Es besteht nun folgendes Problem:
Bei langsamen Geschwindigkeiten funktioniert das Ganze ohne Probleme. Ist die Geschwindigkeit allerdings höher, ca. 200 Inkr. / Sekunde (was nicht wirklich viel ist), kann es sein, dass die SPS schon nicht mehr auf den Zählerwert reagiert.
Das Problem ist eigentlich schnell erkannt. Der Zählwert wird zyklisch im Programm ausgewertet und trotz Bereichserfassung kommt die Steuerung einfach nicht mehr hinterher. Meine Lösung wäre, den Zählerwert per Interrupt mit dem Sollwert zu vergleichen. Nur gibt es hier 2 Probleme. Erstens, kann in der Konfig nur 1 Interrupt definiert werden und dort findet bei Überlauf schon der Reset statt. Das zweite Problem wäre, dass der Referenzwert um den Interrupt auszulösen, ein einzelner fester Wert im gesamten Bereich sein muss. Somit fällt die Lösung flach, bei jedem Inkrement einen Interrupt auszulösen um hier dann den einen möglichen Reset und den Ist/Soll-Vergleich durchzuführen. Es sein denn, man setzt den Referenzwert auf 1 und zählt dann gar nicht mehr in der HW sondern im Interrupt-Programm mit dem Nachteil, dass die CPU komplett in die Knie geht?
Hat jemand eine Lösung wie dieses Problem mit dieser Hardware oder evtl. auch mit zus. HW zu lösen sein könnte?
Zuletzt bearbeitet: