Ich hab gerade nochmal das HMI minimiert und dort die Windows suche im Verzeichnis C:\KRC genutzt. Systemdateien und versteckte Dateien eingeblendet.
Keine Treffer....
Ich hab gerade nochmal das HMI minimiert und dort die Windows suche im Verzeichnis C:\KRC genutzt. Systemdateien und versteckte Dateien eingeblendet.
Keine Treffer....
sorry, dass ich den uralten Thread wiederbelebe. Bisher konnte man ja bekannterweise die Einstellungen in der Authentication.config anpassen.
Nun habe ich aber eine ganz neue Steuerung mit der Version KSS 8.6.2 und hier gibt es die Datei nicht mehr. Weiß jemand wo man die Einstellungen für automatische Anmeldung als Experte jetzt machen kann?
Hm Ok das ist wohl die Erklärung dafür.
Ich habe ein Programm zum Teachen von Bases gemacht, dabei wird die Basenummer als Parameter übergeben und ich wollte dann die Nummer als Index zum Zugriff in das Array nutzen.
Aber man kann das ganze auch "umdrehen" und wie in deinem Beispiel machen, gute Idee.
Hallo Leute,
momentan nutzen wir 2 verschiedene Feldbus Konfigurationen an der KRC4, welche jeweils in einem Projekt gespeichert sind.
Je nach Bedarf wird dann am KUKA Pad
das entsprechende Projekt ausgewählt und geladen. Alle Programme und Einstellungen in der sps.sub config.dat etc sind aber identisch.
Wenn nun Änderungen in einem Projekt gemacht werden, dann müssen diese
immer händisch in das andere Projekt nachgepflegt werden, da jedes Projekt seine eigene UNterstruktur hat. Das ganze ist ziemlich mühsam und fehleranfällig.
Hat jemand eine Idee wie man das elegant lösen kann?
Vielleicht Projektwechsel ohne Änderung der Programstrukturordner?
Hallo,
ich habe ein Problem mit der Genauigkeit des Triggerbefehls in Verbindung mit RSI. Der Roboter führt eine Sonde und fährt damit einen rechteckige Ebene von ca. 200 x 300 mm Zeile für Zeile ab mit einem Zeilenvorschub von 0.5 mm.
Nun soll "während der Fahrt" ein Signal über RSI sowie über die IO Ebene per Feldbus gesetzt werden.
Das Problem ist allerdings, dass der Schaltvorgang in jeder Zeile zu einem anderen Zeitpunkt kommt, die Abweichung sind nicht groß, aber doch problematisch. Geteached werden für den ganzen Prozess 5 Punkte, nämlich Start, TriggerOn, TriggerOff, End für eine Zeile und dann noch der Endpunkt für die letzte Zeile. Der Vorschub wird dann mittels Toolkorrektur realisiert.
Die Ein und Ausschaltpunkte werden benötigt um den Roboter beschleunigen und abbremsen zu lassen, da zwischen TriggerOn und TriggerOff eine konstante Geschwindigkeit benötigt wird.
Habt ihr eine Idee wie man das ganze genauer hinbekommen könnte?
Anstatt das Tool zu korrigieren hab ich überlegt auch mit überschleifen zu arbeiten, aber dabei kann man wohl keine IOs schalten.
Schaubild
Start........................TriggerOn................TriggerOff...................End
.
.
.
.
.
.
EndZeile
Hier der Code dazu
iDistStart =-VLenEe6pos( EXBOREREF_TRIG_ON, EXBOREREF_END )
iDistEnd =-VLenEe6pos( EXBOREREF_TRIG_OFF, EXBOREREF_END )
LOOP
CONTINUE
IF (((TOOL_CORR.Z-rStep)>-rHoehe) AND PC_RDY AND TSK_ACK ) THEN
EEMove( EXBOREREF_START, #ELIN)
TRIGGER WHEN PATH=iDistStart DELAY=0 do StartAll() PRIO=1
TRIGGER WHEN PATH=iDistEnd DELAY=0 do StopAll() PRIO=1
EEMove( EXBOREREF_END, #ELIN)
TOOL_CORR.Z = TOOL_CORR.Z - rStep
ELSE
goto ende
ENDIF
ENDLOOP
ende:
TOOL_CORR_ON = FALSE;
TOOL_CORR = $NULLFRAME
EEMove( EXBOREREF_START, #ELIN)
RETURN PC_RDY
ENDFCT
DEF StartAll()
$SEN_PINT[1] = $SEN_PINT[1]+1
F_RB_BP_ON=FALSE
END
DEF StopAll()
F_RB_BP_ON=TRUE
END
Alles anzeigen
Hallo Leute,
per BASE_CORR drehe ich meine Base um 30 Grad und fahre danach einige Punkte an.
$BASE=BASE_DATA[1]
$TOOL=TOOL_DATA[51]
BASE_CORR = $NULLFRAME
BASE_CORR.A = 40
BASE_CORR.Z = 88
$BASE=$BASE:BASE_CORR
LIN {X 0,Y -100.19,Z 13.73,A -92.8,B -13.28,C 0.64} C_VEL
LIN {X 0,Y -119.54,Z 18.77,A -92.83,B -15.88,C 0.78} C_VEL
Alles anzeigen
Ich würde das ganze aber gerne ohne Base Verschiebung realisieren, sondern diesen 30 Grad Wert direkt in alle LIN Befehle einrechnen. Wie kann ich das am einfachsten machen?
Ich habe das Problem nun lösen können.
Berechnungen mit Real-Werten führen immer zu leichten Fehlern. Hängt Dein Fehler definitiv nicht ab, wie oft Du An- Abkoppelst / Achse Nullst?
Wie befürchtet ist genau das der Knackpunkt.
Der Realwert wird immer "ungenauer" desto länger sich die Achse dreht. Umso größer der Wert vor dem Komma wird, umso weniger Nachkommastellen stehen zur Verfügung und somit wird die Position ungenauer, zumindest nach außen hin, intern wird wahrscheinlich der Wert anders behandelt. Durch mehrfaches an und abkoppeln hat sich der Fehler immer weiter summiert und die fehlerhafte Position wurde immer größer.
Gelöst wurde das ganze nun, indem vor dem Abkoppeln auf einen glatten Wert ohne Nachkommastellen gefahren wurde.
e6pAxisCurr = $AXIS_ACT
CORRWERT = $AXIS_ACT.E1
MOD1000 = CORRWERT / 1000.0
CORRWERT = MOD1000 * 1000.0
BAS( #PTP_PARAMS, 10 )
e6pAxisCurr.E1 = CORRWERT
PTP e6pAxisCurr
In unserem Fall auf ein Vielfaches von 1000 ( wiegesagt 1000 mm enstprechen einer Umdrehung) und somit entfällt die Ungenauigkeit der wenigen Nachkommastellen. Interessant war dabei auch zu sehen, dass bei einer Zuweisung eines REAL Wertes an eine INT Variable automatisch gerundet und nicht "abgeschnitten" wird.
Hier noch das komplette, bearbeite Programm zur Nullung der Achse.
&ACCESS RV3
&REL 23
&COMMENT MOVE THE EXTERNEL TURNTABLE TO ZERO POSITION
&PARAM DISKPATH = TP/eloscan
DEF zeroturntable()
E6AXIS e6pAxisCurr
REAL CORRWERT
INT MOD1000
WAIT SEC 0
e6pAxisCurr = $AXIS_ACT
CORRWERT = $AXIS_ACT.E1
MOD1000 = CORRWERT / 1000.0
CORRWERT = MOD1000 * 1000.0
BAS( #PTP_PARAMS, 10 )
e6pAxisCurr.E1 = CORRWERT
PTP e6pAxisCurr
IF (CORRWERT < -300.0)or(CORRWERT>300) THEN
WAIT SEC 0.3
MOD1000 = CORRWERT / 1000.0
CORRWERT = CORRWERT - (MOD1000 * 1000 )
e6pAxisCurr.E1 = e6pAxisCurr.E1-CORRWERT
IF ABS( $AXIS_ACT.E1 ) > 100.0 THEN
WAIT SEC 1.1
$ASYNC_AXIS = 'B0001'
$ASYNC_EX_AX_DECOUPLE = 1
WAIT SEC 2.5
$AXIS_ACT.E1 = CORRWERT
WAIT SEC 0.5
$ASYNC_EX_AX_DECOUPLE = 0
$ASYNC_AXIS = 'B0000'
wait sec 0
ENDIF
ENDIF
BAS( #PTP_PARAMS, 10 )
e6pAxisCurr.E1 = 0.0
PTP e6pAxisCurr
END
Alles anzeigen
Die Abweichung betrug nach etwa 3 Stunden Laufzeit (kann dir jetzt nicht sagen wieviele Umdrehungen dabei gemacht wurden) 1.5 mm, 1000 mm sind eine Umdrehung, was schon sehr viel ist.
Die Achse wird zum Positionieren von bestimmten Bauteilen benutzt, die anschließend mit einer Sonde geprüft werden.
Die Achse ist über das KUKA EMD justierbar. Ich habe nach den 3 Stunden die Justage geprüft mittels des EMDs und bin odrt auf die 1.5 mm gekommen.
Die Achse ist an solch einem Drehtisch EGD 250 mit Getriebe angeschlossen. Ich denke schon, dass man sich auf das angebene Übersetzungsverhältnis des Herstellers verlassen kann. Das Getriebe sollte kein Spiel/Schlupf haben.
https://www.expert-tuenkers.de…uenkers_neun_7_drehen.pdf
ok verstehe, das hilft mir leider nicht, da die Achse teilweise 10 bis 20 Minuten ohne Pause recht schnell dreht ohne Stillstand.
Wie meinst du das genau, so oft wie möglich genullt?
Hallo Leute,
ich habe Probleme mit einer Zusatzachse an einer KR C4 Steuerung.
Die Achse wird sowohl zur Positionierung als auch als Rundlaufachse betrieben. Um die Achse nach Beendigung eines Programms im Rundlaufmodus nicht wieder die gleiche Anzahl an Umdrehungen rückwärtslaufen zu lassen um HOME zu erreichen wird die Achse kurzzeitig abgekoppelt. Folgender Code wird zum Nullen verwendet. Eine Umdrehung der Achse entsprechen 1000 mm
&ACCESS RV3
&REL 23
&COMMENT MOVE THE EXTERNEL TURNTABLE TO ZERO POSITION
&PARAM DISKPATH = TP/eloscan
DEF zeroturntable()
E6AXIS e6pAxisCurr
REAL CORRWERT
INT MOD1000
; ROTARYSTOP()
WAIT SEC 0
e6pAxisCurr = $AXIS_ACT
CORRWERT = $AXIS_ACT.E1
IF (CORRWERT < -300.0)or(CORRWERT>300) THEN
WAIT SEC 0.3
MOD1000 = CORRWERT / 1000.0
CORRWERT = CORRWERT - (MOD1000 * 1000 )
e6pAxisCurr.E1 = e6pAxisCurr.E1-CORRWERT
IF ABS( $AXIS_ACT.E1 ) > 100.0 THEN
WAIT SEC 1.1
$ASYNC_AXIS = 'B0001'
$ASYNC_EX_AX_DECOUPLE = 1
WAIT SEC 2.5
$AXIS_ACT.E1 = CORRWERT
WAIT SEC 0.5
$ASYNC_EX_AX_DECOUPLE = 0
$ASYNC_AXIS = 'B0000'
wait sec 0
ENDIF
ENDIF
BAS( #PTP_PARAMS, 10 )
e6pAxisCurr.E1 = 0.0
PTP e6pAxisCurr
END
Alles anzeigen
Mir ist aufgefallen, dass die Abweichung um so größer wird, desto länger die Achse rotiert, d.h. um so größer der Wert in $AXIS_ACT.E1 wird. Dieser Wert wird einer Variable vom Typ REAL zugewiesen. Auffallend ist hierbei, dass die Anzahl der Nachkommastellen immer kleiner wird und somit die Angabe der Position ungenauer, was auch den oben beschriebenen Effekt bei länger andauernder Rotation erklären würde.
Daher nun die Frage, ist es möglich die Position der Achse auch nach längerer Rotation möglichst exakt zu erhalten? Idealerweise als Integer Wert (Encoder Daten)?
Hallo Leute,
ich habe ein altes Program auf eine aktuelle KRC4 Steuerung kopiert, bisher lief diese Funktion immer ohne Probleme.
DEFFCT BOOL CalctE1Angle( ANGLE:OUT )
DECL E6AXIS RHOME
DECL E6POS PTEMP
DECL E6POS PTSTART, PTCENTER
DECL E6POS PTPOS1, PTPOS2, PTPOS3
DECL BOOL STATUSOK
DECL REAL ANGLE
DECL FDAT FUSED
DECL LDAT LUSED
;FOLD SELECT TOOL_NO 1,BASE_NO 1
FUSED={TOOL_NO 1,BASE_NO 1,IPO_FRAME #BASE}
LUSED={VEL 0.1,ACC 80.0,APO_DIST 10.0,APO_FAC 50.0}
LDAT_ACT = LUSED
BAS(#CP_DAT)
FDAT_ACT = FUSED
BAS(#FRAMES)
;ENDFOLD SELECT TOOL
PTPOS1 = { X -8.290, Y 290.938, Z 100.800, a 93.637, b 0.000, c -180.000 }
PTPOS2 = { X 0.768, Y 285.635, Z 100.800, a 93.637, b 0.000, c -180.000 }
PTPOS3 = { X 8.316, Y 292.161, Z 100.800, a 93.637, b 0.000, c -180.000 }
PTCENTER = { X -0.015, Y 291.922, Z 100.800, a 93.637, b 0.000, c -180.000 }
PTSTART = { X -0.015, Y 291.922, Z 105.800, a 93.637, b 0.000, c -180.000 }
FUSED.TOOL_NO = IRR_BOLT
MountTool( FUSED.TOOL_NO )
BAS (#VEL_PTP,30)
RHOME = XHOME
PTP RHOME
BAS (#VEL_PTP,10)
PTEMP = $POS_ACT
PTEMP.e1 = 250
PTP PTEMP
;FOLD INIT MOVEMENT TO 300 mm/s
LDAT_ACT = LUSED
BAS(#CP_DAT)
FDAT_ACT = FUSED
BAS(#FRAMES)
BAS(#VEL_CP,0.3)
$advance = 3
;ENDFOLD INIT MOVEMENT
$APO.CDIS = 10
PTP { X -0.015, Y 291.922, Z 302.800, a 93.637, b 0.000, c -180.000 } C_DIS
BAS (#VEL_PTP,20)
PTP { X -0.015, Y 291.922, Z 202.800, a 93.637, b 0.000, c -180.000 } C_DIS
BAS (#VEL_PTP,5)
PTP { X -0.015, Y 291.922, Z 152.800, a 93.637, b 0.000, c -180.000 } C_DIS
BAS(#VEL_CP, 0.01 )
LIN { X -0.015, Y 291.922, Z 107.800, a 93.637, b 0.000, c -180.000 } C_DIS
STATUSOK = FindSlot( PTCENTER, PTPOS1, PTPOS2, PTPOS3, ANGLE )
BAS(#VEL_CP, 0.1 )
LIN { X -0.015, Y 291.922, Z 152.800, a 93.637, b 0.000, c -180.000 } C_DIS
BAS (#VEL_PTP,10)
$APO.CDIS = 20
PTP { X -0.015, Y 291.922, Z 202.800, a 93.637, b 0.000, c -180.000 } C_DIS
BAS (#VEL_PTP,20)
PTP { X -0.015, Y 291.922, Z 302.800, a 93.637, b 0.000, c -180.000 } C_DIS
BAS (#VEL_PTP,30)
RHOME = XHOME
RHOME.E1 = $AXIS_ACT.E1
PTP RHOME
RETURN STATUSOK
ENDFCT
Alles anzeigen
Nun kommt aber die Fehlermeldung ungültiger Feldindex beim Aufruf des Befehls: BAS(#FRAMES) und zwar erst beim zweiten Aufruf im Fold INIT MOVEMENT TO 300 mm/s
Kann mir jemand erklären wieso und was der Befehl genau macht?
Wäre super
Hallo Leute,
ich habe mir einige Punkte geteached, die ich dann manuell per LIN Befehl anfahren möchte. Die Punkte sind in einem Fold versteckt und deren Aufruf wird mittels goto übersprungen. Dies geschieht daher, dass die Zusatzachse nicht auf die geteachte Position gefahren werden soll, sondern ihre aktuelle Position beibehalten soll.
Daher habe ich mir folgende Funktion geschrieben:
DEF MoveRLinCont( epos :IN, offset : IN )
DECL E6POS epos
DECL REAL offset
epos.e1 = $POS_ACT.E1
epos.C = epos.C + offset
LIN epos C_VEL
END
das ganze Funktioniert auch soweit, allerdings wird meien eingestelle Geschwindigkeit nicht verwendet und es wird nicht überschliffen.
Kann mir jemand erklären woran das liegt? Ich habe auch schon einiges probiert...setzen des Vorlaufzeigers etc.
Hier der ganze Code:
&ACCESS RVO1
&REL 33
&PARAM DISKPATH = KRC:\R1\Program\free
DEF turbo_pts( )
DECL REAL rAngle
;FOLD INI;%{PE}
;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)
GOTO INSPECT
;FOLD TeachPoints
;FOLD PTP HOME Vel=30 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:30, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,30)
$H_POS=XHOME
PTP XHOME
;ENDFOLD
;FOLD LIN AN1 Vel=0.1 m/s CPDAT1 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:AN1, 3:, 5:0.1, 7:CPDAT1
$BWDSTART=FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FAN1
BAS(#CP_PARAMS,0.1)
LIN XAN1
;ENDFOLD
;FOLD LIN AN2 Vel=0.1 m/s CPDAT2 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:AN2, 3:, 5:0.1, 7:CPDAT2
$BWDSTART=FALSE
LDAT_ACT=LCPDAT2
FDAT_ACT=FAN2
BAS(#CP_PARAMS,0.1)
LIN XAN2
;ENDFOLD
;FOLD LIN AN3 Vel=0.1 m/s CPDAT3 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:AN3, 3:, 5:0.1, 7:CPDAT3
$BWDSTART=FALSE
LDAT_ACT=LCPDAT3
FDAT_ACT=FAN3
BAS(#CP_PARAMS,0.1)
LIN XAN3
;ENDFOLD
;FOLD LIN AN4 Vel=0.1 m/s CPDAT4 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:AN4, 3:, 5:0.1, 7:CPDAT4
$BWDSTART=FALSE
LDAT_ACT=LCPDAT4
FDAT_ACT=FAN4
BAS(#CP_PARAMS,0.1)
LIN XAN4
;ENDFOLD
;FOLD LIN P1 CONT Vel=0.005 m/s CPDAT5 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT5
$BWDSTART=FALSE
LDAT_ACT=LCPDAT5
FDAT_ACT=FP1
BAS(#CP_PARAMS,0.005)
LIN XP1 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P2 CONT Vel=0.005 m/s CPDAT6 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT6
$BWDSTART=FALSE
LDAT_ACT=LCPDAT6
FDAT_ACT=FP2
BAS(#CP_PARAMS,0.005)
LIN XP2 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P3 CONT Vel=0.005 m/s CPDAT7 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT7
$BWDSTART=FALSE
LDAT_ACT=LCPDAT7
FDAT_ACT=FP3
BAS(#CP_PARAMS,0.005)
LIN XP3 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P4 CONT Vel=0.005 m/s CPDAT8 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P4, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT8
$BWDSTART=FALSE
LDAT_ACT=LCPDAT8
FDAT_ACT=FP4
BAS(#CP_PARAMS,0.005)
LIN XP4 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P5 CONT Vel=0.005 m/s CPDAT9 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P5, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT9
$BWDSTART=FALSE
LDAT_ACT=LCPDAT9
FDAT_ACT=FP5
BAS(#CP_PARAMS,0.005)
LIN XP5 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P6 CONT Vel=0.005 m/s CPDAT10 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P6, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT10
$BWDSTART=FALSE
LDAT_ACT=LCPDAT10
FDAT_ACT=FP6
BAS(#CP_PARAMS,0.005)
LIN XP6 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P7 CONT Vel=0.005 m/s CPDAT11 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT11
$BWDSTART=FALSE
LDAT_ACT=LCPDAT11
FDAT_ACT=FP7
BAS(#CP_PARAMS,0.005)
LIN XP7 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P8 CONT Vel=0.005 m/s CPDAT12 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P8, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT12
$BWDSTART=FALSE
LDAT_ACT=LCPDAT12
FDAT_ACT=FP8
BAS(#CP_PARAMS,0.005)
LIN XP8 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P9 CONT Vel=0.005 m/s CPDAT13 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P9, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT13
$BWDSTART=FALSE
LDAT_ACT=LCPDAT13
FDAT_ACT=FP9
BAS(#CP_PARAMS,0.005)
LIN XP9 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P10 CONT Vel=0.005 m/s CPDAT14 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P10, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT14
$BWDSTART=FALSE
LDAT_ACT=LCPDAT14
FDAT_ACT=FP10
BAS(#CP_PARAMS,0.005)
LIN XP10 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P11 CONT Vel=0.005 m/s CPDAT19 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P11, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT19
$BWDSTART=FALSE
LDAT_ACT=LCPDAT19
FDAT_ACT=FP11
BAS(#CP_PARAMS,0.005)
LIN XP11 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P12 CONT Vel=0.005 m/s CPDAT20 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P12, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT20
$BWDSTART=FALSE
LDAT_ACT=LCPDAT20
FDAT_ACT=FP12
BAS(#CP_PARAMS,0.005)
LIN XP12 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P13 CONT Vel=0.005 m/s CPDAT21 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P13, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT21
$BWDSTART=FALSE
LDAT_ACT=LCPDAT21
FDAT_ACT=FP13
BAS(#CP_PARAMS,0.005)
LIN XP13 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P14 CONT Vel=0.005 m/s CPDAT22 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P14, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT22
$BWDSTART=FALSE
LDAT_ACT=LCPDAT22
FDAT_ACT=FP14
BAS(#CP_PARAMS,0.005)
LIN XP14 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P15 CONT Vel=0.005 m/s CPDAT23 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P15, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT23
$BWDSTART=FALSE
LDAT_ACT=LCPDAT23
FDAT_ACT=FP15
BAS(#CP_PARAMS,0.005)
LIN XP15 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P16 CONT Vel=0.005 m/s CPDAT24 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P16, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT24
$BWDSTART=FALSE
LDAT_ACT=LCPDAT24
FDAT_ACT=FP16
BAS(#CP_PARAMS,0.005)
LIN XP16 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P17 CONT Vel=0.005 m/s CPDAT25 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P17, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT25
$BWDSTART=FALSE
LDAT_ACT=LCPDAT25
FDAT_ACT=FP17
BAS(#CP_PARAMS,0.005)
LIN XP17 C_DIS C_DIS
;ENDFOLD
;FOLD LIN P18 CONT Vel=0.005 m/s CPDAT26 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P18, 3:C_DIS C_DIS, 5:0.005, 7:CPDAT26
$BWDSTART=FALSE
LDAT_ACT=LCPDAT26
FDAT_ACT=FP18
BAS(#CP_PARAMS,0.005)
LIN XP18 C_DIS C_DIS
;ENDFOLD
;FOLD LIN AB1 Vel=0.1 m/s CPDAT15 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:AB1, 3:, 5:0.1, 7:CPDAT15
$BWDSTART=FALSE
LDAT_ACT=LCPDAT15
FDAT_ACT=FAB1
BAS(#CP_PARAMS,0.1)
LIN XAB1
;ENDFOLD
;FOLD LIN AB2 Vel=0.1 m/s CPDAT16 Tool[30]:minirohr 8Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:AB2, 3:, 5:0.1, 7:CPDAT16
$BWDSTART=FALSE
LDAT_ACT=LCPDAT16
FDAT_ACT=FAB2
BAS(#CP_PARAMS,0.1)
LIN XAB2
;ENDFOLD
;FOLD LIN AB3 Vel=0.1 m/s CPDAT17 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:AB3, 3:, 5:0.1, 7:CPDAT17
$BWDSTART=FALSE
LDAT_ACT=LCPDAT17
FDAT_ACT=FAB3
BAS(#CP_PARAMS,0.1)
LIN XAB3
;ENDFOLD
;FOLD LIN AB4 Vel=0.1 m/s CPDAT18 Tool[30]:minirohr Base[0];%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:AB4, 3:, 5:0.1, 7:CPDAT18
$BWDSTART=FALSE
LDAT_ACT=LCPDAT18
FDAT_ACT=FAB4
BAS(#CP_PARAMS,0.1)
LIN XAB4
;ENDFOLD
;FOLD PTP HOME Vel=30 % DEFAULT;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:30, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,30)
$H_POS=XHOME
PTP XHOME
;ENDFOLD
;ENDFOLD
INSPECT:
BAS(#TOOL, 30)
BAS(#BASE, 0)
BAS(#VEL_CP, 0.1)
$ADVANCE = 3
rAngle = -5.0
WHILE ( rAngle <= 5 )
MoveRLin( XAN1, rAngle)
MoveRLin( XAN2, rAngle)
MoveRLin( XAN3, rAngle)
MoveRLin( XAN4, rAngle)
MoveRLin( XP1, rAngle)
BAS(#VEL_CP, 0.0005)
$VEL.CP = 0.005
WAIT SEC 0.1
F_RB_TSTON1 = TRUE ;KRC4
WAIT SEC 0.1
ESRSTART()
$ADVANCE = 3
$VEL.CP = 0.0005
BAS(#VEL_CP, 0.0005)
MoveRLinCont( XP2, rAngle)
MoveRLinCont( XP3, rAngle)
MoveRLinCont( XP4, rAngle)
MoveRLinCont( XP5, rAngle)
MoveRLinCont( XP6, rAngle)
MoveRLinCont( XP7, rAngle)
MoveRLinCont( XP8, rAngle)
MoveRLinCont( XP9, rAngle)
MoveRLinCont( XP10, rAngle)
MoveRLinCont( XP11, rAngle)
MoveRLinCont( XP12, rAngle)
MoveRLinCont( XP13, rAngle)
MoveRLinCont( XP14, rAngle)
MoveRLinCont( XP15, rAngle)
MoveRLinCont( XP16, rAngle)
MoveRLinCont( XP17, rAngle)
MoveRLinCont( XP18, rAngle)
F_RB_TSTON1 = FALSE
ESRSTOP()
WAIT SEC 0.1
$VEL.CP = 0.1
MoveRLin( XAB1, rAngle)
MoveRLin( XAB2, rAngle)
MoveRLin( XAB3, rAngle)
MoveRLin( XAB4, rAngle)
rAngle = rAngle + 1
ENDWHILE
END
DEF MoveRLin( epos :IN, offset : IN )
DECL E6POS epos
DECL REAL offset
$BWDSTART = FALSE
BAS(#CP_DAT)
BAS(#FRAMES)
epos.e1 = $POS_ACT.E1
epos.C = epos.C + offset
LIN epos
END
DEF MoveRLinCont( epos :IN, offset : IN )
DECL E6POS epos
DECL REAL offset
$BWDSTART = FALSE
BAS(#CP_DAT)
BAS(#FRAMES)
epos.e1 = $POS_ACT.E1
epos.C = epos.C + offset
LIN epos C_DIS
END
Alles anzeigen
Hallo
wir haben an unsererm KRC4 Roboter eine Zusatzachse verbaut, die einen Drehteller antreibt. Ist es irgendwie möglich die aktuelle Drehgeschwindigkeit in rpm anzuzeigen?
Funktioniert. top!
Hi
ich möchte an verschiedenen Stellen eine Meldung absetzen, daher habe ich das ganze Erzeugen des Meldungsrumpfs in eine Funktion gepackt, die als Parameter einen Text und Real Werte bekommt.
Das ganze sieht so aus:
DEF InfoMessageIIR( msg : IN, parm1 : IN, parm2 : IN )
DECL KrlMsg_t emessage
DECL KrlMsgPar_t mypar[3]
DECL KrlMsgOpt_t myoptions
DECL REAL parm1, parm2
DECL CHAR msg[]
INT nhandle
emessage = {modul[] "FindBolt2", Nr 1, msg_txt[] msg }
par[1] = {par_type #value, par_real 0.0}
par[1].par_real = parm1
END
Alles anzeigen
Beispiel Aufruf
Ein Problem ist nun bei emessage im Teil msg. Alle Beispiele, die ich bisher gefunden habe (auch im Handbuch) haben dort direkt eine Zeichenkette in "" stehen, aber keine Variable.
Hat jemand eine Idee wie man das lösen kann?