Ein gutes Neues Jahr.
Mit den Überlegungen zu dem universal einrichtbaren Programm auf den Microcontrollern ist es etwas weiter gegangen. Das Konzept steht und sobald der neue Kopf fertig realisiert ist bekomme ich Unterstützung bei der Programmumsetzung.
Microcontroller-Variablen:
Auf dem Microcontroller sollen drei Programmschleifen laufen, die je nach Bedarf auf einzelne Unterprogramme zugreifen:
Main-Programm:
Mit dem Main-Programm findet die Initialisierung statt. Im Normalzustand hält es sich in Zyklus 3 auf und regelt somit immer auf den Sollwert, der von der Benutzeroberfläche aus neu beschrieben werden kann.
Wird die Geschwindigkeit geändert, so muss Zyklus 2 aufgerufen werden um diese in den Timer_Schritte zu schreiben.
LS-Interrupt:
Wird ausgelöst, wenn sich das Signal eines Lichtschrankenpins ändert.
Timer_Schritte: Beinhaltet das Programm für die Schrittsteuerung
Unterprogramme:
Lichtschrankenzuordnung initialisieren:
Zuordnung der Lichtschranken um die Steckplätze softwareseitig untereinander austauschen zu können.
Bereichsinitialisierung:
Zusammensetzung der Bereichskennung
Istposition setzen (am Übergang der Lichtschranken):
Beim Eintreten eines LS-Interrupts soll die Istposition mit dem jeweils hinterlegten LS-Übergangswertes beschrieben werden. Hierdurch werden zwischenzeitlich auftretende Schrittverluste kompensiert.
Ein Schreiben findet nur statt, wenn die Lichtschranken aktiv sind. Hierdurch lassen sich bei inaktiven Lichtschranken einfach die Zuordnungen der Lichtschrankeneingänge herausfinden.
Sollgeschwindigkeit als Intervall in Timer_Schritte schreiben:
Die Geschwindigkeit (n) soll als Umdrehungen pro Sekunde übergeben werden. Das Intervall (t) gibt an, alle wie viele Millisekunden der Timer einmal durchlaufen wird. Es sind 400 Schritte pro Umdrehung notwendig.
Richtungssteuerung:
Mit der Richtungssteuerung wird der CQ/CCW-Pin gesetzt. Des Weiteren werden die Endpositionen überprüft und verhindert, dass diese überfahren werden können.
Schrittsteuerung (auf dem Timer_Schritte):
Die Schritte werden entsprechend des eingestellten Timerintervalls weiter geschalten, solange der Enabled-Pin gesetzt ist.
![]()
Bereichszählung (ausgelöst vom LS-Interrupt):
Mit der Bereichszählung wird ermittelt, wie viele Schritte in einem Bereich liegen. Hierdurch kann der entsprechende Maßstab des jeweiligen Aktors einfach rekonstruiert werden.
Im Anschluss lassen sich die hierdurch festgelegen LS-Übergangspositionen (X1-X7) über die Einrichtadresse beschreiben.
![]()
Da nicht mehr als 12 Anhänge pro Beitrag möglich sind kommt hier eine Unterbrechung.
Lesezeichen