Jump to content
OMRON Forums

Recommended Posts

Posted
Two linear motors share one feedback and move vertically. We want only #1 motor to be in position close loop for the acceleration and deceleration's part, and only #2 motor be in position close loop for the constant velocity's part.How to realize it?

192447077_picturespecification.thumb.jpg.4dcfeddb008653758b6512edefbf40db.jpg

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Posted Images

Posted

Two linear motors share one feedback and move vertically. We want only #1 motor to be in position close loop for the acceleration and deceleration's part, and only #2 motor be in position close loop for the constant velocity's part.How to realize it?

 

You may want more details than I am going to offer...

1) Why do you want to do such a thing?

1a) What type of amplifier interface are you using? I would think that a direct PWM such as a Brick would offer the best level of control for the transitions (but I am not that familiar with Ethercat)

2) Can you give some info on the difference of Force Constant and Pole Pitch between the two motors?

3) Obviously you are wanting to point both motors to the same feedback register in the ECT. The setup parameters for each motor will then be determined by the specific motor characteristics.

4) I would think that you do not not want to 'kill' either motor, but rather change between open loop and closed loop mode so that both motors are always active and commutating. I believe this will also eliminate the need for a 'pmatch' command and the delay required for it to execute.

5) You will need to calculate an initial output value for the motor transitioning into closed loop mode. This will need to be based on the output of the motor going out of closed loop and scaled appropriately based on the ratio of force constants.

6) It may be best to maintain a small open loop output on the motor transitioning into open loop mode. Think of it as an assist to the motor in closed loop. This will be more difficult if the load is noisy.

Posted

There is no standard way of doing this, so you will have to employ some "tricks".

 

You will want to set up both motors to close their loops using the position encoder. They will need to be enabled and technically closed loop in all sections of the sequence. Both will be commanded with the same trajectory (you may want to use the leader/follower gantry method).

 

When you want to effectively disable a motor, set Motor[x].Servo.MaxPosErr to 0 and Motor[x].MaxDac to 0. It is still technically in closed-loop enabled control, but it is always outputting a zero command.

 

To switch modes at the right time, you will need to build your moves out of PVT sections, and set these element values with synchronous assignments. For example:

 

inc; // Specify distance

Motor[1].Servo.MaxPosErr == 10000; // Default

Motor[1].MaxDac == 28000; // Default

Motor[2].Servo.MaxPosErr == 0; // Disabling

Motor[2].MaxDac == 0; // Disabling

pvt20;

X200:0.2; // Accel section

Motor[1].Servo.MaxPosErr == 0; // Disabling

Motor[1].MaxDac == 0; // Disabling

Motor[2].Servo.MaxPosErr == 10000; // Default

Motor[2].MaxDac == 28000; // Default

pvt30;

X600:0.2; // Constant speed section

Motor[1].Servo.MaxPosErr == 10000; // Default

Motor[1].MaxDac == 28000; // Default

Motor[2].Servo.MaxPosErr == 0; // Disabling

Motor[2].MaxDac == 0; // Disabling

pvt20;

X200:0; // Decel section

...

Guest
This topic is now closed to further replies.

×
×
  • Create New...