UNPKG

@kuriousdesign/machine-sdk

Version:

Shared data types and helpers for machine-related repositories

168 lines (147 loc) 4.98 kB
import { DeviceTypes } from './DeviceTypes' export interface DeviceRegistration { mnemonic: string; // short hand notation for the device, e.g. IB for Bufferwall, IBG for gantry id: number; // this device id childIdArray: number[]; // array of child device ids parentId: number; // this is the parent id deviceType: DeviceTypes; // type of the device } export const initialDeviceRegistration: DeviceRegistration = { mnemonic: '', id: 0, childIdArray: [], parentId: 0, deviceType: DeviceTypes.Base // Assuming Unknown exists in DeviceTypes enum }; export interface DeviceCfg { safetyZoneId: number; controllableByHmi: boolean; autoReset: boolean; ignore: boolean; //ignore--OutboundAxisInterlocks: AxisInterlockCfgData[]; } export const initialDeviceCfg: DeviceCfg = { safetyZoneId: 0, controllableByHmi: false, autoReset: false, ignore: false }; export interface FaultData { DeviceId: number; Code: number; // this is deprecated Msg: string; AutoReset: boolean; // if this is true, the code will be reset by the fault monitor ResetFlag: boolean; // used by the fault monitor to know whether to clear an fault or not LogFlag: boolean; // when true, this fault hasn't been logged yet TimeStamp: Date; StepNum: number; // of this device ParentStepNum: number; } export const initialFaultData: FaultData = { DeviceId: 0, Code: 0, Msg: '', AutoReset: false, ResetFlag: false, LogFlag: false, TimeStamp: new Date(), StepNum: 0, ParentStepNum: 0 }; export interface DeviceFaultData { List: FaultData[]; // Array of fault data Present: boolean; // status ChildrenPresent: boolean; // status that children have errors } export const initialDeviceFaultData: DeviceFaultData = { List: [], Present: false, ChildrenPresent: false }; export interface DeviceStatus { state: number; // enum for States enum, same as the boolean states in the data structure stepNum: number; stepDescription: string; colorCode: number; // color to indicate the current status for HMI purposes statusMsg: string; // status string error: boolean; // state, device or child has an error killed: boolean; // device is de-energized inactive: boolean; // waiting to be reset resetting: boolean; // taking action to be idle idle: boolean; // ready for auto tasks running: boolean; // performing an active task (excludes tasks that just involve data exchange like recipe changing) stopping: boolean; paused: boolean; // action paused mid-task, able to be resumed (finish the task) or stopped (abandon task and back to idle or inactive) aborting: boolean; // Aborting (Reacting TO E-Stop) done: boolean; // finished with task, waiting for parent to drop the request manual: boolean; idleOrError: boolean; // useful to check for stopping iifkm: boolean; // IdleOrInactiveOrFaultedOrKilledOrManual rri: boolean; // ResettingOrRunningOrIdle ipr: boolean; // IdleOrPausedOrRunning kei: boolean; // KilledErrorOrInactive runningOrStopping: boolean; // Children Status allChildrenIdle: boolean; allChildrenKilled: boolean; allChildrenInactive: boolean; allChildrenIdleOrError: boolean; commanderId: number; // used for external control recordingLogs: boolean; } export const initialDeviceStatus: DeviceStatus = { state: 0, stepNum: 0, stepDescription: '', colorCode: 0, statusMsg: '', error: false, killed: false, inactive: false, resetting: false, idle: false, running: false, stopping: false, paused: false, aborting: false, done: false, manual: false, idleOrError: false, iifkm: false, rri: false, ipr: false, kei: false, runningOrStopping: false, allChildrenIdle: false, allChildrenKilled: false, allChildrenInactive: false, allChildrenIdleOrError: false, commanderId: 0, recordingLogs: false }; export interface Device { is: DeviceStatus; errors: DeviceFaultData; warnings: DeviceFaultData; registration: DeviceRegistration; cfg: DeviceCfg; //ignore--instants: DeviceInstants; //ignore--instantsexecMethod: ProcessData; //ignore--instantstask: ProcessData; //ignore--instantsprocess: ProcessData; //read-only //ignore--instantsscript: ProcessData; //read-only //ignore--instantsmission: ProcessData; //ignore--instantssettings: DeviceSettings; connectionStatus: boolean; //ignore--instantsrequests: Array<DeviceActionRequestData>; //this can be written to outside of the device fb; //ignore--instantsapiOpcua: ApiOpcuaData; //ignore--instantsudp: UdpData; } export const initialDevice: Device = { is: initialDeviceStatus, errors: initialDeviceFaultData, warnings: initialDeviceFaultData, registration: initialDeviceRegistration, cfg: initialDeviceCfg, connectionStatus: false };