159 lines
4.2 KiB
Plaintext
159 lines
4.2 KiB
Plaintext
# HAL config file for vismach simulation of a VMC
|
|
# This is quite a complex HAL file, and it is very unlikely any of it will be relevant to a real machine.
|
|
# All the HAL functions here are related to making the Vismach model look like a real machine to the other HAL files
|
|
# ie, this creates things like limit switches which would be driven by real hardware on a real machine.
|
|
|
|
# load the vismach model
|
|
loadusr -W ./vmcgui
|
|
|
|
loadrt wcomp names=xlim,ylim,zlim,armsw,drawsw,locksw
|
|
loadrt mux2 names=armpos,drawpos,lockpos,mux2.0
|
|
loadrt mux4 names=cardir
|
|
loadrt sum2 names=carpos,spindlepos
|
|
loadrt limit2 names=armlim,drawlim,locklim,spindlelim
|
|
|
|
addf xlim servo-thread
|
|
addf ylim servo-thread
|
|
addf zlim servo-thread
|
|
|
|
addf carpos servo-thread
|
|
addf cardir servo-thread
|
|
|
|
setp xlim.max 301
|
|
setp xlim.min -301
|
|
setp ylim.max 1
|
|
setp ylim.min -201
|
|
setp zlim.max 1
|
|
setp zlim.min -401
|
|
|
|
net x-pos-lim xlim.over
|
|
net x-neg-lim xlim.under
|
|
net y-pos-lim ylim.over
|
|
net y-neg-lim ylim.under
|
|
net z-pos-lim zlim.over
|
|
net z-neg-lim zlim.under
|
|
|
|
net x-pos xlim.in vmcgui.X
|
|
net y-pos ylim.in vmcgui.Y
|
|
net z-pos zlim.in vmcgui.Z
|
|
|
|
#simulated arm
|
|
setp vmcgui.arm -20
|
|
addf armpos servo-thread
|
|
addf armlim servo-thread
|
|
addf armsw servo-thread
|
|
setp armpos.in0 -20
|
|
setp armpos.in1 5
|
|
net arm-act armpos.sel
|
|
net arm-set armpos.out armlim.in
|
|
net arm-pos armlim.out armsw.in vmcgui.arm
|
|
setp armlim.max 5
|
|
setp armlim.min -20
|
|
setp armlim.maxv 20
|
|
setp armsw.max 4
|
|
setp armsw.min -19
|
|
net arm-out armsw.under
|
|
net arm-in armsw.over
|
|
|
|
#simulated carousel with 5 Gray-coded outputs
|
|
setp cardir.in0 0
|
|
setp cardir.in1 0.001
|
|
setp cardir.in2 -0.001
|
|
setp cardir.in3 0
|
|
net car-cw cardir.sel0
|
|
net car-ccw cardir.sel1
|
|
net car-dir cardir.out carpos.in0
|
|
net car-pos carpos.out carpos.in1 vmcgui.carousel
|
|
loadrt conv_float_u32
|
|
addf conv-float-u32.0 servo-thread
|
|
net car-pos conv-float-u32.0.in
|
|
loadrt bin2gray
|
|
addf bin2gray.0 servo-thread
|
|
net sim-pocket-u conv-float-u32.0.out bin2gray.0.in
|
|
loadrt bitslice personality=5
|
|
addf bitslice.0 servo-thread
|
|
net graycode bin2gray.0.out bitslice.0.in
|
|
|
|
net bit0 bitslice.0.out-00
|
|
net bit1 bitslice.0.out-01
|
|
net bit2 bitslice.0.out-02
|
|
net bit3 bitslice.0.out-03
|
|
net bit4 bitslice.0.out-04
|
|
|
|
|
|
# pulse and index output variant (untidy modmaths)
|
|
loadrt conv_s32_float count=2
|
|
loadrt conv_float_s32 count=3
|
|
loadrt near count=3
|
|
loadrt scale count=2
|
|
addf conv-s32-float.0 servo-thread
|
|
addf conv-float-s32.0 servo-thread
|
|
addf conv-s32-float.1 servo-thread
|
|
addf conv-float-s32.1 servo-thread
|
|
addf scale.0 servo-thread
|
|
addf near.1 servo-thread
|
|
addf near.2 servo-thread
|
|
net car-pos conv-float-s32.0.in
|
|
net car-pos-int conv-float-s32.0.out conv-s32-float.0.in
|
|
net car-pos-float conv-s32-float.0.out near.1.in2
|
|
net car-pos near.1.in1
|
|
net pulse near.1.out
|
|
setp near.1.difference 0.01
|
|
setp scale.0.gain 0.08333333
|
|
setp scale.0.offset -1 # to show-off index homing
|
|
net car-pos scale.0.in
|
|
net car-pos-div12 scale.0.out conv-float-s32.1.in
|
|
net car-pos-div12-int conv-float-s32.1.out conv-s32-float.1.in
|
|
net car-pos-div12-float conv-s32-float.1.out near.2.in2
|
|
net car-pos-div12 near.2.in1
|
|
net index near.2.out
|
|
setp near.2.difference 0.009
|
|
|
|
#simulated spindle
|
|
addf spindlepos servo-thread
|
|
addf spindlelim servo-thread
|
|
setp spindlelim.max 6000
|
|
setp spindlelim.min -6000
|
|
setp spindlelim.maxv 100
|
|
net spindle-cmd spindlelim.in
|
|
net spindle-vel spindlelim.out spindlepos.in0
|
|
setp spindlepos.gain0 .00001666
|
|
setp spindlepos.in1 0
|
|
net spindle-pos spindlepos.out spindlepos.in1 vmcgui.spindle
|
|
|
|
#simulated drawbar
|
|
setp vmcgui.drawbar 5
|
|
addf drawpos servo-thread
|
|
addf drawlim servo-thread
|
|
addf drawsw servo-thread
|
|
setp drawpos.in0 5
|
|
setp drawpos.in1 0
|
|
net tool-release drawpos.sel
|
|
net draw-set drawpos.out drawlim.in
|
|
setp drawlim.max 5
|
|
setp drawlim.min 0
|
|
setp drawlim.maxv 20
|
|
net draw-pos drawlim.out drawsw.in vmcgui.drawbar
|
|
setp drawsw.max 4
|
|
setp drawsw.min 1
|
|
net tool-locked drawsw.over
|
|
net tool-released drawsw.under
|
|
|
|
#simulated carousel lock
|
|
setp vmcgui.lock 5
|
|
addf lockpos servo-thread
|
|
addf locklim servo-thread
|
|
addf locksw servo-thread
|
|
setp lockpos.in0 0
|
|
setp lockpos.in1 5
|
|
net car-lock lockpos.sel
|
|
net lock-set lockpos.out locklim.in
|
|
setp locklim.max 5
|
|
setp locklim.min 0
|
|
setp locklim.maxv 20
|
|
net lock-pos locklim.out locksw.in vmcgui.lock
|
|
setp locksw.max 4
|
|
setp locksw.min 1
|
|
net car-locked locksw.over
|
|
net car-released locksw.under
|