summaryrefslogtreecommitdiff
path: root/configs/by_machine/smithy/1315.hal
blob: 6d831e9dd9ccbac5361ae898d5b6bc29fef959b9 (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
# 5i20 config file for Smithy 1315 Lathe

# 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=2 num_pwmgens=1 num_stepgens=2 enable_raw"

# 13312 = 0x3400 = Encoder Sample Rate Register
setp hm2_5i20.0.raw.write_address 13312
# sample rate is clock (33 MHz)/SRR+2 = 33MHz/10 = 3.3MHz
setp hm2_5i20.0.raw.write_data 8
# write data
setp hm2_5i20.0.raw.write_strobe 1

# 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

# classicladder for machine logic
# (load the realtime portion)
loadrt classicladder_rt
# invoke the user part of CL to silently load the program
loadusr -w classicladder --nogui 924.clp

# load charge pump
loadrt charge_pump
setp charge-pump.enable TRUE

#configure the spindle encoder
#encoder scale was 4800 on Pete's machine
setp hm2_5i20.0.encoder.00.scale -4096
net Spos hm2_5i20.0.encoder.00.position motion.spindle-revs
net Svel hm2_5i20.0.encoder.00.velocity motion.spindle-speed-in
net Sidx hm2_5i20.0.encoder.00.index-enable motion.spindle-index-enable

#configure the spindle speed PWM generator
net Scmd motion.spindle-speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 3000
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

# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup        5000
setp hm2_5i20.0.stepgen.00.dirhold         2000
setp hm2_5i20.0.stepgen.00.steplen         2000
setp hm2_5i20.0.stepgen.00.stepspace       2000
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         2000
setp hm2_5i20.0.stepgen.01.steplen         2000
setp hm2_5i20.0.stepgen.01.stepspace       2000
setp hm2_5i20.0.stepgen.01.position-scale  [AXIS_2]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel        [AXIS_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel          [AXIS_2]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 Zpos-cmd axis.2.motor-pos-cmd hm2_5i20.0.stepgen.01.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 Zpos-fb hm2_5i20.0.stepgen.01.position-fb axis.2.motor-pos-fb

# connect enable signals for amplifiers and step generators
setp hm2_5i20.0.gpio.018.is_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
setp hm2_5i20.0.gpio.019.is_output TRUE
setp hm2_5i20.0.gpio.019.invert_output TRUE
net Xen axis.0.amp-enable-out hm2_5i20.0.gpio.018.out hm2_5i20.0.stepgen.00.enable
net Zen axis.2.amp-enable-out hm2_5i20.0.gpio.019.out hm2_5i20.0.stepgen.01.enable

# enable velocity mode jogging
setp axis.0.jog-vel-mode TRUE
setp axis.2.jog-vel-mode TRUE

# enable the PWM generator
setp hm2_5i20.0.pwmgen.00.enable TRUE

# 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
loadrt debounce cfg=1
setp debounce.0.delay 1000
net key-on hm2_5i20.0.gpio.039.in_not debounce.0.0.in
net machine-on debounce.0.0.out halui.machine.on

# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold

#connect limit/home switches
#Brown Wire - Was Zhome, now Xpos
net Xpos_lim hm2_5i20.0.gpio.024.in axis.0.pos-lim-sw-in axis.0.home-sw-in
#Brown/White Wire - Was Xhome, now Xneg
net Xneg_lim hm2_5i20.0.gpio.026.in axis.0.neg-lim-sw-in
#Green Wire - Was XZpos, now Zpos
net Zpos_lim hm2_5i20.0.gpio.028.in axis.2.pos-lim-sw-in axis.2.home-sw-in
#Green/White Wire - Was XZneg, now Zneg
net Zneg_lim hm2_5i20.0.gpio.030.in axis.2.neg-lim-sw-in

#Tool Post Control Inputs
net PrepNo iocontrol.0.tool-prep-number classicladder.0.s32in-00
net TC iocontrol.0.tool-change classicladder.0.in-00
net T1 hm2_5i20.0.gpio.032.in classicladder.0.in-01
net T2 hm2_5i20.0.gpio.034.in classicladder.0.in-02
net T3 hm2_5i20.0.gpio.036.in classicladder.0.in-03
net T4 hm2_5i20.0.gpio.038.in classicladder.0.in-04
net TP iocontrol.0.tool-prepare classicladder.0.in-05

#Door Sensor
net SS hm2_5i20.0.gpio.029.in

#Output Bits
#AIN
#setp hm2_5i20.0.gpio.041.is_output TRUE
#setp hm2_5i20.0.gpio.041.invert_output TRUE
#KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 motion.spindle-forward 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-reverse hm2_5i20.0.gpio.042.out
#Tool Post Control Outputs
net TD classicladder.0.out-00 iocontrol.0.tool-changed
net TQ classicladder.0.out-03 iocontrol.0.tool-prepared
#KA3
setp hm2_5i20.0.gpio.044.is_output TRUE
setp hm2_5i20.0.gpio.044.invert_output TRUE
net KA3 hm2_5i20.0.gpio.044.out classicladder.0.out-01
#KA4
setp hm2_5i20.0.gpio.046.is_output TRUE
setp hm2_5i20.0.gpio.046.invert_output TRUE
net KA4 hm2_5i20.0.gpio.046.out classicladder.0.out-02
#Spindle Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
setp hm2_5i20.0.gpio.041.out TRUE
#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 Coolant
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
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# debounce the keyswitch
addf debounce.0 servo-thread
# refresh classicladder
addf classicladder.0.refresh servo-thread
# write outputs
addf hm2_5i20.0.write 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