I'm facing a problem where I have a given axis, it can be driven only in Cyclic Synchronous Position mode. I want it to follow a setpoint position, these setpoints are coming from an external system, their calculation and the communication time isn't deterministic, so once it comes, lets say in 10ms once 12ms, 8ms, 20ms, and so on...
The cycle time is 2ms between the PLC and the servo controller, if I use MC_FollowPosition FB, the servo controller drops me errors with over acceleration and velocity because it tries to carry out the (eg. 12ms) movement in 2ms. My first idea was to do interpolation between two samples, but I'm afraid that with linear interpolation in certain situations the acceleration will be still too high, I will need smoothing between the samples.
My other idea is to make a PID controller inside the PLC, and use MC_FollowVelocity, but because the cycle time with the controller can only be 2ms at the lowest, I'm afraid that in high speeds and accelerations (the system needs to be very responsive) the system becomes unstable and start to oscillate and get inaccurate in high demanding situations.
Do someone have experiences with this kind of controlling, or am I missing some applicable FBs to carry this out? Any ideas are appreciated!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Folks,
I'm facing a problem where I have a given axis, it can be driven only in Cyclic Synchronous Position mode. I want it to follow a setpoint position, these setpoints are coming from an external system, their calculation and the communication time isn't deterministic, so once it comes, lets say in 10ms once 12ms, 8ms, 20ms, and so on...
The cycle time is 2ms between the PLC and the servo controller, if I use MC_FollowPosition FB, the servo controller drops me errors with over acceleration and velocity because it tries to carry out the (eg. 12ms) movement in 2ms. My first idea was to do interpolation between two samples, but I'm afraid that with linear interpolation in certain situations the acceleration will be still too high, I will need smoothing between the samples.
My other idea is to make a PID controller inside the PLC, and use MC_FollowVelocity, but because the cycle time with the controller can only be 2ms at the lowest, I'm afraid that in high speeds and accelerations (the system needs to be very responsive) the system becomes unstable and start to oscillate and get inaccurate in high demanding situations.
Do someone have experiences with this kind of controlling, or am I missing some applicable FBs to carry this out? Any ideas are appreciated!
Hi
Try with smc_movecontinuousabsolute. Everytime you recives a new position, you can call it.
It goes to a prdefined position and arrives with a predetermined velocity.
But it seems not easy to use because you need to know the velocity at new point, and it seems that you dont know it.
Good luck