Emis USB-iSMIF User manual [de]

EMIS GmbH
USB-iSMIF
Das intelligente USB-Schrittmotor-Interface
(Die Hardware)
Leistungsumfang
Kunststoffgehäuse (L x B x H) 85 x 81x 40 mm
Stromversorgung über USB-Anschluß (kein externes Netzteil notwendig)
serielle Ansteuerung über USB
für Standalone-Anwendungen
jedes Programm kann einzeln (auch ohne PC) abgearbeitet werden
Technische Daten
Interface: USB Festwertspeicher: insg. 512 kByte
Start / Stop / Pause / Parken /
Eingänge: Ausgänge: 3 x 5V DC (TTL)
Jumper
J1 fest verdrahtet J2 frei J3 Programmiermodus / Betriebsmodus J4 Eingangspegel umschaltbar (low-aktiv / high-aktiv)
ST1 – ST3 Interface-Steckplatz
Eingang E1 / Referenzanforderung
Referenzschalter für X-Y-Z-Achse
Belegung der 25-pol SUB-D Buchse
Takt/Richtung ­Variante
1 /STROBE 2 DIR-X D1 3 TAKT-X D2 4 DIR-Y D3 5 TAKT-Y D4 6 DIR-Z D5 7 TAKT-Z D6 8 D7
9 D8 10 A3 A3 11 REFSW-X REFSW-X 12 REFSW-Y REFSW-Y 13 REFSW-Z REFSW-Z 14 A1 A1 15 E1 E1 16 A2 A2 17 REFANF REFANF 18 START START 19 STOP STOP 20 PAUSE PAUSE 21 PARKEN PARKEN 22 PS0 PS0 23 PS1 PS1 24 PS2 PS2 25 GND GND
SMC – Variante für SMC800 / SMC1500
Bedeutung der Ein-/Ausgangsbezeichnungen:
Eingänge: Takt/Richtung Variante:
DIR-X Richtungssignal X-Motor TAKT-X Taktsignal X-Motor DIR-Y Richtungssignal Y-Motor TAKT-Y Taktsignal Y-Motor DIR-Z Richtungssignal Z-Motor TAKT-Z Taktsignal Z-Motor
Eingänge: SMC-Variante: siehe auch Technisches Handbuch
‚Schrittmotorsteuerkarte SMC800/ SMC1500 S.17 /STROBE D1 DATA1 D2 DATA2 D3 DATA3 D4 DATA4 D5 DATA5 D6 DATA6 D7 DATA7 D8 DATA8
gemeinsame Eingänge:
REFSW-X Referenzschalter X-Motor REFSW-Y Referenzschalter Y-Motor REFSW-Z Referenzschalter Z-Motor
REFANF Referenzanforderung bei Standalone-Anwendung START Programmstart bei Standalone-Anwendung STOP Programmabbruch bei Standalone-Anwendung PAUSE Programmpause bei Standalone-Anwendung PARKEN Parkposition anfahren bei Standalone-Anwendung
PS0 Programm-Select-Eingang PS1 Programm-Select-Eingang PS2 Programm-Select-Eingang
Ausgänge:
A1 5V (TTL) Ausgang A2 5V (TTL) Ausgang A3 5V (TTL) Ausgang
Stromversorgung:
GND Versorgungsspannung 0V
Alle Ein- und Ausgänge sind TTL-kompatibel.
EMIS GmbH Zur Drehscheibe 4 92637 Weiden Tel. 0961/32040 Fax 0961/31494 www.emisgmbh.de
EMIS GmbH
USB-iSMIF
Das intelligente USB-Schrittmotor-Interface
(Der ASCII-Befehlssatz)
Version 1.0 vom 01.07.09
Das intelligente USB-Schrittmotor-Interface
Inhaltsverzeichnis
1. Einführung
2. Aufbau
3. Funktionsweise
4. Befehlsübertragung
4.1. Datenübertragung
4.2. Befehlsaufbau
4.3. Fehlercodes
5. Befehlsbeschreibung
5.1. Reset durchführen
5.2. Version abfragen
5.3. Status abfragen
5.4. Achsenposition abfragen
5.5. Ansteuersignal einstellen
5.6. Halb- und Vollschritt einstellen / Ruhestrom
5.7. Startgeschwindigkeit einstellen
5.8. Endgeschwindigkeit einstellen
5.9. Rampenlänge einstellen
5.10. Referenzreihenfolge festlegen
5.11. Offset nach Referenzfahrt einstellen
5.12. Referenzfahrt ausführen
5.13. Vektorfahrt ausführen
5.14. Achsen anhalten
5.15. Achsen sofort stoppen
5.16. Pause setzen
5.17. Pause beenden
5.18. Ausgänge setzen
5.19. Wartezeit einfügen
5.20. E1-Verknüpfung
5.21. Eingang abfragen
5.22. Programm schreiben
5.23. Programm lesen
5.24. Programm-Header lesen
5.25. Programmgröße ermitteln
5.26. Programm löschen
5.27. FAT lesen
-Seite 2-
Das intelligente USB-Schrittmotor-Interface
1. Einführung
Das intelligente USB-Schrittmotor-Interface dient zur Anbindung der Schrittmotor­Steuerkarten SMC800 und SMC1500 über die serielle USB-Schnittstelle.
Zudem können auch handelsübliche Schrittmotorendstufen mit dem Schrittmotor­Interface über die serielle USB-Schnittstelle angesteuert werden.
Das Interface enthält einen Mikrocontroller, welcher Ansteuersignale für die SMC­Schrittmotor-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 ASCII­Format an das Interface. Diese werden unmittelbar in Datensignale umgesetzt.
Das übergeordnete Steuersystem sendet einfache Steuerbefehle im ASCII­Format 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.
Als Übertragungsparameter sind einzustellen:
Baudrate: 115200 Datenbit: 8 StopBit:1 Parität: keine
4.2. Befehlsaufbau
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 ASCII­Zeichen) 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.
5. Zeichen: Referenzfahrt
0=keine Referenzfahrt / 1=Referenzfahrt läuft gerade
6. Zeichen: Standalone-Anwendung
0= ~ läuft nicht / 1= ~ läuft gerade
-Seite 9-
Das intelligente USB-Schrittmotor-Interface
Beispiel: @X<CR> Statusabfrage
@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 Standard­Schrittmotorendstufen.
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 End­geschwindigkeit 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 Programm­ablauf. 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 „High­Potential“ 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:
0: Eingang FLASH 1: Eingang START 2: Eingang STOP 3: Eingang PAUSE 4: Eingang PARKEN 5: Eingang REFERENSCHALTER X 6: Eingang REFERENSCHALTER Y 7: Eingang REFERENSCHALTER Z 8: Eingang REFERENZANFORDERUNG 9: Eingang (ohne Bezeichnung) A: Eingang (ohne Bezeichnung) B: Eingang E1 C: Eingang PS0 D: Eingang PS1 E: Eingang PS2 F: Eingang (ohne Bezeichnung)
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.
Befehl: *PWn<CR> (ProgrammWrite...)
*PWn<ACK> Rückmeldung Hh<STX> Programm-Header+Programmstartkennzeichen <ACK> Rückmeldung C<CR> Befehl <ACK> Rückmeldung c<CR> Befehl <ACK> Rückmeldung C<ETX> Befehl <ACK> Rückmeldung
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 Programmstart­kennzeichen. Es kennzeichnet einerseits das Ende des Programm­Headers 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.
-Seite 20-
Das intelligente USB-Schrittmotor-Interface
Beispiel für eine Befehlskette:
A1,1<CR> Ausgang 1 setzen <ACK> Quittierung L1,x100<CR> Vektorfahrt x-Achse: 100 Schritte <ACK> Quittierung W250<CR> Wartezeit 250ms L1,y200<CR> Vektorfahrt y-Achse: 200 Schritte <ACK> Quittierung A1,0<ETX> Ausgang 1 zurücksetzen; <ACK>
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 1 0 0 1 Programm 2 0 1 0 Programm 3 0 1 1 Programm 4 1 0 0 Programm 5 1 0 1 Programm 6 1 1 0 Programm 7 1 1 1
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.
Befehl: *PRn<CR> (ProgrammRead...) Quittierung: *PRn Hh<STX>C<CR>c<CR>C<ETX><ACK>
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:
*PR1 vektoren.etab | 01.07.2009 | 08:00:00 | 37<STX> A1,0<CR>L1,x100<CR>W250<CR>L1,y200<CR><A1,0><ETX> <ACK>
Besonderheit:
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 Programmstart­kennzeichen <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.
Befehl: *PRnH<CR> (ProgrammRead...Header) Quittierung: *PRnH Hh<ACK>
Bitte beachten Sie das Leerzeichen in der Rückmeldung nach *PRnH. Der Buchstabe n steht als Platzhalter für eine Programm-Nr. [1...7].
Die Buchstaben Hh stehen als Platzhalter für den Programm-Header.
Beispiel: *PR1H<CR>Programm-Header 1 soll ausgelesen werden.
Die Abfrage könnte folgendermaßen quittiert werden:
*PR1H vektoren.etab | 01.07.2009 | 08:00:00 | 37<ACK>
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!
Befehl: *PS<CR> (ProgrammSize)
<ACK> Rückmeldung Hh<STX> Programm-Header+Programmstartkennzeichen <ACK> Rückmeldung C<CR> Befehl <ACK> Rückmeldung c<CR> Befehl <ACK> Rückmeldung C<ETX> letzter Befehl+Programmendekennzeichen aaaa<ACK> Rückmeldung incl. Programmgröße
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).
Befehl: *PEn<CR> (ProgrammErase...) Quittierung: *PEn<NAK>
<ACK>
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 Flash­Speichers 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 Programm­speicherplatz 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.
-Seite 27-
Das intelligente USB-Schrittmotor-Interface
EMIS GmbH Zur Drehscheibe 4 92637 Weiden Tel. 0961/32040 Fax 0961/31494 www.emisgmbh.de
-Seite 28-
Loading...