Jump to content
OMRON Forums

How to modify the command speed of the motor

Recommended Posts

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?

Link to comment
Share on other sites

You cannot modify the existing EtherCAT.

The “%” method described by leandro.martins in this post would be the easiest method:


You could also put a loop in your motion program with very small increments that contains the feedrate command with an argument as in:



open prog1


while (p99) { // loop while P99 is not zero

f(p100)       // feedrate argument is P100





The “granularity” in time would be the move size increment/feedrate.

  • Like 2
Link to comment
Share on other sites

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!

Link to comment
Share on other sites

Posted (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 by David Jan
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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?





Link to comment
Share on other sites

  • 3 weeks later...

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...