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:
Bild  
Bild  
Bild  

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.
Bild  

LS-Interrupt:

Wird ausgelöst, wenn sich das Signal eines Lichtschrankenpins ändert.
Bild  

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.
Bild  

Bereichsinitialisierung:

Zusammensetzung der Bereichskennung
Bild  

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.
Bild  

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.
Bild  

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.
Bild  

Schrittsteuerung (auf dem Timer_Schritte):

Die Schritte werden entsprechend des eingestellten Timerintervalls weiter geschalten, solange der Enabled-Pin gesetzt ist.
Bild  

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.
Bild  

Da nicht mehr als 12 Anhänge pro Beitrag möglich sind kommt hier eine Unterbrechung.