Virtual Inkspot Handling (VIH)#
From SMT Template version 3.1.0 onwards, the GetVirtualInkspotHandlingData service relies on the SMTUnitsExcluded attribute
Overview#
When replying to a BoardGateKeeper request, IoT should reply what boards should be assembled. These boards are previously marked (At SPI process, for example).
Concept#
When a board arrives at pick & place, BoardGateKeeper will send a BoardRequest to IoT. Then, the automation workflow doVIHOnBoardRequest will read the configuration at IoTMetadataDefinition to find the configured service (GetVirtualInkspotHandlingData) and invoke it, sending the Material and Resource.
This service returns a GetVirtualInkspotHandlingDataOutput object to IoT with the VIH information, containing the Boards and information if their components should be placed or not. This data is then included in the IoT BoardRequestResponse to the BoardGateKeeper. The panel boards marked for no placement will have their property Placed as False.
The service will also return the BoardPath info to IoT, which will also be sent to BoardGateKeeper together with the boards list. This data is required by ASM and contains the full ASM path for this material.
GetVirtualInkspotHandlingData service signature
The table below describes the input parameters for the service (object of Type GetVirtualInkspotHandlingDataInput)
| Name | Type | Description |
|---|---|---|
| MaterialName | string | Material name to be Evaluated |
| ResourceName | string | Resource name |
| BarcodeSide | string | Signals the board's side to be returned (to be supplied by Customization) |
The table below describes the output parameters for the service (object of Type GetVirtualInkspotHandlingDataOutput)
| Name | Type | Description |
|---|---|---|
| VIHResult | VIHData | Boards information array |
| BoardPath | string | The complete path where the board is in Siplace Pro(Only used for OIB Integrations) |
VIHData object format:
GetVirtualInkspotHandlingData service details#
This service will first resolve the Smart Table SMTConventionContext to get the convention used by the resource. It then verifies that the panel’s Form is present in the SMTPanelForms Lookup Table; if not, skips the logic and returns. Next, it resolves the Smart Table SMTMapBoardIDContext to get the EquipmentBoardID and MESPositionID for each board. To resolve this table, two regex configs are used:
SMT/VirtualInkspotHandling/EquipmentBoardIDTopRegex: Holds the Regex needed to identify the equipment's EquipmentBoardID top side board.SMT/VirtualInkspotHandling/EquipmentBoardIDBottomRegex: Holds the Regex needed to identify the equipment's EquipmentBoardID top side board.
Only the entries from SMTMapBoardIDContext that match the selected side (via BarcodeSide) will be returned.
These regexes are applied according to the BarcodeSide input. The service will create a VIHResult board list for that side, using the EquipmentBoardID as PanelName and setting Place based on whether the corresponding MESPositionID is excluded.
The service aggregates all panel data resolved from the Smart Table SMTMapBoardIDContext, fetching all EquipmentBoardID and MESPositionID applicable to the panel, then checks the panel’s SMTUnitsExcluded attribute to determine which MESPositionIDs are excluded from placement. If a MESPositionID is present in SMTUnitsExcluded, then Place = false; otherwise, Place = true.
Customization#
To keep track of the correct side, a DEE and a Pre ActionGroup should be added, so the value BarcodeSide can be determined before calling the Service. That can be accomplished by evaluating the material barcode, flow, step, etc, depending on each project customization.
DEE Input#
Type: Dictionary containing a key named GetVirtualInkspotHandlingDataInput of type GetVirtualInkspotHandlingDataInput
| Member | Type | Description |
|---|---|---|
| MaterialName | string | Material name to be evaluated |
| ResourceName | string | Resource Name |
DEE Output#
Same as Input.
Customization notes
In case of receiving an invalid BarcodeSide parameter (other than Top or Bottom), the service will search for the first valid MES Config containing the side info, following this sequence:
- A config at
SMT/VirtualInkspotHandling/DefaultSide/<Resource>, where Resource is the received parameter. - A config at
SMT/VirtualInkspotHandling/DefaultSide.
To resolve ProductNamePrefix value, the service will search for the first valid MES Config following this sequence:
- A config at
SMT/VirtualInkspotHandling/ProductNamePrefix/<Area>, where<Area>is the Resource Area. - A Config at
SMT/VirtualInkspotHandling/ProductNamePrefix.
To resolve EquipmentBoardIDTopRegex value, the service will search for the first valid MES Config following this sequence:
- A config at
SMT/VirtualInkspotHandling/EquipmentBoardIDTopRegex/<Area>, where<Area>is the Resource Area. - A config at
SMT/VirtualInkspotHandling/EquipmentBoardIDTopRegex.
To resolve EquipmentBoardIDBottomRegex, follow the same process above.
In case of missing or invalid config SMT/VirtualInkspotHandling/ProductNamePrefix, the service will return only the material product name at BoardPath.
Example#
Full returned service object:
VIHResult property service object (let's assume that the second board of the panel was terminated):
Notes
- Note the second Sub-Material is marked as defective (on Panel's attribute
SMTUnitsExcluded) and is also marked to not be placed at service output. - The config
SMT/VirtualInkspotHandling/ProductNamePrefixis appended to the material product name by the service, to create theBoardPathoutput and sent to Siplace Pro.
Preconditions
Materials have sub-materials with MESPositionID attribute already set.





