Liebe Roboterexperten,
ich möchte ein digitales input-Signal nutzen, um einen analogen Ausgang zu steuern. Das ganze soll kontinuierlich während eines Schweißprozesses genutzt werden, um den Prozess zu steuern.
Unsere Steuerung ist eine KRC4 mit Version 8.5.7.453 HF1
Folgenden Code habe ich geschrieben, um die Funktionalität zu testen:
DEF TestDiginMotorstrom ( )
SIGNAL MOTORSTROMSIGNAL $IN[201] to $IN[216]
SIGNAL DRAHTGESCHWINDIGKEIT $ANOUT[9]
LEERLAUFSTROM = 70
GRENZSTROM = 100
K_DRAHT = -0.01
DRAHT_SOLL = 0.1
DRAHT_MIN = DRAHT_SOLL * 0.5
OFFSETSTROM = GRENZSTROM * K_DRAHT + DRAHT_SOLL
;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)
;FOLD SPTP HOME Vel=100 % DEFAULT ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=HOME; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=DEFAULT; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP
;ENDFOLD
SPTP XHOME WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(FHOME), $BASE = SBASE(FHOME.BASE_NO), $IPO_MODE = SIPO_MODE(FHOME.IPO_FRAME), $LOAD = SLOAD(FHOME.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PDEFAULT), $APO = SAPO_PTP(PDEFAULT), $GEAR_JERK[1] = SGEAR_JERK(PDEFAULT), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
$ADVANCE = 1
DIGIN ON MOTORSTROMVAR = 1 * MOTORSTROMSIGNAL + 0
ANOUT ON DRAHTGESCHWINDIGKEIT = K_DRAHT * MOTORSTROMVAR + OFFSETSTROM MINIMUM = DRAHT_MIN MAXIMUM = DRAHT_SOLL
PULSE($OUT[31], FALSE, 0.1)
PULSE($OUT[32], FALSE, 0.1)
WAIT SEC 1
$OUT[33]=TRUE
HALT
$OUT[33]=FALSE
DIGIN OFF MOTORSTROMVAR
ANOUT OFF DRAHTGESCHWINDIGKEIT
;FOLD SPTP HOME Vel=100 % DEFAULT ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=HOME; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=DEFAULT; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP
;ENDFOLD
SPTP XHOME WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(FHOME), $BASE = SBASE(FHOME.BASE_NO), $IPO_MODE = SIPO_MODE(FHOME.IPO_FRAME), $LOAD = SLOAD(FHOME.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PDEFAULT), $APO = SAPO_PTP(PDEFAULT), $GEAR_JERK[1] = SGEAR_JERK(PDEFAULT), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
END
Alles anzeigen
DEFDAT TestDiginMotorstrom
;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
DECL REAL MOTORSTROMVAR
DECL REAL LEERLAUFSTROM
DECL REAL OFFSETSTROM
DECL REAL K_DRAHT
DECL REAL GRENZSTROM
DECL REAL DRAHT_SOLL
DECL REAL DRAHT_MIN
;ENDFOLD (BASISTECH EXT)
;FOLD USER EXT;%{E}%MKUKATPUSER,%CEXT,%VEXT,%P
;Make your modifications here
;ENDFOLD (USER EXT)
;ENDFOLD (EXTERNAL DECLARATIONS)
ENDDAT
Alles anzeigen
In Work Visual sieht das ganze sauber aus. Wenn ich das auf die Steuerung lade, bekomme ich jedoch Syntaxfehler "2309 "(" erwartet" in der .src in den Zeilen mit "DIGIN ON" und "DIGIN OFF" angezeigt. Hat jemand eine Idee, woran das liegt?
Ein paar Bedenken habe ich noch bei der Umwandlung der INT Zahl bestehend aus den Eingängen 201-216 in eine REAL. Die Variablenanzeige am Roboter für MOTORSTROMSIGNAL stimmte aber gut mit der Anzeige am Preripheriegerät überein. Gibt es da Fälle unter denen es zu Abweichungen kommen kann?
Beste Grüße