PLC Killer

Using Virtual servo axis to control 2 real servo axes

6 posts in this topic

Hi there

I was reading this thread:

And trying to create 3 axes. 1 virtual axis and 2 real axis, I would like to use MC_GearIn for each real axes so both real ones follow  the virtual axis (so both can move in sync motion). But my question is: If I give Move cmd(Absolute or relative)to master virtual axis and since it's virtual, it is not going to move then how can the other real ones follow the master(assuming that it's literally electronic gearing). 

Any help will be appreciated!

Share this post


Link to post
Share on other sites

Why don't you make 1 real axis the master and the other real axis the slave? Do your movement commands on the master.

Share this post


Link to post
Share on other sites

Thats my backup plan. But in the thread I mentioned, someone explained the limitations doing this way. Here it is:

This way(using virtual axis) both physical axes are treated equally and programmed the same.  Neither is the master.  Also, with the _mcLatestCommand option, the servos have to be in the proper order (node number-wise) on EtherCAT.  The master would need to be a lower EtherCAT node number.  Doing it this way just removes any chance of getting that wrong.  

It used to be that the performance would be better with this option due to the fact that if both servos were tuned the same, the following error to the master axis would be the same and the axes would achieve closer synchronization.  However with the _mcLatestCommand option, both servos would get the exact same command if you geared them together without a virtual axis.  

I was looking if it can be done in a better way.

Share this post


Link to post
Share on other sites

@Michael Walsh I found from the above motioned thread that this was your idea of using one virtual axis to run other 2 real axes using GearIn FB.

I was wondering if I could get little advice from you.

No doubt, I have heard people using this method before in Rockwell but somehow it doesn't make much sense to me.

Let's say, the virtual axis is just gonna move to 1000mm position with ideal velocity and other parameters given to it but real axes(using GearIn func) may not reach to that position due to different mechanical factors. So, how can we make sure that the real axes gets to 1000mm every time.

Thanks in advance!!!

Share this post


Link to post
Share on other sites

If you command the virtual axis to move 100mm, and you set a 1:1 gear ratio, your slave will move 100mm.  That's the whole purpose of gearing.

If you have an X and a Y and want them to arrive at the same time, why are you not looking a group motion and linear interpolation?

Share this post


Link to post
Share on other sites

Ah I see.

Actually I have couple of timing pulley belts driven by 3 different servos and all are inline, so I thought GearIn is a way to go. (It is not a X,Y application)

Because , initially in the process I want to servo 1 to be master and then at the end servo 3 to be master. I thought using a virtual axis is great will cut down all this back and forth crap. And I believe it will fine.

Thanks

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now