- This topic has 2 replies, 2 voices, and was last updated 3 years, 6 months ago by Jim Manley.
- July 17, 2019 at 3:01 pm #6903Jim ManleyModeratorKarma: 262Rank: Jedi
I have a 16K gallon open top vessel. The vessel is in an a building that has no HVAC cooling in it. When in use, the material that goes into the vessel will heat up due to naturally occurring processes going on in the material. The temperature of the material needs to be maintained between 68°F and 90°F. The vessel has a cooling loop in it which is controlled using a PIDE to modulate the chilled water valve connected to the cooling loop.
This all works fine until the temperature in the building gets to the point that the ambient air temperature around the vessel’s temperature sensor in the empty vessel exceeds the current set point on the PIDE. When that happens the PIDE opens the valve on cooling loop and I end up trying to cool an empty vessel.
I can calculate the volume of material in the vessel at any given time. Given that, I figured I could use a FBD Greater Than block to compare the amount of material in the vessel to some fixed value and use the Boolean output of the GRT block to indicate there was material in the vessel an it was okay to run the cooling loop.
The issue is where to use that Boolean output at as the PIDE is running in Program Auto mode all the time.
Any suggestions?July 17, 2019 at 6:23 pm #6912PLCGuruKeymaster
You may have to look into putting the loop into a ProgManual mode until you confirm you have product in the vessel. Leaving it in auto mode will cause the loop to act on the error. I think you will need to programmatically (and automatically) control the PID modes to get your desired effect. Of course I know you’ll sort it out so when you do please share your solution.
FredJuly 17, 2019 at 7:35 pm #6915Jim ManleyModeratorKarma: 262Rank: Jedi
It never fails. Within a few hours of posting here, I figure out how to deal with the problem. I guess describing the issue so someone else can follow along clarifies things in my mind.
I ended up essentially what you suggested. I took the output of the GRT block and connected it to the ProgAutoReq input of the PIDE and to input of a Boolean NOT (BNOT) block. The output of the BNOT was connected to the ProgManualReq input on the PIDE. I confirmed that CVProg was still set to zero.
Now the operation is as follows:
When the tank volume is less than the set minimum, the output of the GRT is 0 (zero). The ProgAutoReq bit is set to 0 (zero), the ProgManualReq bit is set to 1 (one) and the CV is set to CVProg. Regardless of what the PV and SP are, the CV remains clamped at 0 (zero) and the valve stays shut.
When the tank volume rises above the set minimum, the output of the GRT is 1 (one). The ProgAutoReq bit is set to 1 (one) and the ProgManualReq bit is set to 0 (zero). The PIDE begins to control the valve (CV) based on the SP and PV.
- You must be logged in to reply to this topic.