I have an application that I've done over the years that I'd like to improve upon if possible. I've always wanted to but time hasn't afforded me an opportunity to really investigate until now. The application in general is a contuous mixing from four tanks. These tanks have levels that are measured via probes (common wall tanks, so Load cells not possible). The material is granular so angle of repose is an issue to consider. In otherwords, level may not always indicate exact mass due to angle of repose. The angle changes also whether it was a recent fill or if it has been discharging for awhile.
Under normal circumstances, the tanks provide continously metered product, refilling from bulk storage as needed. However, on product changes, it is necessary to empty these tanks for new ingredients. It is preferable to empty them together so that every 'drop' is used. Each tank has a different usage rate so in order to empty them together, the starting levels of each must reflect these rates.
Historically, to accomplish this, when it has come time to empty, I set the refill/cutoff levels to a narrow preset band and in the correct proportion according to usage rate. Then just allow the system to refill as normal and when all tanks are within their level band, 'let it go' or empty.
The problem with this is I'm not sure that it is the most effecient. For example:
If the slowest tank is full, then we have to wait for it to get down to the band. Meanwhile, the faster tanks may take multiple refills to keep them going. Might not be a problem, but a condition to consider.
If all the tanks are below these bands when we start, then we are unnecessarily refilling them all back upto the bands. Of course there is any number of permuations of this condition.
We get into a semi race condition. We keep the refill/cutoff band as narrow as possible because we want the levels to be as close to where they need to be when we say 'go'. Of course, angle of repose sometimes effects this, but it is the best we can do. However, with the bands being narrow, there is lag in the system that causes unnecessary refills. Each refill from bulk storage may take 2 minutes to transport to the use tank. During this time, all tanks are using. By the time the material shows up for a given tank and satisfies its band, one or more tanks may drop out of their band due to normal usage. So, we have to fill the next one. Same thing could happen again. The system eventually hits the sweet spot, but I feel it is making unnecessary pulls. Remember the goal is when it is time to empty do it as quickly as possible.
So, if you are still reading at this point, that's pretty much it in a nutshell. I'm wondering if there is a better mathematical algorithm to accomplish this. Something where I determine the state of the system, fill a queue of all the refills and amounts that need to happen, taking into account usage rates, current levels, transport time and usages during that time. Once this queue exhausts itself, then empty.
Comments or thoughts? I've got to imagine its a fairly common scenario in continuous batching/mixing operations.
Under normal circumstances, the tanks provide continously metered product, refilling from bulk storage as needed. However, on product changes, it is necessary to empty these tanks for new ingredients. It is preferable to empty them together so that every 'drop' is used. Each tank has a different usage rate so in order to empty them together, the starting levels of each must reflect these rates.
Historically, to accomplish this, when it has come time to empty, I set the refill/cutoff levels to a narrow preset band and in the correct proportion according to usage rate. Then just allow the system to refill as normal and when all tanks are within their level band, 'let it go' or empty.
The problem with this is I'm not sure that it is the most effecient. For example:
If the slowest tank is full, then we have to wait for it to get down to the band. Meanwhile, the faster tanks may take multiple refills to keep them going. Might not be a problem, but a condition to consider.
If all the tanks are below these bands when we start, then we are unnecessarily refilling them all back upto the bands. Of course there is any number of permuations of this condition.
We get into a semi race condition. We keep the refill/cutoff band as narrow as possible because we want the levels to be as close to where they need to be when we say 'go'. Of course, angle of repose sometimes effects this, but it is the best we can do. However, with the bands being narrow, there is lag in the system that causes unnecessary refills. Each refill from bulk storage may take 2 minutes to transport to the use tank. During this time, all tanks are using. By the time the material shows up for a given tank and satisfies its band, one or more tanks may drop out of their band due to normal usage. So, we have to fill the next one. Same thing could happen again. The system eventually hits the sweet spot, but I feel it is making unnecessary pulls. Remember the goal is when it is time to empty do it as quickly as possible.
So, if you are still reading at this point, that's pretty much it in a nutshell. I'm wondering if there is a better mathematical algorithm to accomplish this. Something where I determine the state of the system, fill a queue of all the refills and amounts that need to happen, taking into account usage rates, current levels, transport time and usages during that time. Once this queue exhausts itself, then empty.
Comments or thoughts? I've got to imagine its a fairly common scenario in continuous batching/mixing operations.