From 2790280c4a380188e00fa243cd1ed4b77128b142 Mon Sep 17 00:00:00 2001 From: Hakan Bastedt Date: Tue, 26 Dec 2023 18:24:03 +0100 Subject: [PATCH] Added linuxcnc files --- Pcb-1-lan9252/linuxcnc/Turner.hal | 199 ++++++++++++++++++ Pcb-1-lan9252/linuxcnc/ethercat-conf.xml | 82 ++++++++ .../linuxcnc/metalmusings_encoder.comp | 24 +++ 3 files changed, 305 insertions(+) create mode 100644 Pcb-1-lan9252/linuxcnc/Turner.hal create mode 100644 Pcb-1-lan9252/linuxcnc/ethercat-conf.xml create mode 100644 Pcb-1-lan9252/linuxcnc/metalmusings_encoder.comp diff --git a/Pcb-1-lan9252/linuxcnc/Turner.hal b/Pcb-1-lan9252/linuxcnc/Turner.hal new file mode 100644 index 0000000..a009a81 --- /dev/null +++ b/Pcb-1-lan9252/linuxcnc/Turner.hal @@ -0,0 +1,199 @@ +# Generated by PNCconf at Sat Sep 10 10:10:56 2016 +# If you make changes to this file, they will be +# overwritten when you run PNCconf again + +loadrt [KINS]KINEMATICS +#autoconverted trivkins +loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS + +loadusr -W lcec_conf ethercat-conf.xml +loadrt lcec +loadrt cia402 count=2 +loadrt metalmusings_encoder + +addf lcec.read-all servo-thread +addf cia402.0.read-all servo-thread +addf cia402.1.read-all servo-thread +addf metalmusings-encoder.0 servo-thread +addf motion-command-handler servo-thread +addf motion-controller servo-thread + +#******************* +# AXIS X +#******************* + +# --- joint signals for motion + +net x-pos-cmd <= joint.0.motor-pos-cmd +net x-vel-cmd <= joint.0.vel-cmd +net x-pos-fb <= joint.0.motor-pos-fb +net x-enable <= joint.0.amp-enable-out + +# --- connect stepper driver to joint + +net x-pos-cmd => cia402.0.pos-cmd +net x-pos-fb => cia402.0.pos-fb +net x-enable => cia402.0.enable + +# --- ect60 settings + +setp cia402.0.csp-mode 1 +setp cia402.0.pos-scale 5000 + +# --- from stepper(ethercat) to cia402 + +net x-statusword lcec.0.4.cia-statusword => cia402.0.statusword +net x-opmode-display lcec.0.4.opmode-display => cia402.0.opmode-display +net x-drv-act-pos lcec.0.4.actual-position => cia402.0.drv-actual-position +net x-drv-act-velo lcec.0.4.actual-velocity => cia402.0.drv-actual-velocity + +# --- from cia402 to stepper(ethercat) + +net x-controlword cia402.0.controlword => lcec.0.4.cia-controlword +net x-modes-of-operation cia402.0.opmode => lcec.0.4.opmode +net x-drv-target-pos cia402.0.drv-target-position => lcec.0.4.target-position +net x-drv-target-velo cia402.0.drv-target-velocity => lcec.0.4.target-velocity + +#******************* +# AXIS Z +#******************* + +# --- joint signals for motion + +net z-pos-cmd <= joint.1.motor-pos-cmd +net z-vel-cmd <= joint.1.vel-cmd +net z-pos-fb <= joint.1.motor-pos-fb +net z-enable <= joint.1.amp-enable-out + +# --- connect stepper driver to the joint + +net z-pos-cmd => cia402.1.pos-cmd +net z-pos-fb => cia402.1.pos-fb +net z-enable => cia402.1.enable + +# --- ect60 settings + +setp cia402.1.csp-mode 1 +setp cia402.1.pos-scale 2000 + +# --- from servo(ethercat) to cia402 + +net z-statusword lcec.0.5.cia-statusword => cia402.1.statusword +net z-opmode-display lcec.0.5.opmode-display => cia402.1.opmode-display +net z-drv-act-pos lcec.0.5.actual-position => cia402.1.drv-actual-position +net z-drv-act-velo lcec.0.5.actual-velocity => cia402.1.drv-actual-velocity + +# --- from cia402 to servo(ethercat) + +net z-controlword cia402.1.controlword => lcec.0.5.cia-controlword +net z-modes-of-operation cia402.1.opmode => lcec.0.5.opmode +net z-drv-target-pos cia402.1.drv-target-position => lcec.0.5.target-position +net z-drv-target-velo cia402.1.drv-target-velocity => lcec.0.5.target-velocity + +#********************* +# E-STOP +#********************* + +setp iocontrol.0.emc-enable-in 1 +#net estop iocontrol.0.emc-enable-in lcec.0.1.din-0 + +#setp lcec.0.3.enc-pos-scale [SPINDLE_9]ENCODER_SCALE +setp lcec.0.6.enc-pos-scale [SPINDLE_9]ENCODER_SCALE + +#net spindle-revs <= lcec.0.3.enc-pos +net spindle-revs <= lcec.0.6.enc-position +loadrt invert +loadrt mult2 names=mult2.rps,mult2.rpm +addf invert.0 servo-thread +addf mult2.rps servo-thread +addf mult2.rpm servo-thread + +setp invert.0.in [SPINDLE_9]ENCODER_SCALE +setp mult2.rpm.in0 -60.0 +setp mult2.rpm.in0 60.0 +#net enc-invert-pos-scale mult2.rps.in0 <= invert.0.out +#net enc-get-freq-rps mult2.rps.in1 <= lcec.0.3.enc-frequency +#net spindle-vel-fb-rps mult2.rpm.in1 <= mult2.rps.out +#net spindle-vel-fb-rpm mult2.rpm.out +#net spindle-index-enable lcec.0.3.enc-index-c-enable + +net spindle-vel-fb-rps mult2.rpm.in1 <= lcec.0.6.enc-frequency +net spindle-vel-fb-rpm mult2.rpm.out + +net to_encoder metalmusings-encoder.0.index-latch-enable lcec.0.6.enc-index-latch-enable +net from_encoder metalmusings-encoder.0.index-status lcec.0.6.index-status +net spindle-index-enable metalmusings-encoder.0.index-c-enable + +# ---setup spindle control signals--- + +net spindle-vel-cmd-rps <= spindle.0.speed-out-rps +net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs +net spindle-vel-cmd-rpm <= spindle.0.speed-out +net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs +net spindle-enable <= spindle.0.on +net spindle-cw <= spindle.0.forward +net spindle-ccw <= spindle.0.reverse +net spindle-brake <= spindle.0.brake +net spindle-revs => spindle.0.revs +net spindle-at-speed => spindle.0.at-speed +net spindle-vel-fb-rps => spindle.0.speed-in +net spindle-index-enable <=> spindle.0.index-enable + + +#****************************** +# connect miscellaneous signals +#****************************** + +# ---HALUI signals--- + +net joint-select-a halui.axis.x.select +net x-is-homed halui.joint.0.is-homed +net jog-x-pos halui.axis.x.plus +net jog-x-neg halui.axis.x.minus +net jog-x-analog halui.axis.x.analog +net joint-select-b halui.axis.z.select +net z-is-homed halui.joint.1.is-homed +net jog-z-pos halui.axis.z.plus +net jog-z-neg halui.axis.z.minus +net jog-z-analog halui.axis.z.analog +net jog-selected-pos halui.axis.selected.plus +net jog-selected-neg halui.axis.selected.minus +net spindle-manual-cw halui.spindle.0.forward +net spindle-manual-ccw halui.spindle.0.reverse +net spindle-manual-stop halui.spindle.0.stop +net machine-is-on halui.machine.is-on +net jog-speed halui.axis.jog-speed +net MDI-mode halui.mode.is-mdi + +# ---coolant signals--- + +net coolant-mist <= iocontrol.0.coolant-mist +net coolant-flood <= iocontrol.0.coolant-flood + +# ---probe signal--- + +net probe-in => motion.probe-input + +# ---motion control signals--- + +net in-position <= motion.in-position +net machine-is-enabled <= motion.motion-enabled + +# ---digital in / out signals--- + +# ---estop signals--- + +net estop-out <= iocontrol.0.user-enable-out +net estop-ext => iocontrol.0.emc-enable-in + +# ---manual tool change signals--- + +loadusr -W hal_manualtoolchange +#net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change +#net tool-change-confirmed 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 + +addf cia402.0.write-all servo-thread +addf cia402.1.write-all servo-thread +addf lcec.write-all servo-thread diff --git a/Pcb-1-lan9252/linuxcnc/ethercat-conf.xml b/Pcb-1-lan9252/linuxcnc/ethercat-conf.xml new file mode 100644 index 0000000..1a22ebb --- /dev/null +++ b/Pcb-1-lan9252/linuxcnc/ethercat-conf.xml @@ -0,0 +1,82 @@ + + +# +# +# +# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pcb-1-lan9252/linuxcnc/metalmusings_encoder.comp b/Pcb-1-lan9252/linuxcnc/metalmusings_encoder.comp new file mode 100644 index 0000000..19b9142 --- /dev/null +++ b/Pcb-1-lan9252/linuxcnc/metalmusings_encoder.comp @@ -0,0 +1,24 @@ +component metalmusings_encoder; +pin io bit index-c-enable; +pin in u32 index-status; +pin out u32 index-latch-enable; + +function _; +license "GPL"; +;; + +// general pin set true function +void set(hal_bit_t *p){ + *p = 1; +} + +// general pin set false function +void unset(hal_bit_t *p){ + *p = 0; +} + +//main function +FUNCTION(_) { + index_latch_enable = index_c_enable; + index_c_enable = index_status; +}