REFANFReferenzanforderung bei Standalone-Anwendung
STARTProgrammstart bei Standalone-Anwendung
STOPProgrammabbruch bei Standalone-Anwendung
PAUSEProgrammpause bei Standalone-Anwendung
PARKENParkposition anfahren bei Standalone-Anwendung
Das intelligente USB-Schrittmotor-Interface dient zur Anbindung der SchrittmotorSteuerkarten SMC800 und SMC1500 über die serielle USB-Schnittstelle.
Zudem können auch handelsübliche Schrittmotorendstufen mit dem SchrittmotorInterface über die serielle USB-Schnittstelle angesteuert werden.
Das Interface enthält einen Mikrocontroller, welcher Ansteuersignale für die SMCSchrittmotor-Steuerkarten generiert, aber auch Takt- und Richtungssignale für
Standard-Schrittmotorendstufen erzeugen kann.
Im Lieferumfang des USB-Schrittmotor-Interfaces sind enthalten:
• Programm-CD mit vielen Softwareprogrammen, z.B.
dEMCU_befehle
unismc_2009
• Das intelligente USB-Schrittmotor-Interface – Die Hardware
• Das intelligente USB-Schrittmotor-Interface – Der ASCII-Befehlssatz
-Seite 3-
Das intelligente USB-Schrittmotor-Interface
2. Aufbau
Die Belegung der Steckverbinder, Jumper usw. finden Sie im Handbuch
Das intelligente USB-Schrittmotor-Interface Die Hardware
-Seite 4-
Das intelligente USB-Schrittmotor-Interface
3. Funktionsweise
Das intelligente USB-Schrittmotor-Interface dient als Bindeglied zwischen
Steuersoftware und Schrittmotor-Endstufe.
Das Interface enthält einen Mikrocontroller, der die Erzeugung von Datensignalen
übernimmt.
Es werden keine Software-Treiber benötigt. Die Ansteuerung erfolgt mit einfachen
Steuerkommandos im ASCII-Format, die über die serielle Schnittstelle
ausgegeben werden.
Diese Steuerkommandos können in jedem Betriebssystem, bzw. mit jeder
Entwicklungsumgebung erzeugt werden, so dass hier völlig unabhängig vom
Betriebssystem gearbeitet werden kann.
Es gibt prinzipiell zwei Möglichkeiten Daten an die Schrittmotor-Steuerkarte
weiterzugeben.
Das übergeordnete Steuersystem sendet einfache Steuerbefehle im ASCIIFormat an das Interface. Diese werden unmittelbar in Datensignale umgesetzt.
Das übergeordnete Steuersystem sendet einfache Steuerbefehle im ASCIIFormat an das Interface. Das Interface legt diese im Festwertspeicher ab. Das
übergeordnete Steuersystem wird nun nicht mehr benötigt. Das im
Festwertspeicher abgelegte Programm kann per Steuertasten abgearbeitet
werden.
Die beiliegende CD enthält ein einfaches Programm zur Konfiguration und
Austestung des intelligenten USB-Schrittmotor-Interfaces (demcu_befehle.exe).
Außerdem enthält die CD ein tabellenartiges Programm (unismc2009) zur
Eingabe von Vektoren bzw. zur Ansteuerung der Ein-/ Ausgänge.
-Seite 5-
Das intelligente USB-Schrittmotor-Interface
4. Befehlsübertragung
4.1. Datenübertragung
Die Datenübertragung zum Interface basiert auf einem ASCII- oder Text-protokoll.
Alle Befehle sind aus ASCII-Zeichen aufgebaut.
Ein Handshake-Verfahren ist nicht vorgesehen. Zusätzliche Steuersignale werden
für die Datenübertragung nicht verwendet.
Die Befehlssequenzen sind aus ASCII-Zeichen aufgebaut, wobei jeder Befehl in
der Regel mit einem <CR> (carriage return = 13) abgeschlossen wird. Das
Interface quittiert jeden Befehl entweder mit einem <ACK> einem <NAK> oder
einem <BEL>-Zeichen. Dem <BEL>-Zeichen wird außerdem eine Fehlernummer
vorausgestellt (siehe 4.3 Fehlercodes).
Abfragebefehle werden vom Interface mit einem Datenwert (ebenfalls ASCIIZeichen) quittiert, wobei dieser Wert mit einem <ACK> abgeschlossen ist.
Nach jeder Befehlsübertragung muss solange gewartet werden, bis das Interface
den Befehl quittiert hat, erst dann darf ein neuer Befehl gesendet werden. Die
Quittierung erfolgt in der Regel sehr schnell, kann aber je nach Befehl und
Auslastung des Controllers einige Zeit in Anspruch nehmen (max. 25 ms.).
<ACK> == 6 (dez)
<BEL>== 7 (dez)
<NAK> == 21 (dez)
Die Befehle zur Ansteuerung des Interfaces sind in zwei Gruppen unterteilt.
Zum einen gibt es so genannte Masterbefehle, welche vom Interface zu jedem
Zeitpunkt verarbeitet werden können. Diese Befehle sind durch das @Zeichen
gekennzeichnet.
-Seite 6-
Das intelligente USB-Schrittmotor-Interface
Beispiele für Masterbefehle sind der „Reset“-Befehl, die „Statusabfrage“ oder der
„Achsen sofort stoppen“-Befehl.
So kann z.B. während einer Vektorfahrt mittels „Achsenposition abfragen“
zwischen durch immer wieder die Position bestimmt werden.
Alle anderen Befehle werden zwar auch gleich abgearbeitet, können aber nicht zu
jedem Zeitpunkt an das Interface geschickt werden. Erst wenn der vorhergehende
Befehl abgearbeitet wurde, kann ein weiterer Befehl dieser Art geschickt werden.
Es empfiehlt sich, die Rückmeldungen zu überwachen. Sobald eine <ACK> Rückmeldung gesendet wurde, können neue Befehle an das Interface geschickt
werden.
Für den ersten Einsatz des Interfaces muss dieses nicht konfiguriert werden, da
bereits die wichtigsten Parameter mit einem Wert voreingestellt sind.
Ansteuersignal:Takt/ Richtung
Halb- und Vollschrittbetrieb:Vollschrittbetrieb
Ruhestrom:20 %
Startgeschwindigkeit:200 Schritte/sec
Endgeschwindigkeit Referenzfahrt:200 Schritte/sec
Endgeschwindigkeit Vektorfahrt:600 Schritte/sec
Rampenlänge:200 ms
Offset nach Referenzfahrt:10 Schritte
E1-Verknüpfung:deaktiviert
4.3. Fehlercodes
E1: unbekannter Befehl
E2: ungültige Programm-Nr.
E3: ungültiger FAT-Eintrag
E4: Speicherüberlauf; Aktion wurde rückgängig gemacht
E5: Programm-Nr. bereits vorhanden
E6: ungültiger Parameter
E7: Arbeitsbereich verlassen
E8: Programm-Header / Befehls-Länge von max 256 Bytes überschritten
-Seite 7-
Das intelligente USB-Schrittmotor-Interface
5. Befehlsbeschreibung
Nachfolgend werden alle zur Verfügung stehenden Befehle genauer beschrieben.
Die Masterbefehle sind besonders gekennzeichnet!
5.1 Reset durchführen (Masterbefehl)
Dieser Befehl führt einen Reset aus und setzt das Interface in einen definierten
Zustand. Dabei werden alle Positionen auf Null gesetzt.
Laufende Bewegungsabläufe werden sofort, ohne Rampe, gestoppt.
Die Achsen-Position wird bei einer „Statusabfrage“ als unbekannt signalisiert (4.
Zeichen = „1“). Aus diesem Grunde muss vor einer weiteren Bearbeitung
unbedingt eine Referenzfahrt durchgeführt werden.
Die gültigen Konfigurationseinstellungen werden nicht verändert.
Befehl:@R<CR>
Quittierung: @RS<ACK>
5.2 Version abfragen (Masterbefehl)
Abfrage der Interface-Version. Als Quittierung sendet das Interface die aktuelle
Versionsnummer.
Befehl:@V<CR>
Quittierung: @V dEMCU-v1.00<ACK>
-Seite 8-
Das intelligente USB-Schrittmotor-Interface
5.3 Status abfragen (Masterbefehl)
Den aktuellen Zustand des Interfaces abfragen. Als Quittierung liefert das
Interface sechs Zeichen, welche durch die Darstellung einer ‚Null‘ (0) oder einer
‚Eins‘ (1) den aktuellen Zustand der Steuerung signalisieren.
Befehl:@X<CR>
Quittierung: @Xaaaaaa<ACK>
Der Buchstabe a steht hier lediglich als Platzhalter für den Status.
Die sechs Zeichen der Quittierung haben folgende Bedeutung:
1. Zeichen: Achsenbewegung
0=Maschine steht / 1=Maschine läuft
2. Zeichen: Wartezeit
0=keine Wartezeit / 1=Wartezeit läuft ab
3. Zeichen: allgemeiner Fehler
0=kein Fehler / 1=Fehler aufgetreten
Im Fehlerfall sollte immer ein Reset und eine Referenzfahrt
ausgeführt werden!
4. Zeichen: aktuelle Position
0=Position bekannt / 1=Position nicht bekannt
Ist die aktuelle Position nicht bekannt, so muss in jedem Falle eine
Referenzfahrt durchgeführt werden, da ansonsten definierte
Bewegungsabläufe nicht mehr möglich sind.
@X 100110<ACK>Quittierung
Es wird eine Referenzfahrt durchgeführt (5. Zeichen) und die Maschine
läuft (1. Zeichen). Die aktuelle Position ist nicht bekannt (4. Zeichen), da
diese erst durch die Referenzfahrt definiert wird. Welche der
Motorachsen gerade in Bewegung ist, kann nicht festgestellt werden.
Beispiel: @X<CR>Statusabfrage
@X 100001<ACK>Quittierung
Die Quittierung in diesem Beispiel sagt aus, dass eine Standalone-
Anwendung abläuft und dass eine Achsenbewegung durchgeführt wird
(1. Zeichen). Welche der Motorachsen gerade in Bewegung ist, kann
nicht festgestellt werden.
5.4 Achsenposition abfragen (Masterbefehl)
Die aktuelle Position einer Achse wird abgefragt. Als Parameter muss die
jeweilige Achse durch die Buchstaben X, Y, Z angegeben werden.
Als Quittierung liefert das Interface die aktuelle Position in Schritten zurück. Die
Position kann sowohl positiv, als auch negativ sein, je nach Stand der Achse zum
Nullpunkt.
Befehl:@La<CR>
Quittierung: @La bbbb<ACK>
Der Buchstabe a steht hier nur als Platzhalter. Im Befehl ist er durch die jeweilige
Achse zu ersetzen, die mit X, Y oder Z bezeichnet werden muss. In der
Quittierung steht der Buchstabe b für die momentane Position, die in Schritten
zurückgeliefert wird.
Beispiel:@LX<CR>Positionsabfrage X-Achse
@LX 1234<ACK>Quittierung
Die X-Achse befindet sich 1234 Schritte in
positiver Richtung vom Nullpunkt entfernt.
Beispiel:@LY<CR>Positionsabfrage Y-Achse
@LY -1234<ACK>Quittierung
Die Y-Achse steht auf –1234 Schritte zum
Nullpunkt.
-Seite 10-
Das intelligente USB-Schrittmotor-Interface
5.5 Ansteuersignal einstellen
Festlegung mit welchen Signalen die Ansteuerung von Schrittmotor-Steuerkarten
bzw. Schrittmotorendstufen erfolgen soll.
Dies kann ein SMC-Signal sein zur Ansteuerung der Schrittmotor-Steuerkarten
SMC800 bzw. SMC1500 oder ein Takt- und Richtungssignal für StandardSchrittmotorendstufen.
Befehl:Ta<CR>
Quittierung: <ACK>
Der Buchstabe a steht als Platzhalter für das Signal und muss wie folgt ersetzt
werden:
0 = SMC-Signal
1 = Takt- und Richtungssignal
Beispiel:T1<CR>Takt- und Richtungssignal einstellen
Voreinstellung: T1 : Takt- und Richtung
5.6 Halb- oder Vollschrittbetrieb einstellen / Ruhestrom
Einstellung, ob die Ansteuerung der Schrittmotoren im Halb- oder
Vollschrittbetrieb erfolgen soll.
Befehl:Fab<CR>
Quittierung: <ACK>
Der Buchstabe a steht als Platzhalter für den Schrittbetrieb
V = Vollschritt
H = Halbschritt
Der Buchstabe b steht als Platzhalter für den Ruhestrom
0 = 0 % Ruhestrom
2 = 20 % Ruhestrom
6 = 60 % Ruhestrom
Beispiel:FV2<CR>Vollschrittbetrieb / 20 % Ruhestrom
Voreinstellung: Takt- und Richtung
-Seite 11-
Das intelligente USB-Schrittmotor-Interface
5.7 Startgeschwindigkeit einstellen
Festlegen der Startgeschwindigkeit für die Ansteuerung eines Schrittmotors in
Schritte/sec (Hz). Die Startgeschwindigkeit ist für alle Achsen gleich, kann also
nicht für jede Achse einzeln definiert werden
Befehl:#Saaaa<CR>
Quittierung: <ACK>
Der Buchstabe a steht als Platzhalter für die Startgeschwindigkeit.
Beispiel:#S150<CR>Startgeschwindigkeit auf 150 Hz einstellen
<ACK>Quittierung
Voreinstellung: 200 Schritte/sec.
5.8 Endgeschwindigkeit einstellen
Konfiguration der Endgeschwindigkeit in Schritte/sec. Diese Einstellung gilt für alle
Achsen. Die Endgeschwindigkeit kann mehrfach für verschiedene
Bewegungsabläufe im Speicher des Interfaces hinterlegt werden. Es stehen max.
9 Tabellenfelder für die Endgeschwindigkeit zur Verfügung, auf die über einen
Index [1-9] zugegriffen werden kann. Die Endgeschwindigkeit für die
Referenzfahrt muss im Index 9 abgelegt werden.
Befehl:#Ea,bbbb
Quittierung: <ACK>
Der Buchstabe a steht als Platzhalter für den Index im Tabellenfeld.
Der Buchstabe b dient als Platzhalter für die Endgeschwindigkeit.
Beispiel:#E1,800<CR>Es wird im Tabellenfeld 1 eine End-
<ACK>geschwindigkeit von 800 Hz hinterlegt
Voreinstellung: Die Tabellenfelder[1..8] sind mit dem Wert 600 Hz gefüllt,
die Referenzgeschwindigkeit im Tabellenfeld[9] mit 200 Hz.
Hinweis: Bei einer Vektorfahrt wird nicht mehr die Geschwindigkeit definiert,
sondern nur noch der Index auf das Tabellenfeld, aus dem die Endgeschwindigkeit entnommen werden soll.
-Seite 12-
Das intelligente USB-Schrittmotor-Interface
5.9 Rampenlänge einstellen
Festlegen der Rampenlänge in Millisekunden (ms). Die Rampenlänge gilt für alle
Achsen und alle Bewegungsabläufe, eine Unterscheidung wird hier nicht
getroffen.
Aus der Rampenlänge und der Startgeschwindigkeit errechnet sich die
Startrampe und Bremsrampe, wobei Start- und Bremsrampe identisch sind.
Befehl:#Raaaa<CR>
Quittierung: <ACK>
Der Buchstabe a steht als Platzhalter für die Rampenlänge.
Beispiel:#R400<CR>Rampenlänge auf 400 ms einstellen
<ACK>Rückmeldung
Voreinstellung: 200 ms
5.10 Referenzreihenfolge festlegen
Wird der Eingang „Referenzanforderung“ aktiviert, erfolgt eine Referenzfahrt für
die durch diesen Befehl festgelegte(n) Achse(n) und auch in der hier festgelegten
Reihenfolge.
Befehl:#Habc<CR>
Quittierung: <ACK>
Der Buchstaben a, b, c stehen als Platzhalter für die Motorachsen X, Y, Z.
Beispiel:#HZXY<CR>Vorbereitung einer Referenzfahrt
<ACK>Rückmeldung
Es soll zunächst die Z-Achse, dann die X-Achse und
schließlich die Y-Achse referenziert werden.
Die Referenzfahrt wird ausgeführt sobald der
Eingang „Referenzanforderung“ aktiviert wird.
-Seite 13-
Das intelligente USB-Schrittmotor-Interface
5.11 Offset nach Referenzfahrt einstellen
Dieser Parameter gibt die Anzahl der Schritte an, die nach einer Referenzfahrt
vom Schalter weggefahren werden soll. Die Referenzfahrt besteht aus drei
Bewegungsabläufen, der Suchfahrt hin zum Referenzschalter, der Freifahrt vom
Schalter und der anschließenden Offsetfahrt. Für die Offsetfahrt wird hier die
Schrittanzahl festgelegt.
Der Offset kann für jede Achse explizit definiert werden.
Befehl:#Oa,bbbb<CR>
Quittierung: <ACK>
Der Buchstabe a steht als Platzhalter für die jeweilige Achse und ist durch X, Y, Z
zu ersetzen. Der Buchstabe b steht für den Offset.
Beispiel:#OX,35<CR>die X-Achse bewegt sich nach dem Erreichen
des Referenzschalters und der nachfolgenden
Freifahrt vom Schalter anschließend noch
35 Schritte vom Schalter weg
Voreinstellung: 10 Schritte
5.12 Referenzfahrt ausführen
Führt eine Referenzfahrt für eine oder mehrere Achsen aus. Der Befehl selektiert
die gewünschten Achsen und legt die Referenzreihenfolge fest. Die
Referenzgeschwindigkeit wird dem Index 9 der Endgeschwindigkeiten
entnommen. Zunächst wird die jeweilige Achse zum Referenzschalter hin bewegt,
danach erfolgen Freifahrt und Offsetfahrt.
Befehl:$Habc<CR>
Quittierung: <NAK>Referenzfahrt wird ausgeführt
<ACK>Referenzfahrt ist beendet
Die Buchstaben a, b und c stehen als Platzhalter für die Achsen, die bewegt
werden sollen und müssen durch X, Y oder Z ersetzt werden. Die Reihenfolge der
Achsenbewegung ergibt sich aus der Reihenfolge der Achsendefinition.
Beispiel:$HZXY<CR>Referenzfahrt aller Achsen, in der
<NAK> <ACK>Reihenfolge Z, dann X und zuletzt Y
$HY<CR>Referenzfahrt der Y-Achse,
<NAK> <ACK>X- und Z-Achse werden nicht bewegt
-Seite 14-
Das intelligente USB-Schrittmotor-Interface
5.13 Vektorfahrt ausführen
Führt eine Vektorfahrt in Schritten linear interpoliert aus. Die Schrittausgabe kann
entweder relativ zur aktuellen Position oder absolut erfolgen. Die jeweilige Achse,
sowie die Richtung werden ebenfalls als Parameter übergeben.
Befehl:Lg,abbbb[,abbbbbb] [,abbbb]
Quittierung: <NAK>Vektorfahrt wird ausgeführt
<ACK>Vektorfahrt ist abgeschlossen
Der Buchstabe g steht für als Platzhalter für die Geschwindigkeit und muss durch
den Index auf das Tabellenfeld ersetzt werden.
Der Buchstabe a steht für die jeweilige Achse und muss durch X, Y, Z
oder x, y, z ersetzt werden.
Große Buchstaben (X, Y, Z) stehen für eine Bewegung absolut zum Nullpunkt,
kleine Buchstaben (x, y, z) für eine relative Bewegung zur aktuellen Position.
Der Buchstabe b steht für die Anzahl der Schritte. Eine positive Zahl bewegt die
Achse in positive Richtung, eine negative Zahl in negative Richtung.
Beispiel: L1,X200,Y500<CR>Die Maschine fährt zur absoluten
Schrittposition X=200, Y=500, mit der
Geschwindigkeit aus dem Tabellenfeld 1.
Beispiel: L1,x500,y1000<CR>Die Maschine fährt von der aktuellen
Position aus 500 Schritte in X-Richtung
und 1000 Schritte in Y-Richtung (linear
interpoliert), mit der Geschwindigkeit
aus dem Tabellenfeld 1.
Beispiel: L2,x-50,y-100<CR>Die Maschine fährt von der aktuellen
Position aus 50 Schritte auf der X-Achse
und 100 Schritte auf der Y-Achse jeweils
in negativer Richtung (linear interpoliert),
mit der Geschwindigkeit aus dem
Tabellenfeld 2.
Alle Beispiele haben folgende Rückmeldungen
<NAK>Rückmeldung, die anzeigt, dass die
Verfahrbewegung ausgeführt wird
<ACK>Rückmeldung, dass das Ziel erreicht wurde
-Seite 15-
Das intelligente USB-Schrittmotor-Interface
5.14 Achsen anhalten (Masterbefehl)
Mit diesem Befehl werden alle Achsen mit Rampenfahrt angehalten. Der aktuelle
Verfahrbefehl wird beendet. Die Positionsinformationen bleiben erhalten.
Befehl:@B<CR>
Quittierung: @B<ACK>
5.15 Achsen sofort stoppen (Masterbefehl)
Alle Achsen werden sofort, ohne Rampenfahrt gestoppt. Es gehen alle
Positionsdaten verloren. Vor einer Weiterfahrt sollte deshalb eine Referenzfahrt
durchgeführt werden, um die Achsen wieder in einen definierten Zustand zu
setzen. Dieser Befehl kommt einem Reset gleich und sollte deshalb nur in
Notfällen eingesetzt werden.
Befehl:@S<CR>
Quittierung: @RS<ACK>
5.16 Pause setzen (Masterbefehl)
Dieser Befehl gibt eine Pause aus und unterbricht den aktuellen Programmablauf. Alle Achsen werden mit Rampe gestoppt, die Positionen bleiben erhalten.
Eine ablaufende Wartezeit ruht. Der Eingang E1 wird nicht mehr ausgewertet.
Der Programmablauf wird erst durch „Pause beenden“ fortgesetzt.
Ein „Reset“-Befehl oder „Achsen sofort stoppen“-Befehl hebt die Pause ebenfalls
auf.
Befehl:@A<CR>
Quittierung: @A<ACK>
Dieser Befehle ist noch nicht implementiert!
-Seite 16-
Das intelligente USB-Schrittmotor-Interface
5.17 Pause beenden (Masterbefehl)
Dieser Befehl beendet die mit dem „Pause setzen“-Befehl eingeleitete
Unterbrechung und fährt mit der Abarbeitung der Befehlskette fort. Wurde vorher
keine Pause gesetzt, so hat dies keine Auswirkungen; der Befehl wird einfach
ignoriert. Da es sich um einen Masterbefehl handelt, wird dieser sofort ausgeführt.
Befehl:@C<CR>
Quittierung: @C<ACK>
Dieser Befehle ist noch nicht implementiert!
5.18 Ausgang setzen
Schaltet ein Ausgangssignal auf einer Datenleitung, welches zur Steuerung einer
Bohrspindel oder Kühlmittelpumpe hergenommen werden kann. Es stehen
insgesamt 3 Ausgänge zur Verfügung. Als Parameter wird der Zustand des
Signals definiert. Eine 0 für Signal ‚aus‘ (Low), eine 1 für Signal ‚ein‘ (High).
Befehl:Aa,b<CR>
Quittierung: <ACK>
Der Buchstabe a steht als Platzhalter für den Signalausgang [1, 2 oder 3].
Der Buchstabe b steht als Platzhalter für den Signalzustand und muss durch 0
oder 1 ersetzt werden.
Beispiel:A1,1<CR>Ausgang 1 wird gesetzt
<ACK>
Beispiel:A1,0<CR>Ausgang 1 wird gelöscht
<ACK>
-Seite 17-
Das intelligente USB-Schrittmotor-Interface
5.19 Wartezeit einfügen
Dieser Befehl fügt eine vorgegebene Zeitspanne in den aktuellen Arbeitsablauf
ein. Die Zeit wird in Millisekunden angegeben. Die weitere Ausführung wird für
eine gewisse Zeit unterbrochen, um z.B. ein Ventil zu schalten. Nach Ablauf der
Zeit werden die nachfolgenden Befehle bearbeitet.
Die max. mögliche Wartezeit beträgt 3.600.000 ms (=1 Std).
Befehl:Waaaa<CR>
Quittierung: <NAK>
<ACK>
Beispiel:W250<CR>Wartezeit 250 ms
<NAK>Rückmeldung zeigt an: Wartezeit läuft
<ACK>Rückmeldung zeigt an: Wartezeit ist abgelaufen
5.20 E1-Verknüpfung
Befehl:&E1,b<CR>
Quittierung: <ACK>
Der Buchstabe b steht als Platzhalter und muss durch 0 oder 1 ersetzt werden.
Beispiel:&E1,0<CR>Verknüpfung deaktiviert
<ACK>Rückmeldung
Die nachfolgenden Befehl werden ausgeführt,
ohne Eingang E1 zu berücksichtigen
Beispiel:&E1,1<CR>Verknüpfung aktiviert
<ACK>Rückmeldung
Die nachfolgenden Befehl werden in Abhängig-keit
von Eingang E1 ausgeführt. Sie werden ausgeführt
sobald der Eingang E1 „HighPotential“ annimmt.
Voreinstellung: Verknüpfung deaktiviert
-Seite 18-
Das intelligente USB-Schrittmotor-Interface
5.21 Eingang abfragen (Masterbefehl)
Befehl:@In
Quittierung: @In b<ACK>
Bitte beachten Sie das Leerzeichen in der Rückmeldung nach @In.
Der Buchstabe n [0-F] steht als Platzhalter für die verschiedenen Eingänge:
Der Buchstabe b[0,1] steht als Platzhalter den Zustand des Eingangs.
Beispiel:@I1<CR>Abfrage des START-Eingangs.
@I1 0<ACK>Quittierung
Der START-Eingang ist nicht gesetzt.
-Seite 19-
Das intelligente USB-Schrittmotor-Interface
5.22 Programm schreiben
Dieser Befehl bewirkt, dass nachfolgende Befehle in einem der möglichen
Programmspeicherplätze abgelegt werden.
Ingesamt stehen 7 solche Programmspeicherplätze mit jeweils 65536 Bytes zur
Verfügung. Sollte ein Programm mehr als 65536 Bytes benötigen, reduziert sich
die maximale Anzahl der Programmspeicherplätze.
Der Buchstabe n steht als Platzhalter für eine Programm-Nr. [1...7]
Die Buchstaben Hh stehen als Platzhalter für den Programm-Header.
Die Buchstaben CcC stehen als Platzhalter für die Programm-Befehlskette.
Beispiel: *PW1<CR>Vorbereitung zur Programm-Übertragung
*PW1<ACK>Quittierung mit <ACK> signalisiert
Bereitschaft zum weiteren Datenempfang:
Es folgt zunächst der Programm-Header.
Siehe dazu unter 5.22 „Programm-Header lesen“
Ein Programm-Header ist jedoch nicht zwingend nötig.
Beispiel für einen Programm-Header:
vektoren.etab | 01.07.2009 | 08:00:00 | 37<STX>
Das Zeichen <STX> bildet das so genannte Programmstartkennzeichen. Es kennzeichnet einerseits das Ende des ProgrammHeaders als auch den Beginn der Programm-Befehlskette.
Auch wenn kein Programm-Header verwendet wird, muss das
Programmstartkennzeichen <STX> gesendet werden!
Nun kann das eigentliche Programm gesendet werden.
Die einzelnen Befehle sind mit <CR> abzuschliessen.
Das <ETX>-Zeichen definiert das Ende der
Befehlskette und muss daher an den letzten
Befehl statt des <CR> angehängt werden.
Im obigen Beispiel konnte das Programm 1 erfolgreich übertragen
werden!
Um das Programm starten zu können, muss es zunächst durch
Anlegen von Programm-Select-Signalen an PS0..PS2 ausgewählt
werden. Es bestehen folgende Abhängigkeiten:
PS2 PS1 PS0
Programm 1001
Programm 2010
Programm 3011
Programm 4100
Programm 5101
Programm 6110
Programm 7111
Das Programm 1 kann demnach mit ‚high‘ an PS0 sowie
‚low‘ an PS1 und PS2 selektiert werden.
Der Start des Programms erfolgt über den „START“-Eingang.
-Seite 21-
Das intelligente USB-Schrittmotor-Interface
5.23 Programm lesen
Der Programm-Header und die Programm-Befehlskette wird ausgelesen.
Bitte beachten Sie das Leerzeichen in der Rückmeldung nach *PRn.
Der Buchstabe n steht als Platzhalter für eine Programm-Nr. [1...7].
Man kann mit n gleich [a] oder [A] den kompletten Festwertspeicher auslesen.
Die Buchstaben Hh stehen als Platzhalter für die Programm-Header.
Die Buchstaben CcC stehen als Platzhalter für die Programm-Befehlskette.
Beispiel: *PR1<CR>Programm 1 soll ausgelesen werden.
Die Abfrage könnte folgendermaßen quittiert werden:
Bei der Verwendung von *PRa erhält man ein Speicherabbild des
kompletten Festwertspeichers (=458.752 Bytes).
Mittels der FAT ist eine Zuordnung der Programme zu den 7
Programmspeicherplätzen möglich.
-Seite 22-
Das intelligente USB-Schrittmotor-Interface
5.24 Programm-Header lesen
Der Programm-Header umfasst alle Zeichen bis zum Programmstartkennzeichen <STX>.
Der Programm-Header ist auf 256 Bytes begrenzt und bietet z.B. die Möglichkeit
Windows-Datei-Informationen abzulegen, z.B. Dateiname - Dateidatum Dateiuhrzeit – Dateigröße. So kann durch Vergleich die Aktualität der Daten im
Programmspeicher festgestellt werden. Der Programm-Header kann natürlich
auch für andere Zwecke verwendet werden.
Die Befehlskette vom Programm 1 entstammt der Datei
vektoren.etab, die am 01.07.2009 um 08:00:00 erzeugt wurde
und 37 Bytes d.h. 37 Zeichen enthält.
-Seite 23-
Das intelligente USB-Schrittmotor-Interface
5.25 Programmgröße ermitteln
Dieser Befehl ermöglicht die benötigten Speicherbytes eines Programms zu
ermitteln.
Es könnte z.B. die Notwendigkeit bestehen, im Vorfeld die Größe des Programms
zu kennen, welches in einem Programmspeicher ablegt werden soll bzw. ob das
Programm noch vergrößert werden kann.
Die Daten werden nicht im Festwertspeicher abgelegt!
Die Buchstaben Hh stehen als Platzhalter für den Programm-Header.
Die Buchstaben CcC stehen als Platzhalter für die Programm-Befehlskette.
Die Buchstaben aaaa stehen als Platzhalter für Programmgröße (in dezimaler
Schreibweise).
Beispiel: siehe „Programm schreiben“
jedoch mit folgender letzter Rückmeldung
34<ACK>Das Programm 1 würde 34 Bytes
im Programmspeicher belegen.
-Seite 24-
Das intelligente USB-Schrittmotor-Interface
5.26 Programm löschen
Das angegebene Programm wird aus dem Programmspeicher gelöscht.
Der Löschvorgang dauert ca. 0.7 sec pro Programmsektor (65536 Bytes).
Der Buchstabe n steht als Platzhalter für eine Programm-Nr. [1...7].
Man kann mit n gleich [a] oder [A] auch alle Programme gleichzeitig löschen.
Beispiel: *PE1<CR>Programm 1 soll gelöscht werden
*PE1<NAK>Quittierung zunächst mit <NAK>;
nach erfolgtem Löschen wird dies durch
<ACK>angezeigt
Beispiel: *PEa<CR>alle Programme sollen gelöscht werden
*PEa<NAK>Quittierung zunächst mit <NAK>;
nach erfolgtem Löschen wird dies durch
<ACK>angezeigt
-Seite 25-
Das intelligente USB-Schrittmotor-Interface
5.27 FAT lesen
Die FAT (File Allocation Table) wird mit diesem Befehl gelesen.
Die Einträge der FAT enthalten die Start-Adressen und End-Adressen der
Programme. Das Programm 1 kann irgendwo im Speicherbereich des FlashSpeichers abgelegt sein. Die FAT gibt Auskunft wo das Programm liegt.
Um die Speicherverwaltung braucht sich der Anwender nicht zu kümmern!
Befehl:*FRn<CR>
Quittierung: *FRn ssss,eeee<ACK>
Bitte beachten Sie das Leerzeichen in der Rückmeldung nach *FRn.
Der Buchstabe n steht als Platzhalter für eine Programm-Nr. [1...7].
Die Buchstaben s stehen als Platzhalter für die Start-Adresse.
Die Buchstaben e stehen als Platzhalter für die End-Adresse.
Hinweis: Ein Strich als Rückgabewert einer Adresse bedeutet, dass kein
Programm abgelegt wurde.
Beispiel: *FR1<CR>Der FAT-Eintrag des 1. Programms soll
gelesen werden.
Die Abfrage könnte folgendermaßen quittiert werden:
*FR1 0,33<ACK>
Das Programm 1 beginnt bei Adresse 0
und endet bei Adresse 33.
Beispiel: *FR2<CR>Der FAT-Eintrag des 2. Programms soll
gelesen werden.
Die Abfrage könnte folgendermaßen quittiert werden:
*FR2 -,-<ACK>
Das Programm 2 existiert (noch) nicht.
-Seite 26-
Das intelligente USB-Schrittmotor-Interface
Symbolhafte Darstellung der Speicherverwaltung:
FAT
Programm 1
StartAdr | EndAdr
000000 000033
Programm-Header
Programm-Befehlskette
Programmspeicherplatz 1
34 von 65.536 Bytes belegt
A1,1<CR>L1,x100<CR>W250<CR>L1,y200<CR>A1,0<ETX>
vektoren.etab | 01.07.2009 | 08:00:00 | 37 <STX>
Programm 2
StartAdr | EndAdr
- -
Programm 7
StartAdr | EndAdr
- -
Programmspeicherplatz 2
Insgesamt stehen 7 Programmspeicherplätze mit jeweils 65536 Bytes zur
Verfügung.
Die Befehlskette eines Programms wird in einem freien Programmspeicherplatz abgelegt. Es kann somit durchaus vorkommen, dass die
Befehlskette des 1. Programms im Progammspeicherplatz 3 abgelegt wird. In
der FAT wird die Zuordnung von Programm zum Programm-speicherplatz
verwaltet; in der FAT ist deswegen die StartAdresse des Programms hinterlegt.
Sollte die Befehlskette eines Programms mehr als 65536 Bytes benötigen, wird
ein weiterer Programmspeicherplatz dafür herangezogen. Es können dann
nicht mehr max. 7 Programme sondern nur noch max. 6 Programme abgelegt
werden.
Es ist auch möglich, dass ein einziges Programm mehr als 393.216 Bytes
belegt. Es würde somit alle Programmspeicherplätze belegen.
Es kann kein weiteres Programm im Festwertspeicher abgelegt werden!
Sollte die Befehlskette eines Programms einmal nicht im Festwertspeicher
untergebracht werden können, so ist die Belegung des Festwertspeichers
(FAT auslesen) zu überprüfen.