Usage with Warehouse Control System

Hi,

I just found Factory IO yesterday. Looks nice.
However I’m not sure it covers my needs. I develop and maintain a largish Warehouse Control System. We adapt it heavily for each project - if needed.
It all depends on how the site looks like of course.

A very common scenario is that we are faced with one or two conveyor systems - pallets or totes -and some kind of storage system - like cranes or shuttles.

The problem is that is is very often a (to us) new vendor delivering the hardware. And almost all vendors are
thinking that their communicating protocol is the best there is.

So - adapting to new communication protocols are something we need to do in almost all projects.
Usually it is socket-based. Some kind of byte-array or text-string is exchanged,
with fields containing different data. Like assignment-id, from-location, to-location, loadcarriertype, height, weight, sizes, barcodes…
we’ve seen one with JSON, and another with XML. sometimes 1 socket , sometimes 2.

So for conveyor a telegram sequence like this is common
Pallet is introduce at an id-station
PLC sends a format telegram containing

  • location
  • barcode
  • sizes
  • errors (too wide/ bad runners etc)

WCS thinks bit and then replies with an Transport order with

  • an assignment-id
  • from-location
  • to-location

The conveyor system now moves the pallet towards the destination.
Once it has arrives it will send an Assignment completed tgm

  • assignment-id
  • location
  • Error-code

If this is not the final destination, the WCS does some routing calculation,
and sends a new Transport order, and waits for a new assignment completed

This can span over large areas, so the transport start in PLC 1 and passes
over the area PLC 2 and PLC 3 covers and ends up at PLC4.

for inbound transports, the pallet usually eventually is picked up by a crane.
The telegrams looks different, and it may be another vendor. But same priciples applies.

So I am after an emulation program that I can

  • draw the site into a model. 2d or 3d does not matter.
  • I like to communicate with the model - by sending
    data in the way that will be used on site.
    I like to send the site-specific telegrams mentioned above.
    The model then needs some logic to
  • understand the telegrams
  • carry out the commands in the telegrams
  • report back after movement.

This is done in PLC on site, but I want to be able to have that logic within the model.

Now - I don’t see that here, I see ‘connect the PLC to the model’
But we are not PLC-programmers. We just talk to PLCs we have no clue of programming them.

I can see that we need to create som middle-ware to have this chaing

WCS ↔ site cnv-protocol ↔ middle-ware ↔ model-protocol ↔ Model

where model-protocol would be generic like

  • MOVETO
  • REPORT-MOVE

and for cranes

  • PICKUP
  • REPORT-PICK
  • DEPOSIT
  • REPORT-DEPOSIT
  • REPORT-STATUS

Has anyone done this ?
is it possible? Or do we have to draw a full conveyor system that
moves pallets only by turning on Motors and reading sensors?
Or is this not the right tool?

What I am after is something that I can draw fairly fast. I does NOT need to be exact as the drawing. The logical message exchanges is what is important.
The way the PLC turns on/off motors are of no real interest here.

/Björn

Hi bflundin;

Let’s take it step by step:

1- FACTORY IO covers almost 99% of your needs, provided you don’t need to connect more than one PLC at a time in the scene.

2- There’s no problem sending telegrams between PLCs and having them obey the telegram command.

3- The transport starts at PLC 1, passes through the area covered by PLC 2 and PLC 3, and ends at PLC 4, without any problems whatsoever.

4- I have no problem creating what you’re looking for: an emulation program that can do what you’ve described.

BUT…

You need to explain what you want to do more slowly and with a programmer’s mindset. In other words, don’t write it all at once like you did before. No, not like that. Think like a programmer. Break your case down into smaller parts and explain them here, calmly and without rushing.

Watch these videos, analyze them, and compare them to what you want to do, and then share your thoughts here:

Your wishes are a hobby for me.

Regards.

2- There’s no problem sending telegrams between PLCs and having them obey the telegram command.
But where is the PLC? within the model? or outside?
Is it programmed as a PLC or is there a way of programming PLC-logic in a non-PLC language within the model?

3- The transport starts at PLC 1, passes through the area covered by PLC 2 and PLC 3, and ends at PLC 4, without any problems whatsoever.
Sounds good. My focus here is not to test the PLC, but to test the WCS side of the protocol.

4- I have no problem creating what you’re looking for: an emulation program that can do what you’ve described.
This sounds good. Can you elaborate? Does this program control the model’s conveyor system?Are there ready-made components like a crane/racks and conveyor systems. I see conveyor systems in the video,
and I guess they are put together by ready-to-use sections.

Let’s look at a simple layout like below.
A pallet arrives at ID1. It appears by the model creating it.
This can be done by the model reading a file on disk with pallet properties,
or generated by the model.

Here I’d like the model to send a telegram with
relevant (faked) data to the WCS - prefferbly with a bespoke protocol.

The telegram will then be responded to by WCS sending a Transport order.
‘Please go to SP’

  ID1
   |
   |
   SP
   |
|---------|
|         |
C1        C2

The pallet then moves to SP and send an arrival telegram to WCS.
SP is a selection point, where WCS select a location within the racking,
and also the input conveyor to the crane (C1 or C2)

So new transport tgm to the model, to move to say C2.
Once there the model reports back arrival at C3 to the WCS

Next is the WCS to tell the crane at C2 to pick it up - with another protocol.
It replies to the WCS with status of the pickup.
if Ok, WCS tells it via a deposit tgm to move and put the
pallet into racking at a certain coordinate.
Once in the racking, the crane reports back the status.
The pallet is now stored, and we are done

The main question I have is

  • are there ready-made components like this?

  • if not - is it possible to create them, and reuse them?

  • and the programming - can it be done within the model in a high-level language?
    Or is it ladder-logic or structured text the way to program it?

  • And with that comes - are the consultants around that can do what I want?

  • The most important question is then - In order to make the
    pallet move from ID1 to C2 via SP, do I control all
    the conveyor sections on the way ? Or is the tgm from A → B possible
    to send without PLC logic being programmed.

>Break your case down into smaller parts and explain them here, calmly and without rushing.

I’m not after programming details now. I need to understand the overall architecture
before the details come into place.
I see that a model i Fabric I/O can be connected PLC - thus testing the PLC code.
But I’m after testing the other side of that PLC’s connection.
and have the PLC logic inside the model - with no PLC. Some vendors call it IT-testing

/Björn

Hi bflundin;

2-The PLC is inside the model and connected via Ethernet.

3-That’s what we’re going to do, the socket protocol that controls the PLC, the PLC is the least important thing.

4-Nothing is pre-assembled; you have to do it yourself with the existing tools. We’ll do it together, and you’ll see how it all falls into place…

Let’s see your design adapted to a scene:

The questions you have:

No, the tools to create them exist.

If they can be created, then we will.

Yes, the programming must be high-level: C#, .NET, ASP.NET, Python, JavaScript… logic and ST are not suitable for this type of programming.

There are no consultants for what you want; you must create it with existing tools.

This cannot be done without a PLC. Each part has its function and both must be coordinated.

The image shows the system architecture and assembly details.

Now I have a question:

Is this what you’re seeing in your idea? Have I understood correctly?

If so, implementing this requires 150 lines of code and takes approximately one hour.

Regards.

What you just did borders to fantastic.
I had in mind that the crane and rack was rotated 90 degrees,
and there are 3 cranes traveling i 3 aisles surrounded by 2 racks each.
This screen-shot below indicates what I meant.
However that is details, your rigg reminds me of a
large Swedish brand making washing machines. After they are completed, they
were (this is long time ago) put in a test rigg, washing some clothes before shipped to dealer.
And was very similar to your setup.

The PLC is inside the model and connected via Ethernet.
3-That’s what we’re going to do, the socket protocol that controls the PLC, the PLC is the least important thing.

And this is what I don’t understand. What is the role of the PLC here?
Why is one needed?
I think we come from different worlds so we may have different ways of thinking.
In the screenshot above you see some lines in the bottom were we have sent
telegrams to conveyor PLC and to the stacker cranes.
(the yellow and cyan thins are doors depalletized from pallet, and entering
a conveyor. the yellow doors are at selection points, waiting to
be picked up by transfer cars and then to be delivered to inbound conveyor of crane.
never mind the right part of the pic.)
The pic is from a tool we use sometimes - which I’m looking to replace.

Yes, the programming must be high-level: C#, .NET, ASP.NET, Python, JavaScript… logic and ST are not suitable for this type of programming.

So exactly what do we program here? The movement from ID1 to SP ?
how to interpret the tgms?

This cannot be done without a PLC. Each part has its function and both must be coordinated.

But what does the virtual PLC do - in detail?
Does it control the motors? Does the high level programming part involve
turning conveyor motors on/off and read sensors for item presence?

4-Nothing is pre-assembled; you have to do it yourself with the existing tools.
We’ll do it together, and you’ll see how it all falls into place…

But the orange crane you have in the pic - is that not a pre-made object?
Did you create this just now?
And I see roller conveyors/switches/chain conveyors.
Surely they already exist in some library?

The arrows you have drawn for the tgm exchange are between
different location in the layout and the WCS. That is fine,
and they are placed as I imagined it. So far so good.
Then there is the display labeled PC. I assume the model runs in there.
But again - I still don’t get the role of the PLC in the PIC.
What messages are sent between PLC and the model.

In the tool we have used, if you create a route between 2 location on the conveyor system, and send a pallet from one location to the other you program it in the model.

pallet.MoveTo(location2)

and then it moves. It handles routing itself. This is the kind of programming I’m after. So what is the role of the PLC in Factory I/O? Routing between locations?

When I asked about high-level programming I also mean
the emulation of the PLC on a high level.

If so, implementing this requires 150 lines of code and takes approximately one hour.

Impressing

There are no consultants for what you want

Hmm, too bad. This could be a business case.

Sorry for being a bit confused.
However I really see potential here

/Björn

Hi bflundin;

Don’t worry, you’ll understand it perfectly, from the PLC’s location to the system’s structure.

That’s why my channel presents the videos from beginning to end, so students can follow along.

I’ll finish contribution 112, which only requires the database, and then I’ll work on your project in phases.

Regards.

Hi bflundin;

I’m going to summarize your post; we’ll go step by step so you understand what we’re trying to do:

The PLC’s function is to act as an intermediary between the telegram and the machine motors, and simultaneously between the machine sensors and the telegram. The PC sends a “telegram” to the PLC to advance the part, and when the part reaches the sensor, the PLC sends a “telegram” back to the PC to indicate its arrival. However, both the “telegrams” entering and leaving the PLC are in the form of bits or memory words that the PC must interpret and display the result to the operator. This is where high-level programming comes in, and it cannot be done with ladder logic, ST, or even Grafcet.

As you can see, the PLC is essential to control all the motors and all the sensors and color detectors and other elements that may exist in the system.

We don’t come from different worlds because all programming is “the same”; obviously there are differences, but ultimately one is as good as another…

High-level programming involves sending and receiving messages. It receives messages from sensors or operators, and depending on what it receives, it sends them to motors or to operators in the SCADA or HMI system.

Factory IO objects, orange crane, tables, rollers, etc., are elements that Factory IO incorporates to create scenes. When I say there is no pre-configuration, I mean the telegrams; it would be the same as a database—what you need doesn’t exist, only the tools to do what you need.

Messages are sent between slave and master, with the slave in this case translating the telegram into bits or memory words.

In this case, no route is created between two locations because there is only one path. The pallet is sent and we wait for it to arrive at its destination. When that happens, the PLC detects it and sends the telegram to the PC. Therefore, there is no route to follow, as if it were, for example, an automatic baggage handling system. Here, there is a route, but it is a more complex issue because it has to be configured BEFORE the package leaves, which is not the case here.

The idea of ​​using 150 lines and doing it in 1 hour (that’s just an expression) is something I’ve already done; I just need to adapt it to your situation. Any other user of this site would take much longer. Besides, my library is perfectly structured to handle any eventuality, as was the case with you…

Consultants are scarce in these cases, and they’ll become even scarcer, I know from experience.

Don’t worry about your confusion; we’re going to clarify many things practically, not theoretically, which is the most common approach—lots of theory, but then there’s no way to know if it actually works or not.

We’re going to demonstrate that Factory IO is perfectly useful for analyzing systems like the one you mentioned, in a clear and easy-to-understand way, and we’ll leave its potential there.

Now that contribution 112 is finished, I’m going to start on your topic.

Regards.

Hi bflundin;

This is what the PLC does and what it’s used for.

Regards.