Skip to content

Packaging Unit#

Packaging Unit is accomplished by the Setup Center External Control API (e.g.: ISiplaceSetupCenterExternalControl interface). The ISiplaceSetupCenterExternalControl enables MES systems to take just in time control of the verification process in Setup Center. The ISiplaceSetupCenterExternalControl has to be registered in OIB using SIPLACE Line Control Adapter. The Line Control Adapter will set the proper attributes for the production line after first download of a recipe. The MES service has to be configured for the designated production line or in higher hierarchy in the plant layout path. It is also possible to configure a different MES service per production line. The interface consists of the following methods: GetNewPackagingUnitData will be called by Setup Center if the scanned unique ID is not in Setup Center database. The MES system will get the scanned barcode and return the packaging unit data for the scanned unique ID. GetPackagingUnitControlStatus will be called if the packaging unit is sent to the station or scanned in offline setup preparation area. This happens if a packaging unit is set or refilled, if a change over table is registered or Setup Center connects to the station (after restart or reconnect). This method is also called after calling the GetNewPackagingUnitData method. This method is the first verification action in the verification process. Setup Center will first call this method to get the new data and status of the packaging unit from MES. Then Setup Center will continue verifying the component name, expiry date, MSD level etc. using the data returned by the MES system.

Communication Parameters#

Name Type Possible Values Default Value Description
enableMode Enum None
OnePerEnterprise
OnePerSite
OnePerLine
None How should activate Packaging Unitinstance:
None - No instance will be used
OnePerEnterprise - One Instance for all Lines (Enterprise level)
OnePerSite - One Instance for all Lines (Site level)
OnePerLine - One Instance per Line
callbackPort Integer 0 What port to use to receive events from Packaging Unit. Use 0 to use a free port at callbackBasePort + 700
replyTimeout Integer 60000 Number of milliseconds to wait for a Packaging Unit Request reply

Events#

PackagingUnit.Event.NewPackagingUnitDataRequest#

Implements the GetNewPackagingUnitData method. This is an integration point, where SetupCenter will call an external system, when a bar code is been scanned in unique id mode with an unique bar code fragment, where no packaging unit data is existing in the SetupCenter database. This enables the customer to configure a integration scenario, where the data is been request by SetupCenter when the bar code is been scanned. This is just in time data transfer and it must not be done in advance. The packaging unit data is containing all properties, which have been parsed from the bar code with all containing bar code fragment information found on the reel. The packaging unit data object is filled with all properties found during the scan operations based on the bar code configuration and scanned bar codes.

Property Id Data Type Possible Values Description
PackagingUnit.Property.ComponentBarCode String The complete scanned Barcode containing the “component” barcode fragment.
PackagingUnit.Property.PackagingUnitLocations Object list of component locations where the scan happens and which data was scanned

An example of the PackagingUnitLocations request object a JSON object:

[
    {
        "PackagingUnit": {
            "UID": "0201R",
            "ComponentName": "",
            "ComponentBarcode": "0201R",
            "Quantity": -1,
            "OriginalQuantity": -1,
            "Manufacturer": "",
            "ManufacturerDate": "1900-01-01T00:00:00Z",
            "ExpiryDate": "9999-12-31T23:59:59Z",
            "Supplier": "",
            "BatchId": "",
            "MsdLevel": 1,
            "Comment": "",
            "Extra1": "",
            "Extra2": "",
            "Extra3": "",
            "SplicedPackagingUnit": null,
            "MsdOpenDate": "1900-01-01T00:00:00Z",
            "LockInfos": [],
            "LastProductionDate": "1900-01-01T00:00:00Z",
            "ConsumptionDate": "9999-12-31T23:59:59Z",
            "BatchPackagingUnit": null,
            "GreyZone": 0,
            "AdditionalPartInformation": "",
            "ManufacturePartNumber": "",
            "OrderingCode": "",
            "ManufactureLocation": "",
            "RevisionLevel": "",
            "PurchaseOrderNumber": "",
            "ShippingNoteNumber": "",
            "Batch2": "",
            "SupplierData": "",
            "Serial": "",
            "RoHS": 0,
            "BrightnessClass": "",
            "Extra4": "",
            "Extra5": "",
            "DateCode": "",
            "ComponentBarcodeFragment": null,
            "CreateDate": "1900-01-01T00:00:00Z",
            "ReorderCount": 0
        },
        "ComponentLocation": null,
        "Operator": null,
        "SetupPath": null,
        "LinePath": null,
        "StationPath": null,
        "MachineId": null
    }
]

PackagingUnit.Event.PackagingUnitControlStatusExtendedRequest#

Implements the GetPackagingUnitControlStatusExtended method. Request the packaging Unit data from an external system (like MES System) during the verification process. This enables the external system to control the data for the verification process. The PackagingUnitResult object describes the data returned from the external system.

Property Id Data Type Possible Values Description
PackagingUnit.Property.Reason Integer 0-6 The reason why this method was called. Possible value are: 0 Unknown: The reason is unknown, 1 Set: The MES is called for a set operation, 2 Refill: The MES is called for a refill operation., 3 FeederPlaced: The MES is called for a placed feeder., 4 AnnounceTable: The MES is called because a table is announced online at a station location., 5 OfflineInsertTable: The MES is called because a table was scanned during opening an offline verification., 6 SetupControlDataRequest: The MES is called because a station requested new data.
PackagingUnit.Property.ComponentBarCode String The complete scanned Barcode containing the “component” barcode fragment.
PackagingUnit.Property.Quantity Integer The actual quantity of the packaging unit. The quantity is adjusted by the CLI (e.g. a splice is detected). May be 0, if packaging unit is already empty and machine software still holds the packaging unit information. If the value of quantity exceeds the value of original quantity, the value of quantity will be adjusted, because original quantity is the maximum value for quantity. Range: 0 - n
PackagingUnit.Property.FeederId String Feeder identification.
PackagingUnit.Property.MachineName String Machine identifier used in SIPLACE Pro consisting out of the full path.
PackagingUnit.Property.LinePath String The line full path from SIPLACE Pro.
PackagingUnit.Property.PackagingUnitLocations Object list of component locations where the scan happens and which data was scanned

An example of the PackagingUnitLocations request object a JSON object:

{
    "PackagingUnitLocations": [
        {
            "PackagingUnit": {
                "UID": "0201R",
                "ComponentName": "0201R",
                "ComponentBarcode": "0201R",
                "Quantity": 1000,
                "OriginalQuantity": 1500,
                "Manufacturer": "",
                "ManufacturerDate": "1900-01-01T00:00:00Z",
                "ExpiryDate": "2022-01-01T11:30:00Z",
                "Supplier": "",
                "BatchId": "batchId",
                "MsdLevel": 2,
                "Comment": "",
                "Extra1": "",
                "Extra2": "",
                "Extra3": "",
                "SplicedPackagingUnit": null,
                "MsdOpenDate": "2021-01-01T11:30:00Z",
                "LockInfos": [],
                "LastProductionDate": "1900-01-01T00:00:00Z",
                "ConsumptionDate": "9999-12-31T23:59:59Z",
                "BatchPackagingUnit": null,
                "GreyZone": 0,
                "AdditionalPartInformation": "",
                "ManufacturePartNumber": "",
                "OrderingCode": "",
                "ManufactureLocation": "",
                "RevisionLevel": "",
                "PurchaseOrderNumber": "",
                "ShippingNoteNumber": "",
                "Batch2": "",
                "SupplierData": "",
                "Serial": "",
                "RoHS": 0,
                "BrightnessClass": "",
                "Extra4": "",
                "Extra5": "",
                "DateCode": "",
                "ComponentBarcodeFragment": null,
                "CreateDate": "1900-01-01T00:00:00Z",
                "ReorderCount": 0
            },
            "ComponentLocation": {
                "Division": 1,
                "Level": 0,
                "Tower": 0,
                "StationTrack": 40,
                "Track": 40,
                "FeederId": "08ASMS500140",
                "FeederType": 264,
                "TableState": 1,
                "Machine": {
                    "MachineId": "10000000",
                    "MachineName": "Virtual Stations\\Virtual SX4 01",
                    "MachineType": null,
                    "LineName": "Virtual Lines\\Virtual Line 01",
                    "LinePath": null
                },
                "DockingStation": null,
                "Location": 1,
                "TableId": "DMY-6324a8e8-d075-4db7-9840-a3cec70c5534",
                "FeederTypeSpiOid": 292,
                "Device": 1,
                "Divisions": null,
                "TargetTrack": 0,
                "CartridgeId": null,
                "CassetteId": null,
                "CassetteLevel": 0,
                "TargetSetup": null,
                "TargetLine": null,
                "TargetStation": null,
                "TargetLocation": null,
                "FeederTypeSpiOidLong": 292,
                "TrayCarrierId": null
            },
            "Operator": null,
            "SetupPath": "Demo Setups\\Virtual Line ASM Simple Product Board @ 19-10-07 07:52:24 [13556]",
            "LinePath": "Virtual Lines\\Virtual Line 01",
            "StationPath": null,
            "MachineId": null
        }
    ],
    "Reason": 1
}

Commands#

PackagingUnit.Command.NewPackagingUnitDataRequestReply#

This command is used to send a reply to the PackagingUnit.Event.NewPackagingUnitDataRequest event, and is expecting the following parameters:

Command Parameter Name Type Mandatory Possible Values Default Value Description
Internal.ReplyId String Yes Id of the request that this command is supposed to reply
ExternalControlResultMessage String Yes Message describing the reason for the failing operation
ResultState Integer Yes 0,1, 2 The result status of the returned ExternalControlResult. Value Description: 0 Unknown: The result of the packaging unit data is unknown; 1: OK: The Packaging unit data is processed successfully; 2 : NotOk: The verification status of the packaging unit data should be cleared. A internal lock described as LockInfo (Source=9, Reason=28) will be added to the packaging unit data when ResultState = 2 is returned.
ComponentName String Yes Component name within SIPLACE Pro. Range: 1- 256 signs
Quantity Integer Yes The actual quantity of the packaging unit. The quantity is adjusted by the CLI (e.g. a splice is detected). May be 0, if packaging unit is already empty and machine software still holds the packaging unit information. If the value of quantity exceeds the value of original quantity, the value of quantity will be adjusted, because original quantity is the maximum value for quantity. Range: 0 - n
OriginalQuantity Integer Yes The original quantity is the ticketed initial size (quantity) of the packaging unit. Original quantity is the maximum value for quantity. Range: 0 - n
BatchId String Yes Unique identification for a component lot of one or more packaging units. Range: 0 - 256 signs
ExpiryDate String Yes Component expiry date (the Date is transferred as UTC times).
MsdOpenDate String Yes MSD open date (the Date is transferred as UTC times). Remarks: In case the MsdOpenDate is set to 1.1.1900 UTC or before that time, the packaging unit's MSD time is not increased. This state is also called 'closed'. In case a packaging unit has an MSD Level which is not equal to 1 (Level 1: Unlimited), the MsdOpenDate Date will be set to the current timestamp. This state is then called 'opened'. In case you want to calculate when the packaging unit is to be considered due (MSD due date) the formula is as following: MSD Due Date Description: Unlimited: In case MSDLevel is 1 (Unlimited) MsdOpenDate + Duration of MSDLevel (see documentation) In case MSDLevel is NOT 1
MsdLevel Integer Yes 1...8 JEDEC Moisture Sensitivity Level 1-6. 1:Level 1: Unlimited - The component can be assembled unlimited (max. 30°C / 85% RH) 2 Level 2: 1 year - The component can be assembled 1 year after the opening date of the packaging unit at (max. 30°C / 85% RH) 3 Level 2A: 4 weeks - The component can be assembled 4 weeks after the opening date of the packaging unit at (max. 30°C / 85% RH) 4 Level 3: 168 hours - The component can be assembled 168 hours after the opening date of the packaging unit at (max. 30°C / 85% RH) 5 Level 4: 72 hours - The component can be assembled 72 hours after the opening date of the packaging unit at (max. 30°C / 85% RH) 6 Level 5: 48 hours - The component can be assembled 48 hours after the opening date of the packaging unit at (max. 30°C / 85% RH) 7 Level 5A: 24 hours - The component can be assembled 24 hours after the opening date of the packaging unit at (max. 30°C / 85% RH) 8 Level 6: Time on Label - The time is stored on an additional label on the reel. The component can be assembled for that time period defined on the label after the opening date of the packaging unit at (max. 30°C / 85% RH). Setup Center 8.1 and higher supports MSD level 6. However due to difficulties to read the time on the label Setup Center will use only one configurable allowed open time for all MSD 6 level reels. The default value is 4 hours. This can be changed in the Setup Center domain configuration dialog. The value is also stored along with other domain settings in OIB plant layout to allow other applications to read it. The setting key is “SetupCenter.AllowedOpenTimeForMsdLevel6”.
ConsumptionDate String Yes This is the time stamp from the consuming operation performed by Setup Center. A packaging unit is not necessarily consumed, when the filling level is set to 0. The system maintain a grey zone for the traceability data. This means that the packing units are kept alive, even when the filling level is set to zero. The packaging units are set to consumed, when this grey zone is ended. The value is to 9999.12.31 23:59:59 Universal time, if it is not consumed. This data is only set, when the events are send out of Setup Center. This property can not be set via the interface. This value is only set for Setup Center Version 3.3. and above

This command also supports the definition of the following parameters: UID ComponentBarcode Manufacturer ManufacturerDate Supplier Comment Extra1 Extra2 Extra3 SplicedPackagingUnit LockInfos LastProductionDate BatchPackagingUnit GreyZone AdditionalPartInformation ManufacturePartNumber OrderingCode ManufactureLocation RevisionLevel PurchaseOrderNumber ShippingNoteNumber Batch2 SupplierData Serial RoHS BrightnessClass Extra4 Extra5 DateCode ComponentBarcodeFragment CreateDate ReorderCount. This extension feature can be easily used on newPackagingUnitDataRequestResult task by passing an object on extraParameters input. As an example, if an object like: { "Manufacturer" : "DoStuff Corp" }, is passed to newPackagingUnitDataRequestResult task extraParameters input, then the Packaging Unit will be created with DoStuff Corp as the Manufacturer entry.

Example of a NewPackagingUnitDataRequest() reply to SetupCenter as a JSON object:

 {
    "ResultState": 1,
    "PackagingUnit": {
        "UID": "0201R",
        "ComponentName": "0201R",
        "ComponentBarcode": "0201R",
        "Quantity": 1000,
        "OriginalQuantity": 1500,
        "Manufacturer": "DoStuff Corp",
        "ManufacturerDate": "1900-01-01T00:00:00Z",
        "ExpiryDate": "2022-01-01T11:30:00",
        "Supplier": "",
        "BatchId": "batchId",
        "MsdLevel": 2,
        "Comment": "",
        "Extra1": "",
        "Extra2": "",
        "Extra3": "",
        "SplicedPackagingUnit": null,
        "MsdOpenDate": "2021-01-01T11:30:00",
        "LockInfos": [],
        "LastProductionDate": "1900-01-01T00:00:00Z",
        "ConsumptionDate": "2021-01-01T11:30:00",
        "BatchPackagingUnit": null,
        "GreyZone": 0,
        "AdditionalPartInformation": "",
        "ManufacturePartNumber": "",
        "OrderingCode": "",
        "ManufactureLocation": "",
        "RevisionLevel": "",
        "PurchaseOrderNumber": "",
        "ShippingNoteNumber": "",
        "Batch2": "",
        "SupplierData": "",
        "Serial": "",
        "RoHS": 0,
        "BrightnessClass": "",
        "Extra4": "",
        "Extra5": "",
        "DateCode": "",
        "ComponentBarcodeFragment": null,
        "CreateDate": "1900-01-01T00:00:00Z",
        "ReorderCount": 0
    },
    "Messages": [
        {
            "Message": "externalControlResultMessage"
        }
    ]
}

PackagingUnit.Command.PackagingUnitControlStatusExtendedRequestReply#

This command is used to send a reply to the PackagingUnit.Event.PackagingUnitControlStatusExtendedRequest event, and is expecting the following parameters:

Command Parameter Name Type Mandatory Possible Values Default Value Description
Internal.ReplyId String Yes Id of the request that this command is supposed to reply
ExternalControlResultMessage String Yes Message describing the reason for the failing operation
ResultState Integer Yes 0,1, 2 The result status of the returned ExternalControlResult. Value Description: 0 Unknown: The result of the packaging unit data is unknown; 1: OK: The Packaging unit data is processed successfully; 2 : NotOk: The verification status of the packaging unit data should be cleared. A internal lock described as LockInfo (Source=9, Reason=28) will be added to the packaging unit data when ResultState = 2 is returned.

Example of a PackagingUnitControlStatusExtendedRequestReply() reply to SetupCenter as a JSON object:

 {
    "ResultState": 1,
    "PackagingUnit": {
        "UID": "0201R",
        "ComponentName": "0201R",
        "ComponentBarcode": "0201R",
        "Quantity": 1000,
        "OriginalQuantity": 1500,
        "Manufacturer": "",
        "ManufacturerDate": "1900-01-01T00:00:00Z",
        "ExpiryDate": "2022-01-01T11:30:00Z",
        "Supplier": "",
        "BatchId": "batchId",
        "MsdLevel": 2,
        "Comment": "",
        "Extra1": "",
        "Extra2": "",
        "Extra3": "",
        "SplicedPackagingUnit": null,
        "MsdOpenDate": "2021-01-01T11:30:00Z",
        "LockInfos": [],
        "LastProductionDate": "1900-01-01T00:00:00Z",
        "ConsumptionDate": "9999-12-31T23:59:59Z",
        "BatchPackagingUnit": null,
        "GreyZone": 0,
        "AdditionalPartInformation": "",
        "ManufacturePartNumber": "",
        "OrderingCode": "",
        "ManufactureLocation": "",
        "RevisionLevel": "",
        "PurchaseOrderNumber": "",
        "ShippingNoteNumber": "",
        "Batch2": "",
        "SupplierData": "",
        "Serial": "",
        "RoHS": 0,
        "BrightnessClass": "",
        "Extra4": "",
        "Extra5": "",
        "DateCode": "",
        "ComponentBarcodeFragment": null,
        "CreateDate": "1900-01-01T00:00:00Z",
        "ReorderCount": 0
    },
    "Messages": [
        {
            "Message": "Hello Hello"
        }
    ]
}