steveneads Posted February 24, 2015 Posted February 24, 2015 I have an application where the command to a motor comes from an analogue source. This is heavily filtered to remove noise. I noticed that my motor always had a following error even when the commanded position was constant - the integration mode is 1 - so it should only integrate when the desired velocity is zero. In fact, because the command comes from an analogue input, the desired velocity is never zero - it's very, very small and this is really fooling the integration logic. Is there any way to add a tolerance so that the DesVelZero shows true when below a small threshold instead of exactly zero? I could of course write my own code to change the integration mode on the fly if this is not possible.
Omron Forums Support Posted February 24, 2015 Posted February 24, 2015 There's no built-in DesVelZero band, but there is for Motor[x].InPos; it's called Motor[x].InPosBand. I'm not sure how your application works, but you might be able to set this instead.
steveneads Posted February 24, 2015 Author Posted February 24, 2015 The problem is that your integration mode uses DesVelZero as its trigger - so unless there's a way of giving it a band, I have no choise but to write my own code to toggle the state of the integration mode so that I can enable and disable the integrator depending upon "real" desired velocity.
curtwilson Posted February 24, 2015 Posted February 24, 2015 I think one way or another you will have to create your threshold in user code. If you are tracking the input with one of our automatic algorithms like position following, you will want a PLC program that monitors with something like: if (abs(Motor[x].DesVel < MyEpsilon)) Motor[x].SwZvInt = 0; else Motor[x].SwZvInt = 1; If you are implementing the tracking in user code, it would be easy to create a deadband in that algorithm.
Recommended Posts