-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpendant.hal
180 lines (152 loc) · 5.65 KB
/
pendant.hal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
loadusr -W hidcomp -ini my_LinuxCNC_machine.ini pendant/pendant.hid
setp hidcomp.0.PWM2.ivalue 54
#setp hidcomp.0.LCD-backlight-led.out 1
net machine-is-on hidcomp.0.LCD-backlight-led.out
net axis-select hidcomp.0.selector.raw hidcomp.0.LCD.page-select
net multiplier-select hidcomp.0.multiplier.raw
net jog-wheel-count hidcomp.0.jog-wheel.count
# hook pendant to emc
## power
net pendant_reset hidcomp.0.E-stop.in halui.machine.off
net pendant_reset2 hidcomp.0.E-stop.in-not halui.machine.on
loadrt and2 names=and2-x,and2-y,and2-z,and2-a,and2-fo,and2-so,and2-run,and2-pause,
addf and2-run servo-thread
addf and2-pause servo-thread
# program run
# run when stopped
#net pendant_run <= hidcomp.0.run-button.in
net pendant_run => and2-run.in0
net is_stopped <= halui.program.is-idle
net is_stopped => and2-run.in1
net do_run and2-run.out => halui.program.run halui.mode.auto
#step when paused
net pendant_run => and2-pause.in0
net ispaused <= halui.program.is-paused
net ispaused => and2-pause.in1
net do_step and2-pause.out => halui.program.step
# program run led
net is_running halui.program.is-running
net is_running => hidcomp.0.stop-led.out
# program stop
net pendant_stop halui.program.stop hidcomp.0.stop-button.in
# pause
loadrt toggle2nist
addf toggle2nist.0 servo-thread
loadrt toggle
addf toggle.0 servo-thread
net pendant_pause hidcomp.0.pause-button.in => toggle.0.in
net toggled_pause toggle.0.out => toggle2nist.0.in
net ispaused => toggle2nist.0.is-on
net ispaused => hidcomp.0.pause-led.out
net toggle_pause toggle2nist.0.on => halui.program.pause
net toggle_resume toggle2nist.0.off => halui.program.resume
# action enable buttons
net enable_pos hidcomp.0.enable-left-button.in
net enable_vel hidcomp.0.enable-right-button.in
loadrt or2 names=button-enabler
addf button-enabler servo-thread
net enable_pos button-enabler.in0
#net enable_vel button-enabler.in1
setp button-enabler.in1 1
net enable_either button-enabler.out
# step multiplier multiplexer
loadrt conv_s32_u32
addf conv-s32-u32.0 servo-thread
loadrt amux4
addf amux4.0 servo-thread
# the multipliers are xN/4 because the dial counts in quadrature
setp amux4.0.in3 0.00025
setp amux4.0.in2 0.0025
setp amux4.0.in1 0.025
setp amux4.0.in0 0.25
net multiplier-select conv-s32-u32.0.in
net multiplier-select-u32 conv-s32-u32.0.out amux4.0.sel
newsig multiplier-value float
net multiplier-value amux4.0.out
#axis select
loadrt select8 count=1
addf select8.0 servo-thread
setp select8.0.enable true
net axis-select select8.0.sel
net X_selected select8.0.out0
net Y_selected select8.0.out1
net Z_selected select8.0.out2
net A_selected select8.0.out3
net Spindle_selected select8.0.out4
net Feed_selected select8.0.out5
#jog x
# jog-wheel-count => axis.0.jog-count
net jog-wheel-count axis.0.jog-counts
# enable_vel => axis.0.jog-vel-mode
net enable_vel axis.0.jog-vel-mode
net multiplier-value axis.0.jog-scale
# enable_either && X_Select => axis.0.jog-enable
addf and2-x servo-thread
net enable_either and2-x.in0
net X_selected and2-x.in1
net X_jog_enable and2-x.out => axis.0.jog-enable
#jog y
# jog-wheel-count => axis.1.jog-count
net jog-wheel-count axis.1.jog-counts
# enable_vel => axis.1.jog-vel-mode
net enable_vel axis.1.jog-vel-mode
net multiplier-value axis.1.jog-scale
# enable_either && A_Select => axis.1.jog-enable
addf and2-y servo-thread
net enable_either and2-y.in0
net Y_selected and2-y.in1
net Y_jog_enable and2-y.out => axis.1.jog-enable
#jog z
# jog-wheel-count => axis.2.jog-count
net jog-wheel-count axis.2.jog-counts
# enable_vel => axis.2.jog-vel-mode
net enable_vel axis.2.jog-vel-mode
net multiplier-value axis.2.jog-scale
# enable_either && Z_Select => axis.2.jog-enable
addf and2-z servo-thread
net enable_either and2-z.in0
net Z_selected and2-z.in1
net Z_jog_enable and2-z.out => axis.2.jog-enable
#jog a
# jog-wheel-count => axis.3.jog-count
#;net jog-wheel-count axis.3.jog-counts
# enable_vel => axis.3.jog-vel-mode
#;net enable_vel axis.3.jog-vel-mode
#;net multiplier-value axis.3.jog-scale
# enable_either && A_Select => axis.3.jog-enable
#;addf and2-a servo-thread
#;net enable_either and2-a.in0
#;net A_selected and2-a.in1
#;net A_jog_enable and2-a.out => axis.3.jog-enable
# feed rate override
# jog-wheel-count => halui.feed-override-counts
net jog-wheel-count => halui.feed-override.counts
# scale is fixed - 1 turn = 100%
setp halui.feed-override.scale 0.0025
# enable_either && Feed_Seleceted => halui.feed-override-count-enable
addf and2-fo servo-thread
net enable_either => and2-fo.in0
net Feed_selected => and2-fo.in1
net FeedOverride_enabled and2-fo.out => halui.feed-override.count-enable
# spindle speed/spindle override
# when in program mode, we change the spindle override.
# in manual mode, we set the spindle speed (target speed?)
#
# jog-wheel-count => halui.spindle-override-counts
net jog-wheel-count => halui.spindle-override.counts
# scale is fixed - 1 turn = 100%
setp halui.spindle-override.scale 0.0025
# enable_either && Spindle_Seleceted => halui.spindle-override-count-enable
addf and2-so servo-thread
net enable_either => and2-so.in0
net Spindle_selected => and2-so.in1
net SpindleOverride_enabled and2-so.out => halui.spindle-override.count-enable
net pendant-x hidcomp.0.LCD.in-float-0 halui.axis.0.pos-relative
net pendant-y hidcomp.0.LCD.in-float-1 halui.axis.1.pos-relative
net pendant-z hidcomp.0.LCD.in-float-2 halui.axis.2.pos-relative
#net pendant-x hidcomp.0.LCD.in-float-3 halui.axis.3.pos-relative
net multiplier-value hidcomp.0.LCD.in-float-4
net pendant-so halui.spindle-override.value hidcomp.0.LCD.in-float-5
net pendant-fo halui.feed-override.value hidcomp.0.LCD.in-float-6
#net absolute-spindle-vel hidcomp.0.LCD.in-float-7
#net pendant-v moyion.current-vel hidcomp.0.LCD.in-float-8