Guten Tag.
Ich versuche einen ABB Roboter "IRB 4400, S4C, OS 3.0" mit einem Visionsystem "Matrox Iris Gt1200" über eine serielle Schnittstelle RS232 zu verknüpfen.
Ich habe folgende Probleme:
- Ich empfange keinen String am Roboter. Der String jedoch wird vom Visionsystem aus gesendet, das konnte ich mit dem Hyperterminal am Pc prüfen.
- Gestern hatte ich einen kurzzeitigen Erfolg. Ich habe ca. 4x mal einen String mit 20 Zeichen empfangen können.
Die Verdrahtung dürfte korrekt sein, da ich vom Roboter aus per Write einen String an das Hyperterminal senden kann. Er ist bis jetzt auch immer ohne Fehler angekommen. Ich habe irgendwo im Referenzhandbuch gelesen das der String maximal 80 Zeichen lang sein darf. Jetzt kommt mir die Überlegung, dass vllt. der Puffer meiner Schnittstelle überlaufen bzw. voll sein könnte. Wenn ja wie bekomme ich diesen gelöscht bzw. löscht er sich selbst wenn die Schnittstelle per Close geschlossen wird?. Der Befehl "ClearIOBuff" wird leider noch nicht von dem OS 3.0 unterstützt. Im Anhang sende ich euch noch meinen Quellcode, der so simpel wie möglich gehalten wurde.
Über Ratschläger wäre ich sehr dankbar.
MODULE Serial
!###################################################
!## T E S T P R O G R A M M F U E R ##
!## S E R I E L L E U E B E R T R A G U N G ##
!###################################################
!---------------------------------------------------------------------
!
PROC Haupt()
SerialTEST;
ENDPROC
PROC SerialTEST ()
VAR iodev com1;
VAR bool bOkx;
VAR bool bOky;
VAR bool bOka;
VAR num noffx:=0;
VAR num noffy:=0;
VAR num noffa:=0;
VAR string stDaten:="00000000000000000000";
VAR string stdatax;
VAR string stdatay;
VAR string stdataa;
Stop;
!Cam bereit?
!Schnittstelle oeffnen und String lesen
!######################################
Open "sio1:", com1\write;
Write com1, "H";
Close com1;
Open "sio1:", com1\read;
Set DO10_14; ! Wird benoetigt um den String von der Kamera zu senden
!Write com1, "Abarbeitung gestartet";
stDaten:=ReadStr(com1\Time:=5); ! 123456A123456B12345C 20 Zeichen
Close com1;
Reset DO10_14;
! String aufteilen
!######################################
stdatax:=StrPart(stDaten,1,6);
stdatay:=StrPart(stDaten,8,6);
stdataa:=StrPart(stDaten,15,5);
! String konvertiern
!######################################
bOkx:=StrToVal(stdatax,noffx);
bOky:=StrToVal(stdatay,noffy);
bOka:=StrToVal(stdataa,noffa);
!Offset ausgeben
!######################################
TPErase;
TPWrite "Offset X= "\Num:=noffx;
TPWrite "Offset Y= "\Num:=noffy;
TPWrite "Rotation A= "\Num:=noffa;
TPWrite stDaten;
ENDPROC
ENDMODULE
Alles anzeigen