Hallo,
Ich habe wieder einmal ein Problem mit meiner Diplomarbeit.
Ich soll mit einer IRC5 Steuerung Native Befehle zu einer Cognex IS5000 schicken. Per Terminal über meinem Computer funktioniert alles schon bestens.
Allerdings habe ich bei der Kommunikation mit dem Roboter einige Probleme:
Mein Programm schaut folgendermaßen aus:
MODULE Vision_RS
! DATA DECLARATIONS
PERS num nXOffs:=0;
PERS num nYOffs:=0;
PERS num nAngle:=0;
VAR string stReceived;
VAR iodev ComChannel;
PROC Main()
GetVisionData;
WaitTime 3;
ENDPROC
PROC GetVisionData()
VAR string XData:="";
VAR string YData:="";
VAR string AngleData:="";
VAR num NumCharacters:=6;
VAR bool bOK;
nXOffs:=0;
nYOffs:=0;
nAngle:=0;
Close ComChannel;
Open "COM1", ComChannel \Append\Bin;
ClearIOBuff ComChannel;
WaitTime\InPos, 0.5;
! Instruction In-Sight to Acquire an Image
! and not return until complete
WriteStrBin ComChannel, "sw8\0D";
CheckStatus;
! Get the value in cell C7
WriteStrBin ComChannel, "gvd089\0D";
CheckStatus;
! Read the X-offset
XData:= ReadStrbin (ComChannel, NumCharacters \Time:=5);
WriteStrBin ComChannel, "gvd101\0D";
CheckStatus;
! Read the Y-offset
YData:= ReadStrbin (ComChannel, NumCharacters \Time:=5);
WriteStrBin ComChannel, "gvd113\0D";
CheckStatus;
! Read the Angle-offset
AngleData:= ReadStrbin (ComChannel, NumCharacters \Time:=5);
!Closes Serial Channel "COM1"
Close ComChannel;
!Convert String Data To Numerical Data
bOK:=StrToVal(XData,nXOffs);
bOK:=StrToVal(YData,nYOffs);
bOK:=StrToVal(AngleData,nAngle);
TPWrite XData; TPWrite YData; TPWrite AngleData;
Stop;
ENDPROC
PROC CheckStatus()
stReceived:=ReadStrBin(ComChannel,1\Time:=5);
IF stReceived<>"1" THEN
TPErase;
TPWrite "Vision Error!";
Stop;
ENDIF
ClearIOBuff ComChannel;
ENDPROC
ENDMODULE
Alles anzeigen
Ich habe einen Fehler bei der Überprüfung ob die Kamera den Nativen Befehl ausgeführt hat.
Nämlich:
"sw8" ist z.B. der Befehl zum Auslösen (Triggern) der Kamera.
Anschließend wird ein Bestätigung zurückgegeben ob der Vorgang erfolgreich war -> Falls 1 zurückgeschickt wurde, war der Befehl erfolgreich
Beim Befehl
gvd113 Wird die Position von der Kamera ausgelesen.
Hier wird auch ein 1er zurückgegeben und anschließend die Zahl (Position).
Mein konkretes Problem ist nun, dass das Programm CheckStatus() immer einen Vision Error aufschreibt, da die Kamera nicht 1 zurückgibt, ich vermute das der String leer bleibt.
Seht ihr irgend einen Fehler im Programm?
Wie würdet ihr das Programm ausführen?
mfg
Kevin