Architektur
Für die Programmerstellung habe ich mich, für TP 5.5
entschieden, da es noch die angenehmen Port-Befehle zur
Hardwareadressierung enthält. In Free-Pascal fehlen dies Befehle.
Dort müsste man sie als Assemblerunterprogramme einbringen. Die
Programmstruktur nimmt auf solche Umbauten dadurch Rücksicht, dass
diese Programmteile in eigene Module ausgelagert sind. Sie können
so leicht ausgetauscht werden.
Bei der Programmgestaltung wurde auf Objektorientierung verzichtet
– es wurde strikt strukturiert gearbeitet. Der Grund ist, dass die
Objektorientierung mit ihrer Kapselung und Vererbungsstruktur
Programmänderungen nur dann leicht ermöglicht, wenn diese
Änderungen eine Erweiterung des bestehenden Programmaufbaus
(Generalisierungen oder Spezialisierungen der Klassen) sind –
nicht jedoch, wenn sich der Aufbau selbst ändert. Diese
Einschränkung aber widerspricht der Absicht, ein
Experimental-Programm
zu haben, mit dem man leicht
Ansteuerkonzepte erproben kann.
Generell ein Wort zur Programmgestaltung: Mit einem objektorientierten
Ansatz zu starten, ist für ein Programm mit dem man noch
spielen
will nur für sehr erfahrenen Programmierer
empfehlenswert. Der Grund ist: Die Vererbung kann bei Änderungen in
Programmteilen Auswirkungen zeigen, die man nicht erwartet hat –
und: hat man sich zu Beginn für ein ungünstiges Objektmodell
entschieden – ist entweder das ganze Programm ein Murks
oder die Umstellung auf ein geändertes Modell sehr mühsam.
Der strukturieret, modulbasierte Ansatz ist da wesentlich leichter zu
handhaben und zu testen.
Programmübersicht:
Der Motor
Für die Erklärung der Steuerung von Schrittmotoren reicht das Modell
eines 2 Phasen Permanentmagnet-Schrittmotor. Dieser ist im einfachsten
Fall ein Gehäuse mit 4 Polen welche die Phasenspulen tragen und einem
Permanentmagnet als Rotor. Dadurch, dass der Rotor ein Permanentmagnet
ist, steht er in Ruhestellung unter einem der Pole mit einem gewissen
restlichen Haltemoment (das spürt man, wenn man den Motor an der Achse
dreht). Wird nun der Motor mit Strom beaufschlagt, entsteht an den
Statorpolen durch die Polwicklungen (Phasen) ebenfalls ein Magnetfeld.
Der Rotor wird nun zum Pol mit der dem Rotor entgegengesetzter
Magnetisierung gezogen. Beaufschlagt man nun danach den nächste Pol (die
nächste Phase) mit Strom derart, dass dieser nun den Rotor anzieht,
dreht sich der Rotor um einen Schritt weiter. Werden nun die Phasen
zyklisch der Reihe nach bestromt, dreht der Rotor und der Motor
läuft
. (Für genauere Erklärung und Darstellung der
unterschiedlichen Schrittmotoren und Ansteuerungsarten siehe /2/ oder sonstige Literatur über Schrittmotoren).
Die einfachste Art um eine Motor mit Strom zu beaufschlagen ist es, eine
Spule einzuschalten und wieder abzuschalten und mit der nächste Spule
dann das Gleiche zu machen und so weiter. Man fährt also im
Vollschrittbetrieb
, der Anker springt dabei von einem Pol zum
nächsten. Eine zweite Möglichkeit ist, kurz nach dem Einschalten der
ersten Phase auch die zweite einzuschalten. Man erreicht damit, dass der
Anker auch zwischen 2 Polen stabil stehen bleiben kann – der Motor läuft
dann im Halbschrittbetrieb
.
Prinzipdarstellung der Ströme:
Im Halbschritt sollte man den Phasenstrom bei Beaufschlagung beider
Phasen gleichzeitig absenken, da das Haltemoment zwischen den Phasen bei
voller Strombeaufschlagung größer ist als unter den Polen – der Motor
läuft ohne Stromabsenkung unruhig.
Für die zeitliche Überwachung
sorgt der Timer-Baustein im PC der über DOS-Kommandos angesprochen wird
(siehe /7/).
Die Bedienoberfäche
Die Bedineoberfäche ist im Prinzip die Texteingabeschnittstelle der
DOS-Command-Line. Zwecks besserer Lesbarkeit ist die Daten-Ein-Ausgabe
aber maskenähnlich gestaltet.
Programm - User - Interface:
Die vollständige Beschreibung als PDF-Datei ist verfügbar:
Programmbeschreibung,
Architekturbild
Das vollständige Programm in als Zip-Datei verfügbar:
TP5-Quellcode