⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emccanon.cc

📁 CNC 的开放码,EMC2 V2.2.8版
💻 CC
📖 第 1 页 / 共 5 页
字号:
    EMC_OPERATOR_ERROR operator_error_msg;    flush_segments();    operator_error_msg.id = 0;    if (fmt != NULL) {	va_start(ap, fmt);	vsprintf(operator_error_msg.error, fmt, ap);	va_end(ap);    } else {	operator_error_msg.error[0] = 0;    }    interp_list.append(operator_error_msg);}/*  GET_EXTERNAL_TOOL_TABLE(int pocket)  Returns the tool table structure associated with pocket. Note that  pocket can run from 0 (by definition, no tool), to pocket CANON_TOOL_MAX - 1.  The value from emc status is in user units. We need to convert these  to interpreter units, by calling FROM_EXT_LEN() to get them to mm, and  then switching on lengthUnits.  */CANON_TOOL_TABLE GET_EXTERNAL_TOOL_TABLE(int pocket){    CANON_TOOL_TABLE retval;    if (pocket < 0 || pocket >= CANON_TOOL_MAX) {	retval.id = 0;        retval.xoffset = 0.0;	retval.zoffset = 0.0;        retval.frontangle = 0.0;        retval.backangle = 0.0;	retval.diameter = 0.0;        retval.orientation = 0;    } else {	retval = emcStatus->io.tool.toolTable[pocket];	// convert from user to program units        retval.xoffset = retval.xoffset;	retval.zoffset = retval.zoffset;	retval.diameter = retval.diameter;        // leave the angles alone    }    return retval;}CANON_POSITION GET_EXTERNAL_POSITION(){    CANON_POSITION position;    EmcPose pos;    chained_points().clear();    pos = emcStatus->motion.traj.position;    // first update internal record of last position    canonEndPoint.x = FROM_EXT_LEN(pos.tran.x);    canonEndPoint.y = FROM_EXT_LEN(pos.tran.y);    canonEndPoint.z = FROM_EXT_LEN(pos.tran.z);    canonEndPoint.a = FROM_EXT_ANG(pos.a);    canonEndPoint.b = FROM_EXT_ANG(pos.b);    canonEndPoint.c = FROM_EXT_ANG(pos.c);    canonEndPoint.u = FROM_EXT_LEN(pos.u);    canonEndPoint.v = FROM_EXT_LEN(pos.v);    canonEndPoint.w = FROM_EXT_LEN(pos.w);    // now calculate position in program units, for interpreter    position.x = TO_PROG_LEN(canonEndPoint.x - programOrigin.x - currentXToolOffset);    position.y = TO_PROG_LEN(canonEndPoint.y - programOrigin.y);    position.z =	TO_PROG_LEN(canonEndPoint.z - programOrigin.z -		    currentZToolOffset);    position.a = TO_PROG_ANG(canonEndPoint.a - programOrigin.a);    position.b = TO_PROG_ANG(canonEndPoint.b - programOrigin.b);    position.c = TO_PROG_ANG(canonEndPoint.c - programOrigin.c);    position.u = TO_PROG_LEN(canonEndPoint.u - programOrigin.u);    position.v = TO_PROG_LEN(canonEndPoint.v - programOrigin.v);    position.w = TO_PROG_LEN(canonEndPoint.w - programOrigin.w);    return position;}CANON_POSITION GET_EXTERNAL_PROBE_POSITION(){    CANON_POSITION position;    EmcPose pos;    static CANON_POSITION last_probed_position;    flush_segments();    pos = emcStatus->motion.traj.probedPosition;    // first update internal record of last position    pos.tran.x = FROM_EXT_LEN(pos.tran.x);    pos.tran.y = FROM_EXT_LEN(pos.tran.y);    pos.tran.z = FROM_EXT_LEN(pos.tran.z);    pos.a = FROM_EXT_ANG(pos.a);    pos.b = FROM_EXT_ANG(pos.b);    pos.c = FROM_EXT_ANG(pos.c);    pos.u = FROM_EXT_LEN(pos.u);    pos.v = FROM_EXT_LEN(pos.v);    pos.w = FROM_EXT_LEN(pos.w);    // now calculate position in program units, for interpreter    position.x = TO_PROG_LEN(pos.tran.x - programOrigin.x);    position.y = TO_PROG_LEN(pos.tran.y - programOrigin.y);    position.z = TO_PROG_LEN(pos.tran.z - programOrigin.z);    position.x -= TO_PROG_LEN(currentXToolOffset);    position.z -= TO_PROG_LEN(currentZToolOffset);    position.a = TO_PROG_ANG(pos.a - programOrigin.a);    position.b = TO_PROG_ANG(pos.b - programOrigin.b);    position.c = TO_PROG_ANG(pos.c - programOrigin.c);    position.u = TO_PROG_LEN(pos.u - programOrigin.u);    position.v = TO_PROG_LEN(pos.v - programOrigin.v);    position.w = TO_PROG_LEN(pos.w - programOrigin.w);    if (probefile != NULL) {	if (last_probed_position != position) {	    fprintf(probefile, "%f %f %f %f %f %f %f %f %f\n",                    position.x, position.y, position.z,                    position.a, position.b, position.c,                    position.u, position.v, position.w);	    last_probed_position = position;	}    }    return position;}double GET_EXTERNAL_PROBE_VALUE(){    // only for analog non-contact probe, so force a 0    return 0.0;}int IS_EXTERNAL_QUEUE_EMPTY(){    flush_segments();    return emcStatus->motion.traj.queue == 0 ? 1 : 0;}// feed rate wanted is in program units per minutedouble GET_EXTERNAL_FEED_RATE(){    double feed;    // convert from internal to program units    // it is wrong to use emcStatus->motion.traj.velocity here, as that is the traj speed regardless of G0 / G1    feed = TO_PROG_LEN(currentLinearFeedRate);    // now convert from per-sec to per-minute    feed *= 60.0;    return feed;}// traverse rate wanted is in program units per minutedouble GET_EXTERNAL_TRAVERSE_RATE(){    double traverse;    // convert from external to program units    traverse =	TO_PROG_LEN(FROM_EXT_LEN(emcStatus->motion.traj.maxVelocity));    // now convert from per-sec to per-minute    traverse *= 60.0;    return traverse;}double GET_EXTERNAL_LENGTH_UNITS(void){    double u;    u = emcStatus->motion.traj.linearUnits;    if (u == 0) {	CANON_ERROR("external length units are zero");	return 1.0;    } else {	return u;    }}double GET_EXTERNAL_ANGLE_UNITS(void){    double u;    u = emcStatus->motion.traj.angularUnits;    if (u == 0) {	CANON_ERROR("external angle units are zero");	return 1.0;    } else {	return u;    }}int GET_EXTERNAL_TOOL(){    return emcStatus->io.tool.toolInSpindle;}int GET_EXTERNAL_MIST(){    return emcStatus->io.coolant.mist;}int GET_EXTERNAL_FLOOD(){    return emcStatus->io.coolant.flood;}int GET_EXTERNAL_POCKET(){    return emcStatus->io.tool.toolPrepped;}double GET_EXTERNAL_SPEED(){    // speed is in RPMs everywhere    return emcStatus->motion.spindle.speed;}CANON_DIRECTION GET_EXTERNAL_SPINDLE(){    if (emcStatus->motion.spindle.speed == 0) {	return CANON_STOPPED;    }    if (emcStatus->motion.spindle.speed >= 0.0) {	return CANON_CLOCKWISE;    }    return CANON_COUNTERCLOCKWISE;}int GET_EXTERNAL_TOOL_MAX(){    return CANON_TOOL_MAX;}char _parameter_file_name[LINELEN];	/* Not static.Driver					   writes */void GET_EXTERNAL_PARAMETER_FILE_NAME(char *file_name,	/* string: to copy							   file name into */				      int max_size){				/* maximum number of characters to copy */    // Paranoid checks    if (0 == file_name)	return;    if (max_size < 0)	return;    if (strlen(_parameter_file_name) < ((size_t) max_size))	strcpy(file_name, _parameter_file_name);    else	file_name[0] = 0;}double GET_EXTERNAL_POSITION_X(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.x;}double GET_EXTERNAL_POSITION_Y(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.y;}double GET_EXTERNAL_POSITION_Z(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.z;}double GET_EXTERNAL_POSITION_A(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.a;}double GET_EXTERNAL_POSITION_B(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.b;}double GET_EXTERNAL_POSITION_C(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.c;}double GET_EXTERNAL_POSITION_U(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.u;}double GET_EXTERNAL_POSITION_V(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.v;}double GET_EXTERNAL_POSITION_W(void){    CANON_POSITION position;    position = GET_EXTERNAL_POSITION();    return position.w;}double GET_EXTERNAL_PROBE_POSITION_X(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.x;}double GET_EXTERNAL_PROBE_POSITION_Y(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.y;}double GET_EXTERNAL_PROBE_POSITION_Z(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.z;}double GET_EXTERNAL_PROBE_POSITION_A(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.a;}double GET_EXTERNAL_PROBE_POSITION_B(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.b;}double GET_EXTERNAL_PROBE_POSITION_C(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.c;}double GET_EXTERNAL_PROBE_POSITION_U(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.u;}double GET_EXTERNAL_PROBE_POSITION_V(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.v;}double GET_EXTERNAL_PROBE_POSITION_W(void){    CANON_POSITION position;    position = GET_EXTERNAL_PROBE_POSITION();    return position.w;}CANON_MOTION_MODE GET_EXTERNAL_MOTION_CONTROL_MODE(){    return canonMotionMode;}double GET_EXTERNAL_MOTION_CONTROL_TOLERANCE(){    return TO_PROG_LEN(canonMotionTolerance);}CANON_UNITS GET_EXTERNAL_LENGTH_UNIT_TYPE(){    return lengthUnits;}int GET_EXTERNAL_QUEUE_EMPTY(void){    flush_segments();    return emcStatus->motion.traj.queue == 0 ? 1 : 0;}int GET_EXTERNAL_TOOL_SLOT(){    return emcStatus->io.tool.toolInSpindle;}int GET_EXTERNAL_SELECTED_TOOL_SLOT(){    return emcStatus->io.tool.toolPrepped;}int GET_EXTERNAL_FEED_OVERRIDE_ENABLE(){    return emcStatus->motion.traj.feed_override_enabled;}int GET_EXTERNAL_SPINDLE_OVERRIDE_ENABLE(){    return emcStatus->motion.traj.spindle_override_enabled;}int GET_EXTERNAL_ADAPTIVE_FEED_ENABLE(){    return emcStatus->motion.traj.adaptive_feed_enabled;}int GET_EXTERNAL_FEED_HOLD_ENABLE(){    return emcStatus->motion.traj.feed_hold_enabled;}int GET_EXTERNAL_AXIS_MASK() {    return emcStatus->motion.traj.axis_mask;}CANON_PLANE GET_EXTERNAL_PLANE(){    return activePlane;}int GET_EXTERNAL_DIGITAL_INPUT(int index){/* returns current value of the digital input selected by index.*/    if ((index < 0) || (index >= EMC_MAX_DIO))	return -1;    if (emcStatus->task.input_timeout == 1)	return -1;//#ifdef INPUT_DEBUG    printf("GET_EXTERNAL_DIGITAL_INPUT called\n di[%d]=%d \n timeout=%d \n",index,emcStatus->motion.synch_di[index],emcStatus->task.input_timeout);//#endif    return (emcStatus->motion.synch_di[index] != 0) ? 1 : 0;}double GET_EXTERNAL_AN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -