08-10-2012 05:14 PM
I need some help as I trying to find a way to do motor commutation.
I am developing a closed loop control system that consists of an applimotion motor (UTH-100-A-25-A-x-000) and AMC Digital Drive (DPRALTE-020B080) on CompactRIO 9076 FPGA Real Time Controller. The motor does not have hall sensors. Any suggestion on how to do motor commutation using this FPGA device is appreciated.
08-10-2012 06:39 PM - edited 08-10-2012 06:39 PM
I don't know the details of your AMC drive but looking at its datasheet it seems like it should be able to handle the motor commutation for you.
Are you asking how to communicate between your FPGA and the drive?
It sounds like you want to control the commutation directly but I don't see that option on your drive's datasheet.
08-10-2012 06:46 PM
Thanks for your reply. In order to use the drive for commutation, I will require Hall sensors, which I do not have. According to AMC engineers, I should be able to send the commutation commands through cRIO. I am not sure how I can do this. Any help is appreciated. Thanks
08-13-2012 10:51 AM
Looking at the AMC datasheet it is not obvious to me how it expects the commutation commands. It has an RS232 input for config, 10V analog command input, 5V step and direction, and various digital IO. It is likely that the commutation commands would be sent through one of those interfaces.
There are cRIO modules that would be able to communicate with any of those interfaces. If you can give us details about how the drive expects its commands we can tell you what module will be necessary.
Do you have an encoder on your motor? The brushless commutation will be quite a bit trickier without some sort of feedback.
08-13-2012 11:41 AM
Thanka again for your reply and some very useful comments. In fact, I am trying to use two of these drive to drive two different motors. The encoder is Gurley A90. These are absolute encoders and I could use NI 9401 to get the sensor data to the cRIO 9076. According to AMC engineers, if we give an analog voltage to the drive based on the motor position, the drive should be able to do commutation based on this signal. I do not quite understand this. Any help is appreciated.
08-13-2012 02:24 PM
We're getting closer to understanding what is going on but I feel like I'm only seeing part of the picture.
I understand your situation to be:
Your drive requires position feedback and you don't have hall sensors available.
The drive is unable to read your absolute encoder.
If the drive were provided position feedback it could handle the motor commutation.
You have a 9076 and 9401 with which you want to read the absolute encoder and then pass this feedback, along with a position setpoint, to the drive.
Is this correct?
08-14-2012 12:32 PM
You are definitely going for a non-plug-and-play solution here.
You have two tasks.
To program your cRIO to:
1- continuously query your encoder for position feedback
2- translate those positions to the analog feedback expected by the drive.
What have you tried so far?
I assume you know the details of how to communicate with both the encoder and the drive?
I was unable to find those details from my cursory reading of their respective datasheets.
Again- this is definitely the hard way to go about this. Sounds like fun.
08-14-2012 12:46 PM
Thanks. I have not tried anything yet. How difficult would it be to program the cRIO to implement this task? Is there any other easier or better way to accomplish this?
08-14-2012 03:03 PM
How difficult it will be will depend on how complex those interfaces are.
If the encoder interface is simple, for example a clock and data pin that returns only the position, then writing the code to talk to it will be pretty straight forward.
Some absolute encoders use very complex protocols. I can't tell you exactly how hard it will be because I don't know this encoder.
I would expect that writing the analog position feedback to the drive will be easier but I don't know exactly what the drive is expecting either. You wrote earlier that the drive manufacturer told you specifically that the drive would work with analog position feedback and no hall sensors. I don't see how that would de done from the datasheet. You need to be sure that this is true because otherwise this approach will be impossible.
You should start by tackling just the encoder half of the problem. Hook up the encoder to your DIO module and start trying to query it. I hope you have more information about its interface than what is found in the datasheet- otherwise you would either need to contact the manufacturer or do some experimentation.
Give it a try and if you run into specific obstacles then we can help you with those.
BTW- The easier solution is to throw money at the problem and buy motors, encoders, and drives that are compatible with each other. For example, NI sells motors and cRIO modules that can drive them, including brushless. At that point the software is just opening an example and adding your own position setpoints.