Advanced Search

Search Results (Searched for: stepper spindle)

  • xenon-alien
  • xenon-alien's Avatar
17 Jan 2025 06:21 - 17 Jan 2025 07:02
Replied by xenon-alien on topic Carousel with step motor

Carousel with step motor

Category: Advanced Configuration

@spumco
Thanks for the information and the files!
But now i have just 1 sensor - the index (sense-0).
There are no pocket sensor for sense-1.
Need i put one more sensor for pocket?
I thought 1 sensor enough for a stepper type control mode to home the "axis" and the position of each tool is known.
Before there was a KFLOP system with tool change in the config file
[code][code]#include "KMotionDef.h"
#define TMP 10 // which spare persist to use to transfer data
#include "C:\KMotion434j\C Programs\KflopToKMotionCNCFunctions.c"
 
//-----------------------------------------
//      LINEAR TOOL CHANGING
//-----------------------------------------
#define AXISX 0
#define AXISY 1
#define AXISZ 2
#define AXISB 4
 
//---------Absolute position of tool holders
#define HOLDER_B_1 18.28
#define HOLDER_B_2 48.28
#define HOLDER_B_3 78.28
#define HOLDER_B_4 108.28
#define HOLDER_B_5 138.28
#define HOLDER_B_6 168.28
#define HOLDER_B_7 198.28
#define HOLDER_B_8 228.28
#define HOLDER_B_9 258.28
#define HOLDER_B_10 288.28
#define HOLDER_B_11 318.28
#define HOLDER_B_12 348.28

#define HOLDER_Y -151
#define HOLDER_Z -147.68
 
// absolute position of the tool height setting plate
#define SOFT_LIMIT_X_SHIFT_POS 700
#define SOFT_LIMIT_Y_SHIFT_POS -151 
 
// absolute position to move to that is permanently unobstructed, and safe to move down in Z
#define TOOL_CHANGE_SAFE_POS_X  753 
#define TOOL_CHANGE_SAFE_POS_Y -151
#define TOOL_CHANGE_POS_X 819.34  
#define TOOL_CHANGE_POS_Y -151 
#define AXIS_SAFE_DISTANCE_X 600  // distance in mm to approach tool holder
#define Z_1 -1
//---------
 
//--------- Spindle IO bits
#define CLAW_EJECT 52       // IO bit to eject tool from spindle (KONNECT OUTPUT 10)
#define SPINDLE_CLEAN 51    // IO bit to blow air out of spindle taper (KONNECT OUTPUT 11)
#define CLAW_LOOSE 1041     // IO bit to sense whether the claw has ejected (KONNECT INPUT 24)
#define TOOL_SENSE 1040 
#define CHENGER_OPENED 1042
#define CHENGER_CLOSED 1043
#define OPEN_CHENGER 58
#define CLOSE_CHENGER 59
    // IO bit to sense whether the a tool is in the spindle (KONNECT INPUT 24)
//---------
 
#define TOOL_VAR 9          // Tool changer desired new tool Var
 
// Tool changer Last tool loaded is saved globally in this Var
#define LAST_TOOL_VAR 8     //  -1=Spindle empty, 0=unknown, 1-12 Tool Slot loaded into Spindle
#define TOOL_DISK_FILE "C:\\KMotion434j\\C Programs\\User\\temp\\ToolChangerData.txt"
 
 
#define CLAMP_TIME 2.0      // seconds to wait for the clamp/unclamp
#define CHANGER_OPENING_TIME 2.0  // seconds to wait for the OPEN/CLOSE CHANGER
#define TOOL_HEIGHT_BIT 1055    //bit to read tool height plate (KONNECT INPUT 31)
 
#define SAFE_HEIGHT_Z 10 
#define SAFE_HEIGHT_Z1 100  // relative distance in mm to move to clear the top of the tool taper
#define TOOL_RETRACT_SPEED_Z 45.0    //speed in mm/second to move spindle up after tool has been ejected
 
#define SlowSpeed 150.0 //mm/sec
#define SlowSpeedB 80 //deg/sec 
#define Time_to_open 2 
float S=0;
[/code]
[/code]
[code][code]I hope the home-offset will be fine in my case

P.S.: My native language is not English and I'm a building engineer. So, the coding part a little difficult for me to understand. Never used those concepts such as velocity mode or position mode and how they differ, or other stuff.
But if there is an example, or description with images, schemes, it much more easier for me. (simple text reading is difficult to understand for me)
[/code][/code]
  • spumco
  • spumco
15 Jan 2025 21:28
Replied by spumco on topic Stepperonline A6 etherCAT servo kit anyone?

Stepperonline A6 etherCAT servo kit anyone?

Category: Computers and Hardware

I have found this combo and read somewhere that they are somehow rebranded Leadshine, they comes with a good documentation (For what I can understand). 


Late response, but the A6 series are rebranded Inovance SV660's.  The Ethercat version is SV660N.

Inovance offers both 17-bit and 23-bit encoder motors, but Stepperonline appears to only offer the 17-bit version.

Stepperonline's "T6" servos are rebranded Leadshine EL6's.  Looks like they've dropped the "T7" series of ethercat drives which were available last year.

Side note: From a couple YT vids I watched, Tormach appears to be using Inovance SV660N's in the MX1500.  They also appear to have made their own breakout board to use the SV660N's onboard IO, rather than buying (or building) a separate dedicated ethercat IO board.

No idea what the spindle drive is; maybe an Inovance ethercat VFD.

With four drives (X/Y/Z/ATC), this would give them 20 inputs and 12 outputs... not including assignable IO from the spindle drive.
  • nicton
  • nicton
15 Jan 2025 05:44

Can the stepgen LPT work in conjunction with the mesa card?

Category: General LinuxCNC Questions

Yes, You can do that. I have my old LPT machine were two steppers are still on the old "as is" Chinese beakout board. (z-Axis stepper driver died recently, so I moved that to Mesa as well)
One stepper (now two) , the Spindle, the Spindle Encoder and the MPG (handwheel are handled with the Mesa Card)

Greetings Timo

p.s. the simple reason for the "Frankenstein" was that I was too lazy to re-wire all the steppers and had no documentation for the stepper driver interface, so I kept the running 3 axis config and only added the "new functions, (damaged functions) to to the Mesa card.
 

Was it PCI or ethernet mesa, and what version of linux cnc?
  • timo
  • timo
14 Jan 2025 10:52 - 14 Jan 2025 11:01

Can the stepgen LPT work in conjunction with the mesa card?

Category: General LinuxCNC Questions

Yes, You can do that. I have my old LPT machine were two steppers are still on the old "as is" Chinese beakout board. (z-Axis stepper driver died recently, so I moved that to Mesa as well)
One stepper (now two) , the Spindle, the Spindle Encoder and the MPG (handwheel are handled with the Mesa Card)

Greetings Timo

p.s. the simple reason for the "Frankenstein" was that I was too lazy to re-wire all the steppers and had no documentation for the stepper driver interface, so I kept the running 3 axis config and only added the "new functions, (damaged functions) to to the Mesa card.
  • baikal718
  • baikal718
11 Jan 2025 21:38 - 11 Jan 2025 21:49

Pulling out my hair trying to set up a spindle on 7i96

Category: Basic Configuration

Hey, everyone.I'm doing a linuxcnc conversion on a ShopSabre 23 machine. Just got a 7i96 board in the mail and have been setting it up on my desk. It's been good so far, got the relays and endstops working. Unfortunately the spindle is giving me some trouble. We have an 18k rpm spindle driven by Mitsubishi A800 VFD which accepts 5-10 analog speed control.

I was under the impression that I would be able to convert PWM into analog voltage with this card and that's how I set it up in the Pncconf 18000 rpm at 5v, but the rpm readout in qtdragon only goes up to 500 for some reason. The spindle setup looks like another stepper config and I'm confused about the scale. I've read pretty much every spindle related post here which lead me to more confusion since everybody has different hardware.I haven't flashed any firmware on the card, just working with the stock one that it came with.I have a PWM to analog converter board

Here is the VFD manual   you can find the speed control on page 115

Can somebody please steer me into the right direction?I will include my ini an hal files just in case.
  • timo
  • timo
10 Jan 2025 19:52 - 10 Jan 2025 19:55
Replied by timo on topic Mach3 machine, some questions.

Mach3 machine, some questions.

Category: CNC Machines

You say LinuxCNC is way way better than Mach 3.

How so?

As far as I could research, Mach3 is not able to do fully closed loop operation with feedback between motor axis and rotary or linear encoders.
  • feed rate based on spindle power (cutter breakage detection)
  • EDM with reverse movements or slow down based on electrical values
  • a hobbing machine that slows down workpiece spindle and tool spindle in case something reaches the limits.
  • Turning excenters or augers on a lathe
  • cam shaft grinding

    These are examples I can think of. Things that Mach3 could not provide, according to my understanding of the available information.
    Of course those items go bejond the average DIY user and will not be easy to do. Not easy to do in any system, unless available as turnkey in exchange for $$$

    Linux CNC seems to be in the gap between, "very basic good enough" and "just pay money to one of the usual suspects"

    I see a lot of misconception that Linux CNC ist "Parallelport technology" for 3-axis open loop stepper machines. Which is actually only the lower end of the spectrum.
  • timo
  • timo
10 Jan 2025 15:49
Replied by timo on topic Mach3 machine, some questions.

Mach3 machine, some questions.

Category: CNC Machines

Mach3 can obviously do a lot that I do not even immagine, same as Linux CNC.
Mach3 seems to be a dead end (obsolete hardware, obsolete software)

The Mesa Card is definitely better documented and I bought fairly cheap DM860 stepper drivers that seem to work (good enough for who its for).

This week I threw some of the equipment on the workbench and started messing with pncconfig.
Four motors are running The spindle drive is still an issue. (that ist next up)
  • timo
  • timo
05 Jan 2025 08:35

Stepper based machine some general questions

Category: General LinuxCNC Questions

Thank you for the answers.

This keeps things easier, "problems solved" so far. Next up is to hook up the spindle drive.

Greetings Timo
  • BSOD
  • BSOD
04 Jan 2025 13:28 - 04 Jan 2025 14:35

Remora - ethernet NVEM / EC300 / EC500 cnc board

Category: Computers and Hardware

On the ec300 I measure 24V on OT1 to GND when set low, 0V when set high. (Strange. I expected it to be reverse, because of safety reasons...)
 I've tested it with and without spindle setting in HAL, because you don't have spindle configured in yours (it's not the problem).

Do you have any other usable and functioning output pins (other than the working steppers)?

What voltages do you read, if the outputs pulled low?
  • zelo
  • zelo
01 Jan 2025 13:36 - 01 Jan 2025 16:20

Remora - ethernet NVEM / EC300 / EC500 cnc board

Category: Computers and Hardware

I have my config here for ec500 with nvmpg: github.com/zelo/linuxcnc-remora-ec500-rt1052-cfg

- For now basic spindle controll works
- Stepper drivers (DM556T) using DMA stepgen.
- NVMPG - signal generator, multiplier button, and axis selection

I have still issues with following joint errors, but thats with faster movement or direction change. I guess when i jog too fast with the wheel it cant keep up.
EDIT: fixed following joint errors by setting lower max velocity values
  • 10K
  • 10K's Avatar
30 Dec 2024 15:58
Replied by 10K on topic Threading Index Varies With Speed

Threading Index Varies With Speed

Category: General LinuxCNC Questions

This problem, and this forum thread, all started when I was getting gouging when making a 1"-8 thread. After analysis, I believe that the lathe was bogging down slightly when making later passes in the increasingly deep thread. I've confirmed that the position of the thread changes with speed. The slight decrease in speed made the cutter take a larger bite, which caused further bogging down and then an even larger bite. Eventually, the lathe reached stability and was able to speed up and quit gouging.

Today, I tried making the thread again. I kept thinking that the Monarch lathe motor is large (7HP), and should be able to power through the threading cuts. My lathe has a back gear (speed reduced, torque increased), which I have never used. I put the lathe in the back gear and tried the thread cut. The gouging stopped completely. So that problem is solved to my satisfaction.

The contributing problem, thread position varies with spindle speed, seems to be built in to the LinuxCNC code. Spindle speed should not be changed during the threading operation. I'm not convinced that replacing the Z stepper with a more powerful motor, which would allow me more acceleration, would change this behavior very much. I'm also not convinced that having more pulses per spindle revolution, either through making a new gear with more teeth or using software to synthesize more pulses, would make much difference.

Please let me know if my logic is flawed.



 
  • 10K
  • 10K's Avatar
27 Dec 2024 19:58
Replied by 10K on topic Threading Index Varies With Speed

Threading Index Varies With Speed

Category: General LinuxCNC Questions

Here's the values for Z:
MAX_VELOCITY = 1.8
MAX_ACCELERATION = 2.0
These were set after a lot of experimentation. Higher values stall the stepper motor. I could try increasing the acceleration somewhat, but probably in the 10-20% range. Not sure this would make much difference. Let me know if you think I should try it anyway.

You mentioned that the 200 RPM plot is broken. Are you referring to the change of slope in the velocity before it starts oscillating?

Is it likely that the 10 pulse/revolution pulses are causing the problem? I could redo that part of the lathe. Getting greater acceleration will require a new stepper or servo motor and a lot of work.

I have two choices for the encoder-

1) I have some encoders in my junk drawer. They're both quadrature. One is a US Digital 1000 pulses/rev with a separate index signal, and the other is a more robust looking Accu-coder 2500 pulses/rev. Both are designed for small shafts, so I'd need a belt or gearing to connect them.

2) I could machine a gear to bolt on the spindle pulley. It'd be about 7 1/4" or so in diameter, so how ever many teeth I could fit on it. Maybe about 90 1/8" teeth? Or 180 1/16" teeth? I don't have any feel for how many pulses/revolution is appropriate, so maybe this would not work.

Here's a photo of the two pulse generators. The 1 pulse/rev is magnetic and the other one is proximity. The teeth are for locking the spindle.
 
  • slowpoke
  • slowpoke
26 Dec 2024 10:01 - 26 Dec 2024 10:10
7i96S MPG input was created by slowpoke

7i96S MPG input

Category: Basic Configuration

I'm anticipating reception of my 7196S card shortly. (The Canada Post strike is finally on hold)

This is for a lathe; I have a stepper (for now) mated to the Z-axis leadscrew, and a servo mated to the cross-slide
The Spindle encoder (A,B,Z signals) will interface to the fast encoder inputs on TB2:7,10,13

I plan to configure this so that the lathe can operate either in old fashioned manual mode, or in LinuxCNC mode. When in manual mode a separate ELS controller drives the Z-axis leadscrew, and because I have eliminated the hand crank for the cross-slide (it's now mated to a servo), I want to add a MPG to emulate the old cross-slide hand crank when I want to manipulate the cross-slide manually.

My question is about interfacing the 600 pulse/Rev rotary encoder intended for use as the cross-slide MPG. I have spare isolated inputs on TB3 that I would prefer to use because of the isolation. Manual states 5kHz max for these isolated inputs which seems fast enough, I can't imagine being able to rotate that knob 8 times in a second. So assuming the rate is okay, can I simply add a few lines to my HAL file to get a couple of those spare inputs to decode the A/B signals to get counts and direction from the encoder? or do I need to re-FLASH the FPGA on the 7196S?
  • 10K
  • 10K's Avatar
24 Dec 2024 22:18 - 24 Dec 2024 22:39
Replied by 10K on topic Threading Index Varies With Speed

Threading Index Varies With Speed

Category: General LinuxCNC Questions

These are some great questions. I spent some time collecting information to address them.

cakeslob question: I ran the 1"-8 scratch threads again. I tried hand turning the spindle, then ran it at 100, 150, and 200 RPM. I found the following:
1) Yes, you can run the threading G-code and cut the thread by turning the spindle by hand
2) The hand turned scratch wobbles a bit compared to the ones at set speeds
3) The hand turned scratch is the leftmost one in the photo, then the 100 RPM to its right, then the 150 and the rightmost thread at 200 RPM.
4) The spacing of the scratches, measured as best as I can from the hand turned scratch line, is
     a) 0-100RPM -0.025"
     b) 0-150 RPM -0.055"
     c) 0-200 RPM -0.085"

This supports andypugh's comment about the Y axis having to catch up the position after it detects the index pulse. The faster the speed, the more the thread falls behind the desired position.

PCW question:
I've attached my INI and HAL files.

File Attachment:

File Name: Monarch_10...2-24.hal
File Size:7 KB

File Attachment:

File Name: Monarch_10...2-24.ini
File Size:6 KB


Here's the section for the Z axis


#********************
# Axis Z
#********************
[AXIS_Z]
MIN_LIMIT = 0.001
MAX_LIMIT = 19.5
MAX_VELOCITY = 1.8
MAX_ACCELERATION = 2.0

[JOINT_1]
TYPE = LINEAR
HOME_SEARCH_VEL = 0.8
# overshoot switch if too high
HOME_LATCH_VEL = 0.1
#HOME_FINAL_VEL = 1.0
HOME_IGNORE_LIMITS = YES
HOME_USE_INDEX = NO
HOME_OFFSET = 19.95
HOME = 9
HOME_IS_SHARED = 1
HOME_SEQUENCE = 0
VOLATILE_HOME = 1
# STARTING VALUES FERROR 0.001 0.0005
FERROR = 0.01
MIN_FERROR = 0.001
# MAX_VELOCITY = STEPGEN_MAXVEL / 1.25.  STEPGEN_MAXVEL = experimental maximum
# If BACKLASH is not set:
# MAX_ACCELERATION = STEPGEN_MAXACCEL / 1.25.  STEPGEN_MAXACCEL = MAX_ACCELERATION * 2.5
# If BACKLASH is set:
# MAX_ACCELERATION = experimental maximum acceleration / 1.25.  STEPGEN_MAXACCEL = MAX_ACCELERATION * 2.5
# STARTING VALUES FERROR 1.8 2.25 2.5 3.2
MAX_VELOCITY = 1.8
MAX_ACCELERATION = 2.0
# These should match values above in [AXIS_Z]
STEPGEN_MAXVEL = 2.5
# If set too low, STEPGEN_MAXACCEL will cause massive joint follow errors!
STEPGEN_MAXACCEL = 5.0
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
# these are in nanoseconds
DIRSETUP   = 100000
DIRHOLD    = 100000
STEPLEN    = 2000
STEPSPACE  = 2000
STEP_SCALE = 12825.0
MIN_LIMIT = 0.001
MAX_LIMIT = 19.5
BACKLASH = 0.008

I used HALSCOPE and watched hm2_7i92.0.gpio.014.in_not (spindle index) and hm2_7i92.0.gpio.016.in (spindle A). That was working as expected, as I got one index pulse per 10 "A" pulses.


I then watched the spindle index and hm2_7i92.0.stepgen.02.position-1b (Z axis position) while running the threading program.

For 100 RPM:


For 200 RPM:


This looks to me like it's working as expected, where the falling index pulse begins the carriage Z movement. Note that I have steppers and this is not a real feedback signal on the position..That leads me to believe that LincxCNC is working correctly and that my problem is a physical one with my lathe.

M4MazakUser question:
Yes, both the index and "A" spindle signals are driven directly off the spindle.

andypugh question:
I'm using the threading program from the O-code section of the forum (and which I wrote). Before issuing the G76 code, the program moves the tool to the starting X and Z position. I think that there's validity to your comment about the axis acceleration perhaps affecting the spindle synch point.  I'm not sure what to do about it, though. The carriage on my lathe probably weighs nearly 100 lbs, and the stepper motor is probably undersized. I've had to limit my Z acceleration to 2 i/s^2, or it loses steps.

I ran the calcs you suggested (v = sqrt(2as)) for the 8 tpi thread I'm trying to cut. For the final velocity, I need to cut 1/8" per revolution at the set RPM.
For 100 RPM, v = 100 r/m / 60 s/m / 8 r/i = 0.208 i/s
And the distance to reach that speed s = v^2 / 2a, or 0.208^2 / (2 * 2) = 0.011"
For 200 RPM, s = 0.043"

The takeaway here is that the calculated distance is exponential with speed. When I measured the scratch marks from the hand turned (very slow RPM) values I got 0-100 RPM was 0.25" and 0-200 RPM was 0.085", which is exponential behavior. They're also about twice the values calculated in the formula.


So, I'm still not sure there's a path forward to correct this. A larger stepper, able to accelerate the heavy carriage would likely help, in that I could increase the maximum acceleration. But I'm not losing steps, so the program should be able to handle this. Perhaps a servo motor with closed loop control would fix it.
  • Sternfox
  • Sternfox
24 Dec 2024 18:25
Replied by Sternfox on topic Timed delay

Timed delay

Category: Advanced Configuration

Thanks for the code, im getting this error on startup ./main.hal:239: Pin 'xor.0.in0' does not exist

here is my hal file

# This file was created with the Mesa Configuration Tool on Nov 26 2024 15:50:59
# If you make changes to this file DO NOT run the configuration tool again!
# This file will be replaced with a new file if you do!

# kinematics
loadrt [KINS](KINEMATICS)

# motion controller
loadrt [EMCMOT](EMCMOT) servo_period_nsec=[EMCMOT](SERVO_PERIOD) num_joints=[KINS]JOINTS num_dio=30 num_aio=30

# hostmot2 driver
loadrt hostmot2
loadrt [HM2](DRIVER) board_ip=[HM2](ADDRESS) config="sserial_port_0=00000000"
loadrt oneshot count=1

setp hm2_[MESA](BOARD).0.watchdog.timeout_ns 10000000
loadrt timedelay count=1
loadrt xor2
loadrt pid names=pid.x,pid.y,pid.z,pid.s



# PID Information for Stepper Boards
# Mesa hardware step generators at every servo thread invocation, the step
# generator hardware is given a new velocity. Without feedback from the PID
# controller the hardware position would slowly drift because of clock speed and
# timing differences between LinuxCNC and the step generator hardware.
# The PID controller gets feedback from the actual (fractional) step position and
# corrects for these small differences.

# THREADS
addf hm2_[MESA](BOARD).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_[MESA](BOARD).0.write servo-thread
addf timedelay.0 servo-thread
addf xor2.0 servo-thread



# DPLL TIMER
setp hm2_[MESA](BOARD).0.dpll.01.timer-us -50
setp hm2_[MESA](BOARD).0.stepgen.timer-number 1

# amp enable
#net motion-enable <= motion.motion-enabled => hm2_7i95.0.ssr.00.out-02

# Spindle Air Oil solenoid


# Board: 7i95

# Axis: X Joint: 0 Output: 0
# PID Setup
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
# limit stepgen velocity corrections caused by position feedback jitter
setp pid.x.maxerror [JOINT_0](MAX_ERROR)

# joint-0 enable chain
net joint-0-index-enable <=> pid.x.index-enable
net joint-0-index-enable <=> joint.0.index-enable

net joint-0-enable <= joint.0.amp-enable-out
net joint-0-enable => pid.x.enable

net joint-0-enable => hm2_[MESA](BOARD).0.stepgen.00.enable

# Joint 0 Step Generator Settings
setp hm2_[MESA](BOARD).0.stepgen.00.dirsetup [JOINT_0](DIRSETUP)
setp hm2_[MESA](BOARD).0.stepgen.00.dirhold [JOINT_0](DIRHOLD)
setp hm2_[MESA](BOARD).0.stepgen.00.steplen [JOINT_0](STEPLEN)
setp hm2_[MESA](BOARD).0.stepgen.00.stepspace [JOINT_0](STEPSPACE)
setp hm2_[MESA](BOARD).0.stepgen.00.position-scale [JOINT_0](SCALE)
setp hm2_[MESA](BOARD).0.stepgen.00.maxvel [JOINT_0](STEPGEN_MAX_VEL)
setp hm2_[MESA](BOARD).0.stepgen.00.maxaccel [JOINT_0](STEPGEN_MAX_ACC)
setp hm2_[MESA](BOARD).0.stepgen.00.step_type 0
setp hm2_[MESA](BOARD).0.stepgen.00.control-type 1


# position command and feedback
net joint-0-pos-cmd <= joint.0.motor-pos-cmd
net joint-0-pos-cmd => pid.x.command

net joint-0-pos-fb <= hm2_[MESA](BOARD).0.stepgen.00.position-fb
net joint-0-pos-fb => joint.0.motor-pos-fb
net joint-0-pos-fb => pid.x.feedback

# PID Output
net joint.0.output <= pid.x.output
net joint.0.output => hm2_[MESA](BOARD).0.stepgen.00.velocity-cmd

# Axis: Y Joint: 1 Output: 1
# PID Setup
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
# limit stepgen velocity corrections caused by position feedback jitter
setp pid.y.maxerror [JOINT_1](MAX_ERROR)

# joint-1 enable chain
net joint-1-index-enable <=> pid.y.index-enable
net joint-1-index-enable <=> joint.1.index-enable

net joint-1-enable <= joint.1.amp-enable-out
net joint-1-enable => pid.y.enable

net joint-1-enable => hm2_[MESA](BOARD).0.stepgen.01.enable

# Joint 1 Step Generator Settings
setp hm2_[MESA](BOARD).0.stepgen.01.dirsetup [JOINT_1](DIRSETUP)
setp hm2_[MESA](BOARD).0.stepgen.01.dirhold [JOINT_1](DIRHOLD)
setp hm2_[MESA](BOARD).0.stepgen.01.steplen [JOINT_1](STEPLEN)
setp hm2_[MESA](BOARD).0.stepgen.01.stepspace [JOINT_1](STEPSPACE)
setp hm2_[MESA](BOARD).0.stepgen.01.position-scale [JOINT_1](SCALE)
setp hm2_[MESA](BOARD).0.stepgen.01.maxvel [JOINT_1](STEPGEN_MAX_VEL)
setp hm2_[MESA](BOARD).0.stepgen.01.maxaccel [JOINT_1](STEPGEN_MAX_ACC)
setp hm2_[MESA](BOARD).0.stepgen.01.step_type 0
setp hm2_[MESA](BOARD).0.stepgen.01.control-type 1


# position command and feedback
net joint-1-pos-cmd <= joint.1.motor-pos-cmd
net joint-1-pos-cmd => pid.y.command

net joint-1-pos-fb <= hm2_[MESA](BOARD).0.stepgen.01.position-fb
net joint-1-pos-fb => joint.1.motor-pos-fb
net joint-1-pos-fb => pid.y.feedback

# PID Output
net joint.1.output <= pid.y.output
net joint.1.output => hm2_[MESA](BOARD).0.stepgen.01.velocity-cmd

# Axis: Z Joint: 2 Output: 2
# PID Setup
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
# limit stepgen velocity corrections caused by position feedback jitter
setp pid.z.maxerror [JOINT_2](MAX_ERROR)

# joint-2 enable chain
net joint-2-index-enable <=> pid.z.index-enable
net joint-2-index-enable <=> joint.2.index-enable

net joint-2-enable <= joint.2.amp-enable-out
net joint-2-enable => pid.z.enable

net joint-2-enable => hm2_[MESA](BOARD).0.stepgen.02.enable

# Joint 2 Step Generator Settings
setp hm2_[MESA](BOARD).0.stepgen.02.dirsetup [JOINT_2](DIRSETUP)
setp hm2_[MESA](BOARD).0.stepgen.02.dirhold [JOINT_2](DIRHOLD)
setp hm2_[MESA](BOARD).0.stepgen.02.steplen [JOINT_2](STEPLEN)
setp hm2_[MESA](BOARD).0.stepgen.02.stepspace [JOINT_2](STEPSPACE)
setp hm2_[MESA](BOARD).0.stepgen.02.position-scale [JOINT_2](SCALE)
setp hm2_[MESA](BOARD).0.stepgen.02.maxvel [JOINT_2](STEPGEN_MAX_VEL)
setp hm2_[MESA](BOARD).0.stepgen.02.maxaccel [JOINT_2](STEPGEN_MAX_ACC)
setp hm2_[MESA](BOARD).0.stepgen.02.step_type 0
setp hm2_[MESA](BOARD).0.stepgen.02.control-type 1


# position command and feedback
net joint-2-pos-cmd <= joint.2.motor-pos-cmd
net joint-2-pos-cmd => pid.z.command

net joint-2-pos-fb <= hm2_[MESA](BOARD).0.stepgen.02.position-fb
net joint-2-pos-fb => joint.2.motor-pos-fb
net joint-2-pos-fb => pid.z.feedback

# PID Output
net joint.2.output <= pid.z.output
net joint.2.output => hm2_[MESA](BOARD).0.stepgen.02.velocity-cmd

# Manual Tool Change Dialog
loadusr -W hal_manualtoolchange
net tool-change-request => hal_manualtoolchange.change
net tool-change-confirmed <= hal_manualtoolchange.changed
net tool-number => hal_manualtoolchange.number

# create signals for tool loading loopback
net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed

# # Load Classicladder without GUI
loadrt classicladder_rt
addf classicladder.0.refresh servo-thread 1

# E-Stop Chain
loadrt estop_latch count=1
addf estop-latch.0 servo-thread

# E-Stop Loop
net estop-loopin iocontrol.0.user-enable-out => estop-latch.0.ok-in
net estop-loopout estop-latch.0.ok-out => iocontrol.0.emc-enable-in

# E-Stop Reset
net estop-reset iocontrol.0.user-request-enable
net estop-reset => estop-latch.0.reset
net remote-estop0 estop-latch.0.fault-in <= hm2_7i95.0.inmux.00.input-01-not

# Input and output configuration
net button-press <= hm2_7i95.0.inmux.00.input-05 # Connect input pin 5 to signal button-press
net relay-1-control => hm2_7i95.0.ssr.00.out-01 # Connect signal relay-1-control to relay output 1
net relay-2-control => hm2_7i95.0.ssr.00.out-03 # Connect signal relay-2-control to relay output 3

setp timedelay.0.on-delay 1.0 # 1-second delay
setp timedelay.0.off-delay 0.0 # No off delay

# Timedelay connections
net button-press => timedelay.0.in xor.0.in0 # Link button-press to timedelay and logic
net relay-1-control <= timedelay.0.out xor.0.in1 # Link timedelay output to relay-1-control and logic
net relay-2-control <= xor.0.out # Link xor out to relay-2-control


#*******************
# SPINDLE
#*******************

setp pid.s.Pgain [SPINDLE_0]P
setp pid.s.Igain [SPINDLE_0]I
setp pid.s.Dgain [SPINDLE_0]D
setp pid.s.bias [SPINDLE_0]BIAS
setp pid.s.FF0 [SPINDLE_0]FF0
setp pid.s.FF1 [SPINDLE_0]FF1
setp pid.s.FF2 [SPINDLE_0]FF2
setp pid.s.deadband [SPINDLE_0]DEADBAND
setp pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp pid.s.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.s.maxerror 0.012700

net spindle-index-enable => pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output

# Step Gen signals/setup

setp hm2_[MESA](BOARD).0.stepgen.03.dirsetup [SPINDLE_0]DIRSETUP
setp hm2_[MESA](BOARD).0.stepgen.03.dirhold [SPINDLE_0]DIRHOLD
setp hm2_[MESA](BOARD).0.stepgen.03.steplen [SPINDLE_0]STEPLEN
setp hm2_[MESA](BOARD).0.stepgen.03.stepspace [SPINDLE_0]STEPSPACE
setp hm2_[MESA](BOARD).0.stepgen.03.position-scale [SPINDLE_0]SCALE
setp hm2_[MESA](BOARD).0.stepgen.03.step_type 0
setp hm2_[MESA](BOARD).0.stepgen.03.control-type 1
setp hm2_[MESA](BOARD).0.stepgen.03.maxaccel [SPINDLE_0]STEPGEN_MAX_ACC
setp hm2_[MESA](BOARD).0.stepgen.03.maxvel [SPINDLE_0]STEPGEN_MAX_VEL

net machine-is-on => hm2_[MESA](BOARD).0.stepgen.03.enable
net spindle-vel-cmd-rps => hm2_[MESA](BOARD).0.stepgen.03.velocity-cmd
net spindle-vel-fb-rps <= hm2_[MESA](BOARD).0.stepgen.03.velocity-fb

# ---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

# ---Setup spindle at speed signals---

sets spindle-at-speed true
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
Displaying 151 - 165 out of 165 results.
Time to create page: 0.953 seconds
Powered by Kunena Forum