Got a working solution for detecting failed probes

This commit is contained in:
David Carley
2021-10-11 00:28:22 -07:00
parent 0983a7f3e2
commit c9efccec15
6 changed files with 55 additions and 13 deletions

View File

@@ -82,7 +82,7 @@ void seek_end() {
if (!seek.active) return;
if (!(SEEK_FOUND & seek.flags) && (SEEK_ERROR & seek.flags))
estop_trigger(STAT_SEEK_NOT_FOUND);
STATUS_WARNING(STAT_SEEK_NOT_FOUND, "", 0);
if((seekMode == SW_STALL_0) || (seekMode == SW_STALL_1) || (seekMode ==SW_STALL_2) || (seekMode == SW_STALL_3))
disable_stall_microstep();

View File

@@ -117,8 +117,10 @@ module.exports = new Vue({
},
state: {
messages: [],
probing_active: false,
wait_for_probing_complete: false,
show_probe_complete_modal: false
show_probe_complete_modal: false,
show_probe_failed_modal: false
},
video_size: cookie.get('video-size', 'small'),
crosshair: cookie.get('crosshair', 'false') != 'false',
@@ -322,9 +324,6 @@ module.exports = new Vue({
this.check_ip_address();
this.check_ssid();
//.check_disk_space();
}.bind(this))
},
@@ -386,7 +385,12 @@ module.exports = new Vue({
}
if ('log' in e.data) {
this.$broadcast('log', e.data.log);
if (this.state.probing_active && e.data.log.msg === "Switch not found") {
this.$broadcast('probing_failed');
} else {
this.$broadcast('log', JSON.stringify(e.data.log, null, 4));
}
delete e.data.log;
}

View File

@@ -240,7 +240,18 @@ module.exports = {
this.send('M70\nG91\nG0' + axis + value + '\nM72');
},
probing_failed: function() {
Vue.set(this.state, "probing_active", false);
Vue.set(this.state, "wait_for_probing_complete", false);
Vue.set(this.state, "show_probe_complete_modal", false);
Vue.set(this.state, "goto_xy_zero_after_probe", false);
Vue.set(this.state, "show_probe_failed_modal", true);
},
probing_complete: function() {
Vue.set(this.state, "probing_active", false);
if (this.config.settings['probing-prompts']) {
Vue.set(this.state, "show_probe_complete_modal", true);
} else {
@@ -303,6 +314,10 @@ module.exports = {
on_finish();
},
hide_probe_failed_modal: function() {
Vue.set(this.state, "show_probe_failed_modal", false);
},
prep_and_show_tool_diameter_modal() {
this.tool_diameter_for_prompt = (this.mach_units == 'METRIC')
? this.tool_diameter
@@ -351,6 +366,7 @@ module.exports = {
// Also, add zlift to compensate for the fact that we lift after probing Z
const plunge = Math.min(12.7, zoffset * 0.75) + zlift;
Vue.set(this.state, "probing_active", true);
Vue.set(this.state, "goto_xy_zero_after_probe", !zOnly);
if (zOnly) {

View File

@@ -128,6 +128,18 @@ script#control-view-template(type="text/x-template")
button.pure-button.button-success(@click=`$emit("finalize_probe")`)
| Done
message(:show.sync=`state.show_probe_failed_modal`)
h3(slot="header") Probing failed!
div(slot="body")
.pure-form
p Could not find the probe block during probing!
p Make sure the bit is within 1" / 25.4mm of the probe block, and try again.
div(slot="footer")
button.pure-button.button-success(@click=`hide_probe_failed_modal()`)
| OK
table(style="table-layout: fixed; width: 100%;")
tr(style="height: fit-content;")
td(style="white-space: nowrap; width: 410px;", rowspan="2")

View File

@@ -216,14 +216,16 @@ class Comm(object):
self.log.warning('%s, data: %s', e, line)
continue
if 'variables' in msg: self._update_vars(msg)
elif 'msg' in msg: self._log_msg(msg)
if 'variables' in msg:
self._update_vars(msg)
elif 'msg' in msg:
self._log_msg(msg)
self.ctrl.mach.process_log(msg)
elif 'firmware' in msg:
self.log.info('AVR firmware rebooted')
self.connect()
else: self._update_state(msg)
else:
self._update_state(msg)
def estop(self):

View File

@@ -133,6 +133,12 @@ class Mach(Comm):
self._set_cycle(cycle)
def process_log(self, log):
# Detect when a probe has failed, and reset the planner
if log['msg'] == 'Switch not found':
self.planner.reset(False)
def _update(self, update):
# Detect motor faults
for motor in range(4):
@@ -145,7 +151,8 @@ class Mach(Comm):
state = self._get_state()
# Handle EStop
if state_changed and state == 'ESTOPPED': self.planner.reset(False)
if state_changed and state == 'ESTOPPED':
self.planner.reset(False)
# Exit cycle if state changed to READY
if (state_changed and self._get_cycle() != 'idle' and
@@ -161,7 +168,8 @@ class Mach(Comm):
self.stopping = False
# Unpause sync
if state_changed and state != 'HOLDING': self.unpausing = False
if state_changed and state != 'HOLDING':
self.unpausing = False
# Entering HOLDING state
if state_changed and state == 'HOLDING':