Input Time to Schedule an Action on PanelView

Bunt23

Member
Join Date
Jan 2019
Location
Ankeny, IA
Posts
25
Hi all,

I am visiting one of the sites I provide PLC programming support for, and I have come across a request that I've never had before, nor do I have a good "off the top of my head" idea on how to satisfy this request.


PLC: CompactLogix 1769-L18ER-BB1B
HMI: PanelView Plus 1000

Equipment: Enclosed dryer that consists of a chain conveyor belt with 296 trays mounted on the chain.

The conveyor indexes until a tray arrives at the "load window" on one end of the dryer, at which point parts are hand-loaded through the load window until the tray is full. Then, the conveyor belt indexes until the next empty tray shows up at the load window, and then it stops so that more parts can be loaded on, and so on and so forth. There is an "unload window" at the opposite end of the dryer where parts are unloaded in the same fashion.

The cycle time between when a part is loaded to when it's unloaded is generally 8+ hrs to ensure the parts are dry, and the indexing of the conveyor is driven by the cycle time that they set on the HMI. So for example, if the cycle time is set at 8 hrs, and we have 296 trays, the conveyor indexes every 8 / 296 hrs (~about every 97.3 seconds).

We don't have the luxury of having a continuous flow of parts and so they have to load parts in batches, and they will load around ~50 trays at a time, then flex their operators over to run different machinery for the rest of the shift. They can load up a tray full of parts much faster than in 97 seconds, so to load the dryer up faster, they set the cycle time very low (0.5 hrs) so that the conveyor indexes more frequently, then they notate how many trays they've loaded, then adjust the cycle time after they're done loading to something that ensures the parts will have been in the dryer for an accumulated 8+ hours. For example, the process flow frequently goes like so:

-Set cycle time to 0.5 hours so the conveyor indexes more quickly
-Operators load, say, 55 trays full of parts until they run out of parts to load
-Lead operator then changes the cycle time to a longer time so the conveyor indexes slower and such that tray #1 will arrive at the unload window 8+ hours after they began loading
-Scheduling hopes that the lead operator calculates and enters the cycle time correctly based on how many trays were loaded so that they can schedule operators on the next shift to unload the trays when they think the trays will arrive at the unload window.


The lead operator would love to be able to go to the HMI after they've loaded up a batch of parts and just simply enter the exact time they want tray #1 to arrive at the unload window so that they can tell scheduling "hey, the batch of parts will arrive at the unload window at 6 AM tomorrow," and then scheduling can make sure they get staff in position to unload at that time.

So, rather than making the lead operator think in order to set a correct cycle time based on how many trays were loaded, they would just enter an "unload time," and then the cycle time would be automatically calculated to make that tray #1 show up at the unload window at the time they specify.

This post ended up being way longer than I anticipated, and I started it for one simple question:

How in the hell do you allow an operator to input a time value on a PanelView HMI?

The only way I currently know how would be to have 3 numerical input boxes, one for hour, one for minute, and one for AM/PM. I could then take the difference between that and the present time to calculate and set a cycle time that causes the beginning of the batch to show up at the unload window exactly when they want. Does anyone know of a better way to do this?!


Any help would be greatly appreciated. I can't thank this forum enough for the many, many times it has helped me accomplish what I wanted. Thank you in advance!!
 
How about leaving the cycle timer alone (leave the minimum dry time at 8 hours) and add an "INDEX" button near the loading area?

The operator presses the button to advance the conveyor during loading so they don't have to wait or fiddle with math on the HMI. The PLC keeps track of the duration for the furthest tray section so that it still gets dried for the minimum time setting.
 
That would be ideal, however; I am only here for the a few more days. Due to the size of the dryer, the control panel is located far away from the loading/unloading areas, so it would take too much time to add a button and run cable. Solving it programmatically would be the best for making an impact quickly. I could add a button at a later date, though. Thank you for the suggestion.
 
A Control List Selector with 24 states. Set the caption of each state to identify hours of am or pm. Then the connection tag value would be 0-23 depending on selection.

State 0 = midnight .... State 23 = 11 pm
 
I think I'm going to stick with 2 numeric inputs. One for hours, one for minutes. Then use that with the system wallclock time. It'll probably be a pain in the ***, but I think it provides the most intuitive solution with the amount of screen space I have to work with.
 
I did some cycle times and changes for a slurry dispensing unit to recirc in various configurations. I would try adding an HMI PB maybe labeled "Quick Load" which would activate the .5 hour cycle time. After the last tray, then the operator would press "Normal Dry" or whatever button you have now to run it 8+ hours. You could then write logic to calculate "time remaining", add that to the wall clock and have a numerical indicator that would simply display the time the cycle would be done, as in your example 6 a.m. The operator would need to do no math whatsoever. Just let management know they can see the completion time on the HMI.
 
[whoops, saultgeorge said the same thing already]

Am I misunderstanding summat, or is the time of the first tray to arrive at the unloading window always 8h (or so) after the time that first tray hits the loading window?

I don't see why the operator would have to do any more than set the total cycle time once, and the PLC would automate the rest, similar to what OkiePC said.

However, instead of an index button pushed once per tray, that button is pushed once at the start of the loading, which overrides the 8h cycle time to 0.5 h, and once at the end of the loading, after which the PLC compensates (again what OkiePC suggested) so that first tray gets its full 8h in the dryer. With only two operations required at the panel, the distance between there and the loading area would be less of an issue.
 
Last edited:
I like these suggestions, but I think the issue I would run into is that although 8 hrs is considered the minimum time, the cycle time that they manually set can be anywhere from 8 - 24 hrs. It just depends on when they finish loading, and when they have operators scheduled on the next shift. Also, being able to just input the exact time we want the first tray would solve our problem, and I think I have the logic figured out now.... so time to begin testing!!



In theory, yes, I could just ensure the parts are in the dryer for at least 8 hrs and make the conveyor just stop when the first tray arrives at the unload window, but I have heard that some parts take a little longer than 8 hours to dry, while some take a little less, and the 8 hour requirement is more of a "strong suggestion" than a requirement (I know, I know... as an engineer, this bugs the living hell out of me. But I am fairly new and am building relationships, so I will concede to what the people request).

Sorry I didn't clarify that in the original post. I thought of mentioning the 8 hrs is not set in stone, but the post was already fairly long. I didn't want to create any confusion.
 
How about having a load button on the HMI, this sets the index time to 0.5hrs and starts a seconds counter when the first tray enters the oven. at the end of the loading the operator then presses a button to say it has finished loading it puts it back to 8 hours or 28800 secs then subtract the seconds counter from that this will give you the time in seconds left for first tray to exit the oven.
From your description it appears to me that it will not matter how many trays are populated just that at the first index when 1st tray enters the oven this is the start of the 8 hour calc. so when you accept trays are loaded the time will be time first tray in oven till acceptance of trays loaded is 28800 - already accumulated time and number of indexes = time left
so for example if the oven is 296 trays long and this will take 28800 seconds so you have already accumulated say 1800 seconds (50 trays)
so 296 - 50 = 246 trays take accumulated time (say 1800s) off 28800 = 27000 s so 27000/ 246 = 110s (rounded) per index this means that 7.5 hours later the first one comes out of the oven from these at 7.5 hours from the time you entered the number of trays added.
logic:
Operator presses load button on screen.
Reset seconds counter to 0
start counting when first tray enters oven (assumes it knows i.e. sensor)
when all the trays loaded, the operator enters the number of trays, presses button this stores the secs count and calculates the time per index ((28800 - 1800)/(296 - trays entered)) the total time residency remaining(i.e. 7.5 hours)
add this to current time gives you the time the first tray exits the oven.
I know this sounds a bit long-winded but I wrote this on the fly but I'm sure you can see the possibilities doing it this way, however, I have only glanced at your description so it's a bit of my own idea and no ideas of the practicality of it in your case.
 
if you use 24hr time format then you only need 1 numeric input. Let them type in 830 for 8:30 am or 1400 for 2:00 pm. Then do the math in the PLC.
 
[...] I thought of mentioning the 8 hrs is not set in stone, but the post was already fairly long. I didn't want to create any confusion.


You wrote something like "8h+;" I think we all assumed the 8h number was flexible, and does not affect any of the algorithms suggested: it's just another input parameter.
 
drbitboy: Right, but I think I've figured out a way to let them just set the arrival time on the HMI, which is exactly what they asked for. So I will be testing out my logic soon. The biggest thing I was wondering on this post was if anyone knew off the top of their head an easier way to input an arrival time on the HMI other than with numerical inputs. Like if there was an object specifically meant for dealing with time...

The scope of this project creeped quite a bit as I walked in the door this morning, so I was initially apprehensive. But now that I've had more time to think it through (along with considering everyone's alternative suggestions), I think I can solve this. Thanks everyone for their help!
 
Classic rubber duck debugging, eh?

Glad we could quack. I mean help.

Hey I'm not trying to waste anyone's time here. I truly do appreciate the suggestions. I just figured multiple brains attacking a problem is better than just my own, so I posted this thread, which is what this forum is all about, right?
 

Similar Topics

Hi, I have a ControlLogix system with 1756-IF16 analogue inputs. I can't scale the inputs at the card as there is a requirement to facilitate...
Replies
14
Views
348
I'm having trouble calming down 2 Tempo Sonics. I'm using Studio 5000 CompactLogix my Raw value is jumping around from 8575.0 to 8755.0 at a...
Replies
30
Views
1,135
I cannot add SLC500 analog input tag (I: 8.3) to EZSeries Touch Panel Editor (V 5.3). I used all the listed tag datatype but it all says "Invalid...
Replies
10
Views
257
Hi, I have questions. I have Analog Input that need to put into Ignition Designer. But I don't know how to put?
Replies
1
Views
118
Omron AD081-V1 Analog Input Card Offset & Gain Adjustment Entering Adjustment Mode 1. Set the input card in adjustment mode (Turn ON Dip SW No-1)...
Replies
0
Views
87
Back
Top Bottom