David Jan Posted April 13 Posted April 13 I understand that the command position and command speed in PMAC are calculated by internal servo algorithms. So, how can I modify the actual speed value without changing the command position, so that the motor speed has an actual bias? Can PMAC achieve this? Do you have any relevant parameters? Option 1: Enable Motor [1] DacBais=20 seems to be unable to implement my idea. Option 2: Can I directly add or subtract from the output address corresponding to Motor [1]. pDac? For example, Motor [1]. pDac=sys Udata [1]. a, I can directly set sys Udata [1]=sys Udata [1]+200, but the speed remains unchanged. Why is this? Quote
steve.milici Posted April 15 Posted April 15 You cannot modify the existing EtherCAT. The “%” method described by leandro.martins in this post would be the easiest method: https://forums.automation.omron.com/topic/10382-how-to-change-the-motor-speed/?do=findComment&comment=33681 You could also put a loop in your motion program with very small increments that contains the feedrate command with an argument as in: &1 #1->100x open prog1 inc while (p99) { // loop while P99 is not zero f(p100) // feedrate argument is P100 x0.1 } close The “granularity” in time would be the move size increment/feedrate. 2 Quote
David Jan Posted April 16 Author Posted April 16 Does that mean there is no way to change the value of Ethercat? What I understand is that the values of parameters like ECAT[0].IO[1].Data are at our disposal. But according to you I can't modify the existing Ethercat, I can only use % to modify the speed. I will try to modify the speed using % and give you feedback! Quote
steve.milici Posted April 16 Posted April 16 The speed must be changed in PMAC’s trajectory generation calculations. You cannot directly control this in the EtherCAT registers. Quote
David Jan Posted April 17 Author Posted April 17 (edited) Okay, Steve. Following the method you mentioned above, I have performed the relevant experiments, when the speed changes from %100 to %200, the process is slower, is there any relevant parameter to modify the time of this change? For example acceleration? Edited April 17 by David Jan Quote
David Jan Posted April 17 Author Posted April 17 Another problem is that I want to implement the function in the PLC, cmd "% Percentage", where percentage is a global variable that I defined earlier. But since % already has its own usage in cmd's commands, for example "- %d Signed integer, decimal format - %u Unsigned integer, decimal format - %x Unsigned integer, hexadecimal format, use lower case". So how do I use % for speed changes Quote
leandro.martins Posted April 17 Posted April 17 (edited) The command should be cmd"\% %d",Percentage or cmd"%% %d",Percentage Edited April 17 by leandro.martins Quote
David Jan Posted April 19 Author Posted April 19 According to what you said, it is not possible to complete the modification of the speed. I used the cmd command in the PLC program, and my idea was to use a variable "offset" to change the speed of the motor at any time, which is cmd "% offset". However, currently, neither of the two methods you mentioned is effective. Some cannot be compiled, while others do not change the speed of the PLC program after compilation. Do you think this is why? Quote
DaveBarnett Posted April 19 Posted April 19 For this to work... you need to include the coordinate system identifier in the cmd string. Like: cmd "&1 %%50" //set coordinate system 1 to feed rate of 50% Quote
David Jan Posted May 8 Author Posted May 8 If I want the speed of axis 1 to be 50, and then the speed of axis 2 to be equal to the speed of axis 1 minus 10, and the speed of axis 3 to be equal to the speed of axis 1 plus 10, how do I achieve this? I don't want to set the speed of motor 2 and motor 3 in the motion programme, I just want to get the speed of motor 2 and motor 3 from the speed of motor 1, which can be interpreted as the speed of motor 2 and motor 3 is coupled with the speed of motor 1. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.