export interface ISafeMotionSlotHmiCommands { TakeoverPermitted:boolean; //Set from client whit current HmiId TakeoverRefused:boolean; // Set from client whit current HmiId } export interface ISafeMotionSlotHandshake { MotionSelected:boolean; // -> 0 from plc -> 1 from INAX Button1Pressed:boolean; // -> 0 from plc -> 1 from INAX Button2Pressed:boolean; // -> 0 from plc -> 1 from INAX HandshakeTime:number; // INt16 } export interface ISafeMotionSlotMotion { ManualEnable1:boolean; ManualEnable2:boolean; ManualOperation1:boolean; ManualOperation2:boolean; } export interface ISafeMotionSlot { SafeSlotVersion:boolean; // Now we are on version 1 //Int16 SlotId:number; // Slot ID set by the plc1 == index of slot + 1 //byte UnitTimestamp:string // Timestamp of the block //Datetime ErrorCode:number; // ErrorCode AggregateDBNumber:number; // pointer to used aggregate AggregateOffset:number; // pointer to used aggregate HmiIdMotionAct:number; // HMI Id currently used by the motion slot HmiId:number; // check compare aggregate an safeMotionSlot id AccessRightRequestedFromHmiId:number; // check compare aggregate an safeMotionSlot id Commands:ISafeMotionSlotHmiCommands; Handshake:ISafeMotionSlotHandshake; Motion:ISafeMotionSlotMotion; } //INAX TO PLC export interface ISafeMotionState { CheckSumInvalid:boolean; //Bit from INAX if Checksum is not correct -> e.g. after download a this DB UpdateRequested:boolean; //Bit from INAX to update motionData } //PLC TO INAX export interface ISafeMotionCommand { UpdateAllowed:boolean; //Bit to INAX: to allow update AllSlotsLocked:boolean; //Bit to INAX: do not set bits (ManualOperation, ManualEnable) NavigationLocked:boolean; //Bit to INAX: do not set bits (ManualOperation, ManualEnable) SafeVersionInvalid:boolean; //Bit to INAX PLC detected conflict in safe versions FunctionBlock <> PLC Struct } export interface ISafeMotionHeader { Generated:string; //Datetime NumberOfActiveSlots:number; SafeMotionVersion:number; SafePlcVersion:number; States:ISafeMotionState; Commands:ISafeMotionCommand; } export interface ISafeMotion { Header:ISafeMotionHeader Slot:Array; }