Jump to content

Crane Library - Bridge and Underhung bridge cranes


Recommended Posts

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.

Link to comment
Share on other sites

Actually it was doing that at one point and then we fixed it. :)

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 4 months later...

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.

Link to comment
Share on other sites

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.


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.

Enjoy! (Requires Simio 5.86 or later)

We are still anxious to receive your feedback on this library.

Link to comment
Share on other sites

  • 2 weeks later...


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.


Link to comment
Share on other sites

  • 5 weeks later...

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."


best regards

Link to comment
Share on other sites

  • 4 months later...

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Very powerful...

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?

Link to comment
Share on other sites

  • 1 month later...

Attached is V5 of the Crane Library. This version was developed in Simio 6.97.

The new features in this version are:

- Cranes now have a home node and an initial node. This enables the crane to be positioned at a different location at the start of the simulation run than the location where it resides when the crane is idle.

- Cranes now have a home bridge that is different from the associated bridge. The associated bridge is used with the crane is initialized. The home bridge is the bridge where the crane resides when the crane is idle.

- The Math.EPSILON delay is no longer needed for the first entity arrival.

- Additional bay symbol. By default, the bay uses a symbol that is opaque (grey). If symbol index 1 is used (e.g. Current Symbol Index = 1 on the bay), the bay is transparent. The transparent bay is helpful if you wish to see schematics placed on the floor of the model.

Additional, the following Simio V6 features has enhance our ability to model cranes.

- You are able to turn off the Entity Instances at runtime. This is an option under the “Visibility” tab. With this option turned-off, the entity instances (including transporters) used to configure the model during design time, will not be shown when the model is run.

- Entities now have a property for “Dynamic Label Text” under the “Animation” property group. This property enables a string expression to be added to any entity that will be shown during runtime. In the example, we are showing the current entity riding on the crane. The expression is “Math.If (Crane.RideStation.Contents.NumberWaiting > 0, Crane.RideStation.Contents.LastItem.ModelEntity.Name, "Nothing")”



Note the following file is obsolete and has been updated in later posts below. (7/24/14)

Link to comment
Share on other sites

  • 6 months later...

Hi Glen,

We have been using the Crane Library of early 2013 in our model and it worked fine until all of a sudden we received this message:

Requesting seize of resource(s) in behalf of owner 'Crane7[1]'.

Object 'Crane7[1]' seized '1' capacity unit(s) of resource 'Crane6[1]'.

Issue 1: Crane 6 then also stalled and did not transport any entities for the remainder of the simulation.

We tried the Cranes V5 library and now we get the following issues too:

Issue 2: Home node property was not specified. This seems to be an issue before run time. All the Cranes' home nodes are specified in the model. See screenshot.Crane_HomeNode.thumb.JPG.6bb4420df17fe1308c8fc424873c006a.JPG


Issue 3: Inside the Crane process "MoveCraneToNode", the "OwnsCrossAisleZone" step throws an error as per the 2nd screenshot. Crane_OwnsCrossAisle.JPG.450c20ef54b0c692a496e413d2b3cd14.JPG


We didn't have these issues in the older library. Do you have any idea what could be causing any of these 3 errors?



Link to comment
Share on other sites

I created a new simple model with a single crane bay and get the same issue 3 error message about exceeding the value for the OwnsCrossAisleZone in the V5 library, but building the model in V4 does work. V5 seems to have some cool new features, so any help in getting it to work would be great. I ran the test models in Simio Team version 6.102.11054.

Link to comment
Share on other sites

We are looking at this problem and will report back as soon as we find the problem.

In the mean time, if you have any real or small sample models that illustrate the problem, please post or email to me.


Link to comment
Share on other sites

Guest ncollins

Attached is an updated Crane Library that addresses the recently reported issue with the single crane bay. This library is for use with Simio 6.106. Please let us know if you find any additional issues with this library.

Link to comment
Share on other sites

  • 3 months later...
  • 2 weeks later...

Based on a number of issues reported to the Crane library, we are providing this update - (Simio v 6.106 or higher needed)

The fixes include:

1 - Added a fix to the push idle bridge logic. There were cases when the idle bridge could be moved where the logic was saying it could not. This fix removed a number of deadlock issues.

2 - Add re-plan of all cranes within a bay after each crane is unloaded. This change will improve the crane selection logic to reevaluated after each crane has completed a move. Since the selection logic is being reevaluate more often, the cranes should be better utilized.

3 - Exposed "Initial Number In System" properties on the bridge and crane objects. With is property exposed, it is possibly to disable bridges and cranes by setting this property = 0.



Link to comment
Share on other sites

  • 11 months later...
  • 1 month later...
  • 5 months later...

Hi, I am working in a model with 2 cranes in 1 bay, and they normaly work each on one half of the bay (left and right) but sometimes the crane that works on the left has to go all the way to the right of the bay, and also the other way, the crane that normally works on the right side of the bay has to go all the way to the left side.

My first problem was that the right side crane wouldnt let the other one into her "territory" until all stars aligned, even if it was not busy, so i added logic to solve this problem and every thing is working well. But, it comes a time when I get a "Destination undefined." warning even when it has a valid node to go to, proven by many other entities that passed and moved the crane to that node.

And, all this explanations fail to be of use after all, because when I changed a little thing to the cranes (the idle action up position to false) I had the same warning in another completely different node that had nothing to do with the first problem.

We traced the activities of the crane and came up with a coincidence, the crane and the lift cancel their up movement for some reason, and this happens every time we get the warning.

Are we doing something wrong? Can you help us?

We would really appreciate it :D:wink:



Link to comment
Share on other sites


  • Create New...