Sunday, September 13, 2015

Paint Flow Control Project, Fuzzy Logic Finale (I think), 3.16b

Good news: Vivid Inc has received the robot, a conveyor and other components from the warehouse in Ontario, Calif and I now have the go-ahead to develop the software for the system and get it all working.

They will be using a Graco diaphragm (paint) pump to be compatible with other systems at UEI's (Universal Electronics Inc.) facility in China. The diaphragm pump is air driven, as was the previous pump, and we will continue to use a current to air pressure (I/P) transducer to convert the 4-20 mA current from the Digi International BL2600 Single-Board-Computer (SBC) to air pressure to drive the pump. So no real change but Thomas Nguyen and I had hoped to use an electric motor such as we were using for the Silk Screen Project that I reported on a few months ago. But no big deal. It will be better to be compatible with other equipment at the China facility.

Vivid Inc. will be purchasing the components for the control system and the systems, two each, will be assembled at the Vivid facility in Santa Clara. I will begin developing the software for the BL2600.

The simulations of my Fuzzy Logic control algorithm looked excellent. I had started with Li and Lau's  1989 IEEE Control System magazine article "Development of Fuzzy Algorithms for Servo Systems" by Y.F. Li and C. C. Lau (Li and Lau), modifying their two Look-Up_Tables (LUTs). Li and Lau used two LUTs, a Coarse LUT and a Fine LUT in their simulation of a servo system. I was concerned that the Coarse LUT may not always reduce the system error low enough so that the Fine LUT could be activated. Consequently, I added a third LUT to provide intermediate control between the Coarse LUT and the Fine LUT. I reported on the Fuzzy Logic control work in my last few posts. I was quite happy with the results and am indebted to Li and Lau for publishing their paper.

But I have one more step to report on for the Fuzzy Logic control. We are expecting that the diaphragm pump and flowmeter will be rather slow operating and the pump will be turned on and off for the spray painting process. The robot that controls the paint gun will send an on and off signal back to the BL2600 controller indicating the times that the paint gun is spraying and when the paint flow is to either be reduced or turned on and off. My previous paint flow controllers had also controlled the paint flow according to the signal from the robot, so no problem there, but we are expecting very slow response from the paint pump and flowmeter, so I modified my Fuzzy Logic control to speed up the control process by saving the output value for the pump and then restoring it when the paint flow is turned on again.

For my analysis, I assumed that the paint flow system has a simple low-pass filter type of response with a time-constant of one second for the pump and flowmeter. The one-second time-constant may be wishful thinking, but whatever the time-constant is, my modification to the control simulation will speed up the settling time of the paint flow by nearly 3X. For the one second time constant, my simulations show a settling time of about 16 seconds and the speed-up will reduce the settling time to about 6 seconds. The chart below shows the initial turn-on of the pump to a full-scale flow and then the flow is reduced to 1/5 of full-scale. When  the paint flow is again commanded to full-scale, the simulation shows that the paint flow will return to the full-scale value in about 6 seconds. Note that the green trace is the setpoint, the red trace is the control signal and the blue trace is the simulated paint flow. Normally the paint flow will be reduced to half-scale, so the response time getting back to full-scale will be less than 6 secs.

Paint Flow Simulation Showing Flow Settling to Full-Scale in about 16 sec and Then Settling Again in about 6 sec.
So, happily the Fuzzy Logic control and my speed-up feature look like they will provide excellent control for the paint flow and I can go ahead with the software development in the Digi BL2600 SBC using their Dynamic C compiler.

No comments:

Post a Comment