Forum: PC-Programmierung Probleme mit RS232 und Excel-VBA


von JS (Gast)


Angehängte Dateien:

Lesenswert?

Guten Morgen,

ich versuche, via Excel-VBA Befehle an einen Roboter zu senden. Der 
Roboter ist durch einen USB-RS232 Adapter an den PC angeschlossen.
Anhand der "RSAPI.dll" von http://www.b-kainka.de/download.htm und einer 
google-Recherche habe ich es auch geschafft, den Port zu öffnen.
Mein bisheriger Code sieht so aus:
1
Declare Function OPENCOM Lib "RSAPI.DLL" (ByVal Parameter$) As Integer
2
Declare Function CLOSECOM Lib "RSAPI.DLL" () As Integer
3
Declare Function SENDSTRING Lib "RSAPI.DLL" (ByVal S As String) As Integer
4
Declare Function TIMEOUT Lib "RSAPI.DLL" (ByVal ms%) As Integer
5
6
7
Sub Main()
8
    OPENCOM ("COM3:9600,N,8,1")
9
    TIMEOUT (200)
10
    SENDSTRING ("M")
11
    TIMEOUT (200)
12
    SENDSTRING ("O")
13
    SENDSTRING ("V")
14
    SENDSTRING ("A")
15
    SENDSTRING (" ")
16
    SENDSTRING ("R")
17
    SENDSTRING (",")
18
    SENDSTRING (" ")
19
    SENDSTRING ("2")
20
    SENDSTRING ("0")
21
    SENDSTRING ("0")
22
    SENDSTRING ("0")
23
    SENDSTRING (".")
24
    CLOSECOM
25
End Sub

Der Befehl, den ich senden möchte, lautet:
MOVA R, 2000

Ich habe mit der mitgelieferten Software eine Verbindung zum Roboter 
aufgebaut und genau diesen Befehl gesendet, das PortMon Log findet ihr 
im Anhang dieses Artikels - ebenso das Log von Excel.

Bzgl. des Software Logs:
Ich bin so vorgegangen: Verbindung zum Roboter aufbauen - 1min warten - 
Befehl eingeben - 1min warten - Befehl absenden - 1min warten - 
Verbindung beenden

So könnt ihr die einzelnen Schritte hoffentlich besser nachvollziehen, 
da sie zeitlich relativ deutlich voneinander abgegrenzt sind.

Mein Problem ist nun folgendes:
Der Roboter führt den MOVA-Befehl nicht aus. Ich habe - wie ihr 
hoffentlich seht - versucht, meine Befehle in Excel so anzupassen, dass 
sie den Befehlen der Software entsprechen, jedoch funktioniert das nicht 
so richtig (siehe z.B. die unterschiedlichen Timeout Befehle). Und auch 
das Absenden funktioniert bei der Software etwas anders.

Meine Frage:
a) Kann ich die Befehlskette von der Software überhaupt auch so mit 
Excel nachstellen? Also kann ich den Roboter mit Excel "steuern"?
b) Wo liegen meine Fehler und wie kann ich diese beheben?

Vielen Dank für eure Hilfe.

Gruß
Justus

von JS (Gast)


Lesenswert?

Achso, das hatte ich vergessen.
Wenn ich zum Roboter eine Verbindung aufbaue, sendet der Roboter an die 
Software folgende Meldung:
1
PRI Automation - Equipe Division
2
Copyright (c) 1990-1999
3
Version 5.03I3A1
Das erste Zeichen dieser Meldung entspricht in der LOG-Datei dem Event 
#463 und das letzte Zeichen "1" entspricht #8057. Ich hoffe, ich nehme 
euch damit ein bisschen den Schrecken vor der großen LOG-Datei ;)

Grüße,
Justus

von JS (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
stundenlanges, intensiveres googlen bringt einen immer weiter ;)
http://michael-schwimmer.de/download/schnittstelle.xls

Das Excel-File lässt mich den Roboter bewegen, und zwar mit diesen 
Einstellungen (siehe Anhang).

Ich werde mich jetzt mal intensiver mit dem Quellcode auseinandersetzen. 
Falls ihr Ideen habt, bin ich natürlich immer hellhörig (ich sehe, dass 
meine Logs ja schon ein paar mal heruntergeladen wurden).

Gruß,
Justus

von Peter II (Gast)


Lesenswert?

JS schrieb:
> Das Excel-File lässt mich den Roboter bewegen,

dumme Frage - warum Excel? Warum nicht ein VB.NET programm richtig 
schreiben, was bietet denn exel für eine vorteile?

von JS (Gast)


Angehängte Dateien:

Lesenswert?

Peter II schrieb:
> JS schrieb:
>> Das Excel-File lässt mich den Roboter bewegen,
>
> dumme Frage - warum Excel? Warum nicht ein VB.NET programm richtig
> schreiben, was bietet denn exel für eine vorteile?

Es wird so gewünscht ;)

Ich habe auch 0,0 Erfahrung mit VB.net, das kommt hinzu (wobei die 
Unterschiede zwischen VB.net und Excel-VBA ja nur marginal sein werden).


Anbei das PortMon-Log von der funktionierenden Excel Datei.

Grüße,
Justus

von JS (Gast)


Lesenswert?

Ich noch mal.
Ich hab jetzt auch mal PortMon über den XLS-Datei aus dem Netz laufen 
lassen und die Ausgaben mit meinen Ausgaben verglichen.
=> Die beiden Dateien unterscheiden sich im Wesentlichen nur hier:
1
14:40:40  EXCEL.EXE  IOCTL_SERIAL_SET_HANDFLOW  U2SPORT1  SUCCESS  Shake:0 Replace:c0 XonLimit:100 XoffLimit:100  
2
14:40:40  EXCEL.EXE  IOCTL_SERIAL_SET_TIMEOUTS  U2SPORT1  SUCCESS  RI:-1 RM:0 RC:0 WM:0 WC:500  
3
4
5
14:41:52  EXCEL.EXE  IOCTL_SERIAL_SET_HANDFLOW  U2SPORT1  SUCCESS  Shake:1 Replace:40 XonLimit:100 XoffLimit:100  
6
14:41:52  EXCEL.EXE  IOCTL_SERIAL_SET_TIMEOUTS  U2SPORT1  SUCCESS  RI:200 RM:10 RC:200 WM:10 WC:20

Das Erste ist das File ausm Netz, das Zweite ist meins.

Daher meine Frage:
Wie kann ich die Paramter bei SET_HANDFLOW und SET_TIMEOUTS verändern?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.