PDA

Просмотр полной версии : косвенная адресация движений


Pavlan
05.04.2021, 14:37
Привет брятья программисты-интеграторы

У кого-нибудь есть идея как сделать изящный и удобный код для косвенного использования команд на движения, чтобы был такой же классный и удобный как на АВВ
Сам пока только так смог

Например

DEF SMoveL(Point:IN, VEL:IN, FDAT:IN, LDAT:IN, CD:IN, Cont:IN)
DECL E6POS Point
DECL REAL VEL
DECL FDAT FDAT
DECL LDAT LDAT
DECL INT CD
DECL BOOL Cont
Cont = FALSE
CD = 0;

IF (Cont) THEN
SLIN Point WITH $VEL = SVEL_CP(VEL, , LDAT),
$TOOL = STOOL2(FDAT),
$BASE = SBASE(FDAT.BASE_NO),
$IPO_MODE = SIPO_MODE(FDAT.IPO_FRAME),
$LOAD = SLOAD(FDAT.TOOL_NO),
$ACC = SACC_CP(LDAT),
$ORI_TYPE = SORI_TYP(LDAT),
$APO = SAPO(LDAT),
$JERK = SJERK(LDAT),
$COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(CD) C_Spl
ELSE
SLIN Point WITH $VEL = SVEL_CP(VEL, , LDAT),
$TOOL = STOOL2(FDAT),
$BASE = SBASE(FDAT.BASE_NO),
$IPO_MODE = SIPO_MODE(FDAT.IPO_FRAME),
$LOAD = SLOAD(FDAT.TOOL_NO),
$ACC = SACC_CP(LDAT),
$ORI_TYPE = SORI_TYP(LDAT),
$APO = SAPO(LDAT),
$JERK = SJERK(LDAT),
$COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(CD)
ENDIF
END


DEF SMoveP(Point:IN, VEL:IN, FDAT:IN, PDAT:IN, CD:IN ,Cont:IN)
DECL E6POS Point
DECL REAL VEL
DECL FDAT FDAT
DECL PDAT PDAT
DECL INT CD
DECL BOOL Cont
Cont = FALSE
CD = 0;

IF Cont THEN
SPTP Point WITH $VEL_AXIS[1] = SVEL_JOINT(VEL),
$TOOL = STOOL2(FDAT),
$BASE = SBASE(FDAT.BASE_NO),
$IPO_MODE = SIPO_MODE(FDAT.IPO_FRAME),
$LOAD = SLOAD(FDAT.TOOL_NO),
$ACC_AXIS[1] = SACC_JOINT(PDAT),
$APO = SAPO_PTP(PDAT),
$GEAR_JERK[1] = SGEAR_JERK(PDAT),
$COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(CD) C_Spl
ELSE
SPTP Point WITH $VEL_AXIS[1] = SVEL_JOINT(VEL),
$TOOL = STOOL2(FDAT),
$BASE = SBASE(FDAT.BASE_NO),
$IPO_MODE = SIPO_MODE(FDAT.IPO_FRAME),
$LOAD = SLOAD(FDAT.TOOL_NO),
$ACC_AXIS[1] = SACC_JOINT(PDAT),
$APO = SAPO_PTP(PDAT),
$GEAR_JERK[1] = SGEAR_JERK(PDAT),
$COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(CD)
ENDIF
END