Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 31 additions & 28 deletions src/emc/task/taskclass.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ int Task::iocontrol_hal_init(void)
CHK(hal_pin_new_bool(comp_id, HAL_OUT, &iocontrol_data->user_request_enable, 0, IOC0".user-request-enable"));
CHK(hal_pin_new_bool(comp_id, HAL_OUT, &iocontrol_data->coolant_mist, 0, IOC0".coolant-mist"));
CHK(hal_pin_new_bool(comp_id, HAL_OUT, &iocontrol_data->coolant_flood, 0, IOC0".coolant-flood"));
CHK(hal_pin_new_si32(comp_id, HAL_OUT, &iocontrol_data->tool_prep_pocket, 0, IOC0".tool-prep-pocket"));
CHK(hal_pin_new_si32(comp_id, HAL_OUT, &iocontrol_data->tool_from_pocket, 0, IOC0".tool-from-pocket"));
CHK(hal_pin_new_si32(comp_id, HAL_OUT, &iocontrol_data->tool_prep_index, 0, IOC0".tool-prep-index"));
CHK(hal_pin_new_si32(comp_id, HAL_OUT, &iocontrol_data->tool_prep_number, 0, IOC0".tool-prep-number"));
CHK(hal_pin_new_si32(comp_id, HAL_OUT, &iocontrol_data->tool_number, 0, IOC0".tool-number"));
CHK(hal_pin_new_sint(comp_id, HAL_OUT, &iocontrol_data->tool_prep_pocket, 0, IOC0".tool-prep-pocket"));
CHK(hal_pin_new_sint(comp_id, HAL_OUT, &iocontrol_data->tool_from_pocket, 0, IOC0".tool-from-pocket"));
CHK(hal_pin_new_sint(comp_id, HAL_OUT, &iocontrol_data->tool_prep_index, 0, IOC0".tool-prep-index"));
CHK(hal_pin_new_sint(comp_id, HAL_OUT, &iocontrol_data->tool_prep_number, 0, IOC0".tool-prep-number"));
CHK(hal_pin_new_sint(comp_id, HAL_OUT, &iocontrol_data->tool_number, 0, IOC0".tool-number"));
CHK(hal_pin_new_bool(comp_id, HAL_OUT, &iocontrol_data->tool_prepare, 0, IOC0".tool-prepare"));
CHK(hal_pin_new_bool(comp_id, HAL_IN, &iocontrol_data->tool_prepared, 0, IOC0".tool-prepared"));
CHK(hal_pin_new_bool(comp_id, HAL_OUT, &iocontrol_data->tool_change, 0, IOC0".tool-change"));
Expand Down Expand Up @@ -87,12 +87,12 @@ void Task::hal_init_pins(void)
hal_set_bool(iocontrol_data->coolant_mist, 0); /* coolant mist output pin */
hal_set_bool(iocontrol_data->coolant_flood, 0); /* coolant flood output pin */
hal_set_bool(iocontrol_data->tool_prepare, 0); /* output, pin that notifies HAL it needs to prepare a tool */
hal_set_si32(iocontrol_data->tool_prep_number, 0); /* output, pin that holds the tool number to be prepared, only valid when tool-prepare=TRUE */
hal_set_si32(iocontrol_data->tool_prep_pocket, 0); /* output, pin that holds the pocketno for the tool to be prepared, only valid when tool-prepare=TRUE */
hal_set_si32(iocontrol_data->tool_from_pocket, 0); /* output, always 0 at startup */
hal_set_si32(iocontrol_data->tool_prep_index, 0); /* output, pin that holds the internal index (idx) of the tool to be prepared, for debug */
hal_set_sint(iocontrol_data->tool_prep_number, 0); /* output, pin that holds the tool number to be prepared, only valid when tool-prepare=TRUE */
hal_set_sint(iocontrol_data->tool_prep_pocket, 0); /* output, pin that holds the pocketno for the tool to be prepared, only valid when tool-prepare=TRUE */
hal_set_sint(iocontrol_data->tool_from_pocket, 0); /* output, always 0 at startup */
hal_set_sint(iocontrol_data->tool_prep_index, 0); /* output, pin that holds the internal index (idx) of the tool to be prepared, for debug */
hal_set_bool(iocontrol_data->tool_change, 0); /* output, notifies a tool-change should happen (emc should be in the tool-change position) */
hal_set_si32(iocontrol_data->tool_number, emcioStatus.tool.toolInSpindle);
hal_set_sint(iocontrol_data->tool_number, emcioStatus.tool.toolInSpindle);
}

Task *task_methods;
Expand Down Expand Up @@ -467,29 +467,29 @@ int Task::emcToolPrepare(int toolno)
}
rtapi_print_msg(RTAPI_MSG_DBG, "EMC_TOOL_PREPARE tool=%d idx=%d\n", toolno, idx);

hal_set_si32(iocontrol_data->tool_prep_index, idx); // any type of changer
hal_set_sint(iocontrol_data->tool_prep_index, idx); // any type of changer

// Note: some of the following logic could be simplified
// but is maintained to preserve runtests expectations
// Set HAL pins for tool number, pocket, and index.
if (random_toolchanger) {
// RANDOM_TOOLCHANGER
hal_set_si32(iocontrol_data->tool_prep_number, tdata.toolno);
hal_set_sint(iocontrol_data->tool_prep_number, tdata.toolno);
if (idx == 0) {
emcioStatus.tool.pocketPrepped = 0; // pocketPrepped is an idx
hal_set_si32(iocontrol_data->tool_prep_pocket, 0);
hal_set_sint(iocontrol_data->tool_prep_pocket, 0);
return 0;
}
hal_set_si32(iocontrol_data->tool_prep_pocket, tdata.pocketno);
hal_set_sint(iocontrol_data->tool_prep_pocket, tdata.pocketno);
} else {
// NON_RANDOM_TOOLCHANGER
if (idx == 0) {
emcioStatus.tool.pocketPrepped = 0; // pocketPrepped is an idx
hal_set_si32(iocontrol_data->tool_prep_number, 0);
hal_set_si32(iocontrol_data->tool_prep_pocket, 0);
hal_set_sint(iocontrol_data->tool_prep_number, 0);
hal_set_sint(iocontrol_data->tool_prep_pocket, 0);
} else {
hal_set_si32(iocontrol_data->tool_prep_number, tdata.toolno);
hal_set_si32(iocontrol_data->tool_prep_pocket, tdata.pocketno);
hal_set_sint(iocontrol_data->tool_prep_number, tdata.toolno);
hal_set_sint(iocontrol_data->tool_prep_pocket, tdata.pocketno);
}
}
// it doesn't make sense to prep the spindle pocket
Expand Down Expand Up @@ -613,9 +613,9 @@ int Task::emcToolSetNumber(int number)//EMC_TOOL_SET_NUMBER
"EMC_TOOL_SET_NUMBER old_loaded_tool=%d new_idx_number=%d new_tool=%d\n"
, emcioStatus.tool.toolInSpindle, idx, tdata.toolno);
//likewise in HAL
hal_set_si32(iocontrol_data->tool_number, emcioStatus.tool.toolInSpindle);
hal_set_sint(iocontrol_data->tool_number, emcioStatus.tool.toolInSpindle);
if (emcioStatus.tool.toolInSpindle == 0) {
emcioStatus.tool.toolFromPocket = hal_set_si32(iocontrol_data->tool_from_pocket, 0); // no tool in spindle
emcioStatus.tool.toolFromPocket = hal_set_sint(iocontrol_data->tool_from_pocket, 0); // no tool in spindle
}

return 0;
Expand All @@ -638,7 +638,10 @@ int Task::emcToolSetNumber(int number)//EMC_TOOL_SET_NUMBER
int Task::read_tool_inputs(void)
{
if (hal_get_bool(iocontrol_data->tool_prepare) && hal_get_bool(iocontrol_data->tool_prepared)) {
emcioStatus.tool.pocketPrepped = hal_get_si32(iocontrol_data->tool_prep_index); //check if tool has been (idx) prepared
// We get the clamped HAL value from tool_prep_index because it is
// assigned elsewhere to int and would be truncated. The content
// is a relative small index value anyway.
emcioStatus.tool.pocketPrepped = hal_get_si32_clamped(iocontrol_data->tool_prep_index); //check if tool has been (idx) prepared
hal_set_bool(iocontrol_data->tool_prepare, 0);
emcioStatus.status = RCS_STATUS::DONE; // we finally finished to do tool-changing, signal task with RCS_DONE
return 10; //prepped finished
Expand All @@ -647,25 +650,25 @@ int Task::read_tool_inputs(void)
if (hal_get_bool(iocontrol_data->tool_change) && hal_get_bool(iocontrol_data->tool_changed)) {
if(!random_toolchanger && emcioStatus.tool.pocketPrepped == 0) {
emcioStatus.tool.toolInSpindle = 0;
emcioStatus.tool.toolFromPocket = hal_set_si32(iocontrol_data->tool_from_pocket, 0);
emcioStatus.tool.toolFromPocket = hal_set_sint(iocontrol_data->tool_from_pocket, 0);
} else {
// the tool now in the spindle is the one that was prepared
CANON_TOOL_TABLE tdata;
if (tooldata_get(&tdata,emcioStatus.tool.pocketPrepped) != IDX_OK) {
UNEXPECTED_MSG; return -1;
}
emcioStatus.tool.toolInSpindle = tdata.toolno;
emcioStatus.tool.toolFromPocket = hal_set_si32(iocontrol_data->tool_from_pocket, tdata.pocketno);
emcioStatus.tool.toolFromPocket = hal_set_sint(iocontrol_data->tool_from_pocket, tdata.pocketno);
}
if (emcioStatus.tool.toolInSpindle == 0) {
emcioStatus.tool.toolFromPocket = hal_set_si32(iocontrol_data->tool_from_pocket, 0);
emcioStatus.tool.toolFromPocket = hal_set_sint(iocontrol_data->tool_from_pocket, 0);
}
hal_set_si32(iocontrol_data->tool_number, emcioStatus.tool.toolInSpindle); //likewise in HAL
hal_set_sint(iocontrol_data->tool_number, emcioStatus.tool.toolInSpindle); //likewise in HAL
load_tool(emcioStatus.tool.pocketPrepped);
emcioStatus.tool.pocketPrepped = -1; //reset the tool preped number, -1 to permit tool 0 to be loaded
hal_set_si32(iocontrol_data->tool_prep_number, 0); //likewise in HAL
hal_set_si32(iocontrol_data->tool_prep_pocket, 0); //likewise in HAL
hal_set_si32(iocontrol_data->tool_prep_index, 0); //likewise in HAL
hal_set_sint(iocontrol_data->tool_prep_number, 0); //likewise in HAL
hal_set_sint(iocontrol_data->tool_prep_pocket, 0); //likewise in HAL
hal_set_sint(iocontrol_data->tool_prep_index, 0); //likewise in HAL
hal_set_bool(iocontrol_data->tool_change, 0); //also reset the tool change signal
emcioStatus.status = RCS_STATUS::DONE; // we finally finished to do tool-changing, signal task with RCS_DONE
return 11; //change finished
Expand Down
Loading