Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

  1. #ifndef _USMCDLL_H
  2. #define _USMCDLL_H
  3.  
  4.  
  5. #include        <stdlib.h>
  6.  
  7.  
  8. #define         USMC_ERROR_REF_DEV_DISCONNECTED         0x14141413
  9. #define         USMC_ERROR_NOT_INITIALIZED              0x14141414
  10. #define         USMC_ERROR_NO_DEVICES_CONNECTED         0x14141415
  11. #define         USMC_SUCCESS                            0
  12. #define         TRUE                                    1
  13. #define         FALSE                                   0
  14.  
  15.  
  16. typedef         unsigned char   BYTE;
  17. typedef         unsigned int    DWORD;
  18. typedef         unsigned short  WORD;
  19. typedef         unsigned int    BOOL;
  20. typedef         void *          PVOID;
  21.  
  22.  
  23. typedef struct  _USMC_Devices
  24. {
  25.         DWORD   NOD;     // Number of devices connected to computer.
  26.         char ** Serial;  // Array of pointers to 16√byte ASCII strings of length √ NOD.
  27.         char ** Version; // Array of pointers to 4√byte ASCII strings of length √ NOD.
  28. } USMC_Devices, * PUSMC_Devices, * LPUSMC_Devices;
  29.  
  30.  
  31. typedef struct  _USMC_Parameters
  32. {
  33.         float AccelT;     // Acceleration time (in ms).
  34.         float DecelT;     // Deceleration time (in ms).
  35.         float PTimeout;   // Time (in ms) after which current will be reduced to 60% of normal.
  36.         float BTimeout1;  // Time (in ms) after which speed of step motor rotation will be equal to the one specified at BTO1P field in this structure.
  37.         float BTimeout2;  // Time (in ms) after which speed of step motor rotation will be equal to the one specified at BTO2P field in this structure.
  38.         float BTimeout3;  // Time (in ms) after which speed of step motor rotation will be equal to the one specified at BTO3P field in this structure.
  39.         float BTimeout4;  // Time (in ms) after which speed of step motor rotation will be equal to the one specified at BTO4P field in this structure.
  40.         float BTimeoutR;  // Time (in ms) after which reset command will be performed.
  41.         float BTimeoutD;  // This field is reserved for future use.
  42.         float MinP;               // Speed (steps/sec) while performing reset operation.
  43.         float BTO1P;      // Speed (steps/sec) after BTIMEOUT1 time has passed.
  44.         float BTO2P;      // Speed (steps/sec) after BTIMEOUT2 time has passed.
  45.         float BTO3P;      // Speed (steps/sec) after BTIMEOUT3 time has passed.
  46.         float BTO4P;      // Speed (steps/sec) after BTIMEOUT4 time has passed.
  47.         WORD  MaxLoft;    // Value in full steps that will be used performing backlash operation.
  48.         DWORD StartPos;   // Current Position saved to FLASH.
  49.         WORD  RTDelta;    // Revolution distance √ number of full steps per one full revolution.
  50.         WORD  RTMinError; // Number of full steps missed to raise the error flag.
  51.         float MaxTemp;    // Maximum allowed temperature (centigrade degrees).
  52.         BYTE  SynOUTP;    // Duration of the output synchronization pulse.
  53.         float LoftPeriod; // Speed (steps/sec) of the last phase of the backlash operation.
  54.         float EncMult;    // Encoder step multiplier. Should be <Encoder Steps per Evolution> / <SM Steps per Evolution> and should be integer multiplied by 0.25.
  55. } USMC_Parameters, * PUSMC_Parameters, * LPUSMC_Parameters;
  56.  
  57.  
  58. typedef struct  _USMC_StartParameters
  59. {
  60.         BYTE SDivisor;  // Step is divided by this factor (1,2,4,8).
  61.         BOOL DefDir;    // Direction for backlash operation (relative).
  62.         BOOL LoftEn;    // Enable automatic backlash operation (works if slow start/stop mode is off).
  63.         BOOL SlStart;   // If TRUE slow start/stop mode enabled.
  64.         BOOL WSyncIN;   // If TRUE controller will wait for input synchronization signal to start.
  65.         BOOL SyncOUTR;  // If TRUE output synchronization counter will be reset.
  66.         BOOL ForceLoft; // If TRUE and destination position is equal to the current position backlash operation will be performed.
  67. } USMC_StartParameters, * PUSMC_StartParameters, * LPUSMC_StartParameters;
  68.  
  69.  
  70. typedef struct  _USMC_Mode
  71. {                                               // Masked               Saved To Flash          Description:
  72.         BOOL  PMode;            //              √                     YES                                     Turn off buttons (TRUE - buttons disabled).
  73.         BOOL  PReg;                     //              √                     YES                                     Current reduction regime (TRUE - regime is on).
  74.         BOOL  ResetD;           //              √                     YES                                     Turn power off and make a whole step (TRUE - apply).
  75.         BOOL  EMReset;          //              √                     √                                     Quick power off.
  76.         BOOL  Tr1T;                     //              √                     YES                                     Trailer 1 TRUE state (TRUE : +3/+5б; FALSE : 0б).
  77.         BOOL  Tr2T;                     //              √                     YES                                     Trailer 2 TRUE state (TRUE : +3/+5б; FALSE : 0б).
  78.         BOOL  RotTrT;           //              √                     YES                                     Rotary Transducer TRUE state (TRUE : +3/+5б; FALSE : 0б).
  79.         BOOL  TrSwap;           //              √                     YES                                     If TRUE, Trailers are treated to be swapped.
  80.         BOOL  Tr1En;            //              √                     YES                                     If TRUE Trailer 1 Operation Enabled.
  81.         BOOL  Tr2En;            //              √                     YES                                     If TRUE Trailer 2 Operation Enabled.
  82.         BOOL  RotTeEn;          //              √                     YES                                     If TRUE Rotary Transducer Operation Enabled.
  83.         BOOL  RotTrOp;          //              √                     YES                                     Rotary Transducer Operation Select (stop on error if TRUE).
  84.         BOOL  Butt1T;           //              √                     YES                                     Button 1 TRUE state (TRUE : +3/+5б; FALSE : 0б).
  85.         BOOL  Butt2T;           //              √                     YES                                     Button 2 TRUE state (TRUE : +3/+5б; FALSE : 0б).
  86.         BOOL  ResetRT;          //              YES                     √                                     Reset Rotary Transducer Check Positions (need one full revolution before it can detect error).
  87.         BOOL  SyncOUTEn;        //              √                     YES                                     If TRUE output synchronization enabled.
  88.         BOOL  SyncOUTR;         //              YES                     √                                     If TRUE output synchronization counter will be reset.
  89.         BOOL  SyncINOp;         //              √                     YES                                     Synchronization input mode:
  90.                                                 //                                                                              TRUE - Step motor will move one time to the DestPos
  91.                                                 //                                                                              FALSE - Step motor will move multiple times by DestPos microsteps as distance.
  92.         DWORD SyncCount;        //              √                     YES                                     Number of steps after which synchronization output signal occurs.
  93.         BOOL  SyncInvert;       //              √                     YES                                     Set this bit to TRUE to invert output synchronization polarity.
  94.         BOOL  EncoderEn;        //              √                     YES                                     Enable Encoder on pins {SYNCIN,ROTTR} - disables Synchronization input and Rotary Transducer.
  95.         BOOL  EncoderInv;       //              √                     YES                                     Invert Encoder Counter Direction.
  96.         BOOL  ResBEnc;          //              YES                     √                                     Reset <EncoderPos> and <ECurPos> to 0.
  97.         BOOL  ResEnc;           //              YES                     √                                     Reset <ECurPos> to <EncoderPos>.
  98. } USMC_Mode, * PUSMC_Mode, * LPUSMC_Mode;
  99.  
  100.  
  101. typedef struct  _USMC_State
  102. {
  103.         int CurPos;             // Current position (in 1/8 steps).
  104.         float Temp;             // Current temperature of the power driver.
  105.         BYTE SDivisor;  // Step is divided by this factor.
  106.         BOOL Loft;              // Indicates backlash status.
  107.         BOOL FullPower; // Full power if TRUE.
  108.         BOOL CW_CCW;    // Current direction of rotation (relatively to some direction √ dependent on step motor circuits connection and on its construction).
  109.         BOOL Power;             // If TRUE then Step Motor power is ON.
  110.         BOOL FullSpeed; // If TRUE then full speed. Valid in "Slow Start" mode only.
  111.         BOOL AReset;    // TRUE After Device reset, FALSE after "Set Position".
  112.         BOOL RUN;               // TRUE if step motor is rotating.
  113.         BOOL SyncIN;    // Logical state directly from input synchronization PIN (pulses treated as positive).
  114.         BOOL SyncOUT;   // Logical state directly from output synchronization PIN (pulses are positive).
  115.         BOOL RotTr;             // Indicates current rotary transducer logical press state.
  116.         BOOL RotTrErr;  // Indicates rotary transducer error flag (reset by USMC_SetMode function with ResetRT bit √ TRUE).
  117.         BOOL EmReset;   // Indicates state of emergency disable button (TRUE √ Step motor power off).
  118.         BOOL Trailer1;  // Indicates trailer 1 logical press state.
  119.         BOOL Trailer2;  // Indicates trailer 2 logical press state.
  120.         float Voltage;  // Input power source voltage (6-39V) -= 24 version 0nly=-.
  121. } USMC_State, * PUSMC_State, * LPUSMC_State;
  122.  
  123.  
  124. typedef struct  _USMC_EncoderState
  125. {
  126.         int EncoderPos; // Current position measured by encoder.
  127.         int ECurPos;    // Current position (in Encoder Steps) - Synchronized with request call.
  128. } USMC_EncoderState, * PUSMC_EncoderState, * LPUSMC_EncoderState;
  129.  
  130.  
  131. typedef USMC_Devices const * PCUSMC_Devices;
  132. typedef USMC_Devices const * LPCUSMC_Devices;
  133. typedef USMC_Parameters const * PCUSMC_Parameters;
  134. typedef USMC_Parameters const * LPCUSMC_Parameters;
  135. typedef USMC_StartParameters const * PCUSMC_StartParameters;
  136. typedef USMC_StartParameters const * LPCUSMC_StartParameters;
  137. typedef USMC_Mode const * PCUSMC_Mode;
  138. typedef USMC_Mode const * LPCUSMC_Mode;
  139. typedef USMC_State const * PCUSMC_State;
  140. typedef USMC_State const * LPCUSMC_State;
  141. typedef USMC_EncoderState const * PCUSMC_EncoderState;
  142. typedef USMC_EncoderState const * LPCUSMC_EncoderState;
  143.  
  144.  
  145. DWORD USMC_Init ( USMC_Devices * Str );
  146. DWORD USMC_GetState ( DWORD Device, USMC_State * Str );
  147. DWORD USMC_SaveParametersToFlash ( DWORD Device );
  148. DWORD USMC_GetMode ( DWORD Device, USMC_Mode * Str );
  149. DWORD USMC_SetMode ( DWORD Device, USMC_Mode * Str );
  150. DWORD USMC_GetParameters ( DWORD Device, USMC_Parameters * Str );
  151. DWORD USMC_SetParameters ( DWORD Device, USMC_Parameters * Str );
  152. DWORD USMC_GetStartParameters ( DWORD Device, USMC_StartParameters * Str );
  153. DWORD USMC_Start ( DWORD Device, int DestPos,
  154.                                    float * Speed,
  155.                                    USMC_StartParameters * Str );
  156. DWORD USMC_Stop ( DWORD Device );
  157. DWORD USMC_SetCurrentPosition ( DWORD Device, int Position );
  158. DWORD USMC_GetEncoderState ( DWORD Device, USMC_EncoderState * Str );
  159. void  USMC_GetLastErr ( char * str, ssize_t len );
  160. DWORD USMC_Close ( void );
  161. #endif  // _USMCDLL_H
  162.