This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
|
|
Definition at line 53 of file emcnml/canon.hh. |
|
|
Definition at line 54 of file emcnml/canon.hh. |
|
|
Definition at line 55 of file emcnml/canon.hh. |
|
|
Definition at line 50 of file emcnml/canon.hh. |
|
|
Definition at line 51 of file emcnml/canon.hh. |
|
|
Definition at line 52 of file emcnml/canon.hh. |
|
|
Definition at line 42 of file emcnml/canon.hh. |
|
|
Definition at line 34 of file emcnml/canon.hh. |
|
|
Definition at line 43 of file emcnml/canon.hh. |
|
|
Definition at line 33 of file emcnml/canon.hh. |
|
|
Definition at line 32 of file emcnml/canon.hh. |
|
|
Definition at line 38 of file emcnml/canon.hh. |
|
|
Definition at line 22 of file emcnml/canon.hh. |
|
|
Definition at line 24 of file emcnml/canon.hh. |
|
|
Definition at line 23 of file emcnml/canon.hh. |
|
|
Definition at line 41 of file emcnml/canon.hh. |
|
|
Definition at line 37 of file emcnml/canon.hh. |
|
|
Definition at line 103 of file emcnml/canon.hh. |
|
|
Definition at line 102 of file emcnml/canon.hh. |
|
|
Definition at line 29 of file emcnml/canon.hh. |
|
|
Definition at line 27 of file emcnml/canon.hh. |
|
|
Definition at line 28 of file emcnml/canon.hh. |
|
|
Definition at line 46 of file emcnml/canon.hh. |
|
|
Definition at line 47 of file emcnml/canon.hh. |
|
|
Definition at line 59 of file emcnml/canon.hh. |
|
|
Definition at line 58 of file emcnml/canon.hh. |
|
|
Definition at line 49 of file emcnml/canon.hh. |
|
|
Definition at line 40 of file emcnml/canon.hh. |
|
|
Definition at line 45 of file emcnml/canon.hh. |
|
|
Definition at line 31 of file emcnml/canon.hh. |
|
|
Definition at line 21 of file emcnml/canon.hh. |
|
|
Definition at line 36 of file emcnml/canon.hh. |
|
|
Definition at line 26 of file emcnml/canon.hh. |
|
||||||||||||||||||||||||||||||||||||||||
|
Definition at line 462 of file emccanon.cc. 00466 {
00467 EmcPose end;
00468 PM_CARTESIAN center, normal;
00469 EMC_TRAJ_CIRCULAR_MOVE circularMoveMsg;
00470 EMC_TRAJ_LINEAR_MOVE linearMoveMsg;
00471 int full_circle_in_active_plane = 0;
00472 double v1, v2, vel;
00473
00474 // convert to absolute mm units
00475 first_axis = FROM_PROG_LEN(first_axis);
00476 second_axis = FROM_PROG_LEN(second_axis);
00477 first_end = FROM_PROG_LEN(first_end);
00478 second_end = FROM_PROG_LEN(second_end);
00479 axis_end_point = FROM_PROG_LEN(axis_end_point);
00480
00481 // associate x with x, etc., offset by program origin, and set normals
00482 switch (activePlane) {
00483 case CANON_PLANE_XY:
00484
00485 // offset and align args properly
00486 end.tran.x = first_end + programOrigin.x;
00487 end.tran.y = second_end + programOrigin.y;
00488 end.tran.z = axis_end_point + programOrigin.z;
00489 end.tran.z += currentToolLengthOffset;
00490 if (canonEndPoint.x == end.tran.x &&
00491 canonEndPoint.y == end.tran.y)
00492 {
00493 full_circle_in_active_plane = 1;
00494 }
00495 center.x = first_axis + programOrigin.x;
00496 center.y = second_axis + programOrigin.y;
00497 center.z = end.tran.z;
00498 normal.x = 0.0;
00499 normal.y = 0.0;
00500 normal.z = 1.0;
00501
00502 // limit vel to min of X-Y-F
00503 vel = currentLinearFeedRate;
00504 v1 = FROM_EXT_LEN(AXIS_MAX_VELOCITY[0]);
00505 v2 = FROM_EXT_LEN(AXIS_MAX_VELOCITY[1]);
00506 if (vel > v1) {
00507 vel = v1;
00508 }
00509 if (vel > v2) {
00510 vel = v2;
00511 }
00512
00513 break;
00514
00515 case CANON_PLANE_YZ:
00516
00517 // offset and align args properly
00518 end.tran.y = first_end + programOrigin.y;
00519 end.tran.z = second_end + programOrigin.z;
00520 end.tran.x = axis_end_point + programOrigin.x;
00521 end.tran.z += currentToolLengthOffset;
00522 if (canonEndPoint.z == end.tran.z &&
00523 canonEndPoint.y == end.tran.y) {
00524 full_circle_in_active_plane = 1;
00525 }
00526
00527 center.y = first_axis + programOrigin.y;
00528 center.z = second_axis + programOrigin.z;
00529 center.x = end.tran.x;
00530 normal.y = 0.0;
00531 normal.z = 0.0;
00532 normal.x = 1.0;
00533
00534 // limit vel to min of Y-Z-F
00535 vel = currentLinearFeedRate;
00536 v1 = FROM_EXT_LEN(AXIS_MAX_VELOCITY[1]);
00537 v2 = FROM_EXT_LEN(AXIS_MAX_VELOCITY[2]);
00538 if (vel > v1) {
00539 vel = v1;
00540 }
00541 if (vel > v2) {
00542 vel = v2;
00543 }
00544
00545 break;
00546
00547 case CANON_PLANE_XZ:
00548
00549 // offset and align args properly
00550 end.tran.z = first_end + programOrigin.z;
00551 end.tran.x = second_end + programOrigin.x;
00552 end.tran.y = axis_end_point + programOrigin.y;
00553 end.tran.z += currentToolLengthOffset;
00554 if (canonEndPoint.x== end.tran.x &&
00555 canonEndPoint.z == end.tran.z)
00556 {
00557 full_circle_in_active_plane = 1;
00558 }
00559
00560 center.z = first_axis + programOrigin.z;
00561 center.x = second_axis + programOrigin.x;
00562 center.y = end.tran.y;
00563 normal.z = 0.0;
00564 normal.x = 0.0;
00565 normal.y = 1.0;
00566
00567 // limit vel to min of X-Z-F
00568 vel = currentLinearFeedRate;
00569 v1 = FROM_EXT_LEN(AXIS_MAX_VELOCITY[0]);
00570 v2 = FROM_EXT_LEN(AXIS_MAX_VELOCITY[2]);
00571 if (vel > v1) {
00572 vel = v1;
00573 }
00574 if (vel > v2) {
00575 vel = v2;
00576 }
00577
00578 break;
00579 }
00580
00581 // set proper velocity
00582 properVelocity(vel);
00583
00584 /*
00585 mapping of rotation to turns:
00586
00587 rotation turns
00588 -------- -----
00589 0 none (linear move)
00590 1 0
00591 2 1
00592 -1 -1
00593 -2 -2
00594 */
00595
00596 if (rotation == 0) {
00597 // linear move
00598
00599 linearMoveMsg.end.tran.x = TO_EXT_LEN(end.tran.x);
00600 linearMoveMsg.end.tran.y = TO_EXT_LEN(end.tran.y);
00601 linearMoveMsg.end.tran.z = TO_EXT_LEN(end.tran.z);
00602
00603 // fill in the orientation
00604 linearMoveMsg.end.a = a;
00605 linearMoveMsg.end.b = b;
00606 linearMoveMsg.end.c = c;
00607
00608
00609 interp_list.append(linearMoveMsg);
00610 }
00611 else if (rotation > 0) {
00612
00613 #if 0
00614 // This should not be needed anymore with fix in _posemath.c
00615 // If starting and ending on same point move around the
00616 // circle, don't just stay put.
00617 if (full_circle_in_active_plane) {
00618 rotation++;
00619 }
00620 #endif
00621
00622 circularMoveMsg.end.tran.x = TO_EXT_LEN(end.tran.x);
00623 circularMoveMsg.end.tran.y = TO_EXT_LEN(end.tran.y);
00624 circularMoveMsg.end.tran.z = TO_EXT_LEN(end.tran.z);
00625
00626 circularMoveMsg.center.x = TO_EXT_LEN(center.x);
00627 circularMoveMsg.center.y = TO_EXT_LEN(center.y);
00628 circularMoveMsg.center.z = TO_EXT_LEN(center.z);
00629
00630 circularMoveMsg.normal.x = TO_EXT_LEN(normal.x);
00631 circularMoveMsg.normal.y = TO_EXT_LEN(normal.y);
00632 circularMoveMsg.normal.z = TO_EXT_LEN(normal.z);
00633
00634 circularMoveMsg.turn = rotation - 1;
00635
00636 // fill in the orientation
00637 circularMoveMsg.end.a = a;
00638 circularMoveMsg.end.b = b;
00639 circularMoveMsg.end.c = c;
00640
00641
00642 interp_list.append(circularMoveMsg);
00643 }
00644 else {
00645 // reverse turn
00646
00647 #if 0
00648 // This should not be needed anymore with fix in _posemath.c
00649 // If starting and ending on same point move around the
00650 // circle, don't just stay put.
00651 if (full_circle_in_active_plane) {
00652 rotation--;
00653 }
00654 #endif
00655 circularMoveMsg.end.tran.x = TO_EXT_LEN(end.tran.x);
00656 circularMoveMsg.end.tran.y = TO_EXT_LEN(end.tran.y);
00657 circularMoveMsg.end.tran.z = TO_EXT_LEN(end.tran.z);
00658
00659 circularMoveMsg.center.x = TO_EXT_LEN(center.x);
00660 circularMoveMsg.center.y = TO_EXT_LEN(center.y);
00661 circularMoveMsg.center.z = TO_EXT_LEN(center.z);
00662
00663 circularMoveMsg.normal.x = TO_EXT_LEN(normal.x);
00664 circularMoveMsg.normal.y = TO_EXT_LEN(normal.y);
00665 circularMoveMsg.normal.z = TO_EXT_LEN(normal.z);
00666
00667 circularMoveMsg.turn = rotation;
00668
00669
00670 // fill in the orientation
00671 circularMoveMsg.end.a = a;
00672 circularMoveMsg.end.b = b;
00673 circularMoveMsg.end.c = c;
00674
00675 interp_list.append(circularMoveMsg);
00676 }
00677
00678
00679 // update the end point
00680 canonUpdateEndPoint(end.tran.x, end.tran.y, end.tran.z, a, b, c);
00681 }
|
|
||||||||||||
|
Definition at line 1240 of file emccanon.cc. 01241 {
01242 va_list ap;
01243 EMC_OPERATOR_ERROR operator_error_msg;
01244
01245 operator_error_msg.id = 0;
01246 if (fmt != NULL) {
01247 va_start(ap, fmt);
01248 vsprintf(operator_error_msg.error, fmt, ap);
01249 va_end(ap);
01250 }
01251 else {
01252 operator_error_msg.error[0] = 0;
01253 }
01254
01255 interp_list.append(operator_error_msg);
01256 }
|
|
|
Definition at line 494 of file canon_stand_alone.cc. 00495 {
00496 return;
00497 }
|
|
|
Definition at line 949 of file emccanon.cc. 00950 {
00951 EMC_TOOL_LOAD load_tool_msg;
00952
00953 interp_list.append(load_tool_msg);
00954 }
|
|
|
Definition at line 967 of file emccanon.cc. 00968 {
00969 // FIXME-- unimplemented
00970 }
|
|
|
Definition at line 1012 of file emccanon.cc. 01013 {
01014 // nothing need be done here, but you can play tricks with hot comments
01015
01016 #define MSGLEN 256
01017 char msg[MSGLEN];
01018 char probefilename[MSGLEN];
01019 char *ptr;
01020
01021 // set RPY orientation for subsequent moves
01022 if (!strncmp(comment, "RPY", strlen("RPY"))) {
01023 PM_RPY rpy;
01024 // it's RPY <R> <P> <Y>
01025 if (3 != sscanf(comment, "%*s %lf %lf %lf", &rpy.r, &rpy.p, &rpy.y)) {
01026 // print current orientation
01027 printf("rpy = %f %f %f, quat = %f %f %f %f\n",
01028 rpy.r, rpy.p, rpy.y,
01029 quat.s, quat.x, quat.y, quat.z);
01030 }
01031 else {
01032 // set and print orientation
01033 quat = rpy;
01034 printf("rpy = %f %f %f, quat = %f %f %f %f\n",
01035 rpy.r, rpy.p, rpy.y,
01036 quat.s, quat.x, quat.y, quat.z);
01037 }
01038 return;
01039 }
01040
01041 // open probe output file
01042 if (!strncmp(comment, "PROBEOPEN", strlen("PROBEOPEN"))) {
01043 // position ptr to first char after PROBEOPEN
01044 ptr = &comment[strlen("PROBEOPEN")];
01045 // and step over white space to name, or NULL
01046 while (isspace(*ptr)) {
01047 ptr++;
01048 }
01049 setString(probefilename, ptr, MSGLEN);
01050 if (NULL == (probefile = fopen(probefilename, "w"))) {
01051 // pop up a warning message
01052 setString(msg, "can't open probe file ", MSGLEN);
01053 addString(msg, probefilename, MSGLEN);
01054 MESSAGE(msg);
01055 probefile = NULL;
01056 }
01057 return;
01058 }
01059
01060 // close probe output file
01061 if (!strncmp(comment, "PROBECLOSE", strlen("PROBECLOSE"))) {
01062 if (probefile != NULL) {
01063 fclose(probefile);
01064 probefile = NULL;
01065 }
01066 return;
01067 }
01068
01069 return;
01070 }
|
|
|
Definition at line 1072 of file emccanon.cc. 01073 {
01074 // FIXME-- unimplemented
01075 }
|
|
|
Definition at line 1077 of file emccanon.cc. 01078 {
01079 // FIXME-- unimplemented
01080 }
|
|
|
Definition at line 844 of file emccanon.cc. 00845 {
00846 EMC_TRAJ_DELAY delayMsg;
00847
00848 delayMsg.delay = seconds;
00849
00850 interp_list.append(delayMsg);
00851 }
|
|
|
Definition at line 1082 of file emccanon.cc. 01083 {
01084 // FIXME-- unimplemented
01085 }
|
|
|
Definition at line 1087 of file emccanon.cc. 01088 {
01089 // FIXME-- unimplemented
01090 }
|
|
|
Definition at line 1092 of file emccanon.cc. 01093 {
01094 EMC_COOLANT_FLOOD_OFF flood_off_msg;
01095
01096 interp_list.append(flood_off_msg);
01097 }
|
|
|
Definition at line 1099 of file emccanon.cc. 01100 {
01101 EMC_COOLANT_FLOOD_ON flood_on_msg;
01102
01103 interp_list.append(flood_on_msg);
01104 }
|
|
|
Definition at line 1418 of file emccanon.cc. 01419 {
01420 double u;
01421
01422 u = emcStatus->motion.traj.angularUnits;
01423
01424 if (u == 0) {
01425 CANON_ERROR("external angle units are zero");
01426 return 1.0;
01427 }
01428 else {
01429 return u;
01430 }
01431 }
|
|
|
Definition at line 1376 of file emccanon.cc. Referenced by rs274ngc_synch().
01377 {
01378 double feed;
01379
01380 // convert from external to program units
01381 feed = TO_PROG_LEN(FROM_EXT_LEN(emcStatus->motion.traj.velocity));
01382
01383 // now convert from per-sec to per-minute
01384 feed *= 60.0;
01385
01386 return feed;
01387 }
|
|
|
Definition at line 1443 of file emccanon.cc. Referenced by rs274ngc_synch().
01444 {
01445 return emcStatus->io.coolant.flood;
01446 }
|
|
|
Definition at line 1403 of file emccanon.cc. 01404 {
01405 double u;
01406
01407 u = emcStatus->motion.traj.linearUnits;
01408
01409 if (u == 0) {
01410 CANON_ERROR("external length units are zero");
01411 return 1.0;
01412 }
01413 else {
01414 return u;
01415 }
01416 }
|
|
|
Definition at line 1438 of file emccanon.cc. Referenced by rs274ngc_synch().
01439 {
01440 return emcStatus->io.coolant.mist;
01441 }
|
|
|
Definition at line 1448 of file emccanon.cc. 01449 {
01450 return emcStatus->io.tool.toolPrepped;
01451 }
|
|
|
Definition at line 1288 of file emccanon.cc. Referenced by rs274ngc_synch().
01289 {
01290 CANON_POSITION position;
01291 EmcPose pos;
01292
01293 pos = emcStatus->motion.traj.position;
01294
01295 // first update internal record of last position
01296 canonEndPoint.x = FROM_EXT_LEN(pos.tran.x) - programOrigin.x;
01297 canonEndPoint.y = FROM_EXT_LEN(pos.tran.y) - programOrigin.y;
01298 canonEndPoint.z = FROM_EXT_LEN(pos.tran.z) - programOrigin.z;
01299 canonEndPoint.z = FROM_EXT_LEN(pos.tran.z) - programOrigin.z;
01300 canonEndPoint.z -= currentToolLengthOffset;
01301
01302
01303 canonEndPoint.a = FROM_EXT_ANG(pos.a) - programOrigin.a;
01304 canonEndPoint.b = FROM_EXT_ANG(pos.b) - programOrigin.b;
01305 canonEndPoint.c = FROM_EXT_ANG(pos.c) - programOrigin.c;
01306
01307
01308
01309 // now calculate position in program units, for interpreter
01310 position.x = TO_PROG_LEN(canonEndPoint.x);
01311 position.y = TO_PROG_LEN(canonEndPoint.y);
01312 position.z = TO_PROG_LEN(canonEndPoint.z);
01313 position.z -= TO_PROG_LEN(currentToolLengthOffset);
01314
01315
01316 position.a = TO_PROG_ANG(canonEndPoint.a);
01317 position.b = TO_PROG_ANG(canonEndPoint.b);
01318 position.c = TO_PROG_ANG(canonEndPoint.c);
01319
01320 return position;
01321 }
|
|
|
Definition at line 1323 of file emccanon.cc. 01324 {
01325 CANON_POSITION position;
01326 EmcPose pos;
01327 static CANON_POSITION last_probed_position;
01328
01329 pos = emcStatus->motion.traj.probedPosition;
01330
01331 // first update internal record of last position
01332 canonEndPoint.x = FROM_EXT_LEN(pos.tran.x) - programOrigin.x;
01333 canonEndPoint.y = FROM_EXT_LEN(pos.tran.y) - programOrigin.y;
01334 canonEndPoint.z = FROM_EXT_LEN(pos.tran.z) - programOrigin.z;
01335 canonEndPoint.z -= currentToolLengthOffset;
01336
01337 canonEndPoint.a = FROM_EXT_ANG(pos.a) - programOrigin.a;
01338 canonEndPoint.b = FROM_EXT_ANG(pos.b) - programOrigin.b;
01339 canonEndPoint.c = FROM_EXT_ANG(pos.c) - programOrigin.c;
01340
01341 // now calculate position in program units, for interpreter
01342 position.x = TO_PROG_LEN(canonEndPoint.x);
01343 position.y = TO_PROG_LEN(canonEndPoint.y);
01344 position.z = TO_PROG_LEN(canonEndPoint.z);
01345 position.z -= TO_PROG_LEN(currentToolLengthOffset);
01346
01347 position.a = TO_PROG_ANG(canonEndPoint.a);
01348 position.b = TO_PROG_ANG(canonEndPoint.b);
01349 position.c = TO_PROG_ANG(canonEndPoint.c);
01350
01351 // FIXME-- back end of hot comment
01352 if (probefile != NULL) {
01353 if (last_probed_position.x != position.x ||
01354 last_probed_position.y != position.y ||
01355 last_probed_position.z != position.z) {
01356 fprintf(probefile, "%f %f %f\n", position.x, position.y, position.z);
01357 last_probed_position = position;
01358 }
01359 }
01360
01361 return position;
01362 }
|
|
|
Definition at line 1364 of file emccanon.cc. 01365 {
01366 // only for analog non-contact probe, so force a 0
01367 return 0.0;
01368 }
|
|
|
Definition at line 1453 of file emccanon.cc. Referenced by rs274ngc_synch().
01454 {
01455 // speed is in RPMs everywhere
01456 return emcStatus->io.spindle.speed;
01457 }
|
|
|
Definition at line 1459 of file emccanon.cc. Referenced by rs274ngc_synch().
01460 {
01461 if (emcStatus->io.spindle.speed == 0)
01462 {
01463 return CANON_STOPPED;
01464 }
01465
01466 if (emcStatus->io.spindle.speed >= 0.0)
01467 {
01468 return CANON_CLOCKWISE;
01469 }
01470
01471 return CANON_COUNTERCLOCKWISE;
01472 }
|
|
|
Definition at line 1433 of file emccanon.cc. Referenced by rs274ngc_synch().
01434 {
01435 return emcStatus->io.tool.toolInSpindle;
01436 }
|
|
|
Definition at line 1474 of file emccanon.cc. 01475 {
01476 return CANON_TOOL_MAX;
01477 }
|
|
|
Definition at line 1268 of file emccanon.cc. 01269 {
01270 CANON_TOOL_TABLE retval;
01271
01272 if (pocket < 0 || pocket >= CANON_TOOL_MAX) {
01273 retval.id = 0;
01274 retval.length = 0.0;
01275 retval.diameter = 0.0;
01276 }
01277 else {
01278 retval = emcStatus->io.tool.toolTable[pocket];
01279
01280 // convert from user to program units
01281 retval.length = TO_PROG_LEN(FROM_EXT_LEN(retval.length));
01282 retval.diameter = TO_PROG_LEN(FROM_EXT_LEN(retval.diameter));
01283 }
01284
01285 return retval;
01286 }
|
|
|
Definition at line 1390 of file emccanon.cc. Referenced by rs274ngc_synch().
01391 {
01392 double traverse;
01393
01394 // convert from external to program units
01395 traverse = TO_PROG_LEN(FROM_EXT_LEN(emcStatus->motion.traj.maxVelocity));
01396
01397 // now convert from per-sec to per-minute
01398 traverse *= 60.0;
01399
01400 return traverse;
01401 }
|
|
|
Definition at line 1192 of file emccanon.cc. 01193 {
01194 return lengthUnits;
01195 }
|
|
|
Definition at line 418 of file emccanon.cc. Referenced by rs274ngc_synch().
00419 {
00420 return canonMotionMode;
00421 }
|
|
|
Definition at line 1197 of file emccanon.cc. 01198 {
01199 return activePlane;
01200 }
|
|
|
Definition at line 1179 of file emccanon.cc. 01180 {
01181 CANON_VECTOR origin;
01182
01183 /* and convert from mm units to interpreter units */
01184 origin.x = TO_PROG_LEN(programOrigin.x);
01185 origin.y = TO_PROG_LEN(programOrigin.y);
01186 origin.z = TO_PROG_LEN(programOrigin.z);
01187
01188 return origin; /* in program units */
01189 }
|
|
|
Definition at line 1202 of file emccanon.cc. 01203 {
01204 return TO_EXT_LEN(currentToolLengthOffset);
01205 }
|
|
|
Definition at line 1212 of file emccanon.cc. Referenced by rs274ngc_init().
01213 {
01214 // initialize locals to original values
01215 programOrigin.x = 0.0;
01216 programOrigin.y = 0.0;
01217 programOrigin.z = 0.0;
01218 programOrigin.a = 0.0;
01219 programOrigin.b = 0.0;
01220 programOrigin.c = 0.0;
01221 activePlane = CANON_PLANE_XY;
01222 canonEndPoint.x = 0.0;
01223 canonEndPoint.y = 0.0;
01224 canonEndPoint.z = 0.0;
01225 canonEndPoint.a = 0.0;
01226 canonEndPoint.b = 0.0;
01227 canonEndPoint.c = 0.0;
01228 SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS);
01229 spindleSpeed = 0.0;
01230 preppedTool = 0;
01231 currentLinearFeedRate = FROM_EXT_LEN(TRAJ_DEFAULT_VELOCITY); // from emcglb.h
01232 currentLinearTraverseRate = FROM_EXT_LEN(TRAJ_MAX_VELOCITY); // from emcglb.h
01233 currentAngularFeedRate = 0.0;
01234 currentAngularTraverseRate = 0.0;
01235 currentToolLengthOffset = 0.0;
01236 lengthUnits = CANON_UNITS_MM;
01237 }
|
|
|
Definition at line 1370 of file emccanon.cc. Referenced by rs274ngc_execute(), and rs274ngc_read().
01371 {
01372 return emcStatus->motion.traj.queue == 0 ? 1 : 0;
01373 }
|
|
|
|
|
|
Definition at line 1106 of file emccanon.cc. 01107 {
01108 EMC_OPERATOR_DISPLAY operator_display_msg;
01109
01110 operator_display_msg.id = 0;
01111 strncpy(operator_display_msg.display, s, EMC_OPERATOR_DISPLAY_LEN);
01112 operator_display_msg.display[EMC_OPERATOR_DISPLAY_LEN - 1] = 0;
01113
01114 interp_list.append(operator_display_msg);
01115 }
|
|
|
Definition at line 1117 of file emccanon.cc. 01118 {
01119 EMC_COOLANT_MIST_OFF mist_off_msg;
01120
01121 interp_list.append(mist_off_msg);
01122 }
|
|
|
Definition at line 1124 of file emccanon.cc. 01125 {
01126 EMC_COOLANT_MIST_ON mist_on_msg;
01127
01128 interp_list.append(mist_on_msg);
01129 }
|
|
||||||||||||||||||||||||
|
|
|
||||||||||||
|
|
|
|
|
|
|
Definition at line 1165 of file emccanon.cc. 01166 {
01167 // FIXME-- implemented as PROGRAM_STOP, that is, no option
01168 PROGRAM_STOP();
01169 }
|
|
||||||||||||
|
Definition at line 914 of file emccanon.cc. 00915 {
00916 // FIXME-- unimplemented
00917 }
|
|
|
Definition at line 1131 of file emccanon.cc. 01132 {
01133 // FIXME-- unimplemented
01134 }
|
|
|
Definition at line 1171 of file emccanon.cc. 01172 {
01173 EMC_TASK_PLAN_END endMsg;
01174
01175 interp_list.append(endMsg);
01176 }
|
|
|
Definition at line 1155 of file emccanon.cc. Referenced by OPTIONAL_PROGRAM_STOP(), and convert_stop().
01156 {
01157 /*
01158 implement this as a pause. A resume will cause motion to proceed.
01159 */
01160 EMC_TASK_PLAN_PAUSE pauseMsg;
01161
01162 interp_list.append(pauseMsg);
01163 }
|
|
|
Definition at line 423 of file emccanon.cc. 00424 {
00425 activePlane = in_plane;
00426 }
|
|
|
Definition at line 956 of file emccanon.cc. 00957 {
00958 EMC_TOOL_PREPARE prep_for_tool_msg;
00959
00960 prep_for_tool_msg.tool = slot;
00961
00962 interp_list.append(prep_for_tool_msg);
00963 }
|
|
|
Definition at line 428 of file emccanon.cc. 00429 {
00430 // nothing need be done here
00431 }
|
|
|
Definition at line 371 of file emccanon.cc. 00372 {
00373 double vmax;
00374
00375 /* convert from /min to /sec */
00376 rate /= 60.0;
00377
00378 /* convert to traj units (mm) if needed */
00379 currentLinearFeedRate = FROM_PROG_LEN(rate);
00380 currentAngularFeedRate = FROM_PROG_ANG(rate);
00381
00382
00383 /* make sure it's less than system max velocity */
00384 vmax = FROM_EXT_LEN(TRAJ_MAX_VELOCITY);
00385 if (currentLinearFeedRate > vmax) {
00386 currentLinearFeedRate = vmax;
00387 }
00388 }
|
|
|
Definition at line 390 of file emccanon.cc. 00391 {
00392 // nothing need be done here
00393 }
|
|
|
Definition at line 395 of file emccanon.cc. 00396 {
00397 EMC_TRAJ_SET_TERM_COND setTermCondMsg;
00398
00399 if (mode != canonMotionMode)
00400 {
00401 canonMotionMode = mode;
00402
00403 switch (mode)
00404 {
00405 case CANON_CONTINUOUS:
00406 setTermCondMsg.cond = EMC_TRAJ_TERM_COND_BLEND;
00407 break;
00408
00409 default:
00410 setTermCondMsg.cond = EMC_TRAJ_TERM_COND_STOP;
00411 break;
00412 }
00413
00414 interp_list.append(setTermCondMsg);
00415 }
00416 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 214 of file emccanon.cc. 00216 {
00217 EMC_TRAJ_SET_ORIGIN set_origin_msg;
00218
00219 /* convert to mm units */
00220 x = FROM_PROG_LEN(x);
00221 y = FROM_PROG_LEN(y);
00222 z = FROM_PROG_LEN(z);
00223
00224 programOrigin.x = x;
00225 programOrigin.y = y;
00226 programOrigin.z = z;
00227
00228 /* append it to interp list so it gets updated at the right time,
00229 not at read-ahead time */
00230 set_origin_msg.origin.tran.x = TO_EXT_LEN(programOrigin.x);
00231 set_origin_msg.origin.tran.y = TO_EXT_LEN(programOrigin.y);
00232 set_origin_msg.origin.tran.z = TO_EXT_LEN(programOrigin.z);
00233 set_origin_msg.origin.a = a;
00234 set_origin_msg.origin.b = b;
00235 set_origin_msg.origin.c = c;
00236
00237 interp_list.append(set_origin_msg);
00238 }
|
|
|
Definition at line 884 of file emccanon.cc. 00885 {
00886 // speed is in RPMs everywhere
00887 spindleSpeed = r;
00888
00889 // check if we need to resend command
00890 if (spindleOn == 1)
00891 {
00892 START_SPINDLE_CLOCKWISE();
00893 }
00894 else if (spindleOn == -1)
00895 {
00896 START_SPINDLE_COUNTERCLOCKWISE();
00897 }
00898 }
|
|
|
Definition at line 249 of file emccanon.cc. 00250 {
00251 double vmax;
00252
00253
00254 /* convert from /min to /sec */
00255 rate /= 60.0;
00256
00257 /* convert to traj units (mm) if needed */
00258 currentLinearTraverseRate = FROM_PROG_LEN(rate);
00259 currentAngularTraverseRate = FROM_PROG_ANG(rate);
00260
00261
00262 /* make sure it's less than system max velocity */
00263 vmax = FROM_EXT_LEN(TRAJ_MAX_VELOCITY);
00264 if (currentLinearTraverseRate > vmax) {
00265 currentLinearTraverseRate = vmax;
00266 }
00267
00268 }
|
|
|
Definition at line 909 of file emccanon.cc. 00910 {
00911 // FIXME-- unimplemented
00912 }
|
|
|
Definition at line 854 of file emccanon.cc. 00855 {
00856 // FIXME-- unimplemented
00857 }
|
|
|
Definition at line 433 of file emccanon.cc. 00434 {
00435 // nothing need be done here
00436 }
|
|
|
Definition at line 443 of file emccanon.cc. 00444 {
00445 // FIXME-- unimplemented
00446 }
|
|
|
Definition at line 862 of file emccanon.cc. Referenced by SET_SPINDLE_SPEED().
00863 {
00864 EMC_SPINDLE_ON emc_spindle_on_msg;
00865
00866 emc_spindle_on_msg.speed = spindleSpeed;
00867
00868 interp_list.append(emc_spindle_on_msg);
00869
00870 spindleOn = 1;
00871 }
|
|
|
Definition at line 873 of file emccanon.cc. Referenced by SET_SPINDLE_SPEED().
00874 {
00875 EMC_SPINDLE_ON emc_spindle_on_msg;
00876
00877 emc_spindle_on_msg.speed = - spindleSpeed;
00878
00879 interp_list.append(emc_spindle_on_msg);
00880
00881 spindleOn = -1;
00882 }
|
|
|
|
|
|
Definition at line 438 of file emccanon.cc. 00439 {
00440 // nothing need be done here
00441 }
|
|
|
Definition at line 448 of file emccanon.cc. 00449 {
00450 // FIXME-- unimplemented
00451 }
|
|
|
Definition at line 900 of file emccanon.cc. 00901 {
00902 EMC_SPINDLE_OFF emc_spindle_off_msg;
00903
00904 interp_list.append(emc_spindle_off_msg);
00905
00906 spindleOn = 0;
00907 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 683 of file emccanon.cc. 00684 {
00685 EMC_TRAJ_LINEAR_MOVE linearMoveMsg;
00686 double dx, dy, dz, da, db, dc, dtot;
00687 double tx, ty, tz, ta, tb, tc, tmax;
00688 double vel;
00689
00690 // convert to mm units
00691 x = FROM_PROG_LEN(x);
00692 y = FROM_PROG_LEN(y);
00693 z = FROM_PROG_LEN(z);
00694 a = FROM_PROG_ANG(a);
00695 b = FROM_PROG_ANG(b);
00696 c = FROM_PROG_ANG(c);
00697
00698 x += programOrigin.x;
00699 y += programOrigin.y;
00700 z += programOrigin.z;
00701 a += programOrigin.a;
00702 b += programOrigin.b;
00703 c += programOrigin.c;
00704
00705 z += currentToolLengthOffset;
00706
00707 // now x, y, z, and b are in absolute mm or degree units
00708
00709 linearMoveMsg.end.tran.x = TO_EXT_LEN(x);
00710 linearMoveMsg.end.tran.y = TO_EXT_LEN(y);
00711 linearMoveMsg.end.tran.z = TO_EXT_LEN(z);
00712
00713 // fill in the orientation
00714 linearMoveMsg.end.a = TO_EXT_ANG(a);
00715 linearMoveMsg.end.b = TO_EXT_ANG(b);
00716 linearMoveMsg.end.c = TO_EXT_ANG(c);
00717
00718 // compute maximal feed rate
00719
00720 pure_angular_move = 0;
00721
00722 dx = x - canonEndPoint.x;
00723 dy = y - canonEndPoint.y;
00724 dz = z - canonEndPoint.z;
00725 da = a - canonEndPoint.a;
00726 db = b - canonEndPoint.b;
00727 dc = c - canonEndPoint.c;
00728 dtot = sqrt(dx*dx + dy*dy + dz*dz);
00729 if (dtot <= 0.0) {
00730 dtot = sqrt(da*da + db*db + dc*dc);
00731 if (dtot > 0.0) {
00732 pure_angular_move =1;
00733 }
00734 }
00735
00736 if (!pure_angular_move) {
00737 tx = fabs(dx / FROM_EXT_LEN(AXIS_MAX_VELOCITY[0]));
00738 ty = fabs(dy / FROM_EXT_LEN(AXIS_MAX_VELOCITY[1]));
00739 tz = fabs(dz / FROM_EXT_LEN(AXIS_MAX_VELOCITY[2]));
00740 tmax = tx > ty ? tx : ty;
00741 tmax = tz > tmax ? tz : tmax;
00742
00743 if (tmax <= 0.0) {
00744 vel = currentLinearFeedRate;
00745 }
00746 else {
00747 vel = dtot/tmax;
00748 if (vel > currentLinearFeedRate) {
00749 vel = currentLinearFeedRate;
00750 }
00751 }
00752
00753 }
00754 else {
00755 ta = fabs(da / FROM_EXT_ANG(AXIS_MAX_VELOCITY[3]));
00756 tb = fabs(db / FROM_EXT_ANG(AXIS_MAX_VELOCITY[4]));
00757 tc = fabs(dc / FROM_EXT_ANG(AXIS_MAX_VELOCITY[5]));
00758 tmax = ta > tb ? ta : tb;
00759 tmax = tc > tmax ? tc : tmax;
00760
00761 if (tmax <= 0.0) {
00762 vel = currentAngularFeedRate;
00763 }
00764 else {
00765 vel = dtot/tmax;
00766 if (vel > currentAngularFeedRate) {
00767 vel = currentAngularFeedRate;
00768 }
00769 }
00770 }
00771
00772 // ensure proper feed rate
00773 properVelocity(vel);
00774
00775 interp_list.append(linearMoveMsg);
00776
00777 canonUpdateEndPoint(x, y, z, a, b, c);
00778 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 784 of file emccanon.cc. 00785 {
00786 EMC_TRAJ_PROBE probeMsg;
00787 double dx, dy, dz, dtot;
00788 double tx, ty, tz, tmax;
00789 double vel;
00790
00791 // convert to mm units
00792 x = FROM_PROG_LEN(x);
00793 y = FROM_PROG_LEN(y);
00794 z = FROM_PROG_LEN(z);
00795
00796 x += programOrigin.x;
00797 y += programOrigin.y;
00798 z += programOrigin.z;
00799
00800 z += currentToolLengthOffset;
00801
00802 // now x, y, z, and b are in absolute mm or degree units
00803
00804 probeMsg.pos.tran.x = TO_EXT_LEN(x);
00805 probeMsg.pos.tran.y = TO_EXT_LEN(y);
00806 probeMsg.pos.tran.z = TO_EXT_LEN(z);
00807
00808 // compute maximal feed rate
00809
00810 dx = x - canonEndPoint.x;
00811 dy = y - canonEndPoint.y;
00812 dz = z - canonEndPoint.z;
00813 dtot = sqrt(dx*dx + dy*dy + dz*dz);
00814
00815 tx = fabs(dx / FROM_EXT_LEN(AXIS_MAX_VELOCITY[0]));
00816 ty = fabs(dy / FROM_EXT_LEN(AXIS_MAX_VELOCITY[1]));
00817 tz = fabs(dz / FROM_EXT_LEN(AXIS_MAX_VELOCITY[2]));
00818 tmax = tx > ty ? tx : ty;
00819 tmax = tz > tmax ? tz : tmax;
00820
00821 if (tmax <= 0.0) {
00822 vel = currentLinearFeedRate;
00823 }
00824 else {
00825 vel = dtot/tmax;
00826 if (vel > currentLinearFeedRate) {
00827 vel = currentLinearFeedRate;
00828 }
00829 }
00830
00831 // ensure proper feed rate
00832 properVelocity(vel);
00833
00834 // fill in the orientation
00835 probeMsg.pos.a = a;
00836 probeMsg.pos.b = b;
00837 probeMsg.pos.c = c;
00838
00839 interp_list.append(probeMsg);
00840
00841 canonUpdateEndPoint(x, y, z, a, b,c);
00842 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 270 of file emccanon.cc. 00272 {
00273 EMC_TRAJ_LINEAR_MOVE linearMoveMsg;
00274 double dx, dy, dz, da, db, dc, dtot;
00275 double tx, ty, tz, ta, tb, tc, tmax;
00276 double vel;
00277
00278 // convert to mm units
00279 x = FROM_PROG_LEN(x);
00280 y = FROM_PROG_LEN(y);
00281 z = FROM_PROG_LEN(z);
00282 a = FROM_PROG_ANG(a);
00283 b = FROM_PROG_ANG(b);
00284 c = FROM_PROG_ANG(c);
00285
00286 x += programOrigin.x;
00287 y += programOrigin.y;
00288 z += programOrigin.z;
00289 a += programOrigin.a;
00290 b += programOrigin.b;
00291 c += programOrigin.c;
00292
00293 z += currentToolLengthOffset;
00294
00295 // now x, y, z, and b are in absolute mm or degree units
00296
00297 linearMoveMsg.end.tran.x = TO_EXT_LEN(x);
00298 linearMoveMsg.end.tran.y = TO_EXT_LEN(y);
00299 linearMoveMsg.end.tran.z = TO_EXT_LEN(z);
00300
00301 // fill in the orientation
00302 linearMoveMsg.end.a = TO_EXT_ANG(a);
00303 linearMoveMsg.end.b = TO_EXT_ANG(b);
00304 linearMoveMsg.end.c = TO_EXT_ANG(c);
00305
00306 // compute maximal feed rate
00307
00308 pure_angular_move = 0;
00309
00310 dx = x - canonEndPoint.x;
00311 dy = y - canonEndPoint.y;
00312 dz = z - canonEndPoint.z;
00313 da = a - canonEndPoint.a;
00314 db = b - canonEndPoint.b;
00315 dc = c - canonEndPoint.c;
00316 dtot = sqrt(dx*dx + dy*dy + dz*dz);
00317 if (dtot <= 0.0) {
00318 dtot = sqrt(da*da + db*db + dc*dc);
00319 if (dtot > 0.0) {
00320 pure_angular_move =1;
00321 }
00322 }
00323
00324 if (! pure_angular_move) {
00325 tx = fabs(dx / FROM_EXT_LEN(AXIS_MAX_VELOCITY[0]));
00326 ty = fabs(dy / FROM_EXT_LEN(AXIS_MAX_VELOCITY[1]));
00327 tz = fabs(dz / FROM_EXT_LEN(AXIS_MAX_VELOCITY[2]));
00328 tmax = tx > ty ? tx : ty;
00329 tmax = tz > tmax ? tz : tmax;
00330
00331 if (tmax <= 0.0) {
00332 vel = currentLinearTraverseRate;
00333 }
00334 else {
00335 vel = dtot/tmax;
00336 if (vel > currentLinearTraverseRate) {
00337 vel = currentLinearTraverseRate;
00338 }
00339 }
00340
00341 }
00342 else {
00343 ta = fabs(da / FROM_EXT_ANG(AXIS_MAX_VELOCITY[3]));
00344 tb = fabs(db / FROM_EXT_ANG(AXIS_MAX_VELOCITY[4]));
00345 tc = fabs(dc / FROM_EXT_ANG(AXIS_MAX_VELOCITY[5]));
00346 tmax = ta > tb ? ta : tb;
00347 tmax = tc > tmax ? tc : tmax;
00348
00349 if (tmax <= 0.0) {
00350 vel = currentAngularTraverseRate;
00351 }
00352 else {
00353 vel = dtot/tmax;
00354 if (vel > currentAngularTraverseRate) {
00355 vel = currentAngularTraverseRate;
00356 }
00357 }
00358
00359 }
00360
00361 // ensure proper feed rate
00362 properVelocity(vel);
00363
00364 interp_list.append(linearMoveMsg);
00365
00366 canonUpdateEndPoint(x, y, z, a, b, c);
00367 }
|
|
|
Definition at line 1136 of file emccanon.cc. 01137 {
01138 // don't do anything-- this is called when the probing is done
01139 }
|
|
|
Definition at line 1141 of file emccanon.cc. 01142 {
01143 EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG clearMsg;
01144
01145 interp_list.append(clearMsg);
01146 }
|
|
|
Definition at line 1148 of file emccanon.cc. 01149 {
01150 // FIXME-- unimplemented
01151 }
|
|
|
Definition at line 240 of file emccanon.cc. 00241 {
00242 lengthUnits = in_unit;
00243
00244 emcStatus->task.programUnits = in_unit;
00245 }
|
|
|
Definition at line 919 of file emccanon.cc. 00920 {
00921 // FIXME-- unimplemented
00922 }
|
|
|
|
|
|
Definition at line 930 of file emccanon.cc. 00931 {
00932 EMC_TRAJ_SET_OFFSET set_offset_msg;
00933
00934 /* convert to mm units for internal canonical use */
00935 currentToolLengthOffset = FROM_PROG_LEN(length);
00936
00937 /* append it to interp list so it gets updated at the right time,
00938 not at read-ahead time */
00939 set_offset_msg.offset.tran.x = 0.0;
00940 set_offset_msg.offset.tran.y = 0.0;
00941 set_offset_msg.offset.tran.z = TO_EXT_LEN(currentToolLengthOffset);
00942 set_offset_msg.offset.a = 0.0;
00943 set_offset_msg.offset.b = 0.0;
00944 set_offset_msg.offset.c = 0.0;
00945
00946 interp_list.append(set_offset_msg);
00947 }
|
1.2.11.1 written by Dimitri van Heesch,
© 1997-2001