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