# BoardGateKeeper BoardRequest ## Overview This Feature enables material interlocking with MES. ## How To configure To enable BoardRequest material validation functionality we need to configure the extension and any other relevant key as described below: ### IoTMetadataDefinition Area Level Configuration Set the following keys at the **Area** level: | Name | Type | Possible Values | Default Value | Description | | ---------------------- | ------- | ------------------------------------------------------------ | ----------------- | ------------------------------------------------------------ | | oib_BoardGateKeeper_disabled | String | `true`
`false` | `true` | This will enable or disable the extension. | | oib_BoardGateKeeper_enablemode | String | `None`
`OnePerEnterprise`
`OnePerSite`
`OnePerLine` | `None` | How should activate BoardGateKeeper instance:
`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 | | oib_BoardGateKeeper_subscriptionnamesuffix | String | | "" | Will be added to the subscription name. | | OIB_LineNameStationName_<Line name>_<Station name> | String | | | Link from OIB Line and Station names to MES Resource name. | ??? Example | Resource | ResourceType | Area | Name | Value | | -------- | ------------ | ------------------- | ------------------------------------------------- | ---------------- | | | | SMT_Production Line | oib_BoardGateKeeper_disabled | false | | | | SMT_Production Line | oib_BoardGateKeeper_enablemode | OnePerEnterprise | | | | SMT_Production Line | OIB_LineNameStationName_Line - TQ & TX2 & SX2_TX2 | SMT_Pick_Place_1 | > Replace with the appropriate values depending on your setup. ### IoTMetadataDefinition Resource Level Configuration At the **Resource** level, there are several keys that can be configured. #### Recipe Validation - `useRecipeNameValidation` with value **true**. - `useUpdateRecipeByLane` if set with value **true** we will verify the recipe for the Conveyor Lane received in the event. If you need a custom name for your Lanes you can define them through the following keys: - `RightLaneCustomName` - `LeftLaneCustomName` ??? Example | Resource | ResourceType | Area | Name | Value | | ---------------- | ------------ | ---- | ----------------------- | ----------- | | SMT_Pick_Place_1 | | | useRecipeNameValidation | true | | SMT_Pick_Place_1 | | | useUpdateRecipeByLane | true | | SMT_Pick_Place_1 | | | RightLaneCustomName | CustomRight | | SMT_Pick_Place_1 | | | LeftLaneCustomName | CustomLeft | #### BOM Pre-Check Validation - `usebomvalidation` with value **true**. - `useBOMValidationService` MES service to be called to get the VIH results, **<Input object>, <Namespace> | <url>**. _(default value: Cmf.SMT.IoT.Utilities.Orchestration.InputObjects.ValidatePlacementListInput, Cmf.SMT.IoT.Utilities.Orchestration | api/IoTUtilities/ValidatePlacementList)_. ??? Example | Resource | ResourceType | Area | Name | Value | |---------------|--------------|-------------------------|--------------------------|--------------------------| |SMT_Pick_Place_1| | | usebomvalidation | true | |SMT_Pick_Place_1| | | useBOMValidationService | Cmf.Custom.ProjectName.Orchestration.InputObjects.CustomValidatePlacementListInput, Cmf.Custom.ProjectName.Orchestration\|api/ProjectName/ValidatePlacementList | To understand how to configure the service to best suit your needs check [this document](bomprecheck.md). A flag, will be stored **BomValidated_<Resource Name>**, with value **true** once we have a successful validation. This will allow the bypass of this validation until the equipment sends a Recipe Download Event. #### Virtual InkSpot Handling - `useVIHOnBoardRequest` if set with value **true** we will get the Virtual InkSpot Handling results from a MES Service and send it in the BoardRequest Response. - `useVIHToCallService` MES service to be called to get the VIH results, **<Input object>, <Namespace> | <url>**, by default it will call SMT service **GetVirtualInkspotHandlingData**. ??? Example | Resource | ResourceType | Area | Name | Value | | ---------------- | ------------ | ---- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | SMT_Pick_Place_1 | | | useVIHOnBoardRequest | true | | SMT_Pick_Place_1 | | | useVIHToCallService | Cmf.Custom.ProjectName.Orchestration.InputObjects.CustomVIHResultInput, Cmf.Custom.ProjectName.Orchestration\|api/ProjectName/CustomVIHResult | #### Material Track In - `useOIBToTrackIn` if set with **BoardRequest** we will use this event to automatically track in the Material at the MES Resource. - `UseTrackInOperation`: Sets the Track In MES operation. Can be defined as `ComplexDispatchAndTrackIn` or `ComplexTrackIn`. Defaults to `ComplexTrackIn` if not defined. - `useWaitForPreviousTrackout`: Sets a wait time for the previous Track Out event to finish. - `useWaitIfRecipeIsBeingChanged`: Sets a wait time for the recipe change to finish on the current Resource. - `DoPreviousTrackOut`: If defined with any value, the controller logic will attempt to Track Out the previous Material tracked in the Resource before proceeding with the Track In operation for the current Material. ??? Example | Resource | ResourceType | Area | Name | Value | | ---------------- | ------------ | ---- | --------------- | ------------ | | SMT_Pick_Place_1 | | | useOIBToTrackIn | BoardRequest | ## How To Use BoardGateKeeper requests the MES System to validate a Material which has been detected and stopped in the conveyor unit. Our Connect IoT controller logic will: - Validate if recipe is correctly defined for the Resource or Resource Lane; - Validate if the recipe matches the expected components present in the BOM. - Produce Virtual InkSpot Handling data to loop back into BoardGatekeeper Service; - Confirm, if BoardRequest Event is configured for it, Track In operation success. A response will be sent with the Result of the validations and, if enabled, the VIH data. The Resource and it's Lanes must be correctly configured for recipe validation if enabled. > Note: > > Only two Lanes are currently supported. ## Implementation Details During **Equipment Setup**, a new endpoint will be registered at the Line Station. This registration becomes the connection to MES where the Events will be sent by the various Stations. Station BoardRequest Received: 1. Resolves IoTMetadataDefinition for what validations are configured. 2. Recipe Validation enabled: - Get MES Recipe for current Material. - Get Equipment Active Recipe. - If Material Recipe mismatch Equipment Recipe send **Failed** result. - Set MES Resource recipe if different from the one currently set. - If Lane Recipe Management is active we will check the received Lane recipe and set it to the corresponding MES Resource Lane. 3. BOM Validation enabled: - Get Equipment Active Recipe. - If start of new recipe or previous failed result: - Get equipment Recipe Details. - Validate if the components expected to be placed match the BOM. - If Designators or Product mismatch Equipment send **Failed** result. - If BOM already validated with a valid result: - Bypass validation until equipment new recipe download. 4. VIH enabled: - Retrieve Service to be used for data processing and build VIH response Data. 5. Track In enabled: - Try to Track in Material received into the MES Resource and send back the result of this operation. Send Board Request Response.