throbber
XMC Motion Control
`XMCSPI Reference
`
`Revision:
`Author:
`Date:
`Description:
`
`Third Draft
`Dave Brown
`Wednesday. Feb 22. 1995
`This document is the XMCAPI reference describing all functions. standard OLE interfaces. and
`custom OLE interfaces making up the XMCAPI.
`
`Revision History:
`
`4/15/94 (DB)
`7/1/94 (DB)
`2/22/95 (DB)
`
`initial writing.
`- First Draft:
`- Second Draft: Split design off small business plan. incorporated suggestions.
`— Third Draft - Spiit XMCAPI reference off design guide,
`
`ROY—G-BIV Corporation Confidential
`© 1995 ROY-G-BIV Corporation. Au rights reserved.
`
`ROY—G—BIV CORPORATION
`
`EXHIBIT 2010-4
`
`ABB V ROY—G—B|V
`
`TRIAL |PR2013—00O62
`
`
`
`1
`
`

`
`
`
`XIIC Motion Control XMCSPI Reference Appendix A
`
`Appendix A
`
`A. 1 Reviewer Feedback
`
`All feedback is important in order to evolve the specification into a standard software model for
`motion control hardware. Please, at a minimum, respond to the following issues:
`
`5-".‘>.“!~'.-‘
`
`Which areas, ideas, or concepts within the specification seem confiising to you?
`Are there any main features missing from the specification that you would find useful?
`Are there any specific scenario-maps you would like to see in the next revision?
`Are there any specific C or C++ code examples you would like to see‘?
`Are there any specific Visual Basic code examples you would like to see?
`
`A.1.l Correspondence
`
`If possible, please send all feedback over email to the following address:
`
`Dave Brown
`
`ROY-G-BIV Corporation
`Compuserve:72 1023,2235
`Internet:
`72103.2235@compuserve.com
`
`Otherwise, if you do not have access to email, please mail all correspondence to the following
`address:
`
`Dave Brown
`
`ROY-G-BIV Corporation
`P.O. Box 1278
`
`White Salmon, WA. 98672
`
`
`ROY-G-BIV Corporation Confidential
`311 5195
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`2
`
`2
`
`

`
`XMC Motion control XMCSPI Reference
`
`3.0 XMCSPI Reference
`
`3.4.4 IXMC_DrvExtCG_ProgramMgmt Interface
`The [XMC_DrvExtCG_ProgramFlow interface is used to generate program flow code. Loops and
`if/then statements are several examples of contitional code generated. The following methods are
`in the interface:
`
`Programming
`(*pDrvExtCG_ProgMgmt) —>Run ()
`(*pDrvExtCG_ProgMgmt:) ->Stop ()
`
`Output
`(*pDrvExtCG_ProgMgmt) —>E.nableOutput ()
`('pDrvE:xtCG_ProgMgmt) —>SetOutput ()
`
`3.4.5 IXMC_DrvExtCG_Subroutine Interface
`
`The IXMC_DrvExtCG__Subroutine interface is used to generate subroutines and calls to
`subroutines. The following methods are in the lXMC__DrvExtCG_Subroutine interface:
`
`General
`(*pDrvExtCG_Sub) ->Define ()
`('pDrvExtCG_Sub) ->Call ()
`(*pDrvExtCG_Su.b) —>E.nd ()
`
`3.4.6 IXMC_DrvExtCG_Variable Interface
`The IXMC_DrvExtCG_Variable interface is used to define and assign values to variables. The
`following methods are included in the interface:
`
`Definition
`('pDrvE‘.xtCG_Var) ->Define ()
`
`Assignment
`T’
`(*pDrvExtCG_Var) —>AssignNumeric ()
`('pDrvExtCG_Var)->AssignBinary()
`(*pDrvExtCG_Var)->AssignString()
`
`
`ROY-G-BIV Corpomtion Confidential
`3115195
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`3
`
`3
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 3.0 XMCSPI Reference
`
`Trigonometric
`('pDrvExtCG_Op)->ACos()
`('pDrvExtCG_Op)->ASin()
`(*pDrvExtCG Op)—>ATan()
`('pDrvExtCG:Op)->Cos(}
`('pDrvExtCG_Op)->Sin()
`(*pDrvExtCG_Op)—>Tan()
`
`Labelslstringslcornments
`('pDrvExtCG_Op)->ASCIICha:(J
`('pDrvExtCG_Op)->Comentt)
`(*pDrvExtCG_Op)—>DeclarLabel()
`('pDrvExtCG_Op)->String()
`
`Conditional
`(*pDrvExtCG_Op)->Equal()
`('pDrvExtCG_Op)—>GreaterThan()
`(*pDrvExtCG_Op)->GreaterThanEqual()
`(*pDrvExtCG_Op)—>LessThan()
`(*pDrvExtCG_Op)->LessThanEqual()
`('pDrvExtCG_Op)->NotEqual()
`
`3.4.2 IXMC_DrvExtCG_Program Interface
`
`The IXMC_DrvExtCG_Program interface is used to generate a progmm shell using the
`appropriate vendor-specific control-codes. The following methods are in the interface:
`
`Programmming
`(*pDrvExtCG_Prog)—>Define()
`(*pDrvExtCG_Prog)—>End()
`(*pDrvExtCG_Prog)->Exit()
`(*pDrvExtCG_Prog)->Sleep()
`
`3.4.3 IXMC_DrvExtCG__ProgramFlow Interface
`
`The lXMC_DrvExtCG_ProgramF low interface is used to generate program flow code. Loops and
`if/then statements are several examples of contitional code generated. The following methods are
`in the interface:
`
`lfIElse
`('pDrvExtCG_ProgFlow)—>IfOpen()
`('pDrvExtCG_ProgFlow)->IfClose()
`('pDrvExtCG_ProgFlow)—>Else()
`('pDrvExtCG_ProgF1ow)->EndIf()
`
`VVhfle
`('pDrvExtCG_ProgFlow)->WhileOpen()
`('pDrvExtCG_ProgFlow)->WhileClose()
`(*pDrvExtCG_ProgFlow)—>EndWhile()
`
`Repeat
`('pDrvExtCG_ProgFlow)—>Repeat()
`('pDrvExtCG_P:ogFlow;->UntilOpen()
`('pDrvExtCG_ProgFlow)—>Un:ilClose(L
`
`Loops
`('pDrvExtCG_ProgFlow)->Loop(l
`('pDrvExtCG_ProgFlow)->EndLoop()
`
`Nfisc.
`(*PDrvExtCG_ProgFlow)->Break()
`('PDrvExtCG_ProgFlow;->GoTo()
`
`_______————__________________________________________________________________—_——
`ROY-G-BIV Corporation Confidential
`3115195
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`4
`
`4
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 3.0 XMCSPI Reference
`
`3.3.6 IXMC_DrvExtUI_DigitalIO Interface
`
`The IXMC_DrvExtUl_Digitall0 interface allows the user to interactively view and set the
`parameters used when initializing the digital IO system.
`
`Inheritance
`IXMC_DrvExtUI_Base
`
`l I
`
`———— —— IXMC DrvEx:UI Dicitallc
`
`3.3.7 IXMC__DrvExtUI_Servo Interface
`
`The IXMC_DrvExtUI_Servo interface allows the user to interactively view and set the servo
`system parameters. Also, the interface allows the user to interactively tune the PID settings used.
`
`Inheritance
`IXMC_DrvExtUI_Base
`
`I I
`
`———— —-
`
`IXMC_DrvExtUI_Se:vo
`
`Configuration
`("pDrvE.xt_Motion) —>Tune ()
`
`3.4 XMC Extended Code Generation Interfaces (ExtCG)
`
`Code generation interfaces are used by the Motion Control Component to generate the appropriate
`vendor-specific control-codes used to create a motion control program. Unlike other interface
`supported by each Motion Control Driver, the code-generation interfaces are never used in real-
`time mode.
`
`NOTE: Currently, the implementations of all code generation interfaces are a direct mapping of the Motion
`Control Component code generation interfaces and are under investigation.
`
`3.4.1 IXMC_DrvExtCG_Operator Interface
`The lXMC_DrvExtCG_Operator interface is used to generate general program code such as
`boolean, logical, simple conditional, and mathematical operators. The following methods are in
`the interface:
`
`Bitwise
`('pDrvExtCG_Op)—>BitAnd()
`('pDrvExtCG_Op)->BitNot()
`('pDrvExtCG_Op) ->BitOr ()
`("pDrvExtCG_Op) —>BitShiftL ()
`(*pDrvExtCG_Op)->BitShiftR()
`('pDrvExtCG_Op)->BitXOr()
`
`Logical
`(*pDrvExt:CG_Op) ~>And ()
`('pDrvExtCG_Op)->Not()
`('pDrvExtCG_Op) —>Or ()
`
`Mathematical
`('pDrvExtCG_Op)->Add()
`('pDrvExtCG_Op)->Bi:(
`('pD:vExtCG_Op)->Div()
`('pDrvExtCG_Op)—>LeftParen()
`('pDrvExtCG_Op)->Mul:()
`('pDrvExtCG_Op)->Ri9htParen()
`(‘pDrvExtCG_Op)->Sqrt()
`('pDrv£xtCG_Op)->Sub()
`
`
`ROY-G-BIV Corporation Confidential
`3115195
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`5
`
`5
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 3.0 XMCSPI Reference
`
`3.3 XMC Extended UI Interfaces (ExtUI)
`All extended Ul custom OLE 2.0 interfaces use user-interface resources such as dialog boxes or
`windows to interact with the user. Some interfaces may gather information from the user. where
`others may just display information.
`
`3.3.1 IXMC_DrvExtUI_AnalogIO Interface
`
`The IXMC_DrvE.xtUI_AnalogIO interface allows the user to interactively view and set the
`parameters used when initializing the analog IO system.
`
`Inheritance
`
`IXMC_DrvCore_IO
`
`I l
`
`---- -— IXMC_DrvCore_Dic_:i:alIO
`
`3.3.2 IXMC_DrvExtUI_AnalogIO Interface
`
`The IXMC_DrvExtUI_Analog_IO interface allows the user to interactively view and set the
`parameters used when initializing the analog IO system.
`
`Inheritance
`IXMC_DrvE.xtUI__Base
`
`I |
`
`---- -- IXMC_DrvExtUI_AnalogIO
`
`3.3.3 I_XMC_DrvExtUI_Base Interface
`
`The IXMC_DrvExtUI_Base interface is an abstract base derived off by all other Extened UI
`interfaces. The two methods defined in this interface, implemented by the deriving interface, are
`used to initialize and view data.
`
`_C_onfiguration
`(*pDrvExtUI_Base) ->In1tialize ()
`('pDrvE‘.xtUI_Base> —>\/iew ()
`
`3.3.4 IXMC__DrvExtUI_DynamicState Interface
`
`The IXMC_DrvExtUI__DynamicState interface allows the user to interactively view and set all
`dynamic parameters used in the motion control system.
`
`Inheritance
`IXMC_DrvExtUI_Base
`
`l I
`
`---- -- IXMC_DrvExtUI_DynamicSta1:e
`
`3.3.5 IXMC_DrvExtUI_StaticState Interface
`
`The IXMC__DrvExtUI_StaticState interface allows the user to interactively view and set all
`static system parameters used when initializing the motion control system.
`
`Inheritance
`IXMC_D rvExtU I_Ba se
`
`l l
`
`---- -- IXMC_D:vExcUI Staticstate
`
`
`ROY-G-BIV Corporation Confidential
`3115/95
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`6
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 3.0 XMCSPI Reference
`
`( pDrvExt_Motion;—>EnableFeedRate()
`( pD:vEx:_Mocion)—>EnableInte:polaticn()
`( pDrvExt_Motion)->EnableAxisScalingl)
`('pD:vExt_Motion)->EnablePathScaling()
`( pD:vExt_Motioni*>GoHome()
`( pDrvExt_Motion)->GoZero()
`( pD:vExt_Motion)->MoveRel()
`
`Geometric Moves
`(*pDrvExt_Motion)->Arc()
`('pDrvExt_Motion)—>Pach()
`
`3.2.11 IXMC_DrvExt_StaticState Interface
`
`The lXMC_DrvExt_StaticState interface manages all extended static state information defining
`the system. Like the current state information. the device context infonnation may be queried at
`any time after the system is initialized. But. unlike the current state information, the device
`context infonnation is only set during the initial setup of the system.
`
`State Information
`typedef struct _XMC_EXTSTATICSTATEINFO
`l
`
`——
`
`dwSupportedProperties:
`dfAxisScalingFactor:
`dfPathScalingFactor;
`dfMaxAcceleration;
`dfMaxDeceleration:
`dfMaxVelocity;
`
`DWORD
`double
`double
`double
`double
`double
`) XMC_EXTSTATICSTATEINFO;
`
`Querying Attributes
`(*pDrvCore_DC)->GetState()
`
`Setting Attributes
`('pDrvCore_DC)~>Se:Sta:e()
`
`3.2.12 IXMC_DrvExt_Timer Interface
`
`The lXMC_DrvExt_Timcr interface is used to manipulate a timer on the motion control
`hardware.
`
`Querying Attributes
`('pD:vExt_Timer)->GetTime()
`('pDrvExt_Timer)~>GetDelay()
`('pDrvExt_Timer)->GetResolution()
`
`Setting Attributes
`('pDrvExt_Timer)->Se:De1ay()
`
`Actions
`('pD:vExt_Time:)->DoDelay()
`('pDrvEx:_Timer)->EnableIn:er:upt()
`('pDrvEx:_Timer)->Rese:()
`('pDrvExt_Timerl—>Startl)
`('pDrvExt Timer)->Stop{)
`('pDrvExt:Timer)->T:icge:Inter:upt()
`
`
`ROY-G-BIV Corporation Confidential
`3115/95
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`7
`
`

`
`3.0 XMCSPI Reference XMC Motion Control XMCSPI Reference
`
`3.2.8 IXMC_DrvExt_Jo_vstick Interface
`
`The IXMC_DrvExt_Joystick interface is used to enable and disable a hardware joystick. When
`enabled. all other motion operations are disabled. The following methods are in this interface:
`
`Setting Attributes
`(*pDrvExt_Joys:ick)->SetVelocityHigh()
`(*pDrvExt_Joystick)->SetVelocityLow()
`(*pD:vEx:_Joys:ick)—>SetupElec::onics()
`
`Actions
`(*pDrvExt_Joystick)->Enable()
`
`3.2.9 IXMC_DrvExt_Limits Interface
`
`The IXMC__DrvExt_Limits interface is used to manipulate both hardware and software limits.
`The following methods are in this interface:
`
`Querying Attributes
`('pDrvExt_Limits)->GetSoftwareLimitPositions()
`
`Setting Attributes
`(*pDrvExt_Limits)->SetSoftwareLimitPositions()
`(*pDrvExt_Limits)->SetDeceleration()
`
`Actions
`(*pDrvExt Limits)—>EnableHardwareLimits()
`(*pDrvExt:Limits)->EnableSoftwareLimits()
`
`3.2.10 IXMC_DrvExt__Motion Interface
`This interface consists of extra motion control functions that may or may not be implemented by
`the motioilcontrol hardware. If a hardware implementation is unavailable for a particular
`function. the Motion Component calls the Motion Control Driver Stub, which implements the
`functionality in software. The following methods are available from either the Motion Control
`Driver or the Motion Control Driver Stub in the lXMC_DrvExt__MotionControl interface:
`
`Querying Attributes
`('pDrvExt_Motion)->GetFeedRate()
`('pDrvExt_Motion)->GecAxisScaling()
`('pDrvExt_Motion)—>GetPathScaling()
`(*pDrvExt_Motion)->GetMaxAcceleration()
`('pDrvEx:_Motion)—>GetMaxDeceleration()
`('pDrvExt_Motion)—>GetMaxVelocity()
`(*pDrvExt_Motion)~>GetHomePosi:ion()
`(*pDrvExt_Motion)->IsDataCaptureOn()
`(*pD:vExt_Motion)->IsFeedRateOn()
`('pDrvExt_Motion)—>IsAxisScalingOn()
`('pD:vExt_Motion)—>IsPathScalingOn()
`('pDrvExt_Motion)->IsInterpolationOn()
`
`Setting Attributes
`('pDrvEx:_Motion)->SetJogVelo:ityHigh(}
`('pDrvEx:_Motion)—>SecJogvelocityLow()
`('pD:vExt_Mocicn)->SecFeedRatei)
`('pD:vExt_Motion)->SetAxisScaling()
`('pDrvEx:_Mocion)—>SetPathScaling()
`('pDrvExt_Motion)—>Se:MaxAcceleration()
`('pD:vExt_Motion)->SetMaxDecele:ation()
`(*pDrvExt_Motion)->SetMaxVelocity()
`('pDrvExt_Mo:ion)->SetZeroPosi:ion()
`('pDrVEXt_MOtiOn)->SetHomePosi:ion()
`
`ROY-G-BIV Corporation Confidential
`3115195
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`A 8
`
`8
`
`

`
`XMC Motion Control XMCSPI Reference
`
`3.0 XMCSPI Reference
`
`3.2.4 IXMC_DrvExt_DigitalIO Interface
`
`The [XMC__DrvExt_Digita|I0 interface handles all extended l0 functional_v.
`
`Actions
`('pDrvEx:_Dig; a2 110)—>EnableInputFunctions()
`('pDrvEx:_Dig‘ta1IO )->EnableOutputFunctions()
`
`Setting Attributes
`('pDrvExt_DigitalIO)->SetInputFunCtion()
`(*pDrvExt_DigitalIO)->SetInputDebounceTime()
`(*pDrvExt_DigitalIO)->SetInputActiveLevel()
`('pDrvExt_DigitalIO)—>SetOu:putFunction()
`(*pD:vEx:_DigitalIO)—>SetOutputActiveLevel()
`(*pD:vEx:_Digi:alZO)->SetOutputStates()
`
`3.2.5 IXMC_DrvExt_Encoder Interface
`
`The IXMC_DrvExt_Encoder interface is used to manipulate encoders in the motion control
`system.
`
`Setting Attributes
`('pDrvExt_Encode:)->SetOutputAbsPosition()
`(*pDrvExt_Encoder)->SetOutputRelPosition()
`
`—
`
`3.2.6 IXMC_DrvExt_Interrupt Interface
`The [XMC_DrvExt_Interrupt interface is used to set, get, and enable interrupt handlers
`
`Querying Attributes
`(*pDrvExt_Int)->GetHand1er()
`
`Setting Attributes
`(*pDrvExt_Int)->SetHandler()
`
`Actions
`(*pDrvExt_1nt)->Enab1e()
`
`3.2.7 IXMC_DrvExt_IO Interface
`This interface consists of all digital input and output related functions. The following methods are
`available from each Motion Control Driver in the lXMC_DrvExt_Digitall0 interface:
`
`Actions
`('pDrvExt_IO)->EnableDacaCapture();
`
`
`
`ROY~G-BIV Corporation Confidential
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`9
`
`3/15/95
`
`9
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 3.0 XMCSPI Reference
`
`3.2.2 IXMC_DrvExt_Debug Interface (Private)
`
`The IXMC_DrvExt__Debug interface is a private interface used by the Motion Control
`Component, if available. When implemented, the interface is used when debugging the Motion
`Control Driver.
`
`Setting Attributes
`('pDrvExt_Debug)->SetRawDataInDumpFile()
`(*pDrvExt_Debug)->SetRawDataOutDumpFile()
`(*pDrv£xt_Debug)->SetXMCSPILogFi1e()
`
`Actions
`('pDrvExt_Debug)->Enab1eRawDataDump()
`(*pDrvExt_Debug)->EnableXMCSPILogging()
`
`3.2.3 IXMC_DrvExt_D_vnamicState Interface
`The [XMC_DrvExt__DynamicState interface manages the extended, dynamic state of the motion
`control system. The extended current state information may be queried or changed at any time
`after the system is initialized.
`
`State Information
`typedef struct _XMC_EXTDYNAMICSTATEINFO
`l
`
`dwSupportedPoperties;
`'pExtXMCDC:
`dfLimitDeceleration:
`dfJogVelocityHigh;
`dfJogVelocityLow:
`dfJoystickVelocityHigh;
`dfJoystickVelocityLow;
`dfFeedRate;
`*pHomePosition:
`'pZeroPosition:
`'pLimitSWFwdPosition;
`*pLimitSWBwdPosition;
`dfLimitDeceleration;
`bJoystick:
`bAxisScaling;
`bPathscaling;
`bDataCapture;
`bFeedRate;
`blnterpolation;
`bLimitSW;
`bLimitHW:
`bIODataCapture;
`
`__
`
`DWORD
`XMC_EXTSTATICSTATEINFO
`double
`double
`double
`double
`double
`double
`POs_DATA
`POS_DATA
`POS_DATA
`POS_DATA
`double
`BOOL
`BOOL
`BOOL
`BOOL
`EOOL
`BOOL
`BOOL
`BOOL
`BOOL
`) XMC_EXTDYNAMICSTATEINFO:
`
`Querying Attributes
`('pDrvCore_DynSt)->GetState()
`
`Setting Attributes
`('pDrvCore_DynSt)->SetState(}
`
` :jj
`
`ROY-G-BIV Corporation Confidential
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`10
`
`3/1 5195
`
`10
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 3.0 XMCSPI Reference
`
`3.1.10 IXMC_DrvCore_StaticState Interface
`
`The IXMC_DrvCore_StaticState interface manages all static state infonnation defining the
`system. Like the current state infonnation, the device context infonnation may be queried at any
`time after the system is initialized. But. unlike the current state information. the device context
`information is only set during the initial setup of the system.
`
`State Infonnation
`typecie 5 s trust _XMC_S-'I‘.I{Z‘ I CSTATE INFO
`(
`
`dfEncode:CountsPerRevolution;
`double
`dfMMPerRevolucion.'
`double
`cbAxisCoun::
`int
`cbAxi sMax;
`int
`XMCMOTORTYPE
`moto:Type;
`) XMC_STATICSTATEINFO;
`
`Querying Attributes
`('pDrvCore__StatSt) ->GetState ()
`
`Setting Attributes
`(*pDrvCore_StatSt) ->SetStat:e()
`
`__
`
`3.1.11 IXMC_DrvCore_Stepper Interface
`The IXMC_DrvCore_Stepper interface handles all operations specific to stepper motors. All
`motion operations are performed by the IXMC_DrvCore_Motion interface. The following
`methods are in the IXMC_DrvCore_Stepper interface:
`
`Dependency
`IXMC_DrvCore_Motion
`
`I I
`
`----— IXMC_DrvCore_St:epper
`
`Configuration
`('pDrvCore_Stepper) ->Initialize ()
`
`3.2 XMC Extended Interfaces (Ext)
`Extended interfaces contain methods that are not required. These interfaces are either duplicated
`by the Motion Control Driver Stub or contain functionality not essential in most motion control
`problems. However, implementing these interfaces will optimize the performance of the motion
`control system for a particular set of hardware. This section describes all extended interfaces
`within XMCSPI.
`
`3.2.1 IXMC_DrvExt_Counter Interface
`
`The IXMC_DrvExt_Counter interface is used to operate a counter implemented by the motion
`control hardware.
`
`Querying Attributes
`('pDrvE‘.xt_Counter) ->GecCounter ()
`
`Actions
`('pDrvExt_Coum:er_) ->EnableIn1:errupt ()
`('pDrvExt_Counter)->Rese:()
`('pDrvEx:_Counter)->Start()
`('pDrvExt_Counter)->Stop()
`
`
`ROY-G-BIV Corporation Confidential
`SH 5195
`© 1995 ROY—G-BIV Corporation. All Rights Reserved.
`
`11
`
`11
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 3.0 XMCSPI Reference
`
`3.1.8 IXMC_DrvCore_Motion Interface
`
`This IXMC_DrvCore_Motion interface is a dependant interface in that it may only be used after
`either the'lXMC_DrvCore_Stepper or lXMC_DrvCore_Servo interfaces are used to initialize
`the system. All primitive motion control functions that are absolutely necessary to solve motion
`control software problems are placed in this interface. Also, each function in this set should be a
`primitive that can not be duplicated through a software algorithm built on top of other primitive
`functions. The following methods are available fi'om each Motion Control Driver in the
`IXMC_DrvCore__MotionControl interface:
`
`Querying Attributes
`(*pDrvCore Motion} ->GetCommandedPosi’cion ()
`('pDrvCore:Mo'.: ion) —>Get:ActualPosit ion ( )
`('pDrvCore_Motion) ->Get:CommandedVelocity ()
`(*pDrvCore_Mot.ion) —>GetActualVelocity ()
`
`Setting Attributes
`('pDrvCore_Motion)~>setVelocity()
`('pDrvCore_Motion)->SetPosition()
`
`Actions
`("_DDrvCore_Motion) ->Kill ()
`(*pDrvCore_Motion) ->MoveAbs ()
`(*pDrvCore_Motion) —>MoveContinous ()
`("pDrvCore_Mot ion) ->Stop ( )
`
`3.1.9 IXMC_DrvCore__Servo Interface
`
`The lXMC_DrvCore_Servo interface handles all operations specific to servo motors. All motion
`operations are performed by the IXMC_DrvCore_Motion interface. The following methods are
`in the IXMC_DrvCore_Servo interface:
`
`Dependency
`IXMC_DrvCore_Mo:ion
`
`I l
`
`—— -- — IXMC_D rvco re__Servo
`
`Configuration
`('pDrvCore_Servo)~>Initiali2e()
`(*pDrvCore_Servo)->Tune()
`
`
`
`ROY-G-BIV Corporation Confidential
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`.
`
`3/15/95
`
`12
`
`12
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 3.0 XMCSPI Reference
`
`3.1.5 IXMC__DrvCore_EnumInterfaceSupport Interface
`
`The lXMC_DrvCore_Enumlnterfacesupport interface is used to query a list of interfaces
`meeting the specific search criteria set with the
`lXMC_DrvCore_Enumlmerfacesuppon::SetSearchCriteria0 method..
`
`Inheritance
`II-.‘.numX
`
`i |
`
`--- IXMC_DrvCore_E.numInterfacesupport
`
`Setting Attributes
`('pDrvCore__EnumIFace) ->Set:SearchCrite:ia ()
`
`3.1.6 IXMC_DrvCore_IO Interface
`This interface consists of all digital input and output related functions. The following methods are
`available from each Motion Control Driver in the lXMC_DrvCore_DigitalIO interface:
`
`Configuration
`('pDrvCore_IO) ->Initialize ()
`
`Actions
`('pDrvCore_I0) —>Read ()
`(*pDrvCore_IO) —>write ()
`
`3.1.7 IXMC_DrvCore_Limits Interface
`
`The IXMC_DrvCore_Limits interface is used to set software limits for a set of axes. When
`setting limit values, two arrays containing AX1S_DA TA elements are used to transfer the settings
`to the method.
`
`Setting Attributes
`('pDrvCore_Limits) ->SetLimitPositions ()
`
`NOTE: Currently, this interface is classified as a core set of XMCSPI, but it may be changed to an extended
`set of XMCSPI instead.
`
`
`ROY-G-BIV Corporation Confidential
`3/15/95
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`13
`
`13
`
`

`
`XMC Motion Control XMCSPI Reference
`
`3.0 XMCSPI Reference
`
`3.1.3 IXMC_DrvCore_DynamicState Interface
`
`The lXMC_DrvCore_DynamicState interface manages the overall state of the motion control
`system.
`lncluded in its management tasks are initializing and shutting down the system. The
`current state information may be queried or changed at any time after the system is initialized.
`
`State Information
`typedef scruc: _xMC_DYNAMIcsTATEINEo
`{
`
`XMC_STATICSTATE
`double
`double
`double
`double
`double
`double
`double
`HRESULT
`XMC_OP_MODE
`XMC_AXIS_DATA
`XMC_AXIS DATA
`} XMC_DYNAMf-CSTATEINFO;
`
`,
`
`'pXMCDC;
`dfAc:ualPosition;
`dfCommandedPosition;
`dfActualVelocity:
`dfcomandedvelocity;
`dfPositionError;
`dfAcceleration;
`dfDeceleration;
`hE::orStatus;
`opera:ingMode;
`'pLeftLimicData;
`'pRightLimitData;
`
`Configuration
`(*pDrvCore_DynSt)->Reset()
`('pDrvCore_DynSt)->Initialize()
`('pDrvCore_DynS:)->ShutDown()
`
`Querying Attributes
`(*pDrvCore_DynSt)->GetErrorStatus()
`(*pDrvCore_DynSt)->GetState()
`
`Setting Attributes
`('pDrvCore_DynSt)->ClearE:rors()
`('pDrvCore_DynSt)—>SetState()
`
`3.1.4 IXMC_DrvCore_Encoder Interface
`
`The IXMC_DrvCore_Encoder interface implements several optimized functions used to query
`positions. Calling the lXMC_DrvCore_D_vnamicState:.-Getstateo method will also collect the
`position information. but at the expense of collecting all other current state data. The methods
`specified by this interface only collect the data requested.
`
`Querying Attributes
`(*pDrvCore_Motion)—>GetPositionActual()
`('pDrvCore_Mo:ion)—>GetFosi:ionE:ror()
`
`NOTE: Currently, this interface is classified as a core set of XMCSPI. but it may be changed to an extended
`set of XMCSPI instead.
`
`
`ROY-G-BIV Corporation Confidential
`3/15/95
`© 1995 ROY-G-BIV Corporation. All Rights Reserved‘
`
`14
`
`14
`
`

`
`XMC Moflon control XMCSPI Reference
`
`3.0 XMCSPI Reference
`
`3.0 XMCSPI Reference
`
`3.1 XMC Core Interfaces (Core)
`Core functions are the lowest level primitive motion control functions implemented by all
`hardware vendors that software cannot duplicate in an algorithm that uses other methods, such as
`those in the Motion Control Driver Stub. This section describes each custom OLE 2.0 interface
`within the set of core interfaces.
`
`3.1.1 IXMC_DrvCore_AnalogIO Interface
`
`The IXMC_DrvCore_AnaloglO interface inherits from the IXMC_DrvCore_IO interface and
`implements all of its methods. This interface take care of initializing the analog I/O system used.
`All U0 work is carried out by the IXMC_DrvCore_IO interface.
`
`Inheritance
`IXMC_DrvCore_IO
`
`I I
`
`---- -- IXMC_DrvCore_AnalogIO
`
`Configuration
`('pDrvCore_AnalogIO)->Initialize()
`
`3.1.2 IXMC_DrvCore_DigitalIO Interface
`
`Similar to the IXMC_DrvCore_AnalogIO interface, the IXMC_DrvCore_DigitalIO interface is
`also inherits from the IXMC_DrvCore_IO interface. The IXMC_DrvCore_DigitallO interface
`takes care of initializing the digital I/O system, and the IXMC_DrvCore_IO interface takes care
`of all other operations.
`
`Inheritance
`IXMC_DrvCore_IO
`
`l I
`
`---- -- IXMC_D:vCore_DigitalIO
`
`Configuration
`(*pDrvCore_Digi:alIOl—>Initialize()
`
`
`
`ROY-G-BIV Corporation Confidential
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`15
`
`3115195
`
`15
`
`

`
`XMC Motion control XMCSPI Reference
`
`2.0 XMCSPI Interface Categories
`
`
`
`Operator
`Program
`Program}-' low
`ProgmmMgmt
`Subroutine
`Variable
`
`‘ These interfaces generate code implicitly. Calling methods, that immediately cause an action on
`the hardware when run in real-tirne mode, generate code when run in code-generation mode.
`
`2.6 Interface Relationships
`This section describes how closely coupled XMCSPI interfaces relate to one another. There are
`two ways interfaces relate to one another.
`Interfaces can inherit from each other and can be
`dependent on one another. The following sections describe these relationships and the interfaces
`using them.
`
`2.6.1 Inheritance Relationships
`C++ inheritance is used to combine two interfaces in such a way that the derived interface
`“inherits” all method definitions in the base interface. Only the method definitions within the base
`interface are inherited. The resulting interface contains implementations of all methods in both
`the derived and the base interface. The following are the inheritance relationships found in the
`XMCSPI:
`
`Inheritance Tree
`IXMC_DrvCore_IO
`
`I |
`
`—-— IXMC_DrvCore_DigitalIO
`|--- IXMC_DrvCore_AnalogIO
`
`IXMC_DrvExtUI_Base
`
`I l
`
`--- IXMC_DrvExtUI Analoglo
`|--— IXMC_DrvExtUI:DigitalIO
`|——-
`IXMC DrvExtUI Dynamicstate
`l——-
`IXMC:DrvExtUI:Servo
`|--- IXMC_DrvExtUI_StaticState
`
`2.6.2 Dependency Relationships
`
`Unlike inheritance relationships. dependency relationships are between two interface
`implementations. When an interface is dependent on another interface, it needs the interface to
`perform an operation before it can continue one of its own operations. For example. the
`IXMC_DrvCore_Motion interface is dependent on the lXMC_DrvCore_Stepper interface
`initialization routine. Before using the IXMC_DrvCore_Motion interface, the
`lXMC_DrvCore_Stepper interface must be used to initialize the stepper system. The following
`are the dependency relationships found in the XMCSPI:
`
`Dependency Tree
`IXMC_DrvCore_Motion --I
`IXMC_DrvE.v.:_Mo:ion ———!
`
`2-:
`
`(dependent on)
`3
`V
`E——— lXMC_DrvCore_Stepper
`i-—- ZXMC_D:vCore_Se:vo
`
`__j__j
`ROY-G-BIV Corporation Confidential
`3/15/95
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`16
`
`16
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 2.0 XMCSPI Interface Categories
`
`The following custom OLE 2.0 interfaces are in the set of code-generation XMCSPI functions:
`
`Custom ExtCG Interfaces
`IXMC DrvExt:CG_ProgramF.-‘low
`IXMC:DrvExtCG_Ope rat 0:
`IXMC_DrvExtCG__P:ogram
`IXMC_DrvExtCG_Prog ::a.mMgmt
`IXMC_DrvExtCG_Subroutine
`IXMC_DrvExtCG__Va ri able
`
`2.4 Vendor Specific Interfaces (ExtVS)
`These functions are not part of the set of XMCSPI interfaces. No XMCAPI interface methods call
`these functions for they are provided by each vendor as a pass-through method giving vendors
`access to new hardware features not yet supported by the XMC software model. Each
`implementation of vendor specific custom OLE interfaces depend on the needs of the hardware
`vendor. Applications may communicate directly with these interfaces, but in doing so, they
`automatically become dependent on the specific Motion Control Driver and therefore become
`hardware-dependent. But, allowing vendor-specific functions to exist gives the software model a
`flexible way to evolve. For example, if one hardware vendor adds a new feature to their motion
`control hardware, not provided by any other vendors, they may gain access to the new feature by
`adding a vendor specific SPI interface to their driver and then directly programming to the SP1
`interface from within the application. Of course, other drivers will not work with applications that
`call the hardware dependent SP1 interface, for they will not implement the interface. As the
`feature becomes more useful over time, other hardware vendors will probably add the feature to
`their hardware. After the feature gains a critical mass of support within the companies supporting
`the XMC sofiware model, the feature will be added to the XMC software model by becoming a
`part of both the XMCSPI and XMCAPI. For more information on vendor specific interfaces, see
`the appropriate XMC Motion Conu*ol Extension manual describing the specific XMC Driver
`which includes a reference for each hardware-dependent driver interface.
`
`2.5 Interface Map
`The following table displays all Motion Control Driver, XMCSPI interfaces and the categories
`they fall in:
`
`Core
`“IXMCDrvCore_”
`
`Ext
`“IXMCDrvExt_”
`
`ExtUI
`“lXMCDrvExtUI_”
`
`ExtCG
`“IXMCDrvExtCG_”
`
`AnalogIO
`AnaloglO
`AnaloglO“
`Base
`
`Counter
`Counter‘
`
`Debug (Private)
`’ DigitalIO
`DigitalIO
`"" Digitallo
`Digitallo‘
`’""""”’"’
`
`Dynamicstate
`Dynamicstate
`Dynarnicstate
`Encoder
`Encoder
`Enumlnterface
`
`Encoder‘
`
`Interrupt i_""_““" '“"
`
`[0 (Abstract)
`10 (Abstract)
`IO‘
`Joystick
`Joystick‘
`Limits
`Limits
`Limits‘
` T&fiYXB§':?§é?jiW—"-%_——_T4*ciB}i‘7‘—-'*“_”
`
`Servo
`Servo
`Servo
`Servo‘
`Staticstate
`Staticstate
`Staticstate
`
`'
`
`Stepper
`
`’"
`
`Timer
`
`__
`
`"W
`
`__________V_
`
`Stepper‘
`“’——‘_—__‘—Ti}i'{Er”-""'""’""""""""'i'
`
`
`311 5195
`ROY-G-BIV Corporation Confidential
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`17
`
`17
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 2.0 XMCSPI Interface Categories
`
`current driver. that can be emulated using a software algorithm which calls core fimctions. For
`more information on how the XMC Driver Stub is used. see Section 7.0 Driver Administrator.
`
`Component, Driver Relationship in the XMC User Guide manual. Implementing extended
`interfaces directly in the driver can improve the precision and efficiency of the operation, for the
`driver implementation has more direct control over the motion control hardware than the XMC
`Motion Control Component. Even greater precision and performance improvements occur when
`the driver can direct the motion control hardware to directly perform a procedure defined in one of
`the extended interfaces.
`
`2.3.1 Extended Interfaces (Ext)
`
`This set of functions consists of all non core functions that do not use user-interface objects such
`as dialog boxes or message boxes. The following custom OLE 2.0 interfaces are in the set of
`extended XMCSPI functions:
`
`Custom Ext Interfaces
`IXMC_DrvExt_Counte:
`IXMC_DrvExt_Debug (Private)
`IXMC_DrvExt_DynamicState
`IXMC_DrvExt_Encode:
`IXMC_DrvExt_Interrupt
`IXMC_DrvExt_IO (Abstract)
`IXMC_DrvExt_Joystick
`IXMC_DrvExt_Limits
`IXMC_DrvExt_Motion (Dependent)
`IXMC DrvExt Staticstate
`
`IXMC:DrvE2xt::’I‘imer
`
`2.3.2 Extended UI Interfaces (ExtUI)
`
`_
`
`This XMCSPI set consists of all extended XMCSPI functions that require user-interface objects
`such as dialog boxes or message boxes. For example, when an application requests to tune the
`servo mo_t—ors, special input may be needed from the user to complete the process. Because tuning
`the servo motors is not a required motion control function and may need input from the user, it is
`in the Extended UI XMCSPI set of functions.
`
`The following custom OLE 2.0 interfaces are in the extended user-interface set of XMCSPI
`functions:
`
`Custom Extul interfaces
`IXMC_DrvExtUI_AnalogIO
`IXMC_DrvExtUI_Base
`IXMC_DrvExtUI_DigitalIO
`IXMC_DrvExtUI_DynamicState
`IXMC_DrvExtUI_Servo
`IXMC_DrvExtUI_Staticstate
`
`2.3.3 Extended Code Generation Interfaces (ExtCG)
`
`These XMCSPI functions consist of all methods used for code generation only. Most core and
`extended methods generate code also generate code when the XMC software is run in code-
`generation mode. But. where core and extended functions may also be used in real-time and
`mixed modes. code-generation functions cannot. Code-generation functions are only used when
`running in code-generation mode.
`
`
`ROY-G-BIV Corporation Confidential
`‘
`3115/95
`© 1995 ROY-G-BIV Corporation. All Rights Reserved.
`
`18
`
`18
`
`

`
`
`
`XMC Motion Control XMCSPI Reference 2.0 XMCSPI Interface Categories
`
`2.0 XMCSPI Interface Categories
`This section describes the categorical grouping of the OLE interfaces found in the XMCSPI. Both
`standard and custom OLE interfaces are used in the XMCSPI. OLE 2.0 requires the
`
`implementation of all interfaces listed in Section 2.] Standard OLE Interfaces. XMC requires the
`implementation of all interfaces listed in section 2. I Care Interfaces.
`
`2.1 Standard OLE Interfaces
`
`The following standard OLE interfaces must be supported by each Motion Control Driver. For
`more information on each interface. see section 2.0 Standard OLE Interfaces in the XMCAPI
`Reference manual.
`
`Standard Interfaces
`IClassEactory
`IUnknown
`
`2.2 Core Interfaces (Core)
`
`Any absolutely essential functions to motion control problems are in the core set of functions. All
`motion control XMCSPI drivers must implement these core functions. None of these functions
`are not allowed to use user-interface objects.
`
`The following custom OLE 2.0 interfaces are in the core set of XMCSPI func

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket