Search Results (Searched for: stepper spindle)
Spindle Situation
Category: Advanced Configuration
Hey how's it going spumco. So I've had the opportunity to receive a few items in the mail of which include: A Mesa 7i96s control board, a U3K driver, and an AMT312Q CUI encoder. With the board I've had the chance to mess around and have it spinning a stepper and have an input pin receiving a limit switch signal, so all is dandy there so far. Both the U3K and the encoder I received in the mail just a few hours ago so haven't had the chance to energize U3K or anything yet (It was used but I trust the seller). But with the encoder I thought that I was just going to be able to use some leftover JAE molex looking crimped ended wires and insert them into the connector housing then solder them onto a length of cat5 or an old usb cable and make a wire harness that would reach to the back of the cabinet. That turned out to not be the case. The CUI encoder uses some strange end-crimps because all the ones I have won’t fit into the connector housing. I was going to buy the cable and actually they should have included one with the encoder but it appears they are trying to milk peoples wallets by charging almost as much for the special cable as they do for the encoder alone. Do you know what those end crimps are called that goto those encoders? It doesn’t say anywhere what they are other than JAE connector of some kind? I’m thinking of buying one of the AMT One Touch Zero modules and just steeling the cable off of it after zeroing the encoder. Pluss the module has a nice molex connector on it already and I’m pretty good at crimping Molex. What would you recommend I do? Thanks
Need help in choosing controller board from small honby cnc.
Category: Driver Boards
At last stepper is spinning. Had problem with limit switches so added invert = true in config.txt.
But still to be used on machine I had to make many changes.
1. How to add probe? PC_5 pin.
2. Estop to PF_3
3 Spindle to PB_7 (I want PWM output on PB_7)
(Cheap chinese spindle, No Spindle Start or direction only PWM)
PWM 0 is Stop PWM 255 is Full RPM)
4. Last but not least, nice GUI
strugling with qtdragon.
5. user_command file xxxxxx_800.py is giving errors. so I commented out in ini file.
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
I have flashed an RT1052 based NVEM (Marked V5) with the remora-rt1052-3.1.2.bin firmware and uploaded the nvem-rt1052.txt config file to it (minus the NVMPG component).
On boot the debug port shows:
Initializing PHY...
## Entering SETUP state
1. Loading JSON configuration file from Flash memory
2. Parsing JSON configuration file
Config deserialisation - Deserialization succeeded
3. Board Type: NVEM
4. Configuring threads
Creating timer ISR thread 40000
Creating timer ISR thread 1000
Creating DMA thread 500000
5. Loading modules
Creating a std module
Creating an Ethernet communication monitoring module
Creating Pin @
port = GPIO3
pin = 0
Base thread object
X - Joint 0 step generator
Creating a std module
Creating Pin @
port = GPIO1
pin = 22
Creating Pin @
port = GPIO1
pin = 17
Base thread object
Y - Joint 1 step generator
Creating a std module
Creating Pin @
port = GPIO1
pin = 24
Creating Pin @
port = GPIO1
pin = 31
Base thread object
Z - Joint 2 step generator
Creating a std module
Creating Pin @
port = GPIO1
pin = 18
Creating Pin @
port = GPIO1
pin = 25
Base thread object
A - Joint 3 step generator
Creating a std module
Creating Pin @
port = GPIO1
pin = 27
Creating Pin @
port = GPIO1
pin = 21
Base thread object
B - Joint 4 step generator
Creating a std module
Creating Pin @
port = GPIO1
pin = 16
Creating Pin @
port = GPIO1
pin = 23
Base thread object
C - Joint 5 step generator
Creating a std module
Creating Pin @
port = GPIO1
pin = 20
Creating Pin @
port = GPIO1
pin = 19
Servo thread object
FHA
Make Digital Input at pin P3_26
Creating a std module
Creating Pin @
port = GPIO3
pin = 26
Servo thread object
FHB
Make Digital Input at pin P4_30
Creating a std module
Creating Pin @
port = GPIO4
pin = 30
Servo thread object
SRO
Make Digital Input at pin P3_19
Creating a std module
Creating Pin @
port = GPIO3
pin = 19
Servo thread object
SRJ
Make Digital Input at pin P4_20
Creating a std module
Creating Pin @
port = GPIO4
pin = 20
Servo thread object
IN01
Make Digital Input at pin P4_26
Creating a std module
Creating Pin @
port = GPIO4
pin = 26
Servo thread object
IN02
Make Digital Input at pin P4_27
Creating a std module
Creating Pin @
port = GPIO4
pin = 27
Servo thread object
IN03
Make Digital Input at pin P4_21
Creating a std module
Creating Pin @
port = GPIO4
pin = 21
Servo thread object
IN04
Make Digital Input at pin P4_24
Creating a std module
Creating Pin @
port = GPIO4
pin = 24
Servo thread object
IN05
Make Digital Input at pin P4_28
Creating a std module
Creating Pin @
port = GPIO4
pin = 28
Servo thread object
IN06
Make Digital Input at pin P4_25
Creating a std module
Creating Pin @
port = GPIO4
pin = 25
Servo thread object
IN07
Make Digital Input at pin P4_29
Creating a std module
Creating Pin @
port = GPIO4
pin = 29
Servo thread object
IN08
Make Digital Input at pin P4_23
Creating a std module
Creating Pin @
port = GPIO4
pin = 23
Servo thread object
IN09
Make Digital Input at pin P4_31
Creating a std module
Creating Pin @
port = GPIO4
pin = 31
Servo thread object
IN10
Make Digital Input at pin P3_18
Creating a std module
Creating Pin @
port = GPIO3
pin = 18
Servo thread object
IN11
Make Digital Input at pin P3_21
Creating a std module
Creating Pin @
port = GPIO3
pin = 21
Servo thread object
IN12
Make Digital Input at pin P3_20
Creating a std module
Creating Pin @
port = GPIO3
pin = 20
Servo thread object
CIN
Make Digital Input at pin P4_18
Creating a std module
Creating Pin @
port = GPIO4
pin = 18
Servo thread object
XIN
Make Digital Input at pin P4_17
Creating a std module
Creating Pin @
port = GPIO4
pin = 17
Servo thread object
YIN
Make Digital Input at pin P4_16
Creating a std module
Creating Pin @
port = GPIO4
pin = 16
Servo thread object
ZIN
Make Digital Input at pin P4_15
Creating a std module
Creating Pin @
port = GPIO4
pin = 15
Servo thread object
AIN
Make Digital Input at pin P4_14
Creating a std module
Creating Pin @
port = GPIO4
pin = 14
Servo thread object
X100IN
Make Digital Input at pin P4_13
Creating a std module
Creating Pin @
port = GPIO4
pin = 13
Servo thread object
X10IN
Make Digital Input at pin P4_12
Creating a std module
Creating Pin @
port = GPIO4
pin = 12
Servo thread object
EP
Make Digital Input at pin P4_11
Creating a std module
Creating Pin @
port = GPIO4
pin = 11
Servo thread object
INDEX
Make Digital Input at pin P3_22
Creating a std module
Creating Pin @
port = GPIO3
pin = 22
Servo thread object
WHA
Make Digital Input at pin P3_16
Creating a std module
Creating Pin @
port = GPIO3
pin = 16
Servo thread object
WHB
Make Digital Input at pin P3_17
Creating a std module
Creating Pin @
port = GPIO3
pin = 17
Servo thread object
OT01
Make Digital Output at pin P4_01
Creating a std module
Creating Pin @
port = GPIO4
pin = 1
Servo thread object
OT02
Make Digital Output at pin P4_02
Creating a std module
Creating Pin @
port = GPIO4
pin = 2
Servo thread object
OT03
Make Digital Output at pin P4_03
Creating a std module
Creating Pin @
port = GPIO4
pin = 3
Servo thread object
OT04
Make Digital Output at pin P4_04
Creating a std module
Creating Pin @
port = GPIO4
pin = 4
Servo thread object
OT05
Make Digital Output at pin P4_05
Creating a std module
Creating Pin @
port = GPIO4
pin = 5
Servo thread object
OT06
Make Digital Output at pin P4_06
Creating a std module
Creating Pin @
port = GPIO4
pin = 6
Servo thread object
OT07
Make Digital Output at pin P4_07
Creating a std module
Creating Pin @
port = GPIO4
pin = 7
Servo thread object
OT08
Make Digital Output at pin P4_08
Creating a std module
Creating Pin @
port = GPIO4
pin = 8
Servo thread object
OT09
Make Digital Output at pin P4_09
Creating a std module
Creating Pin @
port = GPIO4
pin = 9
Servo thread object
OT10
Make Digital Output at pin P4_10
Creating a std module
Creating Pin @
port = GPIO4
pin = 10
Servo thread object
Spindle PWM
Creating a std module
## Entering START state
Starting the BASE thread
Registering interrupt for interrupt number = 100
configuring Timer 1
timer started
Starting the SERVO thread
Registering interrupt for interrupt number = 101
configuring Timer 2
timer started
## Entering IDLE state
I install the remora-eth-3.0.c component and can start Linuxcnc using the remora-rt1052-basic profile (having changed the hal file to use remora-eth3.0 module rather than the (old?) remora-nv module).
I can then connect linuxcnc to the NVEM and one of the LED's on the NVEM board turns on or off depending on if I enable or disable linuxcnc.
But when I try to move the x or y stepper nothing happens. Also if I view the remora.inputs I do not see any changes in response to pulling the inputs to gnd. If I look at the remora.status using the hal viewer it shows the board as connected. If I look at the remora counters using the HAL viewer I can see them incrementing.
So on the face of it it looks like the board is connected but not actually doing anything.
So what have I missed?
Note: I am assuming the remora.inputs should be updated in the hal viewer even if the hal file was wrong.
Spindle with step/dir stops at 480rpm
Category: Basic Configuration
I am using a raspberry pi 5 with a cheap chinese 5axis BOB, got my steppers and limitswitches working as they should, but setting up the servo has me stumped. Servo is set up in velocity mode in hal. For some reason stepgen is limited to 8000steps a second, the servo has 1000 steps pr rotation. Servo does the commanded speed perfect up to 480 but I cant get it to go faster and cant find where the limits on the stepgen is. I have tried to change steplen, stepspace, dirhold, dirsetup velocity and scale, scale affects the motor speed up to 480 but there it stops, I cant see any difference in the other settings.
If I enable maxvel in hal i get an error message saying stepgen is limited to 8000steps pr second. Is there any way I can change this?
Spindle Situation
Category: Advanced Configuration
mesaCT, 7i95t and SPINx
Category: Basic Configuration
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
The default config within the firmware has only three step generators configured. You will need to upload a config, but strange you are getting timeouts..I have read the full thread, wiki and looked at git hub and there are a number of things I am still confused about due to conflicting information.
I am using a standard LinuxCNC distro on an i5 PC. I have erased and programmed an NVEM V5 board (RT1052) using pyocd and the remora-rt1052-NVEM-0.2.1.bin and the board responds to pings at 10.10.10.10.
I cannot upload a config to the remora board due to time outs, but I understand this is to be expected as the firmware has a full config built-in - is this correct or is this the root cause of my issues?
The board outputs the following via the debug port on boot:
Initializing PHY...
## Entering SETUP state
## Entering START state
Starting the threads
## Entering IDLE state
I have installed the remora components (remora-eth, remora-nv, remora-nvmpg) into LinuxCNC and I copied various remora configs to my config directory.
Satrting LinuxCNC and using the remova-nv config I can get the x & y steppers to sort of move but I cannot see any inputs change state (I have tried all of them). In the HAL viewer I can see the Remora status as OK and both the servo-thread.time /remora.update-frq.time are updating.
Ultimately I want to set this up for a lathe with x,y and spindle control but for now it is sitting on my desk with two steppers and some switches wired up to the inputs.
So my questions are:
1: have I flashed the correct firmware?
2: do I need to upload a config file to the NVEM - if so why would I get a timeout (this is mentioned by someone else in an earlier post)?
3: If the above is OK why can I not see any input changes?
4: Do anyone have a Lathe config as a starting point?
Thanks in advance
3040T and Y axis shift
Category: General LinuxCNC Questions
And what microstepping are they set?
3040T and Y axis shift
Category: General LinuxCNC Questions
Some time ago I've upgraded my 3040. I've replaced all electronics and now I'm using hy-jk02-m bob + 4xTB6600. Stepper motors are still original Anchuan 57hd0401 1.8deg 2A.I've also upgraded spindle to 2.2kw driven by hy inverter. Only one Power supply for motors is 24v 20A. Currently I've got an issue with Y axis. I've tried to cut different size of squares in plywood. Everything went OK, after measuring difference was that small so I can take it as a measure error. In one of the tests I've cut 30x30 square and then I've tried to cut it diagonally. Unfortunately I've noticed shift during cutting in X+Y - direction. Because of that axis is shifted. I'm not sure what's is wrong. Mechanically I cannot see any issue with coupler or driving nut. I made a video from this test. Please have a look here :
Efect in attachment
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
I am using a standard LinuxCNC distro on an i5 PC. I have erased and programmed an NVEM V5 board (RT1052) using pyocd and the remora-rt1052-NVEM-0.2.1.bin and the board responds to pings at 10.10.10.10.
I cannot upload a config to the remora board due to time outs, but I understand this is to be expected as the firmware has a full config built-in - is this correct or is this the root cause of my issues?
The board outputs the following via the debug port on boot:
Initializing PHY...
## Entering SETUP state
## Entering START state
Starting the threads
## Entering IDLE state
I have installed the remora components (remora-eth, remora-nv, remora-nvmpg) into LinuxCNC and I copied various remora configs to my config directory.
Satrting LinuxCNC and using the remova-nv config I can get the x & y steppers to sort of move but I cannot see any inputs change state (I have tried all of them). In the HAL viewer I can see the Remora status as OK and both the servo-thread.time /remora.update-frq.time are updating.
Ultimately I want to set this up for a lathe with x,y and spindle control but for now it is sitting on my desk with two steppers and some switches wired up to the inputs.
So my questions are:
1: have I flashed the correct firmware?
2: do I need to upload a config file to the NVEM - if so why would I get a timeout (this is mentioned by someone else in an earlier post)?
3: If the above is OK why can I not see any input changes?
4: Do anyone have a Lathe config as a starting point?
Thanks in advance
Lichuan AC servos for axes and spindle
Category: PnCConf Wizard
- RPI 5 with Linuxcnc 2.9.2 on Debian bookworm
- Mesa 7i96s
- 2x 200W AC servos with A5 drives from Lichuan, for X and Z. Encoders are 17bit incremental type (why on earth did I not get the absolute ones when they were like 20 dollars more....)
- 1x 1000W AC servo with A5 drive from Lichuan, for spindle. Same encoder as for the 200W motors.
As far as I've understood, normal lathe use would indicate that i run the axis drives in position mode with step/dir inputs, and the spindle drive in speed mode, with -10- 10V analog input.
I believe that is what will be relevant info for the questions in this thread?- In the axis section of the pncconf wizard I am faced with some settings I have never encountered before, namely "step-on time", "space", "direction hold" and "direction setup". I have tried to read up on what they mean and how it relates to the information I am given in the servo drive manual. Among the numerous settings and points of information for the servo drives, I cannot find anything which is called the same or remotely the same as those parameters. Can I assume that my step high/low and pulse high/low times are identical, and that I can simply use the drives' maximum step frequency as a base for step-on time and space? It is stated as 1MHz in the manual. What about direction hold and direction setup, could someone please explain what they are? I am anxious of doing something bad to my new precious drivers and motors, so in case any wrong settings can hurt my drives, i just want to be on the safe side...
- Is there anything else I need to pay special attention to when using AC servos with step/dir inputs, instead of stepper motors? I see there are some unseleactable/uneditable tuning parameters (PID info) on the left; I thought I would be tuning the servos internally on the drives?
Link to servo motor with drive (200W version):
www.aliexpress.com/item/1005005440028771...ain.5.76c81802WfkwiM
Mill Project, Looking for driver Board advice
Category: Driver Boards
Currently there are three axis being used for motion and a fourth being used for rotating the toolchanger carousel, all are servos running analogue. I am considering removing the servo being used for the atc and replacing it with a stepper, so I can then use the servo as a fourth axis. The motion servos Amp seems to be capable of running step or ana, (or maybe not, see attached img from the servopack manual) but I know for sure that the fourth servo is ana only. This seems to lock me into using something like the 7I97T but I am also seeing daughter boards like the 7I36 that seem like they would allow me to use something else. so I am really wondering what Is the best way to use a mixed ana servo/stepper setup as far as mesa cards (if its even possible) or if its something I should just abandon and get another amp and servo in the future if I want to do fourth axis. I am also going to be needing a reasonably large amount of IO for the pneumatics system, six outputs at a minimum but more is better, so if I was going to use a daughter card it might be for that.
Another thing I am wondering about it the spindle, I am currently being shipped the documentation for my Spindle controller so I am unsure exactly how it interfaces with the motion controller But I see that some cards provide a dedicated option for the spindle while others don't. I am wondering if the spindle is going to take the place of one of the axis and how that works on one of the analogue cards.
in my ideal configuration it seems like its 5/6 axis (3motion+atc+4thaxis+spindle?) but the mesa card configuration that would achieve this is beyond my current understanding.
Appreciate any input, thanks.
Can not get stepper motors to move with Gecko g250x drivers
Category: PnCConf Wizard
I thought if I connected the V- (48v PSU) and COM (5v/12v PSU) to earth, I was potentially creating a Ground Loop, which I understood was potentially harmful to electronics. But I do realize that this means I have a floating ground.
So, I tied V- and COM to earth. However, this did not resolve the issue I am having.
I did find that my spindle contactor was closed as soon as I powered the system, so I have something misconfigured there.
Arcs / Circles not concentric
Category: General LinuxCNC Questions
I have encountered a (for me) rather strange issue that I, even after a day of experimenting, can't seem to fully understand.
I have a stepper-motor driven CNC that used to work marvelous for years until recently, when I decided to update the machine to LinuxCNC 2.9.1. That update gave me nothing but pain, i.e. latency increased by a factor of 10, my touch screen was no longer working, operation of gmoccapy was incredibly sluggish etc.
I was quite busy otherwise, so I simply ignored the problem for a while, stuck to operating the machine with an external keyboard and continued. Yesterday, I eventually had to mill some parts as part of an official project, so I decided I'd finally tackle the problem and tried the naive approach first, that is, updating to 2.9.2. That didn't do much at all, plus I discovered something completely different that has been bugging me every since: circles (or arcs, depending how you want to look at it) are no longer being milled concentric.
The arc/circle itself is fine, i.e. perfectly round, but given an arc and a circle with identical reference (center) points, they are slightly offset to each other. Naturally, I checked the DXF, both entities have the same center point - LinuxCNC also draws them correctly on top of each other when processing the GCODE. I also uploaded the code generated by my cam software to an online GCODE viewer, again, both entities are sitting on top of each other just fine.
Facing this new problem, I bit the bullet and downgraded back to 2.8.4, which resolved almost all of my problems, i.e. the touch screen works again, UI response time is instant and so on. It also made the actual issue better, out of 4 pairs of arcs/circles, only two pairs are now offset, and the offsets have become smaller in general. In general, we're talking of an absolute error distance of 1mm to 1.5mm though.
I'll attach the generated GCODE just in case someone wants to have a look at it, it's a really basic operation for a 6mm D - shaft encoder cap.
Maybe I'm coping here, but I somehow doubt that it's e.g. step loss since the machine worked in an identical configuration with precision for literally years (and is well maintained). The Gecko drivers, motors and power supply are definitely capable of driving the machine. Plus, I'm cutting decorative knobs out of wood here with a 2kW spindle, so nothing demanding. I'm also running Mesa interface cards. I'll run a few more ops and check position accuracy with a dial test indicator again, but so far, everything looked good.
Does anyone have any idea what I could check to narrow my problem down further? Any ideas, approaches, pointers would be appreciated.
Cheers,
James
Steppers work ok in pncconf tests but not with Axis
Category: AXIS
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_pci config="num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=00xxxx"
setp hm2_5i25.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
addf hm2_5i25.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf hm2_5i25.0.write servo-thread
# external output signals
# external input signals
# --- BOTH-X ---
net both-x <= hm2_5i25.0.7i76.0.0.input-00
# --- HOME-X ---
net home-x <= hm2_5i25.0.7i76.0.0.input-01
# --- BOTH-Y ---
net both-y <= hm2_5i25.0.7i76.0.0.input-02
# --- HOME-Y ---
net home-y <= hm2_5i25.0.7i76.0.0.input-03
# --- BOTH-Z ---
net both-z <= hm2_5i25.0.7i76.0.0.input-04
# --- HOME-Z ---
net home-z <= hm2_5i25.0.7i76.0.0.input-05
#*******************
# AXIS X JOINT 0
#*******************
setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500
net x-index-enable => pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-pos-fb => pid.x.feedback
net x-output <= pid.x.output
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp hm2_5i25.0.stepgen.00.dirhold [JOINT_0]DIRHOLD
setp hm2_5i25.0.stepgen.00.steplen [JOINT_0]STEPLEN
setp hm2_5i25.0.stepgen.00.stepspace [JOINT_0]STEPSPACE
setp hm2_5i25.0.stepgen.00.position-scale [JOINT_0]STEP_SCALE
setp hm2_5i25.0.stepgen.00.step_type 0
setp hm2_5i25.0.stepgen.00.control-type 1
setp hm2_5i25.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => hm2_5i25.0.stepgen.00.velocity-cmd
net x-pos-fb <= hm2_5i25.0.stepgen.00.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => hm2_5i25.0.stepgen.00.enable
# ---setup home / limit switch signals---
net home-x => joint.0.home-sw-in
net both-x => joint.0.neg-lim-sw-in
net both-x => joint.0.pos-lim-sw-in
#*******************
# AXIS Y JOINT 1
#*******************
setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500
net y-index-enable => pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-pos-fb => pid.y.feedback
net y-output <= pid.y.output
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp hm2_5i25.0.stepgen.01.dirhold [JOINT_1]DIRHOLD
setp hm2_5i25.0.stepgen.01.steplen [JOINT_1]STEPLEN
setp hm2_5i25.0.stepgen.01.stepspace [JOINT_1]STEPSPACE
setp hm2_5i25.0.stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp hm2_5i25.0.stepgen.01.step_type 0
setp hm2_5i25.0.stepgen.01.control-type 1
setp hm2_5i25.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => hm2_5i25.0.stepgen.01.velocity-cmd
net y-pos-fb <= hm2_5i25.0.stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_5i25.0.stepgen.01.enable
# ---setup home / limit switch signals---
net home-y => joint.1.home-sw-in
net both-y => joint.1.neg-lim-sw-in
net both-y => joint.1.pos-lim-sw-in
#*******************
# AXIS Z JOINT 2
#*******************
setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500
net z-index-enable => pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-pos-fb => pid.z.feedback
net z-output <= pid.z.output
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_5i25.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_5i25.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_5i25.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_5i25.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_5i25.0.stepgen.02.step_type 0
setp hm2_5i25.0.stepgen.02.control-type 1
setp hm2_5i25.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output => hm2_5i25.0.stepgen.02.velocity-cmd
net z-pos-fb <= hm2_5i25.0.stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => hm2_5i25.0.stepgen.02.enable
# ---setup home / limit switch signals---
net home-z => joint.2.home-sw-in
net both-z => joint.2.neg-lim-sw-in
net both-z => joint.2.pos-lim-sw-in
#******************************
# connect miscellaneous signals
#******************************
# ---HALUI signals---
net axis-select-x halui.axis.x.select
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 x-is-homed halui.joint.0.is-homed
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
net axis-select-z halui.axis.z.select
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 z-is-homed halui.joint.2.is-homed
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-out => 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
# Generated by PNCconf at Wed Apr 17 15:26:19 2024
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = my_LinuxCNC_machine
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = gmoccapy
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/jack/linuxcnc/nc_files
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 0.250000
MAX_LINEAR_VELOCITY = 1.000000
MIN_LINEAR_VELOCITY = 0.016670
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
GEOMETRY = xyz
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G20 G40 G90 G94 G97 G64 P0.001
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HMOT]
# **** This is for info only ****
CARD0=hm2_5i25.0
[HAL]
HALUI = halui
HALFILE = my_LinuxCNC_machine.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
MDI_COMMAND = G10 L20 P0 X0 ( Set X to zero )
MDI_COMMAND = G10 L20 P0 Y0 ( Set Y to zero )
MDI_COMMAND = G10 L20 P0 Z0 ( Set Z to zero )
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 0.23
MAX_LINEAR_VELOCITY = 2.25
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
MAX_VELOCITY = 2.25
MAX_ACCELERATION = 5.0
MIN_LIMIT = -19.0
MAX_LIMIT = 1.25
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 2.25
MAX_ACCELERATION = 5.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 2.81
STEPGEN_MAXACCEL = 6.25
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 5050
STEPSPACE = 5050
STEP_SCALE = 13546.666
MIN_LIMIT = -19.0
MAX_LIMIT = 1.25
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.066667
HOME_LATCH_VEL = 0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_SEQUENCE = 1
#******************************************
#******************************************
[AXIS_Y]
MAX_VELOCITY = 2.25
MAX_ACCELERATION = 5.0
MIN_LIMIT = -14.0
MAX_LIMIT = 1.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 2.25
MAX_ACCELERATION = 5.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 2.81
STEPGEN_MAXACCEL = 6.25
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 13546.666
MIN_LIMIT = -14.0
MAX_LIMIT = 1.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.066667
HOME_LATCH_VEL = 0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_SEQUENCE = 2
#******************************************
#******************************************
[AXIS_Z]
MAX_VELOCITY = 0.216666666667
MAX_ACCELERATION = 5.0
MIN_LIMIT = -17.0
MAX_LIMIT = 0.001
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 0.216666666667
MAX_ACCELERATION = 5.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 0.27
STEPGEN_MAXACCEL = 6.25
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = -13546.666
MIN_LIMIT = -17.0
MAX_LIMIT = 0.001
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.066667
HOME_LATCH_VEL = 0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_SEQUENCE = 0
#******************************************