0-10v Servo Control with 7i76E
- bymccoy
- Offline
- Premium Member
Less
More
- Posts: 99
- Thank you received: 2
12 Jun 2017 18:18 - 12 Jun 2017 18:36 #94431
by bymccoy
0-10v Servo Control with 7i76E was created by bymccoy
Hi,
I've been going through docs, example configs (very few and far between), but struggling to figure out how to drive a VSD for axes.
motion.spindle has pins for direction, RPM etc, which I gather hm2 converts to a 0-10v signal, using the max spindle speed as the range for the 7i76e onboard.
The only module that makes reference to AC drives is bldc... But I can't see how I can drive the signal correctly - ie the motion.spindle.speed is in RPM, and bldc.out doesn't state it's type of signal. What actually converts the signal from RPM to 0-10v for the spindle? How/where is this done? How can I mirror this for axes?
I need to map the following IO on the VSD using a 7i76e:
- fwd (forward/enable) on the spindle enable output
- rev (reverse/enable) on the spindle reverse output
- 0-10v - on the spindle 0-10v output
- enable - a motor contactor on a normal output
There's also an encoder for the axis, so I can use PID control.
Next, I need to tweak the config so that two axes can share the same VSD, but the motor being controlled is selected via enabling one of two contactors on the output of the VSD. But, baby steps. If I can get a single axis working, I'll be happy.
Help!!
Thanks
Jon
I've been going through docs, example configs (very few and far between), but struggling to figure out how to drive a VSD for axes.
motion.spindle has pins for direction, RPM etc, which I gather hm2 converts to a 0-10v signal, using the max spindle speed as the range for the 7i76e onboard.
The only module that makes reference to AC drives is bldc... But I can't see how I can drive the signal correctly - ie the motion.spindle.speed is in RPM, and bldc.out doesn't state it's type of signal. What actually converts the signal from RPM to 0-10v for the spindle? How/where is this done? How can I mirror this for axes?
I need to map the following IO on the VSD using a 7i76e:
- fwd (forward/enable) on the spindle enable output
- rev (reverse/enable) on the spindle reverse output
- 0-10v - on the spindle 0-10v output
- enable - a motor contactor on a normal output
There's also an encoder for the axis, so I can use PID control.
Next, I need to tweak the config so that two axes can share the same VSD, but the motor being controlled is selected via enabling one of two contactors on the output of the VSD. But, baby steps. If I can get a single axis working, I'll be happy.
Help!!
Thanks
Jon
Last edit: 12 Jun 2017 18:36 by bymccoy.
Please Log in or Create an account to join the conversation.
- PCW
- Offline
- Moderator
Less
More
- Posts: 17871
- Thank you received: 4776
13 Jun 2017 13:29 - 13 Jun 2017 13:39 #94444
by PCW
Replied by PCW on topic 0-10v Servo Control with 7i76E
The 7I76E spindle interface provides enable/direction and a 0 to 10V analog output,
If your drive cannot work with enable and direction (many can be programmed to use enable and direction)
you can get FWD and REV signals by adding a single SPDT relay, or possibly by using some of the isolated outputs
for FWD and REV, if the VFD accepts active high inputs.
Typically no added HAL components are needed, as the 7I76E hal pins are simply
connected to the appropriate LinuxCNC motion pins.
For example, the spindle analog output is setup by wiring LinuxCNCs spindle speed out pin
to the 7I76Es analog spindle speed control pin in the HAL file:
net abs-spindle-speed motion.spindle-speed-out-abs hm2_7i76e.0.7i76.0.0.spinout
edit: there is one more detail needed for the analog out, the scaling. For example if your maximum spindle
speed at 10V was 7500 RPM you would set the scaling parameters to these values:
setp hm2_7i76e.0.7i76.0.0.spinout-scalemax 7500
setp hm2_7i76e.0.7i76.0.0.spinout-maxlim 7500
setp hm2_7i76e.0.7i76.0.0.spinout-minlim 0
similarly to the analog voltage, the spindle direction is handled by wiring LinuxCNCs spindle direction pin to the 7I76Es spindle
direction control pin:
net spindle-direction motion.spindle-reverse hm2_7i76e.0.7i76.0.0.spindir
and enable:
net spindle-on motion.spindle-on hm2_7i76e.0.7i76.0.0.spinena
Note that the first token after the net command is the signal (wire) name and is arbitrary
Pncconf can do most of this bolierplate HAL wiring for you
If your drive cannot work with enable and direction (many can be programmed to use enable and direction)
you can get FWD and REV signals by adding a single SPDT relay, or possibly by using some of the isolated outputs
for FWD and REV, if the VFD accepts active high inputs.
Typically no added HAL components are needed, as the 7I76E hal pins are simply
connected to the appropriate LinuxCNC motion pins.
For example, the spindle analog output is setup by wiring LinuxCNCs spindle speed out pin
to the 7I76Es analog spindle speed control pin in the HAL file:
net abs-spindle-speed motion.spindle-speed-out-abs hm2_7i76e.0.7i76.0.0.spinout
edit: there is one more detail needed for the analog out, the scaling. For example if your maximum spindle
speed at 10V was 7500 RPM you would set the scaling parameters to these values:
setp hm2_7i76e.0.7i76.0.0.spinout-scalemax 7500
setp hm2_7i76e.0.7i76.0.0.spinout-maxlim 7500
setp hm2_7i76e.0.7i76.0.0.spinout-minlim 0
similarly to the analog voltage, the spindle direction is handled by wiring LinuxCNCs spindle direction pin to the 7I76Es spindle
direction control pin:
net spindle-direction motion.spindle-reverse hm2_7i76e.0.7i76.0.0.spindir
and enable:
net spindle-on motion.spindle-on hm2_7i76e.0.7i76.0.0.spinena
Note that the first token after the net command is the signal (wire) name and is arbitrary
Pncconf can do most of this bolierplate HAL wiring for you
Last edit: 13 Jun 2017 13:39 by PCW.
Please Log in or Create an account to join the conversation.
- bymccoy
- Offline
- Premium Member
Less
More
- Posts: 99
- Thank you received: 2
13 Jun 2017 13:37 #94445
by bymccoy
Replied by bymccoy on topic 0-10v Servo Control with 7i76E
Thanks...
The machine in question doesn't have a spindle, it's actually one of the axes that uses a VSD, so I'm using the IO to interface with the VSD (in the same way you would with a spindle VSD). The VSD doesn't have an enable *and* direction, but rather has an 'enable forwards' and 'enable reverse'. I do have a motor contactor as well which is effectively the 'enable', leaving the other two as the direction selection. I wonder if I can use logic inside the HAL config to switch the fwd/rev?
But, my issue is how to send the signals used for axis positioning via a PID to the 7i76e's spindle IO...
[axis_0] -> [pid.0] -> [hm2_7i76e.0.7i76.0.0.spinout]
I've struggled to find the equivalent functionality of the motion.spindle-speed/dir pins that I can use for the axes to give me 0-10v output via the 7i76e's spindle output. How should the signal being sent to the spindle output be conditioned and ranged?
To make things more complex, the machine uses the same VSD for two motors, and chooses the motor being controlled by the VSD via two interlocked contactors (which are the defactor 'enable' I mention above). I could of course fit another VSD, or replace motors etc etc etc, but I need to get the machine running now - my plan is to swap one of the axis motors for a pair of proper servos, but dealing with what I have now is the urgency.
Thanks!
The machine in question doesn't have a spindle, it's actually one of the axes that uses a VSD, so I'm using the IO to interface with the VSD (in the same way you would with a spindle VSD). The VSD doesn't have an enable *and* direction, but rather has an 'enable forwards' and 'enable reverse'. I do have a motor contactor as well which is effectively the 'enable', leaving the other two as the direction selection. I wonder if I can use logic inside the HAL config to switch the fwd/rev?
But, my issue is how to send the signals used for axis positioning via a PID to the 7i76e's spindle IO...
[axis_0] -> [pid.0] -> [hm2_7i76e.0.7i76.0.0.spinout]
I've struggled to find the equivalent functionality of the motion.spindle-speed/dir pins that I can use for the axes to give me 0-10v output via the 7i76e's spindle output. How should the signal being sent to the spindle output be conditioned and ranged?
To make things more complex, the machine uses the same VSD for two motors, and chooses the motor being controlled by the VSD via two interlocked contactors (which are the defactor 'enable' I mention above). I could of course fit another VSD, or replace motors etc etc etc, but I need to get the machine running now - my plan is to swap one of the axis motors for a pair of proper servos, but dealing with what I have now is the urgency.
Thanks!
Please Log in or Create an account to join the conversation.
- PCW
- Offline
- Moderator
Less
More
- Posts: 17871
- Thank you received: 4776
13 Jun 2017 15:57 #94450
by PCW
Replied by PCW on topic 0-10v Servo Control with 7i76E
You can setup a servo axis using the spindle output _but_ its going to have a number of problems:
1. instability at 0 speed (holding position) This is due to the reversal time delays
(this is why normal analog servo drives use +-10V, not 0 to 10V and direction)
2. The 7I76 spindle output is not high bandwidth, only approximately 100 Hz
This is fine for spindle closed loop control but too slow in general for servo feedback
1. instability at 0 speed (holding position) This is due to the reversal time delays
(this is why normal analog servo drives use +-10V, not 0 to 10V and direction)
2. The 7I76 spindle output is not high bandwidth, only approximately 100 Hz
This is fine for spindle closed loop control but too slow in general for servo feedback
Please Log in or Create an account to join the conversation.
- bymccoy
- Offline
- Premium Member
Less
More
- Posts: 99
- Thank you received: 2
13 Jun 2017 16:18 - 13 Jun 2017 16:22 #94452
by bymccoy
Replied by bymccoy on topic 0-10v Servo Control with 7i76E
Thanks...
The servo itself is an AC motor and an encoder on the output shaft. Both motors are geared down significantly, and also have chain drives. And with the 'accuracy' the gearing and chain gives, the precision needed is only about 0.1mm (you can go further, but when folding sheet steel, you're never going to realise anything less than 0.05mm) - the only NC wasn't very good, and could get it within 0.025mm without hunting...
There's no concern in holding, all they have to do is position the motors and stop, this is purely a positioning job vs it being a milling head dynamically moving. (This is for a press brake, and one motor controls the position of the beam's end stop and the other moves a backgauge).
Thanks
The servo itself is an AC motor and an encoder on the output shaft. Both motors are geared down significantly, and also have chain drives. And with the 'accuracy' the gearing and chain gives, the precision needed is only about 0.1mm (you can go further, but when folding sheet steel, you're never going to realise anything less than 0.05mm) - the only NC wasn't very good, and could get it within 0.025mm without hunting...
There's no concern in holding, all they have to do is position the motors and stop, this is purely a positioning job vs it being a milling head dynamically moving. (This is for a press brake, and one motor controls the position of the beam's end stop and the other moves a backgauge).
Thanks
Last edit: 13 Jun 2017 16:22 by bymccoy.
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23310
- Thank you received: 4858
15 Jun 2017 13:14 #94534
by andypugh
I think the trick is to pass the output of the PID through an "abs" component.
"abs" helpfully has pins that indicate of the output is positive or negative.
position -> pid -> abs -> spinout.
linuxcnc.org/docs/2.7/html/man/man9/abs.9.html
Replied by andypugh on topic 0-10v Servo Control with 7i76E
I've struggled to find the equivalent functionality of the motion.spindle-speed/dir pins that I can use for the axes to give me 0-10v output via the 7i76e's spindle output. How should the signal being sent to the spindle output be conditioned and ranged?
I think the trick is to pass the output of the PID through an "abs" component.
"abs" helpfully has pins that indicate of the output is positive or negative.
position -> pid -> abs -> spinout.
linuxcnc.org/docs/2.7/html/man/man9/abs.9.html
The following user(s) said Thank You: bymccoy
Please Log in or Create an account to join the conversation.
- bymccoy
- Offline
- Premium Member
Less
More
- Posts: 99
- Thank you received: 2
15 Jun 2017 20:01 #94556
by bymccoy
Replied by bymccoy on topic 0-10v Servo Control with 7i76E
Thanks Andy
Sounds ideal, means I can drive the forward/reverse signals separately to the enable, plus it fixes the -10-0-10 signal for 0-10...
Perfect!
I've hooked it up with the PID feeding rbe spinout and it was a bit bizzare, but this should fix it!
Now just have to fix a strange issue with the encoders (now firmware updated and multiple encoders available, none seem to work), so getting broken/non-following joint errors.
Think I'll build a dirt simple UI hooked directly to HAL to test each sub function.
Thanks
Jon
Sounds ideal, means I can drive the forward/reverse signals separately to the enable, plus it fixes the -10-0-10 signal for 0-10...
Perfect!
I've hooked it up with the PID feeding rbe spinout and it was a bit bizzare, but this should fix it!
Now just have to fix a strange issue with the encoders (now firmware updated and multiple encoders available, none seem to work), so getting broken/non-following joint errors.
Think I'll build a dirt simple UI hooked directly to HAL to test each sub function.
Thanks
Jon
Please Log in or Create an account to join the conversation.
- besriworld
- Offline
- Elite Member
Less
More
- Posts: 250
- Thank you received: 70
15 Mar 2022 07:29 #237294
by besriworld
Replied by besriworld on topic 0-10v Servo Control with 7i76E
Hi, I bought a 7i76e many years ago. Now I install it in a lathe. But I have a problem. I want the spindle motor to work as a servo motor, but the driver has no input for step direction. The analog output is very slow for a servo pid regulator. Can I add a fast analog output? How can I make an output like 7i77. Has anyone done something like this?
Please Log in or Create an account to join the conversation.
- bymccoy
- Offline
- Premium Member
Less
More
- Posts: 99
- Thank you received: 2
15 Mar 2022 07:56 #237297
by bymccoy
Replied by bymccoy on topic 0-10v Servo Control with 7i76E
I used a 7i77E, and setup PID on the spindle 0-10V output for this reason. The machine also interlocked two axis and used the same VSD, so with some control logic in place, there are two PID controlling a single output, and take it in turns to position. Not suitable for your application.
Maybe get a daughter card with a servo output in it (not sure what MESA has without looking, but you could always get a 7i77 and run as a daughter off the 7i76E).
Another option is to use the RS-455 interface with a compatible servo controller?
Maybe get a daughter card with a servo output in it (not sure what MESA has without looking, but you could always get a 7i77 and run as a daughter off the 7i76E).
Another option is to use the RS-455 interface with a compatible servo controller?
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23310
- Thank you received: 4858
15 Mar 2022 09:19 #237312
by andypugh
What makes you think that it is slow? Is it possible that the slowness is in your PID tuning?
Replied by andypugh on topic 0-10v Servo Control with 7i76E
The 7i76 analogue output is a digital potentiometer. It should update instantly every 1mS.Hi, I bought a 7i76e many years ago. Now I install it in a lathe. But I have a problem. I want the spindle motor to work as a servo motor, but the driver has no input for step direction. The analog output is very slow for a servo pid regulator.
What makes you think that it is slow? Is it possible that the slowness is in your PID tuning?
Please Log in or Create an account to join the conversation.
Time to create page: 0.132 seconds