Subversion Repositories f9daq

Rev

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