summaryrefslogtreecommitdiff
path: root/configs/by_machine/smithy/622keyence.hal
blob: bd327e86d036e256115c6c2d1ae296118dd155ab (plain)
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
181
182
183
184
# 5i20 config file for Smithy 622 Mill with Leadshine Drives

# load the hostmot2 driver, this doesnt do anything by itself, 
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1

# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4"
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000

# load kinematics
loadrt trivkins

# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[TRAJ]AXES

# load charge pump
loadrt charge_pump

# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared

#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE

#configure the spindle speed
net scmd motion.spindle-speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 5000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100

# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE

# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup        5000
setp hm2_5i20.0.stepgen.00.dirhold         1250
setp hm2_5i20.0.stepgen.00.steplen         1250
setp hm2_5i20.0.stepgen.00.stepspace       1250
setp hm2_5i20.0.stepgen.00.position-scale  [AXIS_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel        [AXIS_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel          [AXIS_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup        5000
setp hm2_5i20.0.stepgen.01.dirhold         1250
setp hm2_5i20.0.stepgen.01.steplen         1250
setp hm2_5i20.0.stepgen.01.stepspace       1250
setp hm2_5i20.0.stepgen.01.position-scale  [AXIS_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel        [AXIS_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel          [AXIS_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup        5000
setp hm2_5i20.0.stepgen.02.dirhold         1250
setp hm2_5i20.0.stepgen.02.steplen         1250
setp hm2_5i20.0.stepgen.02.stepspace       1250
setp hm2_5i20.0.stepgen.02.position-scale  [AXIS_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel        [AXIS_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel          [AXIS_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup        5000
setp hm2_5i20.0.stepgen.03.dirhold         1250
setp hm2_5i20.0.stepgen.03.steplen         1250
setp hm2_5i20.0.stepgen.03.stepspace       1250
setp hm2_5i20.0.stepgen.03.position-scale  [AXIS_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel        [AXIS_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel          [AXIS_3]STEPGEN_MAXVEL

# connect position commands from motion module to step generator
net Xpos-cmd axis.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd axis.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd axis.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
#net Apos-cmd axis.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd

# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => axis.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => axis.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => axis.2.motor-pos-fb
#net Apos-fb hm2_5i20.0.stepgen.03.position-fb => axis.3.motor-pos-fb

# connect enable signals for step generators
net Xen axis.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen axis.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen axis.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
#net Aen axis.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable

# enable velocity mode jogging
net Enable axis.0.jog-vel-mode
net Enable axis.1.jog-vel-mode
net Enable axis.2.jog-vel-mode
#net Enable axis.3.jog-vel-mode

# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable

# enable the charge pump
net Enable => charge-pump.enable

# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out

# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on

#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.032.in => axis.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.034.in => axis.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in => axis.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in => axis.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.024.in_not => axis.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.026.in_not => axis.2.neg-lim-sw-in

#connect positive limit signals to home inputs
net Xmax => axis.0.home-sw-in
net Ymax => axis.1.home-sw-in
net Zmax => axis.2.home-sw-in

# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out

# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net VFDOK hm2_5i20.0.gpio.031.in_not
#net AHOME hm2_5i20.0.gpio.031.in axis.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold

# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV1 hm2_5i20.0.gpio.025.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.027.in_not
net DRV4 hm2_5i20.0.gpio.038.in_not

# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 motion.spindle-reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 motion.spindle-on => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood

# Mist 
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist

# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
addf hm2_5i20.0.read_gpio servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
addf hm2_5i20.0.write_gpio servo-thread
# pet the watchdog so he won't bite us!
addf hm2_5i20.0.pet_watchdog servo-thread
# toggle the charge pump
addf charge-pump servo-thread