das heisst, das die KRC32 das Signal RTS richtig auf HIGH setzt (RS-232 arbeitet mit Signalpegeln im Bereich von +3 ... +15 V zur Darstellung einer logischen 0 (SPACE) und -3 ... -15 V zur Darstellung einer logischen 1 (MARK)).
Warum wird nun das entsprechende CTS-Signal am PC nicht als HIGH angezeigt ?
Kann sich ja nur um einen Kabelfehler handeln !!!
KRC 32 Serielle Schnittstelle
- Albrecht
- Geschlossen
- Erledigt
-
-
hm wenn ich von 7 zu 5 prüfe zeigt er mir 10 volt an
heist das, dass ch die vertauscht habe??? -
er wird Weihnachten
an welchem Stecker hast Du gemessen ?
Wenn Du an der KRC32 das CTS gemessen hast stimmt es (LOW).
Das CTS an der KRC32 wird erst durch den PC (RTS) auf HIGH gesetzt.Hast du jetzt das komplette Kabel durchgemessen ?
25 pol KRC32 8 pol PCRTS 4 ------------- 8 CTS
CTS 5 ------------- 7 RTS
TX 2 ------------- 2 RX
RX 3 ------------- 3 TX
GND 7 ------------ 5 GND -
da kannst du als geschäääänk vorbeikomme
also dieser verbindun würde ich entnehmen das ich se brücken muss:
9polig 25polig
DIN8 female
5 7 ---GND----- (Signalmasse)
2 3 ---RxD----. (Recieve Data - Empfangsdaten
| von Gegenstelle über DCE zum DTE)
3 2 ---TxD----' (Transmit Data - Sendedaten vom DTE
über DCE zur Gegenstelle)
7 4 ---RTS----. (Reqest To Send - Empfangsbereitschaft
| des DTE)
8 5 ---CTS----o (Clear To Send - Sendebereitschaft
| des DCE)
9 22 ---RING---' (DCE hat Ruf erkannt)
4 20 ---DTR----. (Data Terminal Ready - DTE ist prinzipiell
| bereit, d.h. Port aktiviert)
6 6 ---DSR----o (Data Set Ready - DCE ist prinzipiell
| bereit, d.h. eingeschaltet)
1 8 ---DCD----' (Data Carrier Detect, man ist verbunden) -
ok ich hab jetzt noch ne weile rumprobiert und ich bin jetzt zu nem gaaaanz eigenwilligen ergebnis gekommen,welches ich ger ein wenig erklärt hätte.
UND ZWAR: (lufthol)
wenn ich in dem Docklite den punkt bei rts ausmache kann ich daten von der krc empfangen.
wenn ich jetzt den punkt anmache kann ich sie vom pc senden und die krc empfängt sie sogar.das ist aber ein rs485 transceiver control (heist bei docklite so) das heist das das rts nur fürs senden high-pegel hat.
ist das jetzt der rts cts protokoll??ich denke nicht, denn wenn ich das wieder einstelle geht wieder nix.
ich blick langsam bei den ganzen protokollen nich mehr durch ich werd noch ganz verrückt
-
die meisten billigen Rs485-Konverter brauchen das RTS-Signal zum Umschalten SEnden/Empfangen - ist bekannt.
Du kannst doch Dein Docklight auf Hardwarehandshaking RTS/CTS stellen (nicht auf manuell stellen wo man die Signale sieht). Funkt es dann auch ? -
nein es funktioniert nur unter diesem rts high while sending oder wenn ich das simuliere
unter dem normalen Hardwarehandshaking rts/cts nicht -
also ic habe jetzt pin 4 und 5 am 25pol gebrückt undjetzt funktioniert das ganze perfekt und ohne probleme
und wir wären bei der fehlersuche fast verblödet
-
Hallo Albrecht,
ist zwar nicht Sinn der Sache bei einem Handshake sich selbst die Signale zu geben, aber
der Zweck heiligt die Mittel.Wann hast du Geburtstag (gehabt) ?
-
Albrecht schrieb:
Zitat
also ic habe jetzt pin 4 und 5 am 25pol gebrückt undjetzt funktioniert das ganze perfekt und ohne problemeund wir wären bei der fehlersuche fast verblödet
HMI_VISU Schrieb am 17.07.07:
Zitat
Kannst ja mal RTS\CTS , DTR\DSR testweise an PC und Roboter beideitig brücken,
oder du misst mal die PEgel, wie LindePaul schon sagte!Hi Albrecht:
Wollte eigentlich schon damals, dass du nicht verblödest!!
-
ok den thread hab ich wohl überlesen. naja am ende sind wir ja doch zum ziel gekommen.
-
Hallo
ich versuche gerade die Kommunikation KUKA<-> Notebook (über Schnittstellen-Wandler Ethernet.->Seriell) über Serielle Schnittstelle zu realisieren.
Roboter KR5sixx
KRC V7.0.9 Grundsystem KS V7.0.56RTDie Doku zum Cread habe ich durchgelesen. Was mir direkt aufgefallen war, dass hw_inf.ini nicht im Verzeichnis C:/ KRC/ROBOTER/INIT vorhanden war. Ich habe die per hand eingefügt.
Die Einstellungen habe ich laut Beschreibung seriell.ini und hw_inf.ini Laut Beschreibung gemacht
Hw_inf.ini Seriell.ini
Com1 enable gleich KonverterDie Kommunikation steht Ich kann von der Steuerung an Notebook über Hyperterminal was senden und empfangen
Jetzt habe ich ein Programm geschrieben um einfach ein String von dem Notebook zu lesen. String deswegen da ich danach statt Notebook Kamera anwenden will und die kann nur String. In dem String steht nur Zahl 100.
1.
Wo füge ich die Zeile ein
CHANNEL : SER_1 :SER_1 $PSER_1
Ich habe die in System/Config.dat eingefügt2
Mein Programm++++++++++++++++datenliste++++++++++++++++++++
&ACCESS RVP
&REL 38
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
&PARAM EDITMASK = *
DEFDAT SER
;FOLD EXTERNAL DECLARATIONS;%{PE}%MKUKATPBASIS,%CEXT,%VCOMMON,%P
;FOLD BASISTECH EXT;%{PE}%MKUKATPBASIS,%CEXT,%VEXT,%P
EXT BAS (BAS_COMMAND :IN,REAL :IN )
DECL INT SUCCESS
;ENDFOLD (BASISTECH EXT)
;FOLD USER EXT;%{E}%MKUKATPUSER,%CEXT,%VEXT,%P
;Make here your modificationsDECL STATE_T STATUS ;
DECL MODUS_T RMODUS,WMODUS
;DECL FRAME PUNKT
INT HANDLE,OFFSET
REAL TIMEOUT ;,XPOS,YPOS,ZPOS
REAL ERG
;ENDFOLD (USER EXT)
;ENDFOLD (EXTERNAL DECLERATIONS)
ENDDAT
****************Programm
&
&ACCESS RVP
&REL 38
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
&PARAM EDITMASK = *
DEF SER( )
;FOLD INI
;FOLD BASISTECH INI
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;Make your modifications here;ENDFOLD (USER INI)
;ENDFOLD (INI);------------INITIALIZATIONS
RMODUS=#ABS
WMODUS=#ASYNC
TIMEOUT=2.0
;------------INSTRUCTIONSCOPEN(:SER_1,HANDLE)
IF HANDLE==0 THEN ;channel ist noch zu
HALT
ENDIF
;LOOPWAIT FOR $DATA_SER1>0
OFFSET=0
CREAD(HANDLE,STATUS,RMODUS,TIMEOUT,OFFSET,"%d",ERG)
IF (STATUS.RET1<>#CMD_OK)THEN
HALT
ENDIFEND
Bei der Ausführung springt er bei mir in die if Abfrage
COPEN(:SER_1,HANDLE)
IF HANDLE==0 THEN ;channel ist noch zu
HALT
ENDIFDas heißt dass das Chanel nicht aufgemacht wird
Ich freue mich auf Ihre KOMMENTARE
Gruß
Maxim
-
Das Problem liegt nut in der verwendeten V7.0.
Da gibt es keine hw_inf.ini mehr :eviltongue:
Die heisst jetzt KRC.XML im Mada-Verzeichniss. die brauchst du aber nicht ändern - dort ist der COM2 (nur COM2 funktioniert) bereits enabled.[glow=red,2,300]CHANNEL : SER_1 :SER_1 $PSER_1
Ich habe die in System/Config.dat eingefügt[/glow]
brauchst Du nicht, schmeiss die Zeile wieder rausCOPEN auf COM2 muss funktionieren
-
leider habe ich nur COM 1
-
hallo
bzw ich habe auch COM2 Anschlüss
der aber niergenwo zu finden nicht in Systemsteuerung und auch wenn ich Hyperterminal aufmache kann ich nur COM 1 auswählenGruss
Maxim
-
Hallo,
es funktioniert mit COM2 tatsächlich, vielen Dank.
So kann ich aber nicht komtrollieren, ob die Komunikation mit der Kamera steht. Bei COM 1 habe ich immer über Hyperterminal überprüft.
gibt es für schnelle Kontrolle andere Möglichkeiten.?Gruß
Maxim -
Maxim,
was hast Du jetzt am COM2 der KRC angeschlossen? -
Hallo
ich habe jetzt an COM2 meine Kamera angeschlossen.
Und es geht wie beschrieben.
Komisch ist nur das der PORT COM2 niergendwo zu sehen ist nur in der Datei die du erwähnt hast. So kann ich nicht wie früher die Kommunukation über Hyperteminal überprüfen.Gruß
Maxim
-
Hallo Maxim,
der COM2 wurde Windows entzogen und dem vxWorks (Roboter) zugewiesen.
In Windows nicht mehr sichtbar.
Du kannst die Kommunikation mit dem in der V7 eingebauten seriellen Loggen überprüfen.
Bin krank zuhause und habe kein KCP vor mir.
irgendwo im Konfiguration/EA-Treiber/serielle Kommunikation/serielles Loggen
Häckchen ran und der Logger ist scharf, Häckchen wieder weg und im Log-Verzeichnis steht eine Datei serialcom.log -
Hallo
Vielen Dank
ich probiere es direkt aus.Ich habe jetzt eine andere Frage. (eventuell blöde Frage)
ich senden mit der Kamera ein String <POSX POSY WINKEL>, bei einem Artikel funktioniert es wunderbar.
ich lese mit CREAD
CREAD(HANDLE, SR_T, MR_T, TIMEOUT, OFFSET,“%F %F %F“, XPOS, YPOS, APOS,)Jetzt will ich je nach dem, ob ein oder mehrere Artikel im Bild sind auch die Positionen anfahren.
Ich könnte von Kamera ein deffinierten String schicken
für ein Artikel <POSX POSY WINKEL 0 0 0 0 0 0>
und für drei <POSX POSY WInkel POSX POSY WINKEL POSX POSY Winkel>
und dann( theoretisch mit SREAD in einzelne Teile zerlegen)Zur Zeit ist mein String von der Kamera so deffiniert, dass je nachdem wieviel Artikel da sind, soviel Positionen auch ausgegeben wird. Also Stringlänge nicht konstant.
Mein Problem ist, dass ich nicht weiß wie ich die Positinen von 1. Artikel von den Positionen von 2. Artikel bei dem Roboter nach dem Einlesen trenne.
Hast du da eine Idee wie ich es am besten und am schnellsten realisieren könnte.Wunsche dir gute Besserung
GrußMaxim
Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen