Warehouse Pick Simulation
Author: CreateASoft Inc./Friday, October 28, 2016/Categories: Advanced Modeling and Connectivity
- Switch to the Flow Properties tab
- Go into Model Extensions
- Select Define Database Connections and New Connection
- Name it 'Internal' and select Save
- Select it from the list and check Connect Database to Data Import Tables
- Go into Internal Data Store
- Select Manage Sections, create 'Warehouse' and 'PickSequence'
- For 'PickSequence' add 4 columns:
- OrderNumber - Integer
- SKU - String
- Quantity - Integer
- PickedYet - Integer
- Check Store section data in model definition
- For 'Warehouse' add 3 columns:
- Location - String
- SKU - String
- Quantity - Integer
- Check Store section data in the model definition
- Go to the 'Warehouse' table
- Select Excel Link
- Browse for the Excel file and select the Warehouse sheet
- Check Ignore First Row and change To Cell (35,4)
- Go to the 'PickSequence' table
- Select Excel Link, browse for the Excel file again and select the PickSequence sheet, check Ignore First Row and change To Cell (35,5)
- Now go into Additional Properties Definition
- Switch Parameter to Object and create 4 variables:
- Obj_OrderNumber - Integer
- Obj_SKU - String
- Obj_Quantity - Integer
- Obj_GoingTo - String
- Go into Model Extensions
- Under SimulationStart insert two lines, Line 1 will be a Data Interface Action:
- Section Name - Warehouse
- Action Type - Update
- Field Name – Quantity
- Update with value - 30
- Line 2 will also be a Data Interface Action:
- Section Name - PickSequence
- Action Type - Update
- Field Name - PickedYet
- Update with value - 0
- Switch back to the Model Build tab
- Go into Objects and Containment and create a new object: 'Order'
- Check Display Object Value
- Scroll down and select 'Obj_SKU' and 'Obj_GoingTo'
- Create a Start Process, 'Start'
- Go into Define Object Creation Rules and change to Create based on Work Order. Switch to the Work Order tab and select Excel Import
- Browse for the Excel file and select the WorkOrder tab, change To Cell (10,15)
- Check Use first record as Model Start Time
- Create a Generic Process to be used a Router, 'Route Pick', and connect 'Start' to it
- Select 'Route Pick'
- Go into Process Extensions/Event Handling
- Under ObjectActivated insert two lines
- Change Line 1 to a DB Interface and edit
- Database Name - Internal
- Table Name - PickSequence
- Command Type - Select From
- Condition - Where OrderNumber = <%Obj_OrderNumber%> AND PickedYet = 0
- SKU - Obj_SKU
- Quantity - Obj_Quantity
- Change Line 2 to a DB Interface Action and edit:
- Database Name - Internal
- Table Name - Warehouse
- Command Type - Select From
- Condition - Where SKU = <%Obj_SKU%>
- Location - Obj_GoingTo
- Under ObjectNextProcessDefined insert a line and change it to an Expression Action and edit:
- set NextProcessToStart = Obj_GoingTo
- Create a new process, 'MOD_Rack'
- Go into Process Extensions/Event Handling
- Under ObjectActivated insert two lines
- Set Line 1 to a DB Interface Action and edit:
- Database Name - Internal
- Table Name - Warehouse
- Command Type - Update Table
- Condition - Where SKU = '<%Obj_SKU%>'
- Quantity - Quantity - <%Obj_Quantity%>
- Set Line 2 to a DB Interface Action and edit:
- Database Name - Internal
- Table Name - PickSequence
- Command Type - Update Table
- Condition - Where SKU = '<%Obj_SKU%>'
- PickedYet - 1
- Switch to under ObjectProcessingCompleted and insert two lines
- Set Line 1 to a DB Interface Action and edit:
- Database Name - Internal
- Table Name - PickSequence
- Command Type - Select From
- Condition - Where OrderNumber = <%Obj_OrderNumber%> AND PickedYet = 0
- SKU - Obj_SKU
- Quantity - Obj_Quantity
- Change Line 2 to a DB Interface Action and edit:
- Database Name - Internal
- Table Name - Warehouse
- Command Type - Select From
- Condition - Where SKU = <%Obj_SKU%>
- Location - Obj_GoingTo
- Now go under ObjectNextProcessDefined
- Insert a line, set to an Expression Action and edit:
- Set NextProcessToStart = Obj_GoingTo
- Right click 'MOD_Rack' and select Convert to Base Module, then delete the process
- Now use the Auto-Create Processes tool to create the 30 racks that will be used for this model
- Number of Processes - 30
- Copy Properties from - Mod:MOD_Rack
- Middle - 'W'
- Number of Digits - 1
- Select all 30 racks and select Auto-Create Path, change Path Direction to Left to Right and click Create Path
- Create an End Process, 'End'
- Finish the layout by connecting the model together as shown
- Run the simulation
- The model runs correctly but a problem will occur when the order is complete, we need to add logic into the racks to tell the order to go to the end when the order is done
- In the Model Build tab
- Select Smart Module and click Refresh
- Edit 'MOD_Rack', go into Process Extensions
- Under ObjectProcessingCompleted insert three lines
- First of which will be a Condition Action and edit:
- GetProcessName(ModelID, ProcessID) == Obj_GoingTo
- Next will be an Expression Action:
- Lastly another Condition Action:
- Run the simulation again and watch as the values on the objects update and show 'End' when they are done
- To run one order at a time let’s set a Resource to pick each order, go into Resources and Shifts.
- Create 'Worker' and set to '1', click Add
- Now select all connections lines from 'Route Pick' to 'End' and go into Resource Constraints
- Set 'Worker' to 1 and check both Enable and Hold Resources
- Also go into Speed/Distance/Capacity
- Check both Speed based on Units/Sec and Enable Auto-Distance calculation
- Go back into the Smart Module
- Edit 'MOD_Rack', in the Resource Constraints
- Set 'Worker' to 1 and check both Enable and Hold Resources
- Run the simulation a final time and slow it down to see the changes on the object values as the order is completed step by step
- Tutorial involves linking Simcad Pro with an excel sheet; CLICK the link to DOWNLOAD the Excel Sheet.
Number of views (8988)/Comments (0)
Tags: