deloris
2007-06-14, 11:01:57
Hallo zusammen!
Für ein Projekt muss ich u.a. ein NC-Programm schreiben. Ich komme aber im Moment nicht weiter, hab schon alles versucht. Nun zum Problem:
Meine Aufgabe ist es, einen Sensor, der Daten liefert, mit einer Laser-Werkzeugmaschine zu verbinden. Die Daten des Sensors sollen dann zur Steuerung der Maschine verwendet werden.
Der Sensor wird über USB mit dem PC der Werkzeugmaschine verbunden, ein Treiber macht aus dem USB-Port einen COM-Port. Der Sensor schickt permanent die Messdaten mit 4 kHz. Jeder Messwert besteht aus 5 ASCII-Zeichen, nach jedem Messwert kommt ein CR LF (=Zeilenumsprung). Dass der Sensor die Daten sendet und wie sie aussehen, hab ich mit der COM-Port-Betrachtungssoftware Hyperterminal ausprobiert (siehe Anhang). Aus Hyperterminal kann man auch die Daten des Ports ablesen, in der Statusleiste des Bilds.
Jetzt zum Programm:
Laut Dokumentation ist die Programmiersprache G- Code mit zusätzlichen Befehlen, die an die Sprache C angelehnt sind. Die Steuerung ist von der Firma Aerotech. Das Programm sieht folgendermaßen aus:
1 DVAR $hFile ; Deklaration der Variablen
2 DVAR $var1
3 DVAR $anzahl
4 $hFile = FILEOPEN "COM7", 2 ; COM-Port 7 öffnen
5 TaskWarning = ErrCode ; Fehlermeldung anzeigen
6 COMMINIT $hFile, "baud=921600 parity=N data=8 stop=1"; Daten des Ports
7 TaskWarning = ErrCode
8 COMMSETTIMEOUT $hFile, -1, 0, 0 ; Wartezeit vor dem nächsten Schritt
9 TaskWarning = ErrCode
10 RPT 10 ; 10-fache Schleife
11 $anzahl = FILEREAD $hFile 2 $var1 ; Daten auslesen
12 TaskWarning = ErrCode
13 MSGDISPLAY 1, $var1 ; Daten anzeigen am Bildschirm
14 ENDRPT ; Schleifenende
15 FILECLOSE $hFile ; Verbindung zum Port beenden
Zu bestimmten Befehlen:
4 Die Portnummer 7 hab ich aus Hyperterminal ausgelesen, die 2 dahinter ist da, um einen Port zu signalisieren.
6 Die Daten des Ports hab ich aus Hyperterminal abgelesen, stehen auch so im Handbuch des Sensors.
8 Der Befehl bedeutet, dass ich sofort mit dem Auslesen beginne, ich habe auch verschiedene Zeiten ausprobiert.
Bei der Ausführung im Step- Mode bekomme ich folgende Fehlermeldungen:
4 Zugriff verweigert
6,8,11 File Handle ungültig.
Wenn ich die Schleife aber vor Zeile 4 und das Schleifenende ganz ans Ende setzte, bekomme ich richtige Werte, aber nur mit 3 Hz. Bei so einem Programm würde ich dann immer wieder die Verbindung aufbauen, einen Wert auslesen, die Verbindung abbrechen usw.
Falls noch Infos fehlen oder Fragen sind, weil ich was unklar beschrieben habe, gebt Bescheid. Das hier ist ein natürlich keine übliche Programmiersprache, aber vielleicht hat jemand Hinweise, was man ausprobieren könnte.
Mfg
deloris
Für ein Projekt muss ich u.a. ein NC-Programm schreiben. Ich komme aber im Moment nicht weiter, hab schon alles versucht. Nun zum Problem:
Meine Aufgabe ist es, einen Sensor, der Daten liefert, mit einer Laser-Werkzeugmaschine zu verbinden. Die Daten des Sensors sollen dann zur Steuerung der Maschine verwendet werden.
Der Sensor wird über USB mit dem PC der Werkzeugmaschine verbunden, ein Treiber macht aus dem USB-Port einen COM-Port. Der Sensor schickt permanent die Messdaten mit 4 kHz. Jeder Messwert besteht aus 5 ASCII-Zeichen, nach jedem Messwert kommt ein CR LF (=Zeilenumsprung). Dass der Sensor die Daten sendet und wie sie aussehen, hab ich mit der COM-Port-Betrachtungssoftware Hyperterminal ausprobiert (siehe Anhang). Aus Hyperterminal kann man auch die Daten des Ports ablesen, in der Statusleiste des Bilds.
Jetzt zum Programm:
Laut Dokumentation ist die Programmiersprache G- Code mit zusätzlichen Befehlen, die an die Sprache C angelehnt sind. Die Steuerung ist von der Firma Aerotech. Das Programm sieht folgendermaßen aus:
1 DVAR $hFile ; Deklaration der Variablen
2 DVAR $var1
3 DVAR $anzahl
4 $hFile = FILEOPEN "COM7", 2 ; COM-Port 7 öffnen
5 TaskWarning = ErrCode ; Fehlermeldung anzeigen
6 COMMINIT $hFile, "baud=921600 parity=N data=8 stop=1"; Daten des Ports
7 TaskWarning = ErrCode
8 COMMSETTIMEOUT $hFile, -1, 0, 0 ; Wartezeit vor dem nächsten Schritt
9 TaskWarning = ErrCode
10 RPT 10 ; 10-fache Schleife
11 $anzahl = FILEREAD $hFile 2 $var1 ; Daten auslesen
12 TaskWarning = ErrCode
13 MSGDISPLAY 1, $var1 ; Daten anzeigen am Bildschirm
14 ENDRPT ; Schleifenende
15 FILECLOSE $hFile ; Verbindung zum Port beenden
Zu bestimmten Befehlen:
4 Die Portnummer 7 hab ich aus Hyperterminal ausgelesen, die 2 dahinter ist da, um einen Port zu signalisieren.
6 Die Daten des Ports hab ich aus Hyperterminal abgelesen, stehen auch so im Handbuch des Sensors.
8 Der Befehl bedeutet, dass ich sofort mit dem Auslesen beginne, ich habe auch verschiedene Zeiten ausprobiert.
Bei der Ausführung im Step- Mode bekomme ich folgende Fehlermeldungen:
4 Zugriff verweigert
6,8,11 File Handle ungültig.
Wenn ich die Schleife aber vor Zeile 4 und das Schleifenende ganz ans Ende setzte, bekomme ich richtige Werte, aber nur mit 3 Hz. Bei so einem Programm würde ich dann immer wieder die Verbindung aufbauen, einen Wert auslesen, die Verbindung abbrechen usw.
Falls noch Infos fehlen oder Fragen sind, weil ich was unklar beschrieben habe, gebt Bescheid. Das hier ist ein natürlich keine übliche Programmiersprache, aber vielleicht hat jemand Hinweise, was man ausprobieren könnte.
Mfg
deloris