Skip to content

Commit ed37e07

Browse files
committed
Gmoccapy: Fix very large numbers for spindle speed and 'Vc' in the gui when using G96
This is part of fixing issue #3447
1 parent 202dccc commit ed37e07

1 file changed

Lines changed: 28 additions & 22 deletions

File tree

src/emc/usr_intf/gmoccapy/gmoccapy.py

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ def __init__(self, argv):
224224
self.height = 750 # The height of the main Window
225225

226226
self.gcodeerror = "" # we need this to avoid multiple messages of the same error
227+
self.max_spindle_disp = 999999 # maximum display value for 'S' and 'Vc'
227228

228229
self.file_changed = False
229230
self.widgets.hal_action_saveas.connect("saved-as", self.saved_as)
@@ -3951,30 +3952,33 @@ def _update_spindle(self):
39513952
self.widgets.rbt_stop.set_active(True)
39523953
return
39533954

3954-
# set the speed label in active code frame
3955-
if self.stat.spindle[0]['speed'] == 0:
3956-
speed = self.stat.settings[2]
3955+
# set the S label in active code frame
3956+
self.widgets.active_speed_label.set_label("{0:.0f}".format(self.stat.settings[2]))
3957+
3958+
# set the 'Spindle [rpm]' label
3959+
#Note: self.stat.spindle[0]['speed'] does not reflect 'spindle.0.speed-out' pins when using G96 mode (issue #3449)
3960+
speed = hal.get_value("spindle.0.speed-out")
3961+
# catch very large values eg when using G96 w/o D value
3962+
if speed > self.max_spindle_disp:
3963+
self.widgets.lbl_spindle_act.set_text("S >"+str(self.max_spindle_disp))
3964+
elif speed < -self.max_spindle_disp:
3965+
self.widgets.lbl_spindle_act.set_text("S <"+str(self.max_spindle_disp))
39573966
else:
3958-
speed = self.stat.spindle[0]['speed']
3959-
self.widgets.active_speed_label.set_label("{0:.0f}".format(abs(speed)))
3960-
self.widgets.lbl_spindle_act.set_text("S {0}".format(int(round(speed * self.spindle_override))))
3967+
self.widgets.lbl_spindle_act.set_text("S {0}".format(int(round(speed))))
39613968

39623969
def _update_vc(self):
3963-
if self.stat.spindle[0]['direction'] != 0:
3964-
if self.stat.spindle[0]['speed'] == 0:
3965-
speed = self.stat.settings[2]
3966-
else:
3967-
speed = self.stat.spindle[0]['speed']
3968-
3969-
if not self.lathe_mode:
3970-
diameter = self.halcomp["tool-diameter"]
3971-
else:
3972-
diameter = int(self.dro_dic["Combi_DRO_0"].get_position()[1] * 2)
3973-
speed = self.widgets.spindle_feedback_bar.value
3974-
vc = abs(int(speed * self.spindle_override) * diameter * 3.14 / 1000)
3970+
#Note: self.stat.spindle[0]['speed'] does not reflect 'spindle.0.speed-out' pins when using G96 mode (issue #3449)
3971+
speed = hal.get_value("spindle.0.speed-out")
3972+
if not self.lathe_mode:
3973+
diameter = self.halcomp["tool-diameter"]
39753974
else:
3976-
vc = 0
3977-
if vc >= 100:
3975+
diameter = int(self.dro_dic["Combi_DRO_0"].get_position()[1] * 2)
3976+
speed = self.widgets.spindle_feedback_bar.value
3977+
vc = abs(int(speed * self.spindle_override) * diameter * 3.14 / 1000)
3978+
# catch very large Vc values due to very large S values eg when using G96 w/o D value
3979+
if vc > self.max_spindle_disp:
3980+
text = "Vc= >" + str(self.max_spindle_disp)
3981+
elif vc >= 100:
39783982
text = "Vc= {0:d}".format(int(vc))
39793983
elif vc >= 10:
39803984
text = "Vc= {0:2.1f}".format(vc)
@@ -4097,11 +4101,13 @@ def on_spc_spindle_value_changed(self, widget, data=None):
40974101
# get the current spindle speed
40984102
if not abs(self.stat.settings[2]):
40994103
if self.widgets.rbt_forward.get_active() or self.widgets.rbt_reverse.get_active():
4100-
speed = self.stat.spindle[0]['speed']
4104+
#speed = self.stat.spindle[0]['speed'] does not work when using G96 mode (issue #3449)
4105+
speed = hal.get_value("spindle.0.speed-out")
41014106
else:
41024107
speed = 0
41034108
else:
4104-
speed = abs(self.stat.spindle[0]['speed'])
4109+
#speed = abs(self.stat.spindle[0]['speed']) does not work when using G96 mode (issue #3449)
4110+
speed = abs(hal.get_value("spindle.0.speed-out"))
41054111
spindle_override_in = widget_value / 100
41064112
spindle_speed_out = speed * spindle_override_in
41074113

0 commit comments

Comments
 (0)