New ✨ Introducing Oxmaint Asset Hub for Machine Builders and OEMs. Explore Now
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.
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.
Maverick acknowledged the confusion and confirmed that the described approach is similar to what he's doing. He plans to follow a sequential order and utilize a lead-lag system depending on which tank is full during startup. Seeking suggestions on setting up lead/lag logic, he has some ideas but is open to better approaches. For more information, explore this thread that discusses choosing a feed system based on specific criteria, running the selected system at feeding time, and isolating the logic of each principle. The simplicity of the problem lies in focusing on the last principle.
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.
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.
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.