-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathElectronicLeadscrew.hal.8x12
172 lines (132 loc) · 5.25 KB
/
ElectronicLeadscrew.hal.8x12
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
###############################################
## create real-time thread
loadrt threads name1=servo-thread period1=1000000
###############################################
## utility modules
loadrt not count=2
loadrt scale count=6
setp scale.0.gain 1
setp scale.1.gain 1
setp scale.2.gain 1
setp scale.3.gain 1
setp scale.4.gain 1
setp scale.5.gain 1
###############################################
## hostmot2 and 7i96 specific
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config=" num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=00xxxx"
setp hm2_7i96.0.watchdog.timeout_ns 100000000
## A Axis encoder setup
# This needs to be set to the number of pulses per revolution the encoder does output
# The sign should represent rotation in regular counter clockwise mode
setp hm2_7i96.0.encoder.00.scale -2880
setp hm2_7i96.0.encoder.00.counter-mode 0 ## A/B mode
setp hm2_7i96.0.encoder.00.filter 1
## Z Axis stepper setup
# Set the scale so it represents 1 (one) millimeter movement, i.e. steps/mm
setp hm2_7i96.0.stepgen.00.position-scale 1511.81102362204728706274 ### 1.0 / (25.4 / (3200.0 * 12.0))
# customize as per your machine/steppers
setp hm2_7i96.0.stepgen.00.dirhold 1000
setp hm2_7i96.0.stepgen.00.dirsetup 5000
setp hm2_7i96.0.stepgen.00.maxaccel 200
setp hm2_7i96.0.stepgen.00.maxvel 20
setp hm2_7i96.0.stepgen.00.steplen 5000
setp hm2_7i96.0.stepgen.00.stepspace 1000
setp hm2_7i96.0.stepgen.00.enable 1
setp hm2_7i96.0.stepgen.00.control-type 0
## X Axis stepper setup
# Set the scale so it represents 1 (one) millimeter movement, i.e. steps/mm
setp hm2_7i96.0.stepgen.01.position-scale 1079.86501687289 ### 1.0 / (25.4 / (3200.0 * 10.0 * (12.0 / 14.0)))
# customize as per your machine/steppers
setp hm2_7i96.0.stepgen.01.dirhold 1000
setp hm2_7i96.0.stepgen.01.dirsetup 5000
setp hm2_7i96.0.stepgen.01.maxaccel 200
setp hm2_7i96.0.stepgen.01.maxvel 20
setp hm2_7i96.0.stepgen.01.steplen 5000
setp hm2_7i96.0.stepgen.01.stepspace 1000
setp hm2_7i96.0.stepgen.01.enable 1
setp hm2_7i96.0.stepgen.01.control-type 0
setp hm2_7i96.0.dpll.base-freq-khz 1
###############################################
## add functions to servo-thread
addf hm2_7i96.0.read servo-thread
addf scale.0 servo-thread
addf scale.1 servo-thread
addf scale.2 servo-thread
addf scale.3 servo-thread
addf scale.4 servo-thread
addf scale.5 servo-thread
addf not.0 servo-thread
addf not.1 servo-thread
addf hm2_7i96.0.write servo-thread
###############################################
## load UI and make connections
loadusr -Wn ElectronicLeadscrew qtvcp -m -d -c ElectronicLeadscrew ElectronicLeadscrew.ui
net r-rps <= hm2_7i96.0.encoder.00.velocity
net r-rps => lathe_ui.speed_rps
net z-pos <= hm2_7i96.0.stepgen.00.position-fb
net z-pos => lathe_ui.position_z
net x-pos <= hm2_7i96.0.stepgen.01.position-fb
net x-pos => lathe_ui.position_x
net a-pos <= hm2_7i96.0.encoder.00.position
net a-pos => lathe_ui.position_a
net a-pos => scale.0.in
net a-pos => scale.3.in
net z-stepper-enable <= lathe_ui.enable_stepper_z
net z-stepper-enable => hm2_7i96.0.stepgen.00.enable
# we are inverting the stepper enable signal here, might not be required for your machine
net z-enable <= lathe_ui.enable_z
net z-enable => not.0.in
net z-enable-inv <= not.0.out
net z-enable-inv => hm2_7i96.0.ssr.00.out-00
## For non-inverting case simply do this:
## net z-enable <= lathe_ui.enable_z
## net z-enable => hm2_7i96.0.ssr.00.out-00
net x-stepper-enable <= lathe_ui.enable_stepper_x
net x-stepper-enable => hm2_7i96.0.stepgen.01.enable
# we are inverting the stepper enable signal here, might not be required for your machine
net x-enable <= lathe_ui.enable_x
net x-enable => not.1.in
net x-enable-inv <= not.1.out
net x-enable-inv => hm2_7i96.0.ssr.00.out-01
## For non-inverting case simply do this:
## net x-enable <= lathe_ui.enable_x
## net x-enable => hm2_7i96.0.ssr.00.out-01
# Z Axis -- scale chain
net scale0_to_1 <= scale.0.out
net scale0_to_1 => scale.1.in
net scale1_to_2 <= scale.1.out
net scale1_to_2 => scale.2.in
net scale2_to_position-cmd <= scale.2.out
net scale2_to_position-cmd => hm2_7i96.0.stepgen.00.position-cmd
net z-offset-encoder <= lathe_ui.offset_z_encoder
net z-offset-encoder => scale.0.offset
net z-forward <= lathe_ui.forward_z
net z-forward => scale.1.gain
net z-offset-stepper <= lathe_ui.offset_z_stepper
net z-offset-stepper => scale.2.offset
net z-control-type <= lathe_ui.control_z_type
net z-control-type => hm2_7i96.0.stepgen.00.control-type
net z-velocity-cmd <= lathe_ui.velocity_z_cmd
net z-velocity-cmd => hm2_7i96.0.stepgen.00.velocity-cmd
# X Axis -- scale chain
net scale3_to_4 <= scale.3.out
net scale3_to_4 => scale.4.in
net scale4_to_5 <= scale.4.out
net scale4_to_5 => scale.5.in
net scale5_to_position-cmd <= scale.5.out
net scale5_to_position-cmd => hm2_7i96.0.stepgen.01.position-cmd
net x-offset-encoder <= lathe_ui.offset_x_encoder
net x-offset-encoder => scale.3.offset
net x-forward <= lathe_ui.forward_x
net x-forward => scale.4.gain
net x-offset-stepper <= lathe_ui.offset_x_stepper
net x-offset-stepper => scale.5.offset
net x-control-type <= lathe_ui.control_x_type
net x-control-type => hm2_7i96.0.stepgen.01.control-type
net x-velocity-cmd <= lathe_ui.velocity_x_cmd
net x-velocity-cmd => hm2_7i96.0.stepgen.01.velocity-cmd
start
waitusr ElectronicLeadscrew
stop
unloadrt all