I'm refactoring a task handling system that creates transport tasks to shuttle wagons in a material handling system. My environment is S7.
Wanting to settle the data model first, I thought I'd ask you guys for your opinion on one specific issue.
This is regarding how to structure the data for individual locations grouping lanes and destinations specifically - how to number them.
I also want to make the new solution more adaptable to other aisle configurations
Background information
The system consists of
If a destination exists, it should find a location in the grouping lanes closest to the destination, trying to group the LU together with other LU's with the same destination.
That's the gist of how this system works.
How is the data structured today?
Like alternative 1.
There are 80 buffer lanes, and all addresses for grouping lanes and destinations are based on where they are relative to the buffer lane.
In all cases the iteration is made on the largest range:
Pros
Makes it very easy to find the right grouping lane.
Start with the grouping lane nearest the destination and work from there.
Cons
Illegal grouping and destination addresses must be dealt with. E.g. grouping lane 1-4 and 19-27 and so on. These do not exist.
Looping over lanes that does not exist costs cycle time.
Alternative solution
Like alternative 2 in the attachment. Number each location category starting with 1.
Pros
Iterate only over existing lanes - less work.
Easier to scale code to different aisle configurations. I can just pass an INT with the number of lanes in each category when making a new instance of the task system.
Cons
Does require a parameter for each position that relates the grouping and destinations to the buffer lane to do optimal grouping I'm not sure how CPU intensive a lookup operation would be.
In all, the cycle time of the CPU is very high as it is today, and one of my goals is to reduce the number of operations to improve cycle time.
The existing system has been extended and changed several times during commissioning, and there's big room for cutting down and streamlining the whole process.
Which of these two approaches would you gravitate towards, and why? Should I consider other options?
Wanting to settle the data model first, I thought I'd ask you guys for your opinion on one specific issue.
This is regarding how to structure the data for individual locations grouping lanes and destinations specifically - how to number them.
I also want to make the new solution more adaptable to other aisle configurations
Background information
The system consists of
- Buffer lanes (green)
- Grouping lanes (red)
- Destinations (ocre)
- Shuttle wagons (blue) - operating in aisles
If a destination exists, it should find a location in the grouping lanes closest to the destination, trying to group the LU together with other LU's with the same destination.
That's the gist of how this system works.
How is the data structured today?
Like alternative 1.
There are 80 buffer lanes, and all addresses for grouping lanes and destinations are based on where they are relative to the buffer lane.
In all cases the iteration is made on the largest range:
Code:
FOR lane 1 TO 80 DO...
Pros
Makes it very easy to find the right grouping lane.
Start with the grouping lane nearest the destination and work from there.
Cons
Illegal grouping and destination addresses must be dealt with. E.g. grouping lane 1-4 and 19-27 and so on. These do not exist.
Looping over lanes that does not exist costs cycle time.
Alternative solution
Like alternative 2 in the attachment. Number each location category starting with 1.
Pros
Iterate only over existing lanes - less work.
Easier to scale code to different aisle configurations. I can just pass an INT with the number of lanes in each category when making a new instance of the task system.
Cons
Does require a parameter for each position that relates the grouping and destinations to the buffer lane to do optimal grouping I'm not sure how CPU intensive a lookup operation would be.
In all, the cycle time of the CPU is very high as it is today, and one of my goals is to reduce the number of operations to improve cycle time.
The existing system has been extended and changed several times during commissioning, and there's big room for cutting down and streamlining the whole process.
Which of these two approaches would you gravitate towards, and why? Should I consider other options?
Last edited: