BRX High Speed PID Application

Recently, InterConnecting Automation Inc. was contacted by a customer who had a unique situation. He had an application that involved using a servo motor to drive an air compressor motor. This air compressor then ran an air motor with an encoder to a setpoint speed. The customer utilized our One-on-One services to help pick a controller, and program the controller.

The frst step in this process was to choose a controller. The main IO requirements were to allow high speed inputs for the feedback encoder, and to allow for pulse output for the servo drive. In additon to that, it needed to run a few discrete inputs and a few discrete outputs. Afer adding all of the IO requirements up, it was determined that the BRX 18pt series would ft the requirement perfectly. This PLC had built in High Speed IO and allowed for the additonal IO requirements.

The BRX 18pt series PLC

In short, the Operator of this machine has a selector switch that selects the desired output RPM for the air motor shaft. The PLC would take that setpoint and control a pulsed output from 10Hz-250kHz that drove the main servo motor. The air motor shaft feedback encoder would give us the feedback of where the actual speed was. Finally, when the process was within 1% of setpoint a light would turn green, if it was outside those bounds the light would be red.

Block Diagram of the Closed Loop PID Control used to implement this BRX Controlled System

There were a few items that made this project challenging. The first was that the Process Variable had delay in reaching setpoint but would behave differently when it was at setpoint. The reason for this was because the air compressor took tme to build up enough pressure to spin the motor. With pure PID control, the Bias would wind up too much because of this delay, and this would cause overshoot that was too much. To counteract this, we enabled the PID loop when the Process Variable was near the setpoint, and tuned the loop for the behavior near setpoint. Once this was coded, the loop was accurately tuned.

The next challenge was smoothing the process variable. The Encoder had bounce in it that wasn't allowing us to tune the machine to the specification that the customer wanted. To eliminate this, we utilized the first order filter in the BRX to reduce unwanted noise and signals that affected the Processes variable.
Once the loop was tuned the machine was able to hold the process variable at +/-0.12 RPM (or 0.375% error) which was well within the customer specification of 1% error on the process variable.