Robotic Pick-and-Place in SIMIO...The system being modeled Three cartoning cells, ten robots arms...

Preview:

Citation preview

Robotic Pick-and-Place in

SIMIOSatish Mallya

Agenda

Company intro

Quick look

WIIFM?

Project background

The problem being solved

Why is this special?

Overview of technique

Deep dive

How it mattered

COMPANY PROFILE30 Years of Working Exclusively in the Food and Beverage Industry

DENNIS GROUP

• Complete planning, process engineering,

facility design and construction management

services exclusively to the food &

beverage industry

• Excel at providing innovative, cost effective

and high quality services to clients worldwide

• Full-service and deeply experienced in

delivering total project solutions from

conception through start-up; our staff includes

all disciplines required for single source

total project delivery

Established 1987

Project Volume $300-500 MM

Employees 400

U.S. OFFICES

Springfield, MA (HQ)

Atlanta, GA

Battle Creek, MI

Salt Lake City, UT

San Diego, CA

INTERNATIONAL LOCATIONS

São Paulo, Brazil

Toronto, Canada

Porto, Portugal (Tech4Food)

EXPERIENCE WITH FOOD PROCESSORS OF ALL SIZES

DENNIS GROUP | 4

We’ve worked for

small start-ups

and more than

half of the top 100

food companies

Public Companies Private Companies

DGL Modeling

Dedicated modeling group

Industrial and Mechanical Engineers

New process lines

New packaging lines

Modifications to existing process and packaging lines

~70% SIMIO

~60% independent projects, ~40% project support

Video

Why is this special?

Pick-and-place has always been a bit tricky in SIMIO

Allows ‘picking’ from one conveyor to another –mid-conveyor!

Looks good

Very flexible – one process controls many similarly configured robots

Small modifications can allow wildly varied applications

Simple-ish to implement

What’s in it for me? Immediately useful technique – make

some robots yourself!

Keeps accurate track of robot states

Allows for ‘picking’ from many moving

conveyors to many moving conveyors

Event-driven – not very computationally

expensive

Data-table configurable

Project Background Food bar production and packaging facility

Multiple types of bars are produced on three lines

Bars are wrapped on four individual wrappers

Wrapped bars are fed to cartoners

One group of cartoning robots per line (multiple lines)

Lines can operate independently

Lines can operate in tandem to pack different types of

bars into variety packs

The system being modeled Three cartoning cells, ten robots arms each

Each cartoning cell has five robots on each side of the product

belt

Product belt is five ‘lanes’ wide

Robots may reach across belt (scenario to be accommodated)

Picked product is placed in cartons moving in the opposite

direction

Cartons must be filled to target before exiting cartoning cell

Similar robot cell

The system being modeled -

challenges

Individual product belt lanes may fail (wrapper

failure)

In Multi-flavor Pack mode, this can slow or stop

carton belt

Arm fill targets can shift workload

Overflow is possible (i.e. unpicked bar)

Easier to model individual arms than guess at

these effects

Complete cartoning cell

Video

Common Process

Configuration Data Table (generated in

Excel)

Configure Token to distinguish robots

Read into Token based on Robot

The Linchpin expression

CartonerToken.ConveyorInHand.Co

ntents.ItemAtIndex(CartonerToken

.Looper[2]).ModelEntity.PickedToken for this

instance of

RobotControl

Object state

variable of token

for currently

considered

conveyor

Conveyor’s array property

with ModelEntities

Indexing into the

arrayWith this index variable

array

At this indexFor an object of

type ModelEntityAnd look at its

‘Picked’ variable

Deep look (pick an input conveyor, or idle)

Wait for

inbuilt events

DesynchronizeConveyor IndexExhausted

candidates?

Object IndexMax.

Numbertravelers

Conveyor object

to token variable

This particular

conveyor has

travelers?

Object at

current index

set to

‘Pickable’?

Deep Look (Pick a bar)

Increment

object index

Check to see if we

exceeded objects on

conveyor

Next Conveyor

Mark object pickedChange object pictureSet process timeStart associated sourceWait for

source

node exit

Stop SourceWait for server exit

Target indexDon’t worry about this

Or any of this stuff

Check for target conveyor

numbertravelers

Check fill level

(target

modelentity

state variable)

Increment target index

Wait for associated node

entry (Inbuilt event)

Increment target

modelentity state variable

Fire an event so blocking

nodes reevaluate

How it mattered

Experiment with filling philosophy

Observe lane balancing between cells

Stuttering effects between lines (uneven fill times)

Accurate runoff

Confidence

Capability to do it again, rapidly

Feedback

Questions?

Comments?

Thank you!

Recommended