Skip to content

Monitoring/Eventing#

Communication Settings#

Name Type Possible Values Default Value Description
enableMode Enum None
OnePerEnterprise
OnePerSite
None How should activate Eventing instance:
None - No instance will be used
OnePerEnterprise - 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 Invalid
PCBBegin
PCBEnd
EmergencyStop
etc
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