⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmdtypes.h

📁 一个机器人的源代码.软件设计得超级好!是商业级代码.
💻 H
字号:
#ifndef PMD_CommonTypes
#define PMD_CommonTypes

//  PMDtypes.h -- common type declarations
//
//  Performance Motion Devices, Inc.
//


// Global definitions
#define DK_MEMORY_BASE		0
#define DK_TOTAL_MEMORY		0x2000 - DK_MEMORY_BASE // 0x2000 = 8k dwords = 16k words (CY7C09269)

#define PMD_MAX_AXES 4

#define DEVICE_TYPE_RCM   0
#define DEVICE_TYPE_M3    1

#define PMDnull 0

// common types
typedef long PMDint32;
typedef unsigned long  PMDuint32;
typedef long PMDlong32;
typedef unsigned short PMDuint16;
typedef short PMDint16;
typedef unsigned char  PMDuint8;
typedef PMDuint16 PMDresult;

#ifdef _LINUX
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef INVALID_HANDLE_VALUE
#define INVALID_HANDLE_VALUE -1
#endif

typedef int BOOL;
typedef int HANDLE;
typedef PMDuint32 DWORD;
#endif

enum {nibbleMask=0x0F, byteMask=0xFF};

enum {
        PMDAxis1=0,
        PMDAxis2,
        PMDAxis3,
        PMDAxis4
};

typedef PMDuint16 PMDAxis;

typedef enum {
        PMDNoAxisMask=0x00,
        PMDAxis1Mask=0x01,
        PMDAxis2Mask=0x02,
        PMDAxis3Mask=0x04,
        PMDAxis4Mask=0x08
} PMDAxisMask;

enum {
        PMDDisable=0,
        PMDEnable=1
}; // generic enable switch

// Profile Generation
typedef enum {
        PMDTrapezoidalProfile=0,
        PMDVelocityContouringProfile=1,
        PMDSCurveProfile=2,
        PMDElectronicGearProfile=3,
        PMDExternalProfile=4
} PMDProfileMode;

typedef enum {
        PMDPositionSourceActual=0, 
        PMDPositionSourceCommanded=1
} PMDPositionSource;

typedef enum {
        PMDNoStopMode=0, 
        PMDAbruptStopMode=1, 
        PMDSmoothStopMode=2
} PMDStopMode;

// Servo Filter
typedef enum {
        PMDLimitDisabled=0, 
        PMDLimitEnabled=1
} PMDLimitMode;

typedef enum {
        PMDAutoStopDisabled=0, 
        PMDAutoStopEnabled=1
} PMDAutoStopMode;

typedef enum {
        PMDMotionCompleteCommandedPosition=0, 
        PMDMotionCompleteActualPosition=1
} PMDMotionCompleteMode;

typedef enum {
        PMDBiQuadFilter1=0, 
        PMDBiQuadFilter2=1
} PMDBiQuadFilterNumber;

typedef enum {
        PMDBiQuadFilterEnable=0, 
        PMDBiQuadFilterCoefficientB0=1,
        PMDBiQuadFilterCoefficientB1=2,
        PMDBiQuadFilterCoefficientB2=3,
        PMDBiQuadFilterCoefficientA1=4,
        PMDBiQuadFilterCoefficientA2=5,
        PMDBiQuadFilterCoefficientK=6
} PMDBiQuadFilterCoefficient;


// Parameter Update & Breakpoints
typedef enum {
        PMDBreakpoint1=0,
        PMDBreakpoint2=1
} PMDBreakpoint;

typedef enum {
        PMDBreakpointDisable=0,
        PMDBreakpointGreaterOrEqualCommandedPosition=1,
        PMDBreakpointLessOrEqualCommandedPosition=2,
        PMDBreakpointGreaterOrEqualActualPosition=3,
        PMDBreakpointLessOrEqualActualPosition=4,
        PMDBreakpointCommandedPositionCrossed=5,
        PMDBreakpointActualPositionCrossed=6,
        PMDBreakpointTime=7,
        PMDBreakpointEventStatus=8,
        PMDBreakpointActivityStatus=9,
        PMDBreakpointSignalStatus=10
} PMDBreakpointTrigger;

typedef enum {
        PMDBreakpointNoAction=0,
        PMDBreakpointActionUpdate=1,
        PMDBreakpointActionAbruptStop=2,
        PMDBreakpointActionSmoothStop=3,
        PMDBreakpointActionMotorOff=4
} PMDBreakpointAction;

// Status Register Control
enum {
        PMDActivityPhasingInitializedMask=0x0001,
        PMDActivityAtMaximumVelocityMask=0x0002,
        PMDActivityTrackingMask=0x0004,
        PMDActivityProfileModeMask=0x0038,
        PMDActivityAxisSettledMask=0x0080,
        PMDActivityMotorOnMask=0x0100,
        PMDActivityPositionCaptureMask=0x0200,
        PMDActivityInMotionMask=0x0400,
        PMDActivityInPositiveLimitMask=0x0800,
        PMDActivityInNegativeLimitMask=0x1000,
        PMDActivityProfileSegmentMask=0xE000,
        PMDActivityStatusMask=0x1FBF
};

enum {
        PMDEventMotionCompleteMask=0x0001,
        PMDEventWrapAroundMask=0x0002,
        PMDEventBreakpoint1Mask=0x0004,
        PMDEventCaptureReceivedMask=0x0008,
        PMDEventMotionErrorMask=0x0010,
        PMDEventInPositiveLimitMask=0x0020,
        PMDEventInNegativeLimitMask=0x0040,
        PMDEventInstructionErrorMask=0x0080,
        PMDEventCommutationErrorMask=0x0800,
        PMDEventBreakpoint2Mask=0x4000,
        PMDEventStatusMask=0x48FF
};

enum {
        PMDSignalEncoderAMask=0x0001,
        PMDSignalEncoderBMask=0x0002,
        PMDSignalEncoderIndexMask=0x0004,
        PMDSignalEncoderHomeMask=0x0008,
        PMDSignalPositiveLimitMask=0x0010,
        PMDSignalNegativeLimitMask=0x0020,
        PMDSignalAxisInMask=0x0040,
        PMDSignalHallAMask=0x0080,
        PMDSignalHallBMask=0x0100,
        PMDSignalHallCMask=0x0200,
        PMDSignalAxisOutMask=0x0400,
        PMDSignalStepOutputInvertMask=0x0800,
        PMDSignalMotorOutputInvertMask=0x1000,
        PMDSignalMask=0x07FF
};

// Encoder
typedef enum {
        PMDCaptureSourceIndex=0,
        PMDCaptureSourceHome=1
} PMDCaptureSource;

typedef enum {
        PMDEncoderSourceIncremental=0,
        PMDEncoderSourceParallel=1,
        PMDEncoderSourceNone=2,
        PMDEncoderSourceLoopback=3
} PMDEncoderSource;

// Motor
typedef enum {
        PMDMotorOutputBiPolarDAC=0,
        PMDMotorOutputPWMSignMagnitude=1,
        PMDMotorOutputPWM5050Magnitude=2,
        PMDMotorOutputSPIDAC=3,
        PMDMotorOutputUniPolarDAC=4
} PMDMotorOutputMode;

typedef enum {
        PMDMotorOff=0,
        PMDMotorOn=1
} PMDMotorMode;

// Commutation
typedef enum {
        PMDCommutationModeSinusoidal=0,
        PMDCommutationModeHallBased=1,
        PMDCommutationModeMicrostepping=2
} PMDCommutationMode;

typedef enum {
        PMDPhaseInitAlgorithmic=0,
        PMDPhaseInitHallBased=1
} PMDPhaseInitializeMode;

typedef enum {
        PMDPhaseCorrectionDisabled=0,
        PMDPhaseCorrectionEnabled=1
} PMDPhaseCorrectionMode;

typedef enum {
        PMDPhasePrescaleOff=0,
        PMDPhasePrescale64=1,
        PMDPhasePrescale128=2,
        PMDPhasePrescale256=3
} PMDPhasePrescaleMode;

typedef enum {
        PMDPhaseA=0,
        PMDPhaseB=1,
        PMDPhaseC=2
} PMDPhaseNumber;

// Trace Operations
typedef enum {
        PMDTrace1=0,
        PMDTrace2=1,
        PMDTrace3=2,
        PMDTrace4=3
} PMDTraceNumber;

typedef enum {
        PMDTraceOneTime=0,
        PMDTraceRollingBuffer=1
} PMDTraceMode;

typedef enum {
        PMDTraceNoVariable=0,
        PMDTracePositionError=1,
        PMDTraceCommandedPosition=2,
        PMDTraceCommandedVelocity=3,
        PMDTraceCommandedAcceleration=4,
        PMDTraceActualPosition=5,
        PMDTraceActualVelocity=6,
        PMDTraceCurrentMotorCommand=7,
        PMDTraceTime=8,
        PMDTraceCaptureValue=9,
        PMDTraceIntegral=10,
        PMDTraceDerivative=11,
        PMDTraceEventStatus=12,
        PMDTraceActivityStatus=13,
        PMDTraceSignalStatus=14,
        PMDTracePhaseAngle=15,
        PMDTracePhaseOffset=16,
        PMDTracePhaseACommand=17,
        PMDTracePhaseBCommand=18,
        PMDTracePhaseCCommand=19,
        PMDTraceAnalogInput1=20,
        PMDTraceAnalogInput2=21,
        PMDTraceAnalogInput3=22,
        PMDTraceAnalogInput4=23,
        PMDTraceAnalogInput5=24,
        PMDTraceAnalogInput6=25,
        PMDTraceAnalogInput7=26,
        PMDTraceAnalogInput8=27,
        PMDPIDPositionError=28
} PMDTraceVariable;

typedef enum {
        PMDTraceConditionImmediate=0,
        PMDTraceConditionUpdate=1,
        PMDTraceConditionEventStatus=2,
        PMDTraceConditionActivityStatus=3,
        PMDTraceConditionSignalStatus=4
} PMDTraceCondition;

typedef enum {
        PMDTraceTriggerStateLow=0,
        PMDTraceTriggerStateHigh=1
} PMDTraceTriggerState;

enum {
        PMDTraceStatusMode=0x0001,
        PMDTraceStatusActivity=0x0002,
        PMDTraceStatusDataWrap=0x0004,
        PMDTraceStatusMask=0x07
};

// Miscellaneous
enum {
        PMDActivityPhasingInitializedBit=0,
        PMDActivityAtMaximumVelocityBit=1,
        PMDActivityTrackingBit=2,
        PMDActivityAxisSettledBit=7,
        PMDActivityMotorOnBit=8,
        PMDActivityPositionCaptureBit=9,
        PMDActivityInMotionBit=10,
        PMDActivityInPositiveLimitBit=11,
        PMDActivityInNegitiveLimitBit=12,
};

enum {
        PMDEventMotionCompleteBit=0,
        PMDEventWrapAroundBit=1,
        PMDEventBreakpoint1Bit=2,
        PMDEventCaptureReceivedBit=3,
        PMDEventMotionErrorBit=4,
        PMDEventInPositiveLimitBit=5,
        PMDEventInNegativeLimitBit=6,
        PMDEventInstructionErrorBit=7,
        PMDEventCommutationErrorBit=11,
        PMDEventBreakpoint2Bit=14,
};

enum {
        PMDSignalEncoderABit=0,
        PMDSignalEncoderBBit=1,
        PMDSignalEncoderIndexBit=2,
        PMDSignalEncoderHomeBit=3,
        PMDSignalPositiveLimitBit=4,
        PMDSignalNegativeLimitBit=5,
        PMDSignalAxisInBit=6,
        PMDSignalHallABit=7,
        PMDSignalHallBBit=8,
        PMDSignalHallCBit=9,
        PMDSignalAxisOutBit=10,
        PMDSignalMotorOutputInvertBit=12,
};

typedef enum {
        PMDAxisOutSourceNone=0,
        PMDAxisOutSourceEventStatus=1,
        PMDAxisOutSourceActivityStatus=2,
        PMDAxisOutSourceSignalStatus=3
} PMDAxisOutSource;

typedef enum {
        PMDAxisOff=0,
        PMDAxisOn=1
} PMDAxisMode;

typedef enum {
        PMDSerialBaud1200=0,
        PMDSerialBaud2400=1,
        PMDSerialBaud9600=2,
        PMDSerialBaud19200=3,
        PMDSerialBaud57600=4,
        PMDSerialBaud115200=5,
        PMDSerialBaud250000=6,
        PMDSerialBaud416667=7
} PMDSerialBaud;

typedef enum {
        PMDSerial1StopBit=0,
        PMDSerial2StopBits=1
} PMDSerialStopBits;

typedef enum {
        PMDSerialProtocolPoint2Point=0,
        PMDSerialProtocolMultiDropUsingAddressBit=2,
        PMDSerialProtocolMultiDropUsingIdleLineDetection=3
} PMDSerialProtocol;

typedef enum {
        PMDSerialParityNone=0,
        PMDSerialParityOdd=1,
        PMDSerialParityEven=2
} PMDSerialParity;

typedef enum {
        PMDCANBaud1000000=0,
        PMDCANBaud800000=1,
        PMDCANBaud500000=2,
        PMDCANBaud250000=3,
        PMDCANBaud125000=4,
        PMDCANBaud50000=5,
        PMDCANBaud20000=6,
        PMDCANBaud10000=7
} PMDCANBaud;

typedef enum {
        PMDSPIModeFallingEdge=0,
        PMDSPIModeFallingEdgeDelay=1,
        PMDSPIModeRisingEdge=0,
        PMDSPIModeRisingEdgeDelay=3
} PMDSPIMode;

typedef enum {
        PMDBrushedServo=1,
        PMDBrushlessServo=3,
        PMDMicroStepping=4,
        PMDStepping=5,
        PMDMixedMotor=8
} PMDMotorTypeVersion;

typedef enum {
        PMDMotorTypeBrushlessDC3Phase=0,
        PMDMotorTypeBrushlessDC2Phase=1,
        PMDMotorTypeMicrostepping3Phase=2,
        PMDMotorTypeMicrostepping2Phase=3,
        PMDMotorTypePulseAndDirection=4,
        PMDMotorTypeBrushed=7
} PMDMotorType;

typedef enum {
        PMDSynchDisabled=0, 
        PMDSynchMasterNode, 
        PMDSynchSlaveNode
} PMDSynch;

typedef enum {
        PMDBufferFunctionNone=-1,
        PMDBufferFunctionPosition=0,
        PMDBufferFunctionVelocity,
        PMDBufferFunctionAcceleration,
        PMDBufferFunctionJerk,
        PMDBufferFunctionTime
} PMDBufferFunction;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -