Monitoring/Eventing#
Communication Settings#
| Name | Type | Possible Values | Default Value | Description |
|---|---|---|---|---|
| enableMode | Enum | NoneOnePerEnterpriseOnePerSite | None | How should activate Eventing instance:None - No instance will be usedOnePerEnterprise - One Instance for all Lines (Enterprise level)OnePerSite - One Instance for all Lines (Site level) |
| callbackPort | Integer | 0 | What port to use to receive events from Eventing/Monitoring. Use 0 to use a free port starting at callbackBasePort + 200 | |
| eventsExpiration | Integer | 60 | Expiration time (seconds) between events triggered and received. Used to avoid processing old Eventing/Monitoring events that occurred while driver was not communicating with OIB | |
| subscriptionNameSuffix | String | Will be added to the subscription name. Possible replacement tokens are ${id} and ${guid} | ||
| subscriptionExpiration | Integer | 4 | Number of hours to subscribe for Eventing/Monitoring events. Will renew every 30 minutes the same amount of time defined | |
| subscriptionMode | Enum | Permanent | Permanent NonPermanent | Define the way the subscription is registered.Permanent for PushWithAck, NonPermanent for PushReliable |
| includeRawEventData | Boolean | false | Should the original OIB event data be included in the IoT Event property list (serialized in JSON format). Warning: usually, these events are very big and will consume network, cpu and logging resources |
Properties#
| Property Id | Data Type | Possible Values | Default Value | Description |
|---|---|---|---|---|
| Monitoring.Property.RecipeDownload.IncludeRawEventData | Boolean | false | Include the entire event data in the IoT Event property list |
Events#
Monitoring/Eventing is used to notify the automation logic about occurrences that happened in the line.
Monitoring.Event.StationEvent#
This event is triggered every time the state of a component of the line, station, lane or processing is changed.
| Property Id | Data Type | Possible Values | Description |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | DateTime | Timestamp of the occurrence (in Epoch format with milliseconds) | |
| Monitoring.Property.Line.Name | String | Full path of the line from SIPLACE Pro including folders (e.g. "MyLines\Line01") | |
| Monitoring.Property.Station.Name | String | Station without the Line name (e.g. "Station01") | |
| Monitoring.Property.Position.Lane | String | Lane where the state changed | |
| Monitoring.Property.Position.ProcessingArea | Integer | Id of the processing area | |
| Monitoring.Property.Position.SubConveyor | String | Subconveyor where the state change occurred | |
| Monitoring.Property.State | String | InvalidPCBBeginPCBEndEmergencyStopetc | New State (Please, refer the OIB documentation for the full list, meaning and conditions) |
| Monitoring.Property.Station.MachineId | String | Machine Identification |
Monitoring.Event.BoardProcessedEvent#
This event is triggered every time a board is processed.
| Property Id | Data Type | Possible Values | Description |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | DateTime | Timestamp of the occurrence (in Epoch format with milliseconds) | |
| Monitoring.Property.Line.Name | String | Name of the line from SIPLACE Pro (e.g. "Line01") | |
| Monitoring.Property.Line.FullPath | String | Full path of the line from SIPLACE Pro including folders (e.g. "MyLines\Line01") | |
| Monitoring.Property.Station.Name | String | Station without the Line name (e.g. "Station01") | |
| Monitoring.Property.Station.FullPath | String | Station Full path (e.g. "Line01\Station01") | |
| Monitoring.Property.Recipe.Name | String | Recipe name for the production of this board | |
| Monitoring.Property.Recipe.FullPath | String | Full path for the production of this board | |
| Monitoring.Property.Setup.Name | String | The name of setup originally from SIPLACE Pro | |
| Monitoring.Property.Setup.FullPath | String | Full path of setup originally from SIPLACE Pro | |
| Monitoring.Property.Conveyor | String | Conveyor on which the board was produced | |
| Monitoring.Property.SubConveyor | String | SubConveyor on which the board was produced | |
| Monitoring.Property.Board.Barcode | String | The barcode on the PCB in case the station has a PCB barcode scanner and this scanner was active | |
| Monitoring.Property.Board.Side | String | The board side, which was selected in the SIPLACE Pro recipe. Supported only by station software 703 and higher | |
| Monitoring.Property.Board.BuildTime | Number | Cycle time in seconds. For stations less than 7xx this value comes from the station and for 7xx and higher is filled with the maximum value of BuildTimePa1 and BuildTimePa2 | |
| Monitoring.Property.Board.BuildTimePa1 | Number | Build time in processing area 1 in milliseconds. This information is only available if the board has been produced by a station with station SW 7xx. -1 indicates an invalid entry. | |
| Monitoring.Property.Board.BuildTimePa2 | Number | Build time in processing area 2 in milliseconds. This information is only available if the board has been produced by a station with station SW 7xx. -1 indicates an invalid entry | |
| Monitoring.Property.Board.PanelCount | String | Count of panels. These are the produced panels. Panels are not produced, if they have an inkspot. Supported only by station software 703 and higher. Lower versions set this value to 0 | |
| Monitoring.Property.Board.Status | String | PCB status | |
| Monitoring.Property.Board.Name | String | Board name | |
| Monitoring.Property.Board.FullPath | String | Board full path | |
| Monitoring.Property.Board.Number | String | Board number | |
| Monitoring.Property.Board.PCBGuid | String | PCB Guid | |
| Monitoring.Property.Board.ProducedPanels | Object | List containing produced panels information | |
| Monitoring.Property.Board.ProcessedDataDetails | Object | List containing Component, Feeder, FeederTrack, Location, UsedComponents and PlacedComponents information | |
| Monitoring.Property.Board.StationEvents | Object | List containing station events | |
| Monitoring.Property.Board.PickupErrors | Object | List containing pickup errors information | |
| Monitoring.Property.Board.MonitoringInstance | Object | Contains Monitoring Instance details | |
| Monitoring.Property.RawEvent | Object | If includeRawEventData is enabled, will contain the original OIB event data (BoardProcessedData) |
Monitoring.Event.BoardsProcessedEvent#
This event is triggered when boards are processed. If multiple boards are processed at the same time this event is only triggered once, unlike Monitoring.Event.BoardProcessedEvent where one event is triggered for each board.
| Property Id | Data Type | Possible Values | Description |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | DateTime | Timestamp of the occurrence (in Epoch format with milliseconds) | |
| Monitoring.Property.Line.Name | String | Name of the line from SIPLACE Pro (e.g. "Line01") | |
| Monitoring.Property.Line.FullPath | String | Full path of the line from SIPLACE Pro including folders (e.g. "MyLines\Line01") | |
| Monitoring.Property.Station.Name | String | Station without the Line name (e.g. "Station01") | |
| Monitoring.Property.Station.FullPath | String | Station Full path (e.g. "Line01\Station01") | |
| Monitoring.Property.Recipe.Name | String | Recipe name for the production of this board | |
| Monitoring.Property.Recipe.FullPath | String | Full path for the production of this board | |
| Monitoring.Property.Setup.Name | String | The name of setup originally from SIPLACE Pro | |
| Monitoring.Property.Setup.FullPath | String | Full path of setup originally from SIPLACE Pro | |
| Monitoring.Property.ProcessedBoards | Object | List containing details of each processed board | |
| Monitoring.Property.ProcessedDataDetails | Object | List containing Component, Feeder, FeederTrack, Location, UsedComponents and PlacedComponents information | |
| Monitoring.Property.StationEvents | Object | List containing station events | |
| Monitoring.Property.PickupErrors | Object | List containing pickup errors information | |
| Monitoring.Property.MonitoringInstance | Object | Contains Monitoring Instance details | |
| Monitoring.Property.RawEvent | Object | If includeRawEventData is enabled, will contain the original OIB event data (BoardProcessedData) |
Monitoring.Event.BoardsTrackingEvent#
This event is triggered when a board enters the machine.
| Property Id | Data Type | Possible Values | Description |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | DateTime | Timestamp of the occurrence (in Epoch format with milliseconds) | |
| Monitoring.Property.Line.Name | String | Name of the line from SIPLACE Pro (e.g. "Line01") | |
| Monitoring.Property.Line.FullPath | String | Full path of the line from SIPLACE Pro including folders (e.g. "MyLines\Line01") | |
| Monitoring.Property.Station.Name | String | Station without the Line name (e.g. "Station01") | |
| Monitoring.Property.Station.FullPath | String | Station Full path (e.g. "Line01\Station01") | |
| Monitoring.Property.Recipe.Name | String | Recipe name for the production of this board | |
| Monitoring.Property.Recipe.FullPath | String | Full path for the production of this board | |
| Monitoring.Property.Setup.Name | String | The name of setup originally from SIPLACE Pro | |
| Monitoring.Property.Setup.FullPath | String | Full path of setup originally from SIPLACE Pro | |
| Monitoring.Property.Board.BoardTrackingEventData | Object | Object with Board information (BoardTrackingEventData OIB class) |
Monitoring.Event.StationAvailabilityEvent#
This event is triggered whenever a station availability state changes.
| Property Id | Data Type | Possible Values | Description |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | Number | Timestamp of the occurrence (Unix timestamp) | |
| Monitoring.Property.Line.Name | String | Name of the line | |
| Monitoring.Property.Line.FullPath | String | Full path including name and folders of the line | |
| Monitoring.Property.Station.Name | String | Name of the station | |
| Monitoring.Property.Station.FullPath | String | Full path including name and folders of the station | |
| Monitoring.Property.StationAvailabilityCollection | Object | Station availability event arguments data. Contains the processing location state changes : An unordered list of the E58 based availability interpretation for given base event. For each processing location (PLOC) of a machine one entry may be added. Thus a placement machine with 2 processing areas and 2 conveyors may send up to 4 PlocAvailabilityState entries (Remark: This is only filled for Monitoring Service 16.0 or higher ) |
Example of a Monitoring.Property.StationAvailabilityCollection event property structure:
{
"ProcessingLocationAvailabilityStates": [
{
"StateChangeTriggers": [],
"ProcessingLocationId": {
"Conveyor": 1,
"ProcessingArea": 1,
"VirtualLane": 1
},
"CurrentStateCode": "22b0",
"CurrentStateCodeMes": "22b0",
"CurrentStateBegin": "2021-09-16T09:21:57.966Z",
"PreviousStateCode": "3000",
"PreviousStateCodeMes": "3000"
},
{
"StateChangeTriggers": [],
"ProcessingLocationId": {
"Conveyor": 2,
"ProcessingArea": 1,
"VirtualLane": 2
},
"CurrentStateCode": "50s1",
"CurrentStateCodeMes": "50s1",
"CurrentStateBegin": "2021-09-16T09:21:57.966Z",
"PreviousStateCode": "3000",
"PreviousStateCodeMes": "3000"
},
{
"StateChangeTriggers": [],
"ProcessingLocationId": {
"Conveyor": 1,
"ProcessingArea": 2,
"VirtualLane": 1
},
"CurrentStateCode": "22b0",
"CurrentStateCodeMes": "22b0",
"CurrentStateBegin": "2021-09-16T09:21:57.966Z",
"PreviousStateCode": "3000",
"PreviousStateCodeMes": "3000"
},
{
"StateChangeTriggers": [],
"ProcessingLocationId": {
"Conveyor": 2,
"ProcessingArea": 2,
"VirtualLane": 2
},
"CurrentStateCode": "50s1",
"CurrentStateCodeMes": "50s1",
"CurrentStateBegin": "2021-09-16T09:21:57.966Z",
"PreviousStateCode": "3000",
"PreviousStateCodeMes": "3000"
}
],
"Station": {
"LineName": "Virtual Line 01",
"LineFullPath": "Virtual Lines\\Virtual Line 01",
"Name": "Virtual SX4 01",
"FullPath": "Virtual Stations\\Virtual SX4 01",
"ProcessingAreaCount": 2,
"Text": "",
"ComputerAddress": "10.0.1.20",
"MachineId": "99000011",
"SoftwareVersion": "714.0",
"TypeName": "SIPLACE SX4",
"MachineType": 0,
"StationOrder": 1,
"Isa95Path": null
},
"CompletionStatusType": 1,
"FactoryLayoutPath": "Enterprise:Virtual Site:Virtual Area:Virtual Production Line 01:Virtual Line 01[327811079]:Virtual SX4 01[327811080]",
"MessageSendTime": "2021-09-16T09:21:58.3050839Z"
}
Using On Oib Event controller task we can capture this event on Controller Workflows. On On Oib Event task select StationAvailability Message (Message Full Name is Monitoring.Event.StationAvailabilityEvent) and confirm the correspondent outputs. As an example, using Code Task, link On Oib Event property outputs to Code Task inputs and add the following code:
import { Framework } from 'framework';
export default class {
/** Allows accessing external functions */
private framework: Framework;
constructor(framework: Framework) {
this.framework = framework;
}
/*
* Entry point of the class (IMPORTANT: don't change the signature of this method)
* Should return an object containing the values for each output to emit
* If necessary, use the parameter "outputs" to emit data while running the code.
*/
public async main(inputs: any, outputs: any): Promise<any> {
// Add code here
let lineName: string = inputs.LineName;
let stationName: string = inputs.StationName;
let stationAvailabilityCollection: StationAvailabilityCollection = JSON.parse(inputs.StationAvailabilityCollection);
for(const sAC of stationAvailabilityCollection.ProcessingLocationAvailabilityStates){
this.framework.logger.info(`Line:'${lineName}',Station:'${stationName}': Got CurrentStateCode:'${sAC.CurrentStateCode}' on CurrentStateBegin:'${sAC.CurrentStateBegin}' on Conveyor:'${sAC.ProcessingLocationId.Conveyor}', ProcessingArea:'${sAC.ProcessingLocationId.ProcessingArea}' VirtualLane:'${sAC.ProcessingLocationId.VirtualLane}'`);
}
// return example: return { output1: inputs.input1, output2: "Hello World" };
}
}
export interface StationAvailabilityCollection {
ProcessingLocationAvailabilityStates: ProcessingLocationAvailabilityState[],
}
export interface ProcessingLocationAvailabilityState {
// StateChangeTriggers: StateChangeTriggers[],
ProcessingLocationId: ProcessingLocationId,
CurrentStateCode: string,
CurrentStateBegin: Date,
PreviousStateCode: string
}
export interface ProcessingLocationId {
Conveyor: number,
ProcessingArea: number,
VirtualLane: number
}
On execution, an example output would be:
info: [onOibEvent] Received a 'Monitoring.Event.StationAvailabilityEvent'.
info: [onOibEvent] Successfully updated task's outputs after received event'Monitoring.Event.StationAvailabilityEvent'.
info: [codeExecution] Line:'Virtual Line 01',Station:'Virtual SX4 01': Got CurrentStateCode:'22b0' on CurrentStateBegin:'2021-09-16T09:21:57.966Z' on Conveyor:'1', ProcessingArea:'1' VirtualLane:'1'
info: [codeExecution] Line:'Virtual Line 01',Station:'Virtual SX4 01': Got CurrentStateCode:'50s1' on CurrentStateBegin:'2021-09-16T09:21:57.966Z' on Conveyor:'2', ProcessingArea:'1' VirtualLane:'2'
info: [codeExecution] Line:'Virtual Line 01',Station:'Virtual SX4 01': Got CurrentStateCode:'22b0' on CurrentStateBegin:'2021-09-16T09:21:57.966Z' on Conveyor:'1', ProcessingArea:'2' VirtualLane:'1'
info: [codeExecution] Line:'Virtual Line 01',Station:'Virtual SX4 01': Got CurrentStateCode:'50s1' on CurrentStateBegin:'2021-09-16T09:21:57.966Z' on Conveyor:'2', ProcessingArea:'2' VirtualLane:'2'
Monitoring.Event.MachineErrorSet#
This event is triggered whenever a station enter into an error state.
| Property Id | Data Type | Possible Values | Description |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | Number | Timestamp of the occurrence (Unix timestamp) | |
| Monitoring.Property.Area | String | Area of the line and station | |
| Monitoring.Property.Line.Name | String | Name of the line | |
| Monitoring.Property.Line.FullPath | String | Full path including name and folders of the line | |
| Monitoring.Property.Station.Name | String | Name of the station | |
| Monitoring.Property.Station.FullPath | String | Full path including name and folders of the station | |
| Monitoring.Property.Station.SerialNumber | String | Serial Number of the station | |
| Monitoring.Property.ErrorStartTime | Number | Timestamp of the start of the error(Unix timestamp) | |
| Monitoring.Property.CurrentState | String | Current state of the station, processing location and conveyor | |
| Monitoring.Property.ProcessLocation | Number | Processing Location where the error is present | |
| Monitoring.Property.Conveyor | Number | Conveyor where the error is present | |
| Monitoring.Property.Error.Id | String | Error that occurred | |
| Monitoring.Property.Error.Message | String | English message describing the error |
Monitoring.Event.MachineErrorClear#
This event is triggered whenever a station is no longer in an error state.
| Property Id | Data Type | Possible Values | Description |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | Number | Timestamp of the occurrence (Unix timestamp) | |
| Monitoring.Property.Area | String | Area of the line and station | |
| Monitoring.Property.Line.Name | String | Name of the line | |
| Monitoring.Property.Line.FullPath | String | Full path including name and folders of the line | |
| Monitoring.Property.Station.Name | String | Name of the station | |
| Monitoring.Property.Station.FullPath | String | Full path including name and folders of the station | |
| Monitoring.Property.Station.SerialNumber | String | Serial Number of the station | |
| Monitoring.Property.ErrorStartTime | Number | Timestamp of the start of the error(Unix timestamp) If the start is not known, 0 will be returned | |
| Monitoring.Property.ErrorEndTime | Number | Timestamp of the error of the error(Unix timestamp) | |
| Monitoring.Property.CurrentState | String | Current state of the station, processing location and conveyor | |
| Monitoring.Property.ProcessLocation | Number | Processing Location where the error is present | |
| Monitoring.Property.Conveyor | Number | Conveyor where the error is present |
Monitoring.Event.RecipeDownload#
This event is triggered whenever a Recipe is Downloaded.
| Property Id | Data Type | Possible Values | Description |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | Number | Timestamp of the occurrence (Unix timestamp) | |
| Monitoring.Property.DownloadTime | Number | Timestamp of the occurrence (Unix timestamp) | |
| Monitoring.Property.Line.Name | String | Name of the line | |
| Monitoring.Property.Line.FullPath | String | Full path including name and folders of the line | |
| Monitoring.Property.Station.Name | String | Name of the station | |
| Monitoring.Property.Station.FullPath | String | Full path including name and folders of the station | |
| Monitoring.Property.Recipe.Name | String | Name of the Recipe | |
| Monitoring.Property.Recipe.FullPath | String | Full path including name and folders of the recipe | |
| Monitoring.Property.Setup.Name | String | The name of setup originally from SIPLACE | |
| Monitoring.Property.Setup.FullPath | String | Full path of setup originally from SIPLACE | |
| Monitoring.Property.Board.Name | String | Name of the Board | |
| Monitoring.Property.Board.FullPath | String | Full path including name and folders of the board | |
| Monitoring.Property.ConveyorMode | Number | The number identifying the Converyor Mode | |
| Monitoring.Property.Conveyor | String | The Conveyor | |
| Monitoring.Property.CycleTime | Number | Conveyor where the error is present | |
| Monitoring.Property.StationCycleTime | Number | Conveyor where the error is present | |
| Monitoring.Property.RawEvent | Object | Conveyor where the error is present |