blob: 1eb8b191ceaa8965ea32cc1d1258bf6ec5eab25d (
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
|
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]SERVO_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[TRAJ]AXES
loadrt stepgen step_type=0,0,0
loadrt charge_pump
loadrt watchdog num_inputs=1
loadrt and2 count=1
loadrt edge count=1
loadusr -W hal_manualtoolchange
# Base thread
addf stepgen.make-pulses base-thread
# Servo thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf charge-pump servo-thread
addf watchdog.process servo-thread
addf watchdog.set-timeouts servo-thread
addf and2.0 servo-thread
addf edge.0 servo-thread
# Spindle control
net spindle-cw <= motion.spindle-forward
net spindle-ccw <= motion.spindle-reverse
# Coolant control
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# Out-heartbeat generator
setp charge-pump.enable 1
net heartbeat <= charge-pump.out-4
# In-heartbeat watchdog
setp edge.0.both 0
setp edge.0.in-edge 1 # falling
setp edge.0.out-width-ns 500000000
net emc-enable => edge.0.in
net watchdog-en edge.0.out-invert => watchdog.enable-in
setp watchdog.timeout-0 0.5
net awlsim-heartbeat => watchdog.input-0
net watchdog-ok <= watchdog.ok-out
# Emergency stop logic
net estop-out-not <= iocontrol.0.user-enable-out
net estop-in-not => and2.0.in0
net watchdog-ok => and2.0.in1
net emc-enable and2.0.out => iocontrol.0.emc-enable-in
# Manual tool change
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
# X joint
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen [STEPCONF]STEPLEN
setp stepgen.0.stepspace [STEPCONF]STEPSPACE
setp stepgen.0.dirhold [STEPCONF]DIRHOLD
setp stepgen.0.dirsetup [STEPCONF]DIRSETUP
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
net home-x => axis.0.home-sw-in
net limit-x => axis.0.neg-lim-sw-in
net limit-x => axis.0.pos-lim-sw-in
# Y joint
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen [STEPCONF]STEPLEN
setp stepgen.1.stepspace [STEPCONF]STEPSPACE
setp stepgen.1.dirhold [STEPCONF]DIRHOLD
setp stepgen.1.dirsetup [STEPCONF]DIRSETUP
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
net home-y => axis.1.home-sw-in
net limit-y => axis.1.neg-lim-sw-in
net limit-y => axis.1.pos-lim-sw-in
# Z joint
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen [STEPCONF]STEPLEN
setp stepgen.2.stepspace [STEPCONF]STEPSPACE
setp stepgen.2.dirhold [STEPCONF]DIRHOLD
setp stepgen.2.dirsetup [STEPCONF]DIRSETUP
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net home-z => axis.2.home-sw-in
net limit-z => axis.2.neg-lim-sw-in
net limit-z => axis.2.pos-lim-sw-in
|