question

Fred E avatar image
0 Likes"
Fred E asked Felix Möhlmann answered

AGV battery charging and tracking

Hello,

I have some questions about AGV battery charging.

1. How to use a global table where charging times are recorded for the battery level at different ranges? Example: If the battery level is between 10 to 15 % charging time is 1080 s. If the battery level is between 70 to 75 % charging time is 360 s etc.

1658857514009.png

2. Is this the right way to track battery level? How to plot all battery levels for all four AGVs in one graph?

1658857531503.png


3. How to do some priority charging if the battery falls under 20%? In such case, the AGV must go to the charging station as soon as it is free.

1658857465334.png

My model: test300.fsm

Thank you in advance for your help.

Best regards

FlexSim 21.2.4
agvbattery chargeagv battery level
1658857465334.png (32.6 KiB)
1658857514009.png (12.6 KiB)
1658857531503.png (8.9 KiB)
test300.fsm (166.1 KiB)
5 |100000

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

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered

1. First find the correct row by comparing the current battery level to the second column. Then read the time from that row.

1658902811938.png

Note that you could also use the command 'AGV.startRecharge()'. This will set the battery rate to the recharge value set for the respective AGV type and return the time it takes until the battery is fully charged again. When using this, you won't need to reset the battery level manually.

1658902970300.png


2. Some notes on how you set up the statistics collector:

- For a time series plot, you generally shouldn't need/use a row value. The row value allows you to update a previous column with new information instead of creating a new one. You use the battery level as row value. Due to this, any level value can only appear once in your table. For example, if the level reaches 100 again after a recharge, the starting data point will be overwritten. (Or it would be if you specified which rows are updated - in the current state, the second instance of a battery value appearing would simply be ignored)

- Similarly, when rows are not updated after their creation the 'Event Value' doesn't serve any purpose and can be left empty.

Now to the actual question:

Like the event-triggered sources, the statistics collector can listen to events of an entire group. The event object will always be accessible current, which can be used to fill in the AGV column.

1658903619582.png


3. First some notes on the current flow again:

When dealing with floating point numbers, I would always choose the 'Decrease To Or Through Value' option for the level change event. Otherwise the event source might not reliably trigger due to inaccuracies.

When the battery of an AGV falls below the threshold you actually tell the next available AGV to go recharge, because you don't specify which AGV should be acquired. Normally I would say, the reference to the correct AGV can be gotten from the event in the source via the 'Assign Event Object To' option. However, in this case, the event object is returned as the AGVNetwork, not the task executer (which is odd, because the event node in the statistics collector points to the task executer, see 2).

As a workaround you could simply have a source for each task executer. If you add considerably more later on, the recharge flow could be moved into an instanced flow which would also eliminate the problem. Because the AGVs are acquired as a resource this would require more changes to the process flow though, which is why individual sources seem like the easier approach for now.

Priority recharge:

You could simply forego acquiring the task executer and instead directly dispatch a preempting task sequence to it. This will interrupt the current task until the task sequence is finished, at which point the task executer will resume the previous task.

1658905940634.png

test300-fm.fsm


1658902811938.png (19.4 KiB)
1658902970300.png (24.5 KiB)
1658903619582.png (82.5 KiB)
1658905940634.png (33.9 KiB)
test300-fm.fsm (175.8 KiB)
5 |100000

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