question

Fabio G10 avatar image
0 Likes"
Fabio G10 asked Fabio G10 edited

How can I use two different bridge speeds in one travel task with Cranes ?

Hi everyone..


I need to simulate a crane working with two Max Speeds in the movement along X Axis (only). More in detail, this crane uses a lower speed at both sides of a warehouse so I need to change de max speed at some point in the travel (for example X > position). The crane is moving with initial max-speed and at some point it must change max-speed so the crane must decelerate to this new lower speed while moving and continue traveling.


I’ve tested some options:

  1. With kinematics, dividing the travel work in two parts and starting the second part with a fixed speed (and infinite acceleration) but I can’t calibrate for all movements (short travel don’t arrive at max-speed for example and I can’t get the current X speed at that moment). Seems that I have to do all things manually and could miss something in that way.
  2. With travel network, setting a node with different max-speed it works, but I need to the crane travel freely to all warehouse points in both axis.


Can you help me with an idea to achieve this type of crane movement ?


Regards

Fabio

FlexSim 22.1.3
cranes
· 3
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Joerg Vogel avatar image Joerg Vogel commented ·

Agent System Tool: Change Speed in Proximity Detection.

Dev Talk around 8 minutes

0 Likes 0 ·
Jeanette F avatar image Jeanette F ♦♦ commented ·

Hi @Fabio G10, was one of Jason Lightfoot's or Joerg Vogel's (he updated his) answers helpful? If so, please click the "Accept" button at the bottom of the one that best answers your question. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always unaccept and comment back to reopen your question.

0 Likes 0 ·
Fabio G10 avatar image Fabio G10 Jeanette F ♦♦ commented ·

Hi Jeannette. I'm trying to achieve Joerg's approach these days (building my own custom travel tasks as suggested) to achieve the desired movement. In the meantime I'm using some kind of approximation like Jason mentioned in his last comment, so I will mark Jason's answer as accepted.

0 Likes 0 ·
Jason Lightfoot avatar image
0 Likes"
Jason Lightfoot answered Jason Lightfoot edited

You can use your preferred navigator to do the heavy lifting and then just use a preempting, zero time delay task to force the TE to alter its speed at the appropriate event in the middle of travel (any travel - offset or otherwise). That event could be based on a proximity agent as Anthony's video explains or something of your own divising.

To change the gantry speed execute something like this:

Object o=Model.find("Crane1");
Array speeds=o.getProperty("CraneSpeeds");
speeds[1]=[1,0.5,0.5];  // 1 is gantry/bridge  -values are [maxspeed, acc, dec]
o.setProperty("CraneSpeeds",speeds);
· 2
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Fabio G10 avatar image Fabio G10 commented ·

Hi Jason. Thanks for your answer. I've tested what you are suggesting but I can't get de Crane slow down speed without stopping and reinitiating movement. I've tried using Proximity Agent, updating speed and preempting with a zero DELAY task but Crane stops and restart movement.


So, I tried to change speed and modified acceleration to almost infinite to get rid of the movement restart, but still not get the Crane slow-down from initial speed to new speed. It changes speed immediately.


print ("Crane - Enter Proximity");

Array speeds;
speeds = agent.object.getProperty("CraneSpeeds");
speeds[1]  =[0.7, 10000, 0.5];
agent.object.setProperty("CraneSpeeds", speeds);

TaskSequence taskSequence = TaskSequence.create(agent.object, 0, PREEMPT_ONLY);
taskSequence.addTask(TASKTYPE_DELAY, 0, 0, 0);
taskSequence.dispatch();


How can achieve decelerating Crane to new speed ?.

I watched Anthony’s video but seems that AGV can slow-down automatically on speed change, but I think Cranes are not working in the same way.


Attached is my test model (in zip format, fsm file 2022 Update 2 gives me an error)

TestDifferentSpeedsCrane.fsm.zip


Thanks!

0 Likes 0 ·
Jason Lightfoot avatar image Jason Lightfoot ♦♦ Fabio G10 commented ·

Yes, you're right - the offset travel of the crane assumes the start speed is 0.

There are some ways of getting around this - for example have it travel at the average speed of the deceleration phase for the deceleration time, and then set it to the slow speed.

You could add a suggestion/idea to implemented the setProperty method for speeds such that the adjustments are made to existing travel kinematics - that way you wouldn't need to do the preemption trick/workaround.


0 Likes 0 ·
Joerg Vogel avatar image
0 Likes"
Joerg Vogel answered Joerg Vogel edited

Crane movement is Offset Travel. This means the navigator executes FRLOAD and FRUNLOAD tasktype of a travel task only.
You can relatively in percent insert tasktypes of PICKOFFSET and PLACEOFFSET to assign new speed sections for transport jobs in your transport tasksequences.
tasktype PICKOFFSET
You will compute the relative location of speed change individually for each job depending on pick and place location and crane movement rule.
You can use another so called “OFFSETTRAVEL” tasktype. It is TRAVELTOLOC.

EDIT: Once a travel squence is established, you loose control over offset travel code injection.

You can try to implement an own beginOffset node under cppfunctions to setup a different kinematics scheme for cases of "X" and "Y". You devide in this section this travel kinematic into a sequence of sections with different accelerations and velocity values.

The default code node is in main tree:

MAIN:/project/library/taskexecuters/Crane>behaviour/cppfunctions/beginOffset(double endspeed, treenode item)

· 1
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Fabio G10 avatar image Fabio G10 commented ·

Hi Joerg, I've tried this suggestion but always get the speed re-start at zero for the new added section (same behaviour that I wrote in my comments to Jason answer..). All I can do is to set the new speed with infinite acceleration for the new section and it works without stopping the crane movement, but changes speed immediately (not decelerating).

I guess I'll make some approximation in that way (changing the speed immediately)

0 Likes 0 ·