Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

  1. //      USMCDLL.h       - header file with declorations of USMCDLL.dll functions and used structures
  2. //      -SD
  3. //  Note::C++
  4. //  Use functions with reference arguments as in sample
  5. //  Note.C
  6. //      Use functions with address of operator in invoke expression: func(var1, &struct);
  7. //      (For Rev. 24) Will work correctly with firmware version 24.03 or better
  8.  
  9. #pragma once
  10.  
  11. #include <windows.h>
  12.  
  13. // Please use the USMCDLL.lib to easely import functions from dll with "dllimport" (In Microsoft Visual Studio)
  14. #ifdef USMCDLL_EXPORTS
  15. #define USMCDLL_API __declspec(dllexport)
  16. #else
  17. #define USMCDLL_API __declspec(dllimport)
  18. #endif
  19.  
  20. // Structure representing connected devices
  21. typedef struct USMC_Devices_st{
  22.         DWORD NOD;                      // Number of the devices ready to work
  23.  
  24.         char **Serial;          // Array of 16 byte ASCII strings
  25.         char **Version;         // Array of 4 byte ASCII strings
  26. } USMC_Devices;                 // Structure representing connected devices
  27.  
  28. // Structure representing some of divice parameters
  29. typedef struct USMC_Parameters_st{
  30.     float AccelT;               // Acceleration time (in ms)
  31.     float DecelT;               // Deceleration time (in ms)
  32.     float PTimeout;             // Time (in ms) after which current will be reduced to 60% of normal
  33.     float BTimeout1;    // Time (in ms) after which speed of step motor rotation will be equal to the one specified at
  34.                                                 // BTO1P field (see below). (This parameter is used when controlling step motor using buttons)
  35.     float BTimeout2;    //
  36.     float BTimeout3;    //
  37.     float BTimeout4;    //
  38.     float BTimeoutR;    // Time (in ms) after which reset command will be performed
  39.     float BTimeoutD;    // This field is reserved for future use
  40.     float MinP;                 // Speed (steps/sec) while performing reset operation. (This parameter is used when controlling
  41.                                                 // step motor using buttons)
  42.     float BTO1P;                // Speed (steps/sec) after BTIMEOUT 1 time have passed. (This parameter is used when controlling
  43.                                                 // step motor using buttons)
  44.     float BTO2P;                //
  45.     float BTO3P;                //
  46.     float BTO4P;                //
  47.     WORD MaxLoft;               // Value in full steps that will be used performing backlash operation
  48.     DWORD StartPos;             // Current Position Saved to FLASH (see Test MicroSMC.cpp)
  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 (Celsius)
  52.         BYTE SynOUTP;           // Duration of the output synchronization pulse
  53.         float LoftPeriod;       // Speed of the last phase of the backlash operation.
  54.         float EncMult;          // Should be <Encoder Steps per Evolution> / <SM Steps per Evolution> and should be integer multiplied by 0.25
  55.  
  56.         BYTE Reserved[16];      // <Unused> File padding
  57.  
  58. } USMC_Parameters;
  59.  
  60. // Structure representing start function parameters
  61. typedef struct USMC_StartParameters_st{
  62.         BYTE SDivisor;          // Step is divided by this factor (1,2,4,8)
  63.         BOOL DefDir;            // Direction for backlash operation (relative)
  64.     BOOL LoftEn;                // Enable automatic backlash operation (works if slow start/stop mode is off)
  65.         BOOL SlStart;           // If TRUE slow start/stop mode enabled.
  66.         BOOL WSyncIN;           // If TRUE controller will wait for input synchronization signal to start
  67.         BOOL SyncOUTR;          // If TRUE output synchronization counter will be reset
  68.         BOOL ForceLoft;         // If TRUE and destination position is equal to the current position backlash operation will be performed.
  69.         BYTE Reserved[4];       // <Unused> File padding
  70. } USMC_StartParameters;
  71.  
  72. // Structure representing some of divice parameters
  73. typedef struct USMC_Mode_st{
  74.     BOOL PMode;                 // Turn off buttons (TRUE - buttons disabled)
  75.     BOOL PReg;                  // Current reduction regime (TRUE - regime is on)
  76.     BOOL ResetD;                // Turn power off and make a whole step (TRUE - apply)
  77.     BOOL EMReset;               // Quick power off
  78.     BOOL Tr1T;                  // Trailer 1 TRUE state (TRUE : +3/+5Â; FALSE : 0Â)
  79.     BOOL Tr2T;                  // Trailer 2 TRUE state (TRUE : +3/+5Â; FALSE : 0Â)
  80.     BOOL RotTrT;                // Rotary Transducer TRUE state (TRUE : +3/+5Â; FALSE : 0Â)
  81.     BOOL TrSwap;                // If TRUE, Trailers are treated to be swapped
  82.     BOOL Tr1En;                 // If TRUE Trailer 1 Operation Enabled
  83.     BOOL Tr2En;                 // If TRUE Trailer 2 Operation Enabled
  84.     BOOL RotTeEn;               // If TRUE Rotary Transducer Operation Enabled
  85.     BOOL RotTrOp;               // Rotary Transducer Operation Select (stop on error for TRUE)
  86.     BOOL Butt1T;                // Button 1 TRUE state (TRUE : +3/+5Â; FALSE : 0Â)
  87.     BOOL Butt2T;                // Button 2 TRUE state (TRUE : +3/+5Â; FALSE : 0Â)
  88.     BOOL ResetRT;               // Reset Rotary Transducer Check Positions (need one full revolution before it can detect error)
  89.     BOOL SyncOUTEn;             // If TRUE output syncronization enabled
  90.     BOOL SyncOUTR;              // If TRUE output synchronization counter will be reset
  91.     BOOL SyncINOp;              // Synchronization input mode:
  92.                                                 // True - Step motor will move one time to the destination position
  93.                                                 // False - Step motor will move multiple times by steps equal to the value destination position
  94.         DWORD SyncCount;        // Number of steps after which synchronization output sygnal occures
  95.         BOOL SyncInvert;        // Set to TRUE to invert output synchronization signal
  96.  
  97.         BOOL EncoderEn;         // Enable Encoder on pins {SYNCIN,ROTTR} - disables Synchronization input and Rotary Transducer
  98.         BOOL EncoderInv;        // Invert Encoder Counter Direction
  99.         BOOL ResBEnc;           // Reset <Encoder Position> and <SM Position in Encoder units> to 0
  100.         BOOL ResEnc;            // Reset <SM Position in Encoder units> to <Encoder Position>
  101.  
  102.         BYTE Reserved[8];       // <Unused> File padding
  103.  
  104. } USMC_Mode;
  105.  
  106. // Structure representing divice state
  107. typedef struct USMC_State_st{
  108.         int CurPos;                     // Current position (in microsteps)
  109.         float Temp;                     // Current temperature of the driver
  110.         BYTE SDivisor;          // Step is divided by this factor
  111.         BOOL Loft;                      // Indicates backlash status
  112.         BOOL FullPower;         // If TRUE then full power.
  113.         BOOL CW_CCW;            // Current direction. Relatively!
  114.         BOOL Power;                     // If TRUE then Step Motor is ON.
  115.         BOOL FullSpeed;         // If TRUE then full speed. Valid in "Slow Start" mode only.
  116.         BOOL AReset;            // TRUE After Device reset, FALSE after "Set Position".
  117.         BOOL RUN;                       // Indicates if step motor is rotating
  118.         BOOL SyncIN;            // Logical state directly from input synchronization PIN
  119.         BOOL SyncOUT;           // Logical state directly from output synchronization PIN
  120.         BOOL RotTr;                     // Indicates current rotary transducer press state
  121.         BOOL RotTrErr;          // Indicates rotary transducer error flag
  122.         BOOL EmReset;           // Indicates state of emergency disable button (local control)
  123.         BOOL Trailer1;          // Indicates trailer 1 logical state.
  124.         BOOL Trailer2;          // Indicates trailer 2 logical state.
  125.         float Voltage;          // Input power source voltage (6-39V) -=24 version 0nly=-
  126.  
  127.         BYTE Reserved[8];       // <Unused> File padding
  128. } USMC_State;
  129.  
  130. // New For Firmware Version 2.4.1.0 (0x2410)
  131. typedef struct USMC_EncoderState_st{
  132.         int EncoderPos;         // Current position measured by encoder
  133.         int ECurPos;            // Current position (in Encoder Steps) - Synchronized with request call
  134.  
  135.         BYTE Reserved[8];       // <Unused> File padding
  136. } USMC_EncoderState;
  137.  
  138. // ~New For Firmware Version 2.4.1.0 (0x2410)
  139.  
  140. typedef struct USMC_Info_st{
  141.         char serial[17];
  142.         DWORD dwVersion;    
  143.     char DevName[32];
  144.         int CurPos, DestPos;
  145.         float Speed;
  146.         BOOL ErrState;
  147.  
  148.         BYTE Reserved[16];      // <Unused> File padding
  149. } USMC_Info;
  150.  
  151.  
  152. #ifdef __cplusplus      // C++
  153. extern "C" {
  154. //
  155. //       The USMC_Init function initializes driver and returns devices information
  156. //
  157. USMCDLL_API DWORD USMC_Init( USMC_Devices &Str);                // OUT - Array of structures describing all divices (may be NULL) MUST NOT be deleted
  158.  
  159. //
  160. //      The USMC_GetState function returns structure representing current state of device
  161. //
  162. USMCDLL_API DWORD USMC_GetState( DWORD Device,                          // IN - Device number
  163.                                                                  USMC_State &Str                        // OUT - Structure representing divice state
  164.                                                                  );
  165. //
  166. //      The USMC_SaveParametersToFlash function saves current parameters of controller in static memory
  167. //      so thay can be loaded at start up time
  168. //
  169. USMCDLL_API DWORD USMC_SaveParametersToFlash( DWORD Device      // IN - Device number
  170.                                                                                          );
  171. //
  172. //      The USMC_SetCurrentPosition function sets current position of controller
  173. //
  174. USMCDLL_API DWORD USMC_SetCurrentPosition( DWORD Device,        // IN - Device number
  175.                                                                                    int Position         // IN - New position
  176.                                                                                    );
  177. //
  178. //      The USMC_GetMode function returns USMC_Mode structure last sent to device
  179. //
  180. USMCDLL_API DWORD USMC_GetMode( DWORD Device,                           // IN - Device number
  181.                                                             USMC_Mode &Str                              // OUT - Structure representing some of divice parameters
  182.                                                                 );
  183. //
  184. //      The USMC_SetMode function sets some of device parameters
  185. //
  186. USMCDLL_API DWORD USMC_SetMode( DWORD Device,                           // IN - Device number
  187.                                                             USMC_Mode &Str                              // IN/OUT Structure representing some of divice parameters
  188.                                                                 );
  189. //
  190. //      The USMC_GetParameters function returns USMC_Parameters structure last sent to device
  191. //
  192. USMCDLL_API DWORD USMC_GetParameters( DWORD Device,                     // IN - Device number
  193.                                                                           USMC_Parameters &Str  // OUT - Structure representing some of divice parameters
  194.                                                                           );
  195. //
  196. //      The USMC_SetParameters function sets some of divice parameters
  197. //
  198. USMCDLL_API DWORD USMC_SetParameters( DWORD Device,                     // IN - Device number
  199.                                                                           USMC_Parameters &Str  // IN/OUT Structure representing some of divice parameters
  200.                                                                           );
  201. //
  202. //      The USMC_GetStartParameters function returns USMC_StartParameters structure last sent to device
  203. //
  204. USMCDLL_API DWORD USMC_GetStartParameters( DWORD Device,        // IN - Device number
  205.                                                                                    USMC_StartParameters &Str    // OUT - Structure representing start function parameters
  206.                                                                                    );
  207. //
  208. //      The USMC_Start function sets start parameters and starts motion
  209. //
  210. USMCDLL_API DWORD USMC_Start( DWORD Device,                                     // IN - Device number
  211.                                                           int DestPos,                                  // IN - Destination position
  212.                                                           float &Speed,                                 // IN/OUT - Speed of rotation
  213.                                                           USMC_StartParameters &Str             // IN/OUT - Structure representing start function parameters
  214.                                                           );
  215. //
  216. //      The USMC_Stop function stops device
  217. //
  218. USMCDLL_API DWORD USMC_Stop( DWORD Device                                       // IN - Device number
  219.                                                          );
  220. //
  221. //      The USMC_GetLastErr function return string representing last error
  222. //
  223. USMCDLL_API void USMC_GetLastErr( char *str,                            // OUT - String buffer
  224.                                                                   size_t len                            // IN - Lenght of that string buffer in bytes
  225.                                                                   );
  226.  
  227. //
  228. //      The USMC_GetDllVersion function returnes version values of USMCDLL.dll
  229. //
  230. USMCDLL_API void USMC_GetDllVersion( DWORD &dwHighVersion,      // OUT - High Version Value
  231.                                                                          DWORD &dwLowVersion);  // OUT - Low Version Value
  232.  
  233. //
  234. //      The USMC_Close function closes virtual driver window "microsmc.exe"
  235. //
  236. USMCDLL_API DWORD USMC_Close( void );
  237.  
  238. //
  239. //      The USMC_RestoreCurPos function checks AReset bit and if it is TRUE
  240. //  restores previous CurPos value
  241. //
  242. USMCDLL_API DWORD USMC_RestoreCurPos(DWORD Device                                       // IN - Device number
  243.                                                                          );
  244.  
  245. // New For Firmware Version 2.4.1.0 (0x2410)
  246.  
  247. //
  248. //      The USMC_GetEncoderState function returns structure representing current position of encoder
  249. //
  250. USMCDLL_API DWORD USMC_GetEncoderState( DWORD Device,                   // IN - Device number
  251.                                                                                 USMC_EncoderState &Str  // IN/OUT Structure containing encoder state
  252.                                                                                 );
  253.  
  254. // ~New For Firmware Version 2.4.1.0 (0x2410)
  255.  
  256. }       // extern "C"
  257. #else   // C
  258. DWORD USMC_Init( USMC_Devices *Str );
  259. DWORD USMC_GetState( DWORD Device, USMC_State *Str );
  260. DWORD USMC_SaveParametersToFlash( DWORD Device );
  261. DWORD USMC_SetCurrentPosition( DWORD Device, int Position );
  262. DWORD USMC_GetMode( DWORD Device, USMC_Mode *Str );
  263. DWORD USMC_SetMode( DWORD Device, USMC_Mode *Str );
  264. DWORD USMC_GetParameters( DWORD Device, USMC_Parameters *Str );
  265. DWORD USMC_SetParameters( DWORD Device, USMC_Parameters *Str );
  266. DWORD USMC_GetStartParameters( DWORD Device, USMC_StartParameters *Str );
  267. DWORD USMC_Start( DWORD Device, int DestPos, float *Speed, USMC_StartParameters *Str);
  268. DWORD USMC_Stop( DWORD Device );
  269. void  USMC_GetLastErr( char *str, size_t len );
  270. DWORD USMC_Close( void );
  271. DWORD USMC_GetEncoderState( DWORD Device, USMC_EncoderState *Str);
  272. #endif  // C/C++
  273.  
  274.