Go to most recent revision | Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 8 | 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 |