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