0-10v Servo Control with 7i76E

More
9 years 4 months ago - 9 years 4 months ago #94431 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
Last edit: 9 years 4 months ago by bymccoy.

Please Log in or Create an account to join the conversation.

More
9 years 4 months ago - 9 years 4 months ago #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
Last edit: 9 years 4 months ago by PCW.

Please Log in or Create an account to join the conversation.

More
9 years 4 months ago #94445 by bymccoy
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.

More
9 years 4 months ago #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

Please Log in or Create an account to join the conversation.

More
9 years 4 months ago - 9 years 4 months ago #94452 by bymccoy
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: 9 years 4 months ago by bymccoy.

Please Log in or Create an account to join the conversation.

More
9 years 4 months ago #94534 by andypugh

bymccoy wrote: 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.

Time to create page: 0.104 seconds
Powered by Kunena Forum