Modeling multiple cranes on a common (shared) runway is hard to do well. Still harder when you take into account acceleration, crane blocking, and good 3D animation. If you have encountered this problem, here is a solution.

For standard bridge crane movement, we recommend the simpler Crane object in the Extras library. But if you need the underhung cranes with cabs moving between bays, read on...

The Simio Crane Library is a collection of objects designed for modeling multiple cranes operating simultaneously in a bay. The library is provided as an example of complex material handling using the standard features of Simio. The Crane library may be used in conjunction with the Simio Standard Library, and Crane pickups are done using the standard TransferNode (e.g. the output side of a Server). Crane drop-offs can be done at either a BasicNode or TransferNode. The Crane Library can also be used with custom libraries as long as they support rider pickups using the standard transporter ride features.

The Crane Library consists of objects representing the Bay, Bridge, Cab, Lift, and Crane (the end effecter that actually picks up and drops off the item). These objects are combined together to model multiple cranes moving in a single bay. The separation of objects in this way allows you to use your own symbol for each component. A Crane movement occurs by first rising up from the pickup node to a specified travel height, traveling laterally at that height, and then lowering down to the specified drop-off node. All travel is done through free space without the need to explicitly draw a network. The Crane library also fully supports independent acceleration/deceleration and the ability for one crane to cause another blocking crane to move out of the way.The above library file is now obsolete. Instead, download the library posted closest to the bottom topics.

Like all Simio-provided libraries, this library is open so you can look at how it was built, learn from it, and subclass your own objects to improve them. But unlike our built-in libraries, this is not fully supported (although we can provide some help) and we may not continue enhancing it, particularly if we decide to build this capability into the base Simio products. We are anxious to receive your feedback on this library.

Seriously, that isn't a typical behavior of cranes sharing a runway, but I could see that some cranes might allow that. The point of this library is to provide cranes that work together as a system. But that might be an optional behavior that could be implemented in a future library or it could certainly be added as a specific user variation of the library.

Or, depending on how interdependent they are, you might just model your system as multiple (sets of) cranes that just happen to operate in the same space.

If the two cranes travel on the same rail tracks/ runway, of course they cannot pass each other.
What I like to simulate, is a crane system where two cranes, with different heights, travelling on two different runways work as one system on one storage block.
Inter-crane interference happens between the cranes, when the larger crane lowers its lift/crane while the smaller crane tries to cross. Also, if the larger crane transports a (e.g.) container and crosses the smaller crane, it needs to move its cab to the leftmost lane (service lane) first, because it cannot lift a container above the small crane’s cab. When cranes interfere, a safety distance has to be respected.

As noted in the initial post, there were some performance problems when it was used as a library, but those have since been fixed in recent Simio versions. So now you can load it as a project and just drag crane objects from your project library into a new model. Or you can load the crane libary as a library (Project Home ribbon > Load Library) and use it as a normal library.

We are currently in quality control on some major enhancements to this library including features to deal with Blocking (moving another crane out of the way), Deadlock avoidance, and modeling Underhung Cranes (allow cabs to move between bridges and bays). Hopefully we will have that available to post within 2 weeks.

We have made lots of enhancements and additional features to this library.
--It now supports limited blocking avoidance (one crane will move out of the way of another).
--It supports acceleration and deceleration.
--It supports a little bit of deadlock detection/prevention (but that is a huge field).
--And it supports movement of cabs from bridge to bridge, even across buildings as permitted by the new style of Underhung Cranes.

While Underhung Cranes aren't yet popular, they are really cool to watch (both live and animated) and there are many compelling benefits why we will start seeing a lot more of them.
SO FAR, ONLY SIMIO CAN MODEL THEM!

And since these, like all Simio objects, are open to view, you can see how this was done and use the same techniques to make your own compound objects like robots, lift trucks, and other mulit-part devices.

I tried this library and it is a nice thing to work with. Few suggestions:

1.) It took me some time to get the difference between ForwardandBack and LeftandRight.

2.) Crane can, to my great suprise, transfer entities to nodes out of Bay. This happens only if the node is outside bay in the direction of cab movement. If it is outside bay in the direction of Bridge movement, warning appears.

3.)If Crane initialnode must be the same as bridge initialnode, it should be nice to have this set by default. This is not possible in Simio at the moment I think.

4.) It would be nice to have transparent Bay with borders only (Or a choice to . Sometimes we have layout of factory and bay does not look good and hides important things on layout.
Ok I found that I can change bay as any other object but still transparent color for objects would be nice.

5.) Crane and other crane components do generate a lot of data in trace. It would be nice to have possibility to swich this off just for some steps inside crane and co. I used it in a model that has a simulation time of 1 month and this made my trace impossible to filter and analyse.

6.) If I have Bridge1 initialNode and CraneInitialNode the same as node where my entities go to be transfered, I get this error. I has something to do with fact, that bridge does not have to move, so it has movement.rate == 0

7.) In one model the lift started to fall into depth. This happens if entity has destination node set to specific and to the same node where it is. (e.g. if TransferNode1 is set to Entitity destination type specific, NodeName = TransferNode1) then crane will fall in the depths.

This is a very cool library, i have built two very simple examples to test before using it in a simulation in which they will represent Ship to Shore Cranes.

First of all, it took me a moment to figure out that "entity destination" on my home node for the crane has to be set to "specific", can this work using "continue" ?

Now, on attached example 1, the Crane picks the entity and will wait for an available vehicle to make the transfer, building a queue in the home node for the crane if there is no available vehicle. This is great since it reflects what happens in the actual operations, the crane waits for a truck to be below the crane to drop the container.

But there may be interest in simulating the crane dropping the entity into the floor and just keep unloading the ship, this means i now want to drop the entity without the vehicle being available.
Is it possible to control this behaviour at will? I was looking for the option of an input buffer of some sort but for now I just add a normal node and allow the crane to drop it there it will build a queue waiting for the vehicle, this can be seen on example 2, I appreciate any ideas,

also, I tried scaling the elements and it gave me an error on height, so I was wondering what should i take into account when scaling (changing size) of this elements? I will take a screenshot next time I encounter the error.

finally, I will be using this element in my simulation, and i was wondering what are the thoughts on "tulach" question:
"5.) Crane and other crane components do generate a lot of data in trace. It would be nice to have possibility to swich this off just for some steps inside crane and co. I used it in a model that has a simulation time of 1 month and this made my trace impossible to filter and analyse."

Attached is an updated crane library. This version includes the following changes.

1) Crane Specific Transfer Bridge List.....Each crane can use a different bridge list. This gives added flexibility and helps avoid blocks. (e.g. Crane A within a bay can choose Bridge A and Bridge B while Crane B can choose Bridge B and Bridge C).

2) Animation for the seizing of the Cross Bay Transfer Aisle zones....Now when a crane seizes the cross bay transportation bay zone, the zone is display as a dark grey.

3) Bay is no longer visible. This allows for status objects, status labels and symbols that are placed on the floor to be visible.

I updated the library in the above post. This version is "CraneLibraryV4a.zip". In this version, I fixed both issues.

1) There needs to be a Math.EPSILON delay on first entity arrival to provide time for crane initialize. Update your source and add a "Math.EPSILON" delay to the TimeOffset property. This will provide enough time for the crane to initialize. I added a warning message to the library if there is a reservation request for the crane and the crane is not done initializing.

2) The library was assuming that a Transportation Node was defined on the bay. In your bay, the Transportation Node was NULL. I updated the library so the Transportation Node property can be NULL.

I like the transportation aisles which allows for some limited obstacle avoidance. Is it possible to combine multiple bays with different transportation aisles but only use one bridge, such that the transportation aisle changes as the crane traverses to its destination?

Favorites

About us

Simio Simulation and Scheduling Software is the most advanced solution on the market. With simulation, it is the only software that is fully object oriented with process and objects being defined graphically with no programming. Unlike other scheduling software, Simio allows you to introduce risk into your production schedule with its patented Risk Based Planning and Scheduling. This dual function in Simio not only helps you improve your business performance from a facility design perspective, but also helps you maximize business results by optimizing the use of critical resources and assessing the risk associated with operational decisions. Learn more at simio.com