Transportation Library - Trains, Robots, Tanker

Do you have objects, models, libraries, path decorators, textures, symbols, custom API code, documentation, or anything else others might find useful? Please attach it here with a brief description.
dsturrock
Simio Team Member
Posts: 1452
Joined: Thu Mar 13, 2008 12:35 pm
Location: Sewickley, PA USA
Contact:

Transportation Library - Trains, Robots, Tanker

Post by dsturrock » Mon Dec 02, 2013 12:58 am

The Transportation Library provides a collection of objects for modeling cargo transportation using trains, trucks, boats, pipes, and robots.

The Tanker object is sub-classed from Vehicle and used to transport discrete and flow entities between node locations. The Tanker has all the same functionality as Vehicle, except it has been extended to have weight and volume limits. In addition to standard discrete pickups and drop offs, the Tanker can also perform continuous flow pickups and drop-offs using a Dock object. The Dock object provides support for flow into and out of entities and vehicles (like a Tanker or HopperCar) supporting flow. The Dock is seized/released by the Tanker/HopperCar during loading/unloading operations at the Dock. The Dock may also follow a Work Schedule.

The Pipe object may be used to model continuous flow through a fully filled pipe. In contrast to the FlowConnector the Pipe requires time for the flow material to travel. The Pipe can be used to connect flow between Tanks or between a Dock and a Tank to more accurately model the travel time of material flow from one location to another. This is particularly useful in applications where heavy liquids are transported over long distances through a pipe.

The Railcar, Locomotive, and HopperCar objects represent various types of train-related vehicles. Train movements are modeled by defining a track network comprised of ControlNode and Track objects, over which trains move. A train is a linked sequence of RailCars, where the first RailCar in the sequence is a Locomotive. The RailCar can represent a wide range of train cars including freight cars, cabooses, passenger cars, etc. In addition a HopperCar is special RailCar that is provided to support fill/empty operations at a Dock. The HopperCar is a RailCar with the added functionality of a Tanker. The RailCars can be linked together in any order; for example a train might contain two or more Locomotives.

The RobotBase, RobotLowerArm, RobotUpperArm, and RobotHand objects are the components used to model a multi-axis robot. The RobotHand is specified as the transporter and the movements of the other robot components are automatically calculated to support the required hand movement.

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. The Transportation Library was created totally by deriving its objects from other Simio objects and then supplementing with Process Logic. No C++, Java, or other user code was required to write or use these objects. And you can also customize the behavior to match your own needs.
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.

Here is a zip file containing the library, documentation, and a few examples.

Updated 2014-01-23 - The InputFlow node's Initial Maximum Flow Rate property on the Dock object was not being used to regulate the rate the Tanker was filled. This has been Fixed. The rate the Tanker is filled can now be adjusted using the InputFlow node's Initial Maximum Flow Rate property.
Updated 2014-02-17 - Updates to the Tanker and Dock objects
Updated 2014-03-17 - Updates to HopperCar and Locomotive behavior when dropping off. Also bug fixes.
Updated 2014-03-19 - Bug fixes - Loaded car no longer takes off on its own after loading, but waits to be picked up by the locomotive and The Loaded add-on process now runs after the loading is complete.
Updates 2014-04-07 - Added ability to allow a RailCar to request a Locomotive. See example DropPickTrain_DetatchToLoadUnload.spfx
Updates 2014-04-17 - Bug Fixes to previous update
Updates 2015-03-23 - Bug Fixes to previous update
Attachments
TransportationLibrary.zip
(8.95 MiB) Downloaded 582 times
Last edited by KatieP on Mon Apr 06, 2015 10:22 am, edited 14 times in total.
Reason: Bug Fix
Dave Sturrock
VP Operations, Simio LLC

dsturrock
Simio Team Member
Posts: 1452
Joined: Thu Mar 13, 2008 12:35 pm
Location: Sewickley, PA USA
Contact:

Re: Transportation Library

Post by dsturrock » Wed Dec 04, 2013 3:50 pm

I just updated the library in the original post and included some examples. We welcome your feedback.
Dave Sturrock
VP Operations, Simio LLC

MEagar
Posts: 341
Joined: Thu Feb 14, 2013 12:56 pm
Location: Australia
Contact:

Re: Transportation Library

Post by MEagar » Sun Dec 08, 2013 8:24 pm

Hi Guys,

This is AWESOME !!

The pipe is FINALLY the same as a real conveyor...

Thanks,

Mark
Mark

www.simutech.com.au

tulach
Posts: 236
Joined: Tue Mar 02, 2010 9:02 am
Location: Prague, Czech Republic

Re: Transportation Library

Post by tulach » Wed Dec 18, 2013 5:12 am

I see that if I trace Robot, there are some variables that are updated more times in one step. Is it like that those variables make conection with some other part of robot.
So I can use asign step to set varA:= varB/2 and then varA is updated instantly on the change of varB?
Petr Tulach

LOGIO, Czech Republic

ASagan
Posts: 356
Joined: Wed Oct 05, 2011 11:21 am
Location: Brisbane, QLD

Re: Transportation Library

Post by ASagan » Sat Feb 08, 2014 3:13 pm

The pipe object appears to have artificial maximum on its rate of transfer.

The pipe initially starts with a desired speed state value of 2 m/s has a hidden property input. This means that any entity transferring into the pipe starts at a maximum of that speed. Attempting to transfer entities at mass/volumes that correspond to a linear speed greater than 2m/s doesn't work.

Changing this property/state however, does not appear to fix the problem. Entities remain capped at 2m/s.
Solosi Pty Ltd -- www.solosi.com

dsturrock
Simio Team Member
Posts: 1452
Joined: Thu Mar 13, 2008 12:35 pm
Location: Sewickley, PA USA
Contact:

Re: Transportation Library

Post by dsturrock » Sat Feb 08, 2014 4:36 pm

So I can use assign step to set varA:= varB/2 and then varA is updated instantly on the change of varB?
Not quite as easily as that, but you can set a monitor on state VarB so that when it changes you can then "automatically" update VarA.
Dave Sturrock
VP Operations, Simio LLC

MEagar
Posts: 341
Joined: Thu Feb 14, 2013 12:56 pm
Location: Australia
Contact:

Re: Transportation Library

Post by MEagar » Sun Feb 16, 2014 10:23 pm

Any ideas when the next update on the Tanker and Dock objects will be completed such that I can plan to redo my old models ?
Mark

www.simutech.com.au

gtwirth
Simio Team Member
Posts: 156
Joined: Mon Jun 09, 2008 4:42 pm

Re: Transportation Library

Post by gtwirth » Mon Feb 17, 2014 10:03 am

I just uploaded the latest version with the updates to the Tanker and Dock objects. You can find the updated file in the first post.
Glen Wirth
Simio LLC

MEagar
Posts: 341
Joined: Thu Feb 14, 2013 12:56 pm
Location: Australia
Contact:

Re: Transportation Library

Post by MEagar » Mon Feb 17, 2014 7:13 pm

Thanks for the update Glen but I will wait till the next update till the Tanker has been standardized to with the rest of the Simio Flow objects.

i.e. Capacities assignments of a Tank, Filler, Emptier, Flowcontainer:
Right Capacity Assignments.PNG
Right Capacity Assignments.PNG (10.09 KiB) Viewed 13627 times
vs. Capacity assignment of a Tanker:
Wrong Capacity Assignment.PNG
Wrong Capacity Assignment.PNG (11.38 KiB) Viewed 13627 times
Not going to have to assign volume and weight at every point in the model where capacities fluctuate due to no "Load Level" capabilities as well as not going to get frustrated again because transfers don't work...i.e. transfer times don't equate real loading times time.....
Mark

www.simutech.com.au

MEagar
Posts: 341
Joined: Thu Feb 14, 2013 12:56 pm
Location: Australia
Contact:

Re: Transportation Library

Post by MEagar » Mon Feb 17, 2014 7:39 pm

Hi Glen,

There is also no onEntered process on the FlowInputNode on the dock....

Since the feed will 7/10 times be from a tank, how do you change the priority of the entity that is flowing to effect the Priority routing on the Transporter ??

Since entity instances change as they flow through regulators, this process will have to be included at the dock ??

Did you make any changes to the Pipes ??
Mark

www.simutech.com.au

ASagan
Posts: 356
Joined: Wed Oct 05, 2011 11:21 am
Location: Brisbane, QLD

Re: Transportation Library

Post by ASagan » Thu Feb 20, 2014 4:01 pm

MEagar wrote:Thanks for the update Glen but I will wait till the next update till the Tanker has been standardized to with the rest of the Simio Flow objects.

i.e. Capacities assignments of a Tank, Filler, Emptier, Flowcontainer:
Right Capacity Assignments.PNG
vs. Capacity assignment of a Tanker:
Wrong Capacity Assignment.PNG
Not going to have to assign volume and weight at every point in the model where capacities fluctuate due to no "Load Level" capabilities as well as not going to get frustrated again because transfers don't work...i.e. transfer times don't equate real loading times time.....
Interesting pick-up on this one Mark. I actually think the tanker is correct and the standard objects are wrong. I have worked on systems before where both volume and weight have been constraints depending on density.
Solosi Pty Ltd -- www.solosi.com

MEagar
Posts: 341
Joined: Thu Feb 14, 2013 12:56 pm
Location: Australia
Contact:

Re: Transportation Library

Post by MEagar » Thu Feb 20, 2014 6:21 pm

Thing here is Alan, if you look at the example included in the transportation library, you will note that they assign volume = 5 and weight = 5. Thus if you want to use this transporter for weight or volume you have to make a double assignment each time. Throw some other conversions such as weight = metric tons and boom, transfer time goes out the window.

There is also the density variable and flowcontainer fringe conditions on top of that.

Bottom line, I can break this transporter so not worth using till fixed.
Mark

www.simutech.com.au

dsturrock
Simio Team Member
Posts: 1452
Joined: Thu Mar 13, 2008 12:35 pm
Location: Sewickley, PA USA
Contact:

Re: Transportation Library

Post by dsturrock » Fri Feb 21, 2014 11:43 am

I will remind everyone that libraries posted in the shared folder are not supported Simio products. These are example utility libraries that someone felt might be useful to others.

While we welcome suggestions and even enhancements, these objects are all open and the intent is that you can modify the behavior to meet your own needs.
Dave Sturrock
VP Operations, Simio LLC

ASagan
Posts: 356
Joined: Wed Oct 05, 2011 11:21 am
Location: Brisbane, QLD

Re: Transportation Library

Post by ASagan » Fri Feb 21, 2014 10:19 pm

MEagar wrote:Thing here is Alan, if you look at the example included in the transportation library, you will note that they assign volume = 5 and weight = 5. Thus if you want to use this transporter for weight or volume you have to make a double assignment each time. Throw some other conversions such as weight = metric tons and boom, transfer time goes out the window.

There is also the density variable and flowcontainer fringe conditions on top of that.

Bottom line, I can break this transporter so not worth using till fixed.
While I stated that both can be constraints, I do find this rare. When I've used the transporter with weight = 100 metric tons and volume = infinity (say, a train wagon), it seems to work just fine. I don't think I understand your problem.
Solosi Pty Ltd -- www.solosi.com

gdrake
Simio Team Member
Posts: 80
Joined: Thu Mar 13, 2008 3:00 pm
Location: Panama City, Republic of Panama
Contact:

Re: Transportation Library

Post by gdrake » Sun Feb 23, 2014 9:52 pm

MEagar wrote:how do you change the priority of the entity that is flowing
Just a note that in Sprint 101, the Flow Library Tank object has been enhanced to provide a 'New Inflow Entering' add-on process trigger as well as new built-in 'On New Inflow Entering' state assignment options.

The 'New Inflow Entering' add-on process trigger occurs when a new inflow is starting to enter the Tank object, which may be either the first inflow into an empty tank or a change in the inflow entity type into a partially full tank.

Note that a token executing this add-on process will be associated with the flow entity that is entering the tank. Also, if the logic of the specified process includes any delays, then the inflow rate into the tank will be halted until the process has completed.

You will be able to use these new features to easily assign state values of a flow entity entering the tank, such as its Priority state value.
Glenn Drake
Simio

Post Reply