Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 335 | f9daq | 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 |