Determining Priority for Filling Multiple Water Tanks in a System

Question:

Greetings, I am currently developing logic for a system with 3 water tanks (Tank A, Tank B, and Tank C). Tanks A and B are filled with water while Tank C remains empty. Each tank is equipped with a level transmitter that signals when water levels are low and in need of replenishment. When Tank A becomes empty, Tank B will start filling Tank C, and vice versa. I am seeking guidance on which instructions to implement in determining the priority to fill Tank C when both Tank A and Tank B are full, or when Tank A is full and Tank B is empty. Thank you for any assistance provided.

Top Replies

When you say "empty," are you referring to being at or below a certain low level? And when you mention "full," do you mean being at or above a specific high level? In the scenario where Tank C will be filled from tanks A and B separately when the level transmitter indicates low levels and calls for water, is the event triggered by the low level transmitter or something else? If both tanks A and B are not empty, regardless of whether they are full or not, and Tank C calls for water, would it be more logical to fill from the tank with a higher or lower level? And if both tanks A and B are full, and Tank C requires water, is there a preference for using either tank based on factors like distance from C, pump efficiency, etc.? Is the history of which tank was last used important, such as alternating tanks being preferred or discouraged? The objective is to shift focus from the physical process to the model of the process in the PLC, which includes analog inputs for levels, discrete inputs for water demand, and outputs for filling Tank C from A or B. The physical process is crucial as it guides the modeled process, but simplification is necessary as the PLC only models a subset of the entire process. This helps in streamlining the PLC program by eliminating unnecessary details.

Forget about following a set of instructions - all you need is logic. As Drbitboy mentioned, consider what your specific process requires. If it's as simple as determining which tank, A or B, starts full, then just make straightforward comparisons. If tank C is running low and A is greater than or equal to B, start by filling from tank A until it's empty, then switch to tank B. On the other hand, if tank C is low and B is greater than A, begin by filling from tank B until it's empty, then switch to tank A. To ensure tanks are always alternated, you can incorporate lead/lag logic. The possibilities are endless, but it's essential to provide a more detailed explanation of your process for better clarity.

Robertmee explained that the process of determining which tank to fill first is based on logic rather than explicit instructions. As Drbitboy pointed out, the key is to analyze what the process requires. For example, if tank C is low and tank A has more fuel than tank B, start by filling from tank A until it's empty, then switch to tank B. Conversely, if tank B has more fuel than tank A, start with tank B instead. To ensure tanks are alternated, consider implementing lead/lag logic. There are numerous options available to optimize this process, so providing more detailed information about your specific requirements will help in designing a more efficient system.

When deciding which tank to start with, prioritize the fuller one as mentioned in the previous post. Make simple comparisons between Tank A and Tank B. Start Tank A if Tank A's level is greater than or equal to Tank B's level and Tank C needs to be refilled, and Tank B is not running. If Tank A is running but its level is below a certain threshold and Tank C needs to be refilled, then start Tank B (which will stop Tank A). Start Tank B if Tank B's level is greater than Tank A's level and Tank C needs to be refilled, and Tank A is not running. If Tank B is running but its level is below a certain threshold and Tank C needs to be refilled, then start Tank A (which will stop Tank B). Consider scenarios where Tank A or Tank B is already low when Tank C needs to be refilled, or if there is not enough liquid in Tank A and Tank B combined to fill Tank C. Create a sequence to simplify the process, as there are multiple conditions to take into account. Determine whether Tank A or Tank B alone is sufficient to fill Tank C, or if they both need to be used. Decide whether to wait for Tank A or Tank B to stop filling before filling Tank C (i.e., Tank A is refilled until it's above a certain level, then Tank C is filled, potentially causing Tank A to drop below the threshold, leading to short cycling of the pump).

In response to mavrick's query about setting up a lead/lag logic for tanks, it is recommended to search for relevant discussions using the terms "lead" and "lag" on this forum. There are multiple threads and code examples available for study. When establishing the logic, the priority should be on creating a system that is easily comprehensible for troubleshooting purposes, especially during unexpected failures. The goal is to ensure that troubleshooting can be done efficiently, even at odd hours. It is essential to have indicators or an HMI for monitoring, but unforeseen scenarios may arise where quick thinking and familiarity with the PLC's logic are crucial. In rare cases where the HMI may not provide all necessary information, having a platform for sharing and discussing such challenges, like a "Stump the Chumps" forum, can be beneficial for finding solutions to complex problems.

One interesting approach could be using a priority system based on previous tank usage. For instance, if Tank A was used to fill Tank C last time, choose Tank B for the next time, and vice versa. This would ensure an even usage between both tanks. Alternatively, you could implement a check on which tank has more water at the time of switching (over a certain threshold). If Tank A has more water, use it - if not, use Tank B. This way, you always ensure you are using the tank with the most surplus, which could be beneficial depending on the specifics of your system.

Hey there, I'd suggest implementing a weighted priority, depending on the scenarios you have at all times. For instance, when both tanks A and B are full, they can have equal priority. However, if Tank A is full and Tank B is empty, then the priority for Tank A to fill Tank C should be higher. An efficient algorithm could consider the percentage of water in each tank as a factor in determining this priority - the higher the percentage, the greater the priority. This ensures that both tanks A and B are optimally utilized and gives you a dynamic system that adapts to changing water levels.

Hi there! It sounds like an interesting project! For managing the filling priority of Tank C, you might consider implementing a simple priority scheme. For example, give Tank A a slightly higher priority over Tank B when both are full, enabling it to fill Tank C first, since this ensures a more systematic use of resources. Alternatively, if Tank A is full and Tank B is empty, you could set an instruction to either maintain Tank A's output until Tank C reaches a certain level or to have Tank B refill as soon as it's feasible. This way, you can keep a continuous flow and avoid any stagnant state in Tank C. Good luck with your logic development!

More Replies →

Streamline Your Asset Management
See How Oxmaint Works!!

✅   Work Order Management

✅   Asset Tracking

✅   Preventive Maintenance

✅   Inspection Report

We have received your information. We will share Schedule Demo details on your Mail Id.

To add a comment, please sign in or register if you haven't already..   

Frequently Asked Questions (FAQ)

FAQ: 1. How can I determine the priority for filling Tank C when both Tank A and Tank B are full?

Answer: Answer: One approach could be to prioritize filling Tank C from the tank that was filled first or consider factors such as proximity or capacity of the tanks.

FAQ: 2. What instructions should I implement when Tank A is full and Tank B is empty in order to determine the priority for filling Tank C?

Answer: Answer: In this scenario, you may consider filling Tank C from Tank B since Tank A is already full, or establish a rotation system to ensure equitable distribution of water.

FAQ: 3. How can I optimize the logic for filling multiple water tanks in the system to ensure efficient replenishment?

Answer: Answer: You can optimize the system by incorporating sensors that monitor water levels in real-time, setting thresholds for refilling each tank, and creating a clear hierarchy for filling priorities based on specific criteria.

Ready to Simplify Maintenance?

Join hundreds of satisfied customers who have transformed their maintenance processes.
Sign up today and start optimizing your workflow.

Request Demo  â†’