Serial Buffering and Flow Control

Hi. I am currently trying to use another vendor’s general purpose controller, but it is having problems refreshing the servos often enough, while having to wait (block) for serial commands. It is trying to use the flow control to prevent commands from being missed, but I will be controlling via TTL eventually. Does your servo controller have a serial buffer or basically can it refresh the servos asyncrnously and not have to wait for a command?

Thanks for your help!

Hello,

I don’t understand your question, so here’s a few points that I think are related:

Our servo controllers have no flow control; the data effectively flows only from your primary device to our controller, and you can send your commands as quickly as the baud rate will allow.

The commands just change the output, but the servo output will stay the same until you send a command changing it. If you use the speed settings, the servo control pulses will gradually change on their own when you send a new position command.

At 38400 bps, you can send about 3840 bytes per second or 640 commands per second. For 8 servos, the maximum theoretical update rate is 80 Hz, which is faster than the 50 Hz servo control pulses. For 16 servos, the theoretical maximum is 40 Hz.

The internal serial input buffer is very short (2 bytes), so commands get processed quicker than the time for that to overflow. Since a command can be up to 6 bytes long, it can take up to 8 byte times (about 2 ms) from when you begin sending a command until it can take effect. However, there is no way to synchronize with the output pulses to the servos, which get updated at 50 Hz. So, theoretically, it could take as long as 22 ms from when you start sending a command to when the change is reflected in the servo pulse.

- Jan