ITC203 Assignment 1
Vertical Storage Solutions 1 © Simon Bennett, Steve McRobb, Ray Farmer 2005, 2010
High Bay Storage Control System
Introduction
Vertical Storage Solutions (VSS) is a supplier of high bay pallet storage systems for warehouses. A high bay system is essentially a large shelving unit for storing pallets in a warehouse (Figure 1). Each set of shelves is separated from the next by a narrow aisle. Electrically operated cranes move along the aisles horizontally and up and down vertically in order to move pallets to shelf locations in the high bay system. Each crane can also move along the end of the shelving system so that it can move from aisle to aisle and to a loading area where pallets can be loaded onto and off the cranes. High bay systems are much higher than conventional pallet racking, which is designed to be accessible to fork-lift trucks. High bay systems often are built two or three storeys below ground level and may be several storeys high. The typical height of a high bay system may be 25 metres (80 feet).
Figure 1 High bay shelving
VSS has an existing software package that controls its high bay systems and wants to rewrite it. The existing system is written in C and uses C-ISAM files to store data. The supplier of the C-ISAM libraries is discontinuing support, and VSS wants to move its system to a newer platform. The existing storage control system (SCS) interfaces to other warehouse management systems (WMS) through a series of text files that are transferred into a specific directory on the machine that runs the SCS. VSS want to change this interface so that other WMS can send messages to the SCS using SOAP-based web services.
Requirements
The requirements for the new SCS were described in an interview with George Carpenter the technical director carried out by Serge Dassault a business analyst from VSS’s IT supplier. At this point, Serge has already introduced himself and set the scene for the interview.
SD: Mr Carpenter, I’d like to try to get a summary view of what the storage control system needs to be able to do. Can you start by giving me an idea of what the overall requirements are?
GC: Sure. I think it’s important to start by stressing what it is we’re trying to achieve with the new version of the SCS.
SD: Fine. Do you want to start with the changes then?
GC: Yes.
Vertical Storage Solutions 2 © Simon Bennett, Steve McRobb, Ray Farmer 2005, 2010
Firstly, we want to achieve more automation of the storage process. Currently, each crane has a driver who gets instructions about what job to do next. They then issue some instructions to the crane about where to move to, and the crane follows their instructions. More and more of our customers want to reduce staffing costs. And for a lot of customers, all the movements are of whole pallets, so they don’t need a driver on the crane.
SD: Sorry, what do you mean by ‘whole pallets’? Is there another way of storing things?
GC: Yes, some customers don’t work at the pallet level, they store things in cartons, you know, cardboard boxes. So although they keep pallets in the high bay each pallet may have several cartons of different products on it. Sometimes, the driver has to fetch cartons off the pallet onto the crane. It’s relatively easy to automate moving whole pallets onto and off a shelf, but we can’t automate moving individual boxes yet.
SD: I see, so you have two different ways of storing things, at the pallet level and at the carton level. Presumably the SCS needs to keep a record of how a particular slot in the high bay is being used.
GC: Absolutely. Some customers keep everything at the pallet level, some at carton level and some have a mixture. So for those who work at the pallet level, they don’t want a driver on the crane. They want to be able to issue instructions to it and for it to move to the right slot, push a pallet in or pull a pallet out, and take it to the loading area.
SD: Fine, so automation is a key requirement. What else?
GC: The web service interface is vital. More and more of the companies we deal with who produce the warehouse management systems want to treat the high bay as a service with a standard set of operations that they can invoke.
SD: Right, can we come back to those operations later?
GC: Sure. The ones we need to support are defined by the Warehouse Automation Federation (WAF), which sets the standards for our industry.
SD: Are there any more key changes?
GC: Yes, the last one is that we want to improve the job scheduling. The old way of working is for jobs to be received by the SCS and for it to execute them in sequence, so if the SCS gets a request to put a pallet in slot A-3-15, then a request to put a pallet in B-4-1, then a request to fetch a pallet from A-3-16. It will do the jobs in that order, but A-3-16 is right next to A-3-15, so it would be more efficient to fetch that pallet straight after it drops the one off in the slot next to it. We want it to be more intelligent about what it does. That saves time for the customer, and also energy. We’re trying to make our systems more energy-efficient both from an environmental perspective and because electricity costs money, so we can reduce the running costs for our customers.
SD: Fine, can you just explain those slot positions? Presumably they’re coordinates are they?
GC: Yes, the letter is the aisle, the first number is the vertical position and the second number is the horizontal position down the aisle. Essentially, it’s an x- y-z coordinate system viewed from the end of the high bay, with the x- coordinate as a letter.
SD: Okay, got that. Any other key requirements?
GC: No, that’s it. The rest is just routine stuff.
Vertical Storage Solutions 3 © Simon Bennett, Steve McRobb, Ray Farmer 2005, 2010
SD: Okay, let’s talk about the routine stuff. Let’s start with the interface with the warehouse management system. It seems to me that the operations that the WMS can request should give us a good picture of what the requirements are.
GC: Sure. There are basically two tasks with variations.
SD: They are?
GC: Store something in a slot and retrieve something from a slot.
SD: Sounds simple. And the something can be a pallet or a carton?
GC: More or less. Either it’s a pallet load or a non-pallet load, which means one or more cartons to be stored on a shelf.
The pallets get dropped off in the loading bay by a fork-lift. They have to be lined up along the edge of the loading bay so that the crane can pick them up.
Cartons get dropped in a separate area, and they may come in on a conveyor.
SD: So, let’s talk about the web service operations. What data do they need as input and what kind of response do they give?
GC: You’ll need to look at the WAF spec. for the detail, but essentially, the first operation is something like storeLoad. And it expects to be given the load type, which is pallet or non-pallet. If it’s non-pallet then it needs to know the number of cartons. Then the weight of the load – we try to store heavier loads lower down and lighter ones higher up to minimise the stress on the shelving. The product code, though that’s optional, then the licence plate number.
SD: Hang on. Two points there. Firstly you say that the product code is optional, and then this licence plate.
GC: Okay. The product code is optional because we can store things in two modes – product aware and product unaware. If the high bay system knows what the product code is then it can do things like storing fast-moving products closer to the loading bay, it can also handle requests to fetch a product rather than a pallet or a carton. If the high bay system doesn’t know what the product code is, then the pallet is just a black box as far as it’s concerned. It can store the pallet and it can retrieve it, but it doesn’t know what’s on it, the WMS has to keep track of what’s on each pallet and request the right pallet back from the high bay when it needs it.
SD: Okay, and the licence plate?
GC: Each pallet or carton has a large printed barcode label on it. When the crane loads the pallet in the loading bay it scans the licence plate to check that it’s got the right pallet. If it’s a carton then the driver scans it with a hand-held scanner. When the crane collects a pallet from a slot, it scans the licence plate again to make sure it’s retrieving the right pallet, and similarly, if it’s just some cartons that are being retrieved, then the driver scans their barcodes.
SD: Fine, anything else?
GC: No, that’s it, oh apart from an optional batch number and batch date. Some products have batch numbers and dates. We only use them in product aware mode. When the high bay gets a request to retrieve a product it will always try to retrieve product with the earliest possible batch date.
SD: Right, and then there’s presumably a retrieveLoad operation?
GC: Hang on. You asked me what data the operation gives back to the WMS.
SD: Sorry, yes.
Vertical Storage Solutions 4 © Simon Bennett, Steve McRobb, Ray Farmer 2005, 2010
GC: Right, it gives back a job number.
SD: What’s that for?
GC: It enables the WMS to cancel a job if it needs to. It doesn’t happen very often, but perhaps the WMS has sent a pallet for storage and then it gets an order in from a customer who needs the product on that pallet. If the pallet hasn’t already been stored, it can cancel the job and send a fork-list to fetch it back out of the high bay’s loading bay.
SD: So that’s another operation, cancelJob or something like that.
GC: Exactly.
SD: How does the WMS know whether the pallet has been stored or not?
GC: The WMS can implement a service that enables it to be notified of the progress of jobs in the high bay. Essentially it’s a job tracking service. It’s optional, but if the system is configured for job tracking, then each time the high bay system does something with a load, it notifies the WMS using this service. Essentially, it sends a message with the job number and the status of the job: Waiting, Loaded and Stored.
SD: So what happens if a job has been loaded onto the crane and it gets a cancelJob request?
GC: The crane will stop and return the load to the loading bay and the status of the job gets changed to Available.
SD: So presumably Available is the state that a job is in if a load has been retrieved normally.
GC: Yes. Do you want to talk about retrieveLoad now?
SD: Yes, please.
GC: Okay, so retrieveLoad needs to know the licence plate number if it’s retrieving a pallet or some cartons. Or if it’s in product aware mode, then it needs to know the product code and the quantity.
SD: Hang on, how does it know about the quantity? You didn’t mention that for the storeLoad operation.
GC: You’re right, it’s another one of those optional elements in the message. If there is a product code, then the message can also include the quantity. The high bay keeps track of the quantity of a product in a particular slot and can choose where to retrieve the product from. If it doesn’t have to worry about batch numbers it can optimise storage. So, if there are four cartons of a product in one slot and six in another, and it gets a request for four cartons, it will fetch them from the slot with four cartons, because that then frees up that slot.
SD: Right, back to retrieveLoad. Anything else?
GC: No, either it fetches products based on the licence plate on the pallet or carton or by product code.
SD: What about batch numbers? Can it request a particular batch?
GC: You’re right. Yes it can, though usually we let the high bay SCS provide the batch with the earliest batch date. But sometimes there are situations where you need to retrieve a particular batch, for example if the batch has been recalled by the manufacturer because of a fault.
Vertical Storage Solutions 5 © Simon Bennett, Steve McRobb, Ray Farmer 2005, 2010
SD: Okay, so we’ve got three operations that can be requested of the high bay service: storeLoad, retrieveLoad and cancelJob. Any others?
GC: No, that’s it.
SD: And the high bay can notify the WMS of the status of a job. What’s that operation called?
GC: updateJobStatus I think.
SD: What about the job statuses for retrieval jobs? Are they the same? Waiting, Loaded and Stored?
GC: No, Waiting, Loaded and Available.
SD: Right what about other aspects of the system? How about safety? Can two cranes be in the same aisle at the same time?
GC: Yes, but they can’t pass one another. So one crane can enter an aisle from one end, and another from the other end, but they can’t get past one another. They are lifted from above by an overhead gantry system.
SD: How many cranes would you have in a typical installation?
GC: It varies, and depends on the level of activity as well as the size of the high bay, but typically one crane per six aisles.
SD: What about user interfaces?
GC: Yes, there are two really.
SD: And they are?
GC: One for the driver and one for the operator.
There is a display and a keypad on the crane for the driver. It tells him or her what job is being carried out, what is to be stored or retrieved and which location in the shelving it’s going to. When it’s not working in automated mode, it can also be used to display a list of jobs to the driver, so he or she can select which job to do next. The other thing is that when the driver scans a licence plate it displays information about the pallet or carton that’s just been scanned.
SD: So what’s the typical sequence of events for the driver using the interface?
GC: Typically a driver would start work on a crane, get up the list of jobs allocated to that crane, select one, usually the first on the list. If it’s a storage job, the crane will move to the loading bay and display information about what has to be picked up. If it’s a pallet, the driver will let the crane scan it and collect it. If it’s cartons, then the display will show how many cartons to collect and some information about the licence plate numbers. The driver scans the licence plates, and the interface confirms that they’re the right ones or flashes up an error message if they’re wrong. The driver loads the cartons. Then presses a button or something to say the crane is ready to move to the storage slot. The crane moves to the slot. Again if it’s a pallet it automatically puts the pallet onto the shelf. If it’s cartons, the driver scans them and loads them onto the shelf manually. Finally, the driver presses a button again to say the job is done, and the list of jobs gets displayed again to select the next one.
If the job is a retrieval one, then the crane moves to the storage slot, if it’s a pallet job it scans the pallet and pulls it off the shelf. Otherwise the driver reads how many cartons to pull off, scans them and loads them onto the crane. Really, it’s just the same as the storage job except in the opposite order.
Vertical Storage Solutions 6 © Simon Bennett, Steve McRobb, Ray Farmer 2005, 2010
SD: What about the operator interface?
GC: The operator is in charge of the high bay. There’s always an operator on duty whenever the high bay is in operation. They have a safety role, making sure that everything is running correctly.
Most of the time the user interface they have is showing a summary display of what is going on in the high bay. So things like a list of pending jobs, information about what each crane is doing and its current status. If necessary they can take remote control of a crane and bring it back to the loading bay.
SD: Right, I think I’ve got that. Any more interfaces?
GC: No, I don’t think so. Anyway, I’ve got another meeting to go to shortly. If there’s anything else you need to know, perhaps you can arrange another meeting. In any case, you’re going to need to talk to Hussein Shah our chief engineer to get the detail.
SD: Yes, I’ve got an appointment with him tomorrow. Thanks very much for your time today. I’ll be writing up my notes and I’ll send a copy to you to check.
GC: Thanks. I’d appreciate that….