Modern FMS systems/CNC centers typically operate with pallets and fixtures in order to optimize the utilization of the machine centers. I.e. the machine processes one pallet while operators are preparing the next pallet.
The scheduling of pallet systems can be complex, because several production orders typically will be work in progress in parallel on the CNC center. I.e. production order A is loaded on Pallet 1. While Pallet 1 is being processed in the CNC center, the operator prepares Pallet 2 by loading elements from production order B on it. This mixing of elements from both production orders continues until one or both of the production orders production quantities have been met.
This macro is able to perform pallet system scheduling on the selected operations. The result of running this macro is rescheduled operations with a duration matching the current mix of orders assigned to the FMS center. As an example if three orders are planned to run in parrallel then the duration will be longer compared to only planning to run two production orders in parallel. The selected operations will not be allowed to start before their current start time.
Each operation to schedule consists of a number of elements, represented by the quantity, these elements are to be filled into fixtures. Each fixture can hold a fixed amount of elements, this is represented by the fixture cavity. When a fixture is full it is put on a Pallet. The pallet can hold a fixed amount of fixtures, this is represented by the pallet cavity. When a pallet is full, it is scheduled, while accounting for the total setup time, and then we move on to the next pallet.
Table of contents
|palletSpecField||Defines the location that the final pallet spec will be saved. The field uses layoutitem names e.g. opr_description.|
|roundingLossWarningThresholdInPercent||If the estimated percentage loss due to rounding violates this threshold, a warning will be shown. See Rounding section for more info.|
|roundingLossWarningThresholdInHours||If the estimated hours loss due to rounding violates this threshold, a warning will be shown. See Rounding section for more info.|
|largeProblemWarningThresholdInPallets||If the total number of pallets in the scheduling problem exceeds this parameter, a warning dialog will be shown to the user, giving the user the option to cancel the scheduling.|
|loadToIgnore||Defines what load should be ignore. Possible values are nothing (default), everything and loadStartingAfterSelection. If nothing is set, the scheduler will not pallet schedule the selected operations on top of existing operations. If everything is set, the scheduler will pallet schedule as if the plan was empty (similar to scheduling with unlimited capacity). If loadStartingAfterSelection is set, the scheduler will pallet schedule the selected operations after operations overlapping with the selection but that start first.|
To enable the use of this macro, there are some requirements that needs to be met, these are listed below:
|The selected operations must be located on a resource with a resource type named ‘PalletMachine’.|
|The PalletMachine resource specification must contain a link to a PalletPool by defining a pallet group i.e. the specification must contain “PalletGroup=
|There must be a resource with resource type named ‘PalletPool’. The PalletPool resource specification must contain a link to a PalletMachine by defining a pallet group i.e. the specification must contain “PalletGroup=
Below is a list of properties that can be configured for the pallet scheduling to perform in a specific way.
|Number of elements||The number of elements to schedule is determined by the size of the operation (operation quantity)|
|Element size||The size of an element i.e. how much space an element occupy in a fixture. This can be defined by the operation property “pal.size”. Default is 1.|
|Element setup time||The setup time, in hours, required for one element. This can be defined by the operation property “pal.setupHrs”. Default is 0.|
|Element switchover time||The switchover time, in hours, required for one element. This can be defined by the operation property “pal.swHrs”. Default is 0.|
|Element cycle time||The time, in hours, required to process one element. This can be defined by the operation property “pal.cycleHrs”. Default is operation capacity.|
|Fixture setup time||The fixture setup time in hours. Consecutive uses of the same fixture will not require setup time. This can be defined by the operation property “pal.fixSetupHrs”. Default is 0.|
|Fixture switchover time||The fixture switchover time in hours. Consecutive uses of the same fixture will not requqire switchover time. This can be defined by the operation property “pal.fixSwHrs”. Default is 0.|
|Fixture size||The size of a fixture i.e. how much space a fixture occupy in a pallet. This can be defined by the operation property “pal.fixSize”. Default is 1.|
|Fixture cavity||The total size of elements that a fixture can hold. The number of elements in a fixture is defined as: “fixture cavity divided by element size, rounded down”. This can be defined by the operation property “pal.fixCav”. Default is operation quantity factor.|
|Number of pallets||The number of available pallets is defined by the calendar factor of the PalletPool resource. If the PalletPool resource is a resource group, then it is the number of resource in the group that define the number of pallets.|
|Pallet cavity||The total size of fixtures that a pallet can hold. The number of fixtures in a pallet is defined as: “pallet cavity divided by fixture size, rounded down”. This can be defined by the resource property “pal.cav”. Default is 1.|
|Min. pallets to use||The minimum number of pallets an operation must use. This can be defined by the operation property “pal.minPalToUse”. Default is 1.|
|Max. pallets to use||The maximum number of pallets an operation is allowed to use. This can be defined by the operation property “pal.maxPalToUse”. Default is “unlimited”.|
Pallet scheduling is unable to handle switchover time.
If an operation have setup time, this is carried through to the end result by ignored during scheduling. Consequently element/fixture setup/switchover -time is ignored.
Only one fixture is allowed per pallet. Consequently the pallet cavity and fixture size is not used.
Pallets can only contain elements from one operation.
Operation workload factor cannot be used. This is because the scheduling adjust this factor to represent the actual pallet scheduling and will therefore reset the value to 1 before scheduling.
When handling a pallet scheduling problem the scheduling algorithm will effectively split the operation into smaller parts before assembling them again to the result the user sees. Internally on each “operation-split” ROB-EX can only plan minute-by-minute and will hence be forced to round start and end times down to nearest minute. So for each pallet created, there is a potential loss of 59.99 seconds. For long pallet cycle time this rounding will be non-significant. However for short pallet cycle times of a few minutes the rounding loss may become significant.
The settings roundingLossWarningThresholdInPercent and roundingLossWarningThresholdInHours are available to make the user aware of a configuration that may be a victim of the rounding. Before scheduling the algorithm calculates an estimate of the total hours and percentage lost due to rounding. If these values violate both roundingLossWarningThresholdInPercent and roundingLossWarningThresholdInHours respectively, a warning is shown to the user after the scheduling has been carried out. This is to allow the user to verify/undo the scheduling.
In a pallet scheduling configuration each pallet consists of just 1 element and the machine can handle 31 pallets per hour. This results is each pallet takes 60/31~1.94 minutes to process. This would result in the loss of 0.94 minute per pallet with a total loss of 31*0.94~29 minutes. So ROB-EX would calculate a total operation workload of 31 minutes where in real production the workload is 60 minutes.