/cvi/instr/uSMC/8SMC1-USBhF User Manual.pdf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/cvi/instr/uSMC/USMCDLL.h |
---|
0,0 → 1,273 |
// USMCDLL.h - header file with declorations of USMCDLL.dll functions and used structures |
// -SD |
// Note::C++ |
// Use functions with reference arguments as in sample |
// Note.C |
// Use functions with address of operator in invoke expression: func(var1, &struct); |
// (For Rev. 24) Will work correctly with firmware version 24.03 or better |
#pragma once |
#include <windows.h> |
// Please use the USMCDLL.lib to easely import functions from dll with "dllimport" (In Microsoft Visual Studio) |
#ifdef USMCDLL_EXPORTS |
#define USMCDLL_API __declspec(dllexport) |
#else |
#define USMCDLL_API __declspec(dllimport) |
#endif |
// Structure representing connected devices |
typedef struct USMC_Devices_st{ |
DWORD NOD; // Number of the devices ready to work |
char **Serial; // Array of 16 byte ASCII strings |
char **Version; // Array of 4 byte ASCII strings |
} USMC_Devices; // Structure representing connected devices |
// Structure representing some of divice parameters |
typedef struct USMC_Parameters_st{ |
float AccelT; // Acceleration time (in ms) |
float DecelT; // Deceleration time (in ms) |
float PTimeout; // Time (in ms) after which current will be reduced to 60% of normal |
float BTimeout1; // Time (in ms) after which speed of step motor rotation will be equal to the one specified at |
// BTO1P field (see below). (This parameter is used when controlling step motor using buttons) |
float BTimeout2; // |
float BTimeout3; // |
float BTimeout4; // |
float BTimeoutR; // Time (in ms) after which reset command will be performed |
float BTimeoutD; // This field is reserved for future use |
float MinP; // Speed (steps/sec) while performing reset operation. (This parameter is used when controlling |
// step motor using buttons) |
float BTO1P; // Speed (steps/sec) after BTIMEOUT 1 time have passed. (This parameter is used when controlling |
// step motor using buttons) |
float BTO2P; // |
float BTO3P; // |
float BTO4P; // |
WORD MaxLoft; // Value in full steps that will be used performing backlash operation |
DWORD StartPos; // Current Position Saved to FLASH (see Test MicroSMC.cpp) |
WORD RTDelta; // Revolution distance number of full steps per one full revolution |
WORD RTMinError; // Number of full steps missed to raise the error flag |
float MaxTemp; // Maximum allowed temperature (Celsius) |
BYTE SynOUTP; // Duration of the output synchronization pulse |
float LoftPeriod; // Speed of the last phase of the backlash operation. |
float EncMult; // Should be <Encoder Steps per Evolution> / <SM Steps per Evolution> and should be integer multiplied by 0.25 |
BYTE Reserved[16]; // <Unused> File padding |
} USMC_Parameters; |
// Structure representing start function parameters |
typedef struct USMC_StartParameters_st{ |
BYTE SDivisor; // Step is divided by this factor (1,2,4,8) |
BOOL DefDir; // Direction for backlash operation (relative) |
BOOL LoftEn; // Enable automatic backlash operation (works if slow start/stop mode is off) |
BOOL SlStart; // If TRUE slow start/stop mode enabled. |
BOOL WSyncIN; // If TRUE controller will wait for input synchronization signal to start |
BOOL SyncOUTR; // If TRUE output synchronization counter will be reset |
BOOL ForceLoft; // If TRUE and destination position is equal to the current position backlash operation will be performed. |
BYTE Reserved[4]; // <Unused> File padding |
} USMC_StartParameters; |
// Structure representing some of divice parameters |
typedef struct USMC_Mode_st{ |
BOOL PMode; // Turn off buttons (TRUE - buttons disabled) |
BOOL PReg; // Current reduction regime (TRUE - regime is on) |
BOOL ResetD; // Turn power off and make a whole step (TRUE - apply) |
BOOL EMReset; // Quick power off |
BOOL Tr1T; // Trailer 1 TRUE state (TRUE : +3/+5Â; FALSE : 0Â) |
BOOL Tr2T; // Trailer 2 TRUE state (TRUE : +3/+5Â; FALSE : 0Â) |
BOOL RotTrT; // Rotary Transducer TRUE state (TRUE : +3/+5Â; FALSE : 0Â) |
BOOL TrSwap; // If TRUE, Trailers are treated to be swapped |
BOOL Tr1En; // If TRUE Trailer 1 Operation Enabled |
BOOL Tr2En; // If TRUE Trailer 2 Operation Enabled |
BOOL RotTeEn; // If TRUE Rotary Transducer Operation Enabled |
BOOL RotTrOp; // Rotary Transducer Operation Select (stop on error for TRUE) |
BOOL Butt1T; // Button 1 TRUE state (TRUE : +3/+5Â; FALSE : 0Â) |
BOOL Butt2T; // Button 2 TRUE state (TRUE : +3/+5Â; FALSE : 0Â) |
BOOL ResetRT; // Reset Rotary Transducer Check Positions (need one full revolution before it can detect error) |
BOOL SyncOUTEn; // If TRUE output syncronization enabled |
BOOL SyncOUTR; // If TRUE output synchronization counter will be reset |
BOOL SyncINOp; // Synchronization input mode: |
// True - Step motor will move one time to the destination position |
// False - Step motor will move multiple times by steps equal to the value destination position |
DWORD SyncCount; // Number of steps after which synchronization output sygnal occures |
BOOL SyncInvert; // Set to TRUE to invert output synchronization signal |
BOOL EncoderEn; // Enable Encoder on pins {SYNCIN,ROTTR} - disables Synchronization input and Rotary Transducer |
BOOL EncoderInv; // Invert Encoder Counter Direction |
BOOL ResBEnc; // Reset <Encoder Position> and <SM Position in Encoder units> to 0 |
BOOL ResEnc; // Reset <SM Position in Encoder units> to <Encoder Position> |
BYTE Reserved[8]; // <Unused> File padding |
} USMC_Mode; |
// Structure representing divice state |
typedef struct USMC_State_st{ |
int CurPos; // Current position (in microsteps) |
float Temp; // Current temperature of the driver |
BYTE SDivisor; // Step is divided by this factor |
BOOL Loft; // Indicates backlash status |
BOOL FullPower; // If TRUE then full power. |
BOOL CW_CCW; // Current direction. Relatively! |
BOOL Power; // If TRUE then Step Motor is ON. |
BOOL FullSpeed; // If TRUE then full speed. Valid in "Slow Start" mode only. |
BOOL AReset; // TRUE After Device reset, FALSE after "Set Position". |
BOOL RUN; // Indicates if step motor is rotating |
BOOL SyncIN; // Logical state directly from input synchronization PIN |
BOOL SyncOUT; // Logical state directly from output synchronization PIN |
BOOL RotTr; // Indicates current rotary transducer press state |
BOOL RotTrErr; // Indicates rotary transducer error flag |
BOOL EmReset; // Indicates state of emergency disable button (local control) |
BOOL Trailer1; // Indicates trailer 1 logical state. |
BOOL Trailer2; // Indicates trailer 2 logical state. |
float Voltage; // Input power source voltage (6-39V) -=24 version 0nly=- |
BYTE Reserved[8]; // <Unused> File padding |
} USMC_State; |
// New For Firmware Version 2.4.1.0 (0x2410) |
typedef struct USMC_EncoderState_st{ |
int EncoderPos; // Current position measured by encoder |
int ECurPos; // Current position (in Encoder Steps) - Synchronized with request call |
BYTE Reserved[8]; // <Unused> File padding |
} USMC_EncoderState; |
// ~New For Firmware Version 2.4.1.0 (0x2410) |
typedef struct USMC_Info_st{ |
char serial[17]; |
DWORD dwVersion; |
char DevName[32]; |
int CurPos, DestPos; |
float Speed; |
BOOL ErrState; |
BYTE Reserved[16]; // <Unused> File padding |
} USMC_Info; |
#ifdef __cplusplus // C++ |
extern "C" { |
// |
// The USMC_Init function initializes driver and returns devices information |
// |
USMCDLL_API DWORD USMC_Init( USMC_Devices &Str); // OUT - Array of structures describing all divices (may be NULL) MUST NOT be deleted |
// |
// The USMC_GetState function returns structure representing current state of device |
// |
USMCDLL_API DWORD USMC_GetState( DWORD Device, // IN - Device number |
USMC_State &Str // OUT - Structure representing divice state |
); |
// |
// The USMC_SaveParametersToFlash function saves current parameters of controller in static memory |
// so thay can be loaded at start up time |
// |
USMCDLL_API DWORD USMC_SaveParametersToFlash( DWORD Device // IN - Device number |
); |
// |
// The USMC_SetCurrentPosition function sets current position of controller |
// |
USMCDLL_API DWORD USMC_SetCurrentPosition( DWORD Device, // IN - Device number |
int Position // IN - New position |
); |
// |
// The USMC_GetMode function returns USMC_Mode structure last sent to device |
// |
USMCDLL_API DWORD USMC_GetMode( DWORD Device, // IN - Device number |
USMC_Mode &Str // OUT - Structure representing some of divice parameters |
); |
// |
// The USMC_SetMode function sets some of device parameters |
// |
USMCDLL_API DWORD USMC_SetMode( DWORD Device, // IN - Device number |
USMC_Mode &Str // IN/OUT Structure representing some of divice parameters |
); |
// |
// The USMC_GetParameters function returns USMC_Parameters structure last sent to device |
// |
USMCDLL_API DWORD USMC_GetParameters( DWORD Device, // IN - Device number |
USMC_Parameters &Str // OUT - Structure representing some of divice parameters |
); |
// |
// The USMC_SetParameters function sets some of divice parameters |
// |
USMCDLL_API DWORD USMC_SetParameters( DWORD Device, // IN - Device number |
USMC_Parameters &Str // IN/OUT Structure representing some of divice parameters |
); |
// |
// The USMC_GetStartParameters function returns USMC_StartParameters structure last sent to device |
// |
USMCDLL_API DWORD USMC_GetStartParameters( DWORD Device, // IN - Device number |
USMC_StartParameters &Str // OUT - Structure representing start function parameters |
); |
// |
// The USMC_Start function sets start parameters and starts motion |
// |
USMCDLL_API DWORD USMC_Start( DWORD Device, // IN - Device number |
int DestPos, // IN - Destination position |
float &Speed, // IN/OUT - Speed of rotation |
USMC_StartParameters &Str // IN/OUT - Structure representing start function parameters |
); |
// |
// The USMC_Stop function stops device |
// |
USMCDLL_API DWORD USMC_Stop( DWORD Device // IN - Device number |
); |
// |
// The USMC_GetLastErr function return string representing last error |
// |
USMCDLL_API void USMC_GetLastErr( char *str, // OUT - String buffer |
size_t len // IN - Lenght of that string buffer in bytes |
); |
// |
// The USMC_GetDllVersion function returnes version values of USMCDLL.dll |
// |
USMCDLL_API void USMC_GetDllVersion( DWORD &dwHighVersion, // OUT - High Version Value |
DWORD &dwLowVersion); // OUT - Low Version Value |
// |
// The USMC_Close function closes virtual driver window "microsmc.exe" |
// |
USMCDLL_API DWORD USMC_Close( void ); |
// |
// The USMC_RestoreCurPos function checks AReset bit and if it is TRUE |
// restores previous CurPos value |
// |
USMCDLL_API DWORD USMC_RestoreCurPos(DWORD Device // IN - Device number |
); |
// New For Firmware Version 2.4.1.0 (0x2410) |
// |
// The USMC_GetEncoderState function returns structure representing current position of encoder |
// |
USMCDLL_API DWORD USMC_GetEncoderState( DWORD Device, // IN - Device number |
USMC_EncoderState &Str // IN/OUT Structure containing encoder state |
); |
// ~New For Firmware Version 2.4.1.0 (0x2410) |
} // extern "C" |
#else // C |
DWORD USMC_Init( USMC_Devices *Str ); |
DWORD USMC_GetState( DWORD Device, USMC_State *Str ); |
DWORD USMC_SaveParametersToFlash( DWORD Device ); |
DWORD USMC_SetCurrentPosition( DWORD Device, int Position ); |
DWORD USMC_GetMode( DWORD Device, USMC_Mode *Str ); |
DWORD USMC_SetMode( DWORD Device, USMC_Mode *Str ); |
DWORD USMC_GetParameters( DWORD Device, USMC_Parameters *Str ); |
DWORD USMC_SetParameters( DWORD Device, USMC_Parameters *Str ); |
DWORD USMC_GetStartParameters( DWORD Device, USMC_StartParameters *Str ); |
DWORD USMC_Start( DWORD Device, int DestPos, float *Speed, USMC_StartParameters *Str); |
DWORD USMC_Stop( DWORD Device ); |
void USMC_GetLastErr( char *str, size_t len ); |
DWORD USMC_Close( void ); |
DWORD USMC_GetEncoderState( DWORD Device, USMC_EncoderState *Str); |
#endif // C/C++ |
/cvi/instr/uSMC/msvc/USMCDLL.lib |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/cvi/instr/uSMC/msvc64/USMCDLL.lib |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/cvi/instr/uSMC/uSMC.c |
---|
0,0 → 1,761 |
#include "uSMC.h" |
#ifdef uSMC_MAIN |
//# include "uSMC_ui.h" |
#endif /* uSMC_MAIN */ |
#include <stdlib.h> |
#include <stdio.h> |
#include <string.h> |
#ifndef _WINDOWS |
# include "libusmc.h" |
# include <getopt.h> |
# define Delay(x) usleep((int)(x*1000000)) |
#else |
# include "USMCDLL.H" |
# include <utility.h> |
# include <ansi_c.h> |
/* |
# define ERR(s, c) if(opterr) fprintf(stderr,"%s %c\n",s,c); |
int opterr = 1; |
int optind = 1; |
int optopt; |
char *optarg; |
int getopt(int argc, char **argv, char *opts){ |
static int sp = 1; |
int c; |
char *cp; |
if(sp == 1) |
if(optind >= argc || |
argv[optind][0] != '-' || argv[optind][1] == '\0') |
return(EOF); |
else if(strcmp(argv[optind], "--") == NULL) { |
optind++; |
return(EOF); |
} |
optopt = c = argv[optind][sp]; |
if(c == ':' || (cp=strchr(opts, c)) == NULL) { |
ERR(": illegal option -- ", c); |
if(argv[optind][++sp] == '\0') { |
optind++; |
sp = 1; |
} |
return('?'); |
} |
if(*++cp == ':') { |
if(argv[optind][sp+1] != '\0') |
optarg = &argv[optind++][sp+1]; |
else if(++optind >= argc) { |
ERR(": option requires an argument -- ", c); |
sp = 1; |
return('?'); |
} else |
optarg = argv[optind++]; |
sp = 1; |
} else { |
if(argv[optind][++sp] == '\0') { |
sp = 1; |
optind++; |
} |
optarg = NULL; |
} |
return(c); |
} |
*/ |
#endif /* _WINDOWS */ |
// Function that prints information about device state to console |
void PrintDState(USMC_State *State) { |
printf( "The state is:\n" ); |
printf( "- Current Position in microsteps - %d\n", State->CurPos ); |
printf( "- Temperature - %.2f\xf8\x43\n", State->Temp ); |
printf( "- Step Divisor - %d\n", State->SDivisor); |
printf( "- Loft State - %s\n", State->Loft?"Indefinite":"Fixed" ); |
printf( "- Power - %s\n", State->Power?(State->FullPower?"Full":"Half"):"Off" ); |
if(State->RUN) |
printf( "- Step Motor is Running in %s Direction %s\n", |
State->CW_CCW?"CCW":"CW", ((State->SDivisor==1) && State->FullSpeed)?"at Full Speed":"" ); |
else |
printf( "- Step Motor is Not Running\n" ); |
printf( "- Device %s\n", State->AReset?"is After Reset":"Position Already Set" ); |
printf( "- Input Synchronization Logical Pin State - %s\n", State->SyncIN?"TRUE":"FALSE" ); |
printf( "- Output Synchronization Logical Pin State - %s\n", State->SyncOUT?"TRUE":"FALSE" ); |
printf( "- Rotary Transducer Logical Pin State - %s\n", State->RotTr?"TRUE":"FALSE" ); |
printf( "- Rotary Transducer Error Flag - %s\n", State->RotTrErr?"Error":"Clear" ); |
printf( "- Emergency Disable Button - %s\n", State->EmReset?"Pushed":"Unpushed" ); |
printf( "- Trailer 1 Press State - %s\n", State->Trailer1?"Pushed":"Unpushed" ); |
printf( "- Trailer 2 Press State - %s\n", State->Trailer2?"Pushed":"Unpushed" ); |
if( State->Voltage == 0.0f ) |
printf( "- Input Voltage - Low\n"); |
else |
printf( "- Input Voltage - %.1fV\n", State->Voltage); |
} |
// Function that prints information about device start parameters to console |
void PrintDStartParameters(int DPos, float Speed, const USMC_StartParameters *SP ) { |
printf( "Destination position - %d\n", DPos); |
printf( "Speed - %.2ftacts/s\n", Speed ); |
printf( "Steps Divisor - %d\n", SP->SDivisor ); |
if(SP->SDivisor == 1) { |
printf( "Slow start/stop mode - %s\n", SP->SlStart?"Enabled":"Disabled" ); |
} else if(SP->LoftEn) { |
printf( "Automatic backlash operation - Enabled\n" ); |
printf( "Automatic backlash operation direction - %s\n", SP->DefDir?"CCW":"CW" ); |
printf( "Force automatic backlash operation - %s\n", SP->ForceLoft?"TRUE":"FALSE" ); |
} else { |
printf( "Automatic backlash operation - Disabled\n" ); |
} |
if(SP->WSyncIN) |
printf( "Controller will wait for input synchronization signal to start\n" ); |
else |
printf( "Input synchronization signal ignored \n" ); |
printf( "Output synchronization counter will %sbe reset\n", SP->SyncOUTR?"":"not " ); |
} |
// Function that prints information about device parameters to console |
void PrintDParameters(USMC_Parameters *Parameters) { |
printf( "The parameters are:\n" ); |
printf( "Full acceleration time - %.0f ms\n", (double) Parameters->AccelT ); |
printf( "Full deceleration time - %.0f ms\n", (double) Parameters->DecelT ); |
printf( "Power reduction timeout - %.0f ms\n", (double) Parameters->PTimeout ); |
printf( "Button speedup timeout 1 - %.0f ms\n", (double) Parameters->BTimeout1 ); |
printf( "Button speed after timeout 1 - %.2f steps/s\n", (double) Parameters->BTO1P ); |
printf( "Button speedup timeout 2 - %.0f ms\n", (double) Parameters->BTimeout2 ); |
printf( "Button speed after timeout 2 - %.2f steps/s\n", (double) Parameters->BTO2P ); |
printf( "Button speedup timeout 3 - %.0f ms\n", (double) Parameters->BTimeout3 ); |
printf( "Button speed after timeout 3 - %.2f steps/s\n", (double) Parameters->BTO3P ); |
printf( "Button speedup timeout 4 - %.0f ms\n", (double) Parameters->BTimeout4 ); |
printf( "Button speed after timeout 4 - %.2f steps/s\n", (double) Parameters->BTO4P ); |
printf( "Button reset timeout - %.0f ms\n", (double) Parameters->BTimeoutR ); |
printf( "Button reset operation speed - %.2f steps/s\n", (double) Parameters->MinP ); |
printf( "Backlash operation distance - %d steps\n", (int)Parameters->MaxLoft ); |
printf( "Revolution distance - %d steps\n", (int)Parameters->RTDelta ); |
printf( "Minimal revolution distance error - %d steps\n", (int)Parameters->RTMinError ); |
printf( "Power off temperature - %.2f\xf8\x43\n", (double)Parameters->MaxTemp ); |
printf( "Duration of the output synchronization pulse - "); |
if(Parameters->SynOUTP == 0) |
printf( "minimal\n"); |
else |
printf( "%.1f * [Tact Period]\n", Parameters->SynOUTP - 0.5); |
printf( "Speed of the last phase of the backlash operation - "); |
if(Parameters->LoftPeriod == 0.0f) |
printf( "normal\n" ); |
else |
printf( "%.2f steps/s\n", (double)Parameters->LoftPeriod ); |
printf( "<Angular Encoder Step> Equals <Angular Step Motor Step>/<%.2f>\n", Parameters->EncMult); |
} |
// Function that prints information about device "mode" parameters to console |
void PrintDMode(USMC_Mode *Mode) { |
printf( "Mode parameters:\n" ); |
printf( "Buttons - "); |
if(Mode->PMode) { |
printf( "Disabled\n" ); |
} else { |
printf( "Enabled\nButton 1 TRUE state - %s\n", Mode->Butt1T?"+3/+5 V":"0 V(GND)" ); |
printf( "Button 2 TRUE state - %s\n", Mode->Butt2T?"+3/+5 V":"0 V(GND)" ); |
} |
printf( "Current reduction regime - %s\n", Mode->PReg?"Used":"Not Used" ); |
if(Mode->ResetD) |
printf( "Power - %s\n", Mode->EMReset?"Emerjency Off":"Off" ); |
else |
printf( "Power - On\n" ); |
if(Mode->Tr1En || Mode->Tr2En) |
printf( "Trailers are - %s\n", Mode->TrSwap?"Swapped":"Direct" ); |
printf( "Trailer 1 - "); |
if(Mode->Tr1En) |
printf( "Enabled\nTrailer 1 TRUE state - %s\n", Mode->Tr1T?"+3/+5 V":"0 V(GND)" ); |
else |
printf( "Disabled\n"); |
printf( "Trailer 2 - "); |
if(Mode->Tr2En) |
printf( "Enabled\nTrailer 2 TRUE state - %s\n", Mode->Tr2T?"+3/+5 V":"0 V(GND)" ); |
else |
printf( "Disabled\n"); |
if(Mode->EncoderEn) { |
printf( "Encoder - Enabled\n"); |
printf( "Encoder Position Counter is %s\n", Mode->EncoderInv?"Inverted":"Direct"); |
printf( "Rotary Transducer and Input Syncronisation are\n" |
" Disabled Because of Encoder\n"); |
} else { |
printf( "Encoder - Disabled\n"); |
printf( "Rotary Transducer - "); |
if(Mode->RotTeEn) { |
printf( "Enabled\nRotary Transducer TRUE state - %s\n", Mode->RotTrT?"+3/+5 V":"0 V(GND)" ); |
printf( "Rotary Transducer Operation - %s\n", Mode->RotTrOp?"Stop on error":"Check and ignore error" ); |
printf( "Reset Rotary Transducer Check Positions - %s\n", Mode->ResetRT?"Initiated":"No, why?"); |
} else { |
printf("Disabled\n"); |
} |
printf("Synchronization input mode:\n"); |
if(Mode->SyncINOp) |
printf("Step motor will move one time to the destination position\n"); |
else |
printf("Step motor will move multiple times by [destination position]\n"); |
} |
printf( "Output Syncronization - "); |
if(Mode->SyncOUTEn) { |
printf( "Enabled\nReset Output Synchronization Counter - %s\n", Mode->SyncOUTR?"Initiated":"No, why?" ); |
printf( "Number of steps after which synchronization output sygnal occures - %u\n", Mode->SyncCount ); |
} else { |
printf("Disabled\n"); |
} |
printf("Synchronization Output is "); |
if(Mode->SyncInvert) |
printf("INVERTED\n"); |
else |
printf("NORMAL\n"); |
} |
// Function that prints Encoder state information |
void PrintEncState(USMC_EncoderState *EnState, USMC_Parameters *up) { |
/* |
|Type |Name |Description |
|--------|-----------|------------------------------------------------------------------------- |
|Int |EncoderPos |Current position measured by encoder |
|Int |ECurPos |Current position (in Encoder Steps) - Synchronized with request call |
|--------|-----------|------------------------------------------------------------------------- |
*/ |
printf( "The encoder state is:\n" ); |
printf( "- Current Position in microsteps - %.2f\n", EnState->ECurPos/up->EncMult ); |
printf( "- Encoder Position in microsteps - %.2f\n\n", EnState->EncoderPos/up->EncMult ); |
printf( "- Current Position in \"Half of Encoder Step\"s - %d\n", EnState->ECurPos ); |
printf( "- Encoder Position in \"Half of Encoder Step\"s - %d\n", EnState->EncoderPos ); |
} |
// Function that prints last error information |
void PrintError(void) { |
char er[101]; |
USMC_GetLastErr(er,100); |
er[100] = '\0'; |
printf("\n%s",er); |
} |
//////////////////////////////////////////////////////////////////////// |
static int ierr; |
static float Speed=15000.0f; |
#define MAXNODES 4 |
static USMC_Devices Devices; |
static USMC_StartParameters DStartPar[MAXNODES]; |
static USMC_Parameters DPar[MAXNODES]; |
static USMC_State DState[MAXNODES]; |
static USMC_EncoderState DEncState[MAXNODES]; |
static USMC_Mode DMode[MAXNODES]; |
#define ERRLEN 128 |
static char errstr[ERRLEN]; |
void uSMC_PrintDevices(void) { |
/* |
|Type |Name |Description |
|--------|-----------|------------------------------------------------------------------------- |
|DWORD |NOD |Number of devices connected to computer |
|char ** |Serial |Array of pointers to 16byte ASCII strings of length NOD |
|char ** |Version |Array of pointers to 4byte ASCII strings of length NOD |
|--------|-----------|------------------------------------------------------------------------- |
*/ |
int i; |
for (i=0; i<Devices.NOD; i++) { |
printf("Device - %d,\tSerial Number - %.16s,\tVersion - %.4s\n",i+1,Devices.Serial[i],Devices.Version[i]); |
} |
} |
int uSMC_SetParameters(int node, int stageType) { |
/* |
|Type |Name |Description |
|--------|-----------|------------------------------------------------------------------------- |
|float |AccelT |Acceleration time (in ms) |
|float |DecelT |Deceleration time (in ms) |
|float |PTimeout |Time (in ms) after which current will be reduced to 60% of normal |
|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 |
|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 |
|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 |
|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 |
|float |BTimeoutR |Time (in ms) after which reset command will be performed (see 5.4.7 at page 53) |
|float |BTimeoutD |This field is reserved for future use |
|float |MinP |Speed (steps/sec) while performing reset operation |
|float |BTO1P |Speed (steps/sec) after BTIMEOUT1 time has passed (see 5.4.8 at page 54) |
|float |BTO2P |Speed (steps/sec) after BTIMEOUT2 time has passed (see 5.4.8 at page 54) |
|float |BTO3P |Speed (steps/sec) after BTIMEOUT3 time has passed (see 5.4.8 at page 54) |
|float |BTO4P |Speed (steps/sec) after BTIMEOUT4 time has passed (see 5.4.8 at page 54) |
|WORD |MaxLoft |Value in full steps that will be used performing backlash operation |
|DWORD |StartPos |Current Position saved to FLASH. Refer to test.cpp for implementing this functionality. |
| | |Should be set to 0 for correct reloading of current position in SMCVieW program |
|WORD |RTDelta |Revolution distance number of full steps per one full revolution |
|WORD |RTMinError |Number of full steps missed to raise the error flag |
|float |MaxTemp |Maximum allowed temperature (centigrade degrees) |
|BYTE |SynOUTP |Duration of the output synchronization pulse ( see 5.4.13 at page 58) |
|float |LoftPeriod |Speed (steps/sec) of the last phase of the backlash operation |
|float |EncMult |Encoder step multiplier. Should be <Encoder Steps per Revolution> / <SM Steps per Revolution> |
| | |and should be integer multiplied by 0.25 |
|--------|-----------|------------------------------------------------------------------------- |
*/ |
int saveToFlash; |
int Dev; |
saveToFlash=0; |
Dev=node-1; |
if (ierr=USMC_GetParameters(Dev,&DPar[Dev])) return ierr; |
switch (stageType) { |
case -1: |
saveToFlash=1; |
// DPar[Dev].StartPos = 0; |
case 1: |
// Linear stage |
DPar[Dev].AccelT = 200.0f; |
DPar[Dev].DecelT = 200.0f; |
DPar[Dev].PTimeout = 1.0f; |
DPar[Dev].BTimeout1 = 500.0f; |
DPar[Dev].BTimeout2 = 500.0f; |
DPar[Dev].BTimeout3 = 500.0f; |
DPar[Dev].BTimeout4 = 500.0f; |
DPar[Dev].BTimeoutR = 500.0f; |
DPar[Dev].MinP = 60.0f; |
DPar[Dev].BTO1P = 10.0f; |
DPar[Dev].BTO2P = 20.0f; |
DPar[Dev].BTO3P = 30.0f; |
DPar[Dev].BTO4P = 60.0f; |
DPar[Dev].MaxLoft = 32; |
DPar[Dev].RTDelta = 200; |
DPar[Dev].RTMinError = 15; |
DPar[Dev].MaxTemp = 70.0f; |
DPar[Dev].SynOUTP = 1; |
DPar[Dev].LoftPeriod = 50.0f; |
DPar[Dev].EncMult = 1.0f; |
break; |
case -2: |
saveToFlash=1; |
case 2: |
// Rotation stage |
DPar[Dev].MaxTemp = 70.0f; |
DPar[Dev].AccelT = 200.0f; |
DPar[Dev].DecelT = 200.0f; |
DPar[Dev].BTimeout1 = 500.0f; |
DPar[Dev].BTimeout2 = 500.0f; |
DPar[Dev].BTimeout3 = 500.0f; |
DPar[Dev].BTimeout4 = 500.0f; |
DPar[Dev].BTO1P = 100.0f; |
DPar[Dev].BTO2P = 200.0f; |
DPar[Dev].BTO3P = 300.0f; |
DPar[Dev].BTO4P = 600.0f; |
DPar[Dev].MinP = 500.0f; |
DPar[Dev].BTimeoutR = 500.0f; |
DPar[Dev].LoftPeriod = 500.0f; |
DPar[Dev].RTDelta = 200; |
DPar[Dev].RTMinError = 15; |
DPar[Dev].EncMult = 2.5f; |
DPar[Dev].MaxLoft = 32; |
DPar[Dev].PTimeout = 100.0f; |
DPar[Dev].SynOUTP = 1; |
break; |
} |
if (ierr=USMC_SetParameters(Dev,&DPar[Dev])) return ierr; |
if (saveToFlash) { |
if(ierr=USMC_SaveParametersToFlash(Dev)) return ierr; |
PrintDParameters(&DPar[Dev]); |
printf("\nThese Parameters were Saved to Flash"); |
} |
return FALSE; |
} |
int uSMC_RevertStartPosition(int node) { |
int Dev; |
Dev=node-1; |
if (ierr=USMC_GetParameters(Dev,&DPar[Dev])) return ierr; |
DPar[Dev].StartPos = 0; |
if (ierr=USMC_SetParameters(Dev,&DPar[Dev])) return ierr; |
if(ierr=USMC_SaveParametersToFlash(Dev)) return ierr; |
printf("\nStart Position is Reset to 0\n"); |
return FALSE; |
} |
int _VI_FUNC uSMC_PowerOn (int node) { |
int Dev; |
Dev=node-1; |
if (ierr=USMC_GetMode(Dev,&DMode[Dev])) return ierr; |
DMode[Dev].ResetD = FALSE; |
if (ierr=USMC_SetMode(Dev,&DMode[Dev])) return ierr; |
return FALSE; |
} |
int uSMC_PowerOffSave(int node,int saveToFlash) { |
int Dev=node-1; |
if (saveToFlash) { |
if (ierr=USMC_GetParameters(Dev,&DPar[Dev])) return ierr; |
} |
if (ierr=USMC_GetMode(Dev,&DMode[Dev])) return ierr; |
DMode[Dev].ResetD = TRUE; |
if (ierr=USMC_SetMode(Dev,&DMode[Dev])) return ierr; |
do { |
Sleep(50); |
if (ierr=USMC_GetState(Dev,&DState[Dev])) return ierr; |
} while(DState[Dev].Power == TRUE); |
if (saveToFlash) { |
DPar[Dev].StartPos = DState[Dev].CurPos; |
if (ierr=USMC_SetParameters(Dev,&DPar[Dev])) return ierr; |
if (ierr=USMC_SaveParametersToFlash(Dev)) return ierr; |
} |
return FALSE; |
} |
int _VI_FUNC uSMC_PowerOff (int node) { |
if (ierr=uSMC_PowerOffSave(node,0)) return ierr; |
return FALSE; |
} |
int _VI_FUNC uSMC_Open (void) { |
int i; |
if (ierr=USMC_Init(&Devices)) return ierr; |
uSMC_PrintDevices(); |
return FALSE; |
} |
int _VI_FUNC uSMC_FindSerial (char serial[]) |
{ |
int i; |
for (i=0; i<Devices.NOD; i++) |
if (!strncmp (Devices.Serial[i], serial, 16)) return i; |
return -1; |
} |
int _VI_FUNC uSMC_Reset (int node) { |
return FALSE; |
} |
int _VI_FUNC uSMC_Init (int node, int type) { |
/* |
|Type |Name |Masked|Saved|Description |
|--------|-----------|------|-----|------------------------------------------------------------ |
|BOOL |PMode | |YES |Turn off buttons (TRUE - buttons disabled) |
|BOOL |PReg | |YES |Current reduction regime (TRUE - regime is on) |
|BOOL |ResetD | |YES |Turn power off and make a whole step (TRUE - apply) |
|BOOL |EMReset | | |Quick power off (see 5.4.6 at page 53) |
|BOOL |Tr1T | |YES |Limit switch 1 TRUE state (TRUE : +3/+5?; FALSE : 0?) |
|BOOL |Tr2T | |YES |Limit switch 2 TRUE state (TRUE : +3/+5?; FALSE : 0?) |
|BOOL |RotTrT | |YES |Rotary Transducer TRUE state (TRUE : +3/+5?; FALSE : 0?) |
|BOOL |TrSwap | |YES |If TRUE, Limit switches are treated to be swapped |
|BOOL |Tr1En | |YES |If TRUE Limit switch 1 Operation Enabled |
|BOOL |Tr2En | |YES |If TRUE Limit switch 2 Operation Enabled |
|BOOL |RotTeEn | |YES |If TRUE Rotary Transducer Operation Enabled |
|BOOL |RotTrOp | |YES |Rotary Transducer Operation Select (stop on error if TRUE) |
|BOOL |Butt1T | |YES |Button 1 TRUE state (TRUE : +3/+5?; FALSE : 0?) |
|BOOL |Butt2T | |YES |Button 2 TRUE state (TRUE : +3/+5?; FALSE : 0?) |
|BOOL |ResetRT |YES | |Reset Rotary Transducer Check Positions (need one full revolution |
| | | | |before it can detect error) |
|BOOL |SyncOUTEn | |YES |If TRUE output synchronization enabled |
|BOOL |SyncOUTR |YES | |If TRUE output synchronization counter will be reset |
|BOOL |SyncINOp | |YES |Synchronization input mode: |
| | | | |- TRUE - Step motor will move one time to the DestPos |
| | | | |- FALSE - Step motor will move multiple times by DestPos microsteps as distance |
|DWORD |SyncCount | |YES |Number of steps after which synchronization output signal occurs |
|BOOL |SyncInvert | |YES |Set this bit to TRUE to invert output synchronization polarity |
|BOOL |EncoderEn | |YES |Enable Encoder on pins {SYNCIN,ROTTR} - disables Synchronization input and Rotary Transducer |
|BOOL |EncoderInv | |YES |Invert Encoder Counter Direction BOOL ResBEnc YES Reset <EncoderPos> and <ECurPos> to 0 |
|BOOL |ResEnc |YES | |Reset <ECurPos> to <EncoderPos> |
|--------|-----------|------------------------------------------------------------------------- |
Masked > These Boolean values will be automatically cleared by USMC_GetMode (to FALSE) |
*/ |
int Dev; |
Dev=node-1; |
// if (ierr=uSMC_PowerOff(node)) return ierr; |
if (ierr=uSMC_SetParameters(node,type)) return ierr; |
switch (type) { |
case -1: |
case 1: |
if (ierr=USMC_GetMode(Dev,&DMode[Dev])) return ierr; |
DMode[Dev].Tr1T = FALSE; |
DMode[Dev].Tr2T = FALSE; |
DMode[Dev].Tr1En = TRUE; |
DMode[Dev].Tr2En = TRUE; |
DMode[Dev].TrSwap = FALSE; |
DMode[Dev].EncoderEn = FALSE; |
if (ierr=USMC_SetMode(Dev,&DMode[Dev])) return ierr; |
break; |
} |
if (ierr=uSMC_PowerOn(node)) return ierr; |
return FALSE; |
} |
int _VI_FUNC uSMC_ReferenceMove (int node) { |
int Dev; |
float tmpSpeed; |
Dev=node-1; |
tmpSpeed=Speed; |
if (ierr=USMC_GetMode(Dev,&DMode[Dev])) return ierr; |
DMode[Dev].Tr1T = FALSE; |
DMode[Dev].Tr2T = FALSE; |
DMode[Dev].Tr1En = TRUE; |
DMode[Dev].Tr2En = TRUE; |
DMode[Dev].TrSwap = FALSE; |
DMode[Dev].EncoderEn = FALSE; |
if (ierr=USMC_SetMode(Dev,&DMode[Dev])) return ierr; |
Speed=10000.0f; |
if (ierr=USMC_SetCurrentPosition(Dev,0)) return ierr; |
if (ierr=uSMC_MoveTo(node,-500000)) return ierr; |
if (ierr=uSMC_MoveFor(node,5000)) return ierr; |
Speed=500.0f; |
if (ierr=uSMC_MoveTo(node,-500000)) return ierr; |
Speed=tmpSpeed; |
if (ierr=uSMC_MoveFor(node,5000)) return ierr; |
if (ierr=USMC_SetCurrentPosition(Dev,0)) return ierr; |
return FALSE; |
} |
int _VI_FUNC uSMC_MoveFor (int node, int dist) { |
int CurPos; |
if (ierr=uSMC_GetPosition(node,&CurPos)) return ierr; |
if (ierr=uSMC_MoveTo(node,CurPos+dist)) return ierr; |
return FALSE; |
} |
int _VI_FUNC uSMC_MoveTo (int node, int dest) { |
/* |
|Type |Name |Description |
|--------|-----------|------------------------------------------------------------------------- |
|BYTE |SDivisor |Step is divided by this factor (1,2,4,8) |
|BOOL |DefDir |Direction for backlash operation (relative) (see 5.4.15 at page 60) |
|BOOL |LoftEn |Enable automatic backlash operation (works if slow start/stop mode is off) |
|BOOL |SlStart |If TRUE slow start/stop mode enabled |
|BOOL |WSyncIN |If TRUE controller will wait for input synchronization signal to start |
|BOOL |SyncOUTR |If TRUE output synchronization counter will be reset |
|BOOL |ForceLoft |If TRUE and destination position is equal to the current position |
| | |backlash operation will be performed |
|--------|-----------|------------------------------------------------------------------------- |
*/ |
int Dev; |
time_t tcur,tprev; |
Dev=node-1; |
if (ierr=USMC_GetStartParameters(Dev,&DStartPar[Dev])) return ierr; |
DStartPar[Dev].SDivisor=8; |
DStartPar[Dev].SlStart=TRUE; |
DStartPar[Dev].LoftEn=FALSE; |
DStartPar[Dev].WSyncIN=FALSE; |
if (ierr=USMC_Start(Dev,dest,&Speed,&DStartPar[Dev])) return ierr; |
tprev=time(NULL)+1; |
do { |
Delay(0.01); |
if (ierr=USMC_GetState(Dev,&DState[Dev])) return ierr; |
tcur=time(NULL); |
if (tcur > tprev) { |
printf("%d CurPos %d L%d R%d Rot%d %s %s\n",node, |
DState[Dev].CurPos,DState[Dev].Trailer1,DState[Dev].Trailer2, DState[Dev].RotTr, |
DState[Dev].RUN?"Run":"Stopped",DState[Dev].Power?"On":"Off" ); |
tprev= tcur; |
} |
} while (DState[Dev].RUN); |
return FALSE; |
} |
int _VI_FUNC uSMC_GetPosition (int node, int *pos) { |
/* |
|Type |Name |Description |
|--------|-----------|------------------------------------------------------------------------- |
|int |CurPos |
|float |Temp |Current temperature of the power driver |
|BYTE |SDivisor |Step is divided by this factor |
|BOOL |Loft |Indicates backlash status |
|BOOL |FullPower |Full power if TRUE |
|BOOL |CW_CCW |Current direction of rotation (relatively to some direction dependent on |
| | |step motor circuits connection and on its construction) |
|BOOL |Power |If TRUE then Step Motor power is ON |
|BOOL |FullSpeed |If TRUE then full speed. Valid in "Slow Start" mode only |
|BOOL |AReset |TRUE After Device reset, FALSE after "Set Position" |
|BOOL |RUN |TRUE if step motor is rotating |
|BOOL |SyncIN |Logical state directly from input synchronization PIN (pulses treated as positive) |
|BOOL |SyncOUT |Logical state directly from output synchronization PIN (pulses are positive) |
|BOOL |RotTr |Indicates current rotary transducer logical press state |
|BOOL |RotTrErr |Indicates rotary transducer error flag (reset by USMC_SetMode function with ResetRT bit TRUE) |
|BOOL |EmReset |Indicates state of emergency disable button (TRUE Step motor power off) |
|BOOL |Trailer1 |Indicates Limit switch 1 logical press state |
|BOOL |Trailer2 |Indicates Limit switch 2 logical press state |
|float |Voltage |Power supply voltage (Volts) |
|--------|-----------|------------------------------------------------------------------------- |
*/ |
int Dev; |
Dev=node-1; |
if (ierr=USMC_GetState(Dev,&DState[Dev])) return ierr; |
*pos=DState[Dev].CurPos; |
return FALSE; |
} |
void _VI_FUNC uSMC_Close (void) { |
USMC_Close(); |
} |
//****************************** |
#ifdef uSMC_MAIN |
#define uSMC_SERIAL_X "0000000000004925" |
#define uSMC_SERIAL_Y "0000000000006030" |
#define uSMC_SERIAL_Z "0000000000002894" |
# ifdef _WINDOWS |
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, |
LPSTR lpszCmdLine, int nCmdShow) { |
const char serials[3][16]={uSMC_SERIAL_X,uSMC_SERIAL_Y,uSMC_SERIAL_Z}; |
int i; |
int DestPos[3],CurPos[3]; |
int nodes[3]; |
// float Speed=2000.0f; |
if (InitCVIRTE (hInstance, 0, 0) == 0) return -1; /* out of memory */ |
uSMC_Open(); |
for (i=0;i<3;i++) { |
nodes[i]=uSMC_FindSerial(serials[i])+1; |
uSMC_Init(nodes[i],1); |
uSMC_GetPosition(nodes[i],&CurPos[i]); |
} |
printf("nodes x,y,z: %2d, %2d, %2d\n",nodes[0],nodes[1],nodes[2]); |
printf("Current position: %2d, %2d, %2d\n",CurPos[0],CurPos[1],CurPos[2]); |
// uSMC_ReferenceMove(node); |
getchar(); |
DestPos[0]=32000; |
DestPos[1]=125000; |
DestPos[2]=300000; |
for (i=0;i<3;i++) { |
uSMC_MoveTo(nodes[i],DestPos[i]); |
uSMC_GetPosition(nodes[i],&CurPos[i]); |
} |
printf("Current position: %2d, %2d, %2d\n",CurPos[0],CurPos[1],CurPos[2]); |
for (i=0;i<3;i++) uSMC_PowerOff(nodes[i]); |
getchar(); |
uSMC_Close(); |
return 0; |
} |
# else |
int main (int argc, char **argv) { |
int i,j,k; |
int node=0,opt,value=0; |
int EOldPos=-1; |
if ( USMC_Init ( &devices ) ) abort(); |
while ((opt = getopt(argc, argv, "i:av:f:l:udn:m:s:v:g:h:r:p:")) != -1) { |
switch (opt) { |
case 'i': |
usmc_Init (node, atoi(optarg)); |
break; |
case 'a': |
printdevices(devices); |
for (i=0; i<devices.NOD; i++) { |
USMC_GetState(i,&DState[i]); |
printf("%d CurPos %d L%d R%d %s %s\t",i, |
DState[i].CurPos,DState[i].Trailer1,DState[i].Trailer2, |
DState[i].RUN?"Run":"Stopped",DState[i].Power?"On":"Off" ); |
USMC_GetParameters(i,&DPar[i]); |
USMC_GetEncoderState(i,&DEncState[i]); |
printf("node %d ECurPos 0x%0x %f EncoderPos =0x%04x %f\n",i, |
DEncState[i].ECurPos, (((DEncState[i].ECurPos)>>5)&0x8FFFFF)/DPar[i].EncMult, |
DEncState[i].EncoderPos,((DEncState[i].EncoderPos >> 5)&0x8FFFFF)/DPar[i].EncMult); |
} |
break; |
case 'l': |
printf("usmc_MoveTo Loop\n"); |
for (i=0; i<5; i++) { |
int xpos=i*1000+10000; |
usmc_MoveTo (1, xpos); |
for (j=0; j<5; j++) { |
int ypos=j*1000+10000; |
usmc_MoveTo (2, ypos); |
for (k=0; k<50; k++) { |
int zpos=k*1000+10000; |
usmc_MoveTo (3, zpos); |
printf("x=%d y=%d z=%d\n",xpos,ypos,zpos); |
Delay(atof(optarg)); |
} |
} |
} |
break; |
case 'n': |
node = atoi(optarg); |
break; |
case 's': |
usmc_speed = atoi(optarg); |
break; |
case 'p': |
usmc_PowerOnOff(node,atoi(optarg)); |
break; |
case 'm': |
usmc_MoveTo (node, atoi(optarg)); |
printf("usmc_MoveTo node=%d pos=%d \n",node,atoi(optarg)); |
break; |
case 'v': |
value=atoi(optarg); |
break; |
/* |
case 'f': |
MIKRO_Set (node,optarg,value); |
printf("MIKRO_Set node %d cmd=%s val=%d\n",node,optarg, value); |
break; |
case 'g': |
MIKRO_Get (node,optarg,&i); |
printf("MIKRO_Get node %d cmd=%s val=%d\n",node,optarg, i); |
break; |
*/ |
case 'r': |
printf("usmc_Reset node=%d mode=%d\n",node, atoi(optarg)); |
usmc_Reset (node, atoi(optarg)); |
break; |
case 'h': |
printf("usmc_ReferenceMove node=%d mode=%d\n",node, atoi(optarg)); |
usmc_ReferenceMove (node, atoi(optarg)); |
break; |
case 'u': |
usmc_RelMove(node, 1000); |
break; |
case 'd': |
usmc_RelMove(node, -1000); |
break; |
default: /* '?' */ |
help(); |
break; |
} |
} |
if (argc==1) help(); |
USMC_Close (); |
return 0; |
} |
# endif /* _WINDOWS */ |
#endif /* _uSMC_MAIN */ |
/cvi/instr/uSMC/uSMC.cws |
---|
0,0 → 1,301 |
[Workspace Header] |
Version = 1302 |
Pathname = "/c/home/cvi/instr/uSMC/uSMC.cws" |
CVI Dir = "/c/program files/national instruments/cvi2013" |
CVI Shared Dir = "/C/Program Files/National Instruments/Shared/CVI" |
CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2013" |
CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" |
IVI Standard Root Dir = "/C/Program Files/IVI Foundation/IVI" |
IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI" |
VXIplug&play Framework Dir = "/C/Program Files/IVI Foundation/VISA/winnt" |
VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64" |
Number of Projects = 2 |
Active Project = 1 |
Project 0001 = "/c/home/cvi/instr/K617/K617.prj" |
Project 0002 = "/c/home/cvi/instr/PROLOGIX/prologix.prj" |
Drag Bar Left = 212 |
Window Top = 47 |
Window Left = 315 |
Window Bottom = 972 |
Window Right = 1658 |
Maximized = False |
Maximized Children = True |
Max32 Number Of Errors = 20 |
Track Include File Dependencies = True |
Prompt For Missing Includes = True |
Stop On First Error File = False |
Bring Up Err Win At Start = True |
Bring Up Err Win For Errors = False |
Save Changes Before Running = "Always" |
Save Changes Before Compiling = "Always" |
Hide Windows = False |
Break At First Statement = False |
Sort Type = "File Name" |
Number of Opened Files = 2 |
Window Confinement Region Enabled = True |
MainColumnWidth = 195 |
FileDateColumnWidth = 70 |
FileSizeColumnWidth = 70 |
[Project Header 0001] |
Version = 1302 |
Don't Update DistKit = False |
Platform Code = 4 |
Build Configuration = "Debug" |
Warn User If Debugging Release = 1 |
Batch Build Release = False |
Batch Build Debug = False |
[Project Header 0002] |
Version = 1302 |
Don't Update DistKit = False |
Platform Code = 4 |
Build Configuration = "Debug" |
Warn User If Debugging Release = 1 |
Batch Build Release = False |
Batch Build Debug = False |
[File 0001] |
Path = "/c/home/cvi/instr/K617/K617.fp" |
File Type = "Function Panel" |
Disk Date = 3500219966 |
In Projects = "1," |
Window Top = 33 |
Window Left = 10 |
Window Height = 400 |
Window Width = 400 |
[File 0002] |
Path = "/c/home/cvi/instr/PROLOGIX/prologix.fp" |
File Type = "Function Panel" |
Disk Date = 3500214502 |
In Projects = "1,2," |
[File 0003] |
Path = "/c/home/cvi/instr/PROLOGIX/prologix.c" |
File Type = "CSource" |
Disk Date = 3500234235 |
In Projects = "2," |
Window Top = 157 |
Window Left = 74 |
Window Z-Order = 2 |
Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,23,83,0,120,30,323,683,1,0," |
[File 0004] |
Path = "/c/home/cvi/instr/PROLOGIX/prologix.h" |
File Type = "Include" |
Disk Date = 3500215296 |
In Projects = "2," |
Window Top = 33 |
Window Left = 10 |
Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,23,13,0,0,0,323,683,1,0," |
[File 0005] |
Path = "/c/home/cvi/instr/K617/K617.c" |
File Type = "CSource" |
Disk Date = 3566382177 |
In Projects = "1," |
Window Top = 95 |
Window Left = 42 |
Window Z-Order = 1 |
Source Window State = "1,0,0,0,0,0,0,0,0,136,0,0,0,0,0,53,94,0,285,25,323,683,1,0," |
[File 0006] |
Path = "/c/home/cvi/instr/K617/K617.h" |
File Type = "Include" |
Disk Date = 3500226164 |
In Projects = "1," |
Window Top = 126 |
Window Left = 58 |
Source Window State = "1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,349,683,1,0," |
[File 0007] |
Path = "/c/home/cvi/instr/PROLOGIX/prologix_ui.uir" |
File Type = "User Interface Resource" |
Disk Date = 3500215705 |
In Projects = "2," |
Window Top = 64 |
Window Left = 26 |
Window Height = 323 |
Window Width = 683 |
[Tab Order] |
Tab 0001 = "/c/home/cvi/instr/K617/K617.c" |
Tab 0002 = "/c/home/cvi/instr/PROLOGIX/prologix.c" |
[Default Build Config 0001 Debug] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Batch Build = False |
Profile = "Disabled" |
Debugging Level = "Standard" |
Execution Trace = "Disabled" |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
External Process Path = "" |
[Default Build Config 0001 Release] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Batch Build = False |
Profile = "Disabled" |
Debugging Level = "Standard" |
Execution Trace = "Disabled" |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
External Process Path = "" |
[Default Build Config 0001 Debug64] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Batch Build = False |
Profile = "Disabled" |
Debugging Level = "Standard" |
Execution Trace = "Disabled" |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
External Process Path = "" |
[Default Build Config 0001 Release64] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Batch Build = False |
Profile = "Disabled" |
Debugging Level = "Standard" |
Execution Trace = "Disabled" |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
External Process Path = "" |
[Build Dependencies 0001] |
Number of Dependencies = 0 |
[Build Options 0001] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Execution Trace = "Disabled" |
Profile = "Disabled" |
Debugging Level = "Standard" |
Break On Library Errors = True |
Break On First Chance Exceptions = False |
[Execution Target 0001] |
Execution Target Address = "Local desktop computer" |
Execution Target Port = 0 |
Execution Target Type = 0 |
[SCC Options 0001] |
Use global settings = True |
SCC Provider = "" |
SCC Project = "" |
Local Path = "" |
Auxiliary Path = "" |
Perform Same Action For .h File As For .uir File = "Ask" |
Perform Same Action For .cds File As For .prj File = "Ask" |
Username = "" |
Comment = "" |
Use Default Username = False |
Use Default Comment = False |
Suppress CVI Error Messages = False |
Always show confirmation dialog = True |
[DLL Debugging Support 0001] |
External Process Path = "" |
[Command Line Args 0001] |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
[Default Build Config 0002 Debug] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Batch Build = False |
Profile = "Disabled" |
Debugging Level = "Standard" |
Execution Trace = "Disabled" |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
External Process Path = "" |
[Default Build Config 0002 Release] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Batch Build = False |
Profile = "Disabled" |
Debugging Level = "Standard" |
Execution Trace = "Disabled" |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
External Process Path = "" |
[Default Build Config 0002 Debug64] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Batch Build = False |
Profile = "Disabled" |
Debugging Level = "Standard" |
Execution Trace = "Disabled" |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
External Process Path = "" |
[Default Build Config 0002 Release64] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Batch Build = False |
Profile = "Disabled" |
Debugging Level = "Standard" |
Execution Trace = "Disabled" |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
External Process Path = "" |
[Build Dependencies 0002] |
Number of Dependencies = 0 |
[Build Options 0002] |
Generate Browse Info = True |
Enable Uninitialized Locals Runtime Warning = True |
Execution Trace = "Disabled" |
Profile = "Disabled" |
Debugging Level = "Standard" |
Break On Library Errors = True |
Break On First Chance Exceptions = False |
[Execution Target 0002] |
Execution Target Address = "Local desktop computer" |
Execution Target Port = 0 |
Execution Target Type = 0 |
[SCC Options 0002] |
Use global settings = True |
SCC Provider = "" |
SCC Project = "" |
Local Path = "" |
Auxiliary Path = "" |
Perform Same Action For .h File As For .uir File = "Ask" |
Perform Same Action For .cds File As For .prj File = "Ask" |
Username = "" |
Comment = "" |
Use Default Username = False |
Use Default Comment = False |
Suppress CVI Error Messages = False |
Always show confirmation dialog = True |
[DLL Debugging Support 0002] |
External Process Path = "" |
[Command Line Args 0002] |
Command Line Args = "" |
Working Directory = "" |
Environment Options = "" |
/cvi/instr/uSMC/uSMC.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/cvi/instr/uSMC/uSMC.fp |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/cvi/instr/uSMC/uSMC.h |
---|
0,0 → 1,62 |
//============================================================================== |
// |
// Title: MIKRO.h |
// Purpose: Header file for MVP stage driver. |
// |
// Created on: 29.11.2014 at 20:51:03 by Samo Korpar. |
// Copyright: . All Rights Reserved. |
// |
//============================================================================== |
#ifndef __uSMC_H__ |
#define __uSMC_H__ |
#ifdef __cplusplus |
extern "C" { |
#endif |
//============================================================================== |
// Include files |
#include <cvidef.h> |
#include <ivi.h> |
//============================================================================== |
// Constants |
//============================================================================== |
// Types |
//============================================================================== |
// External variables |
//============================================================================== |
// Global functions |
int _VI_FUNC uSMC_Open (void); |
int _VI_FUNC uSMC_FindSerial (char serial[]); |
int _VI_FUNC uSMC_Reset (int node); |
int _VI_FUNC uSMC_Init (int node, int type); |
int _VI_FUNC uSMC_PowerOn (int node); |
int _VI_FUNC uSMC_PowerOff (int node); |
int _VI_FUNC uSMC_ReferenceMove (int node); |
int _VI_FUNC uSMC_MoveFor (int node, int dist); |
int _VI_FUNC uSMC_MoveTo (int node, int dest); |
int _VI_FUNC uSMC_GetPosition (int node, int *pos); |
void _VI_FUNC uSMC_Close (void); |
#ifdef __cplusplus |
} |
#endif |
#endif /* ndef __uSMC_H__ */ |
/cvi/instr/uSMC/uSMC.prj |
---|
0,0 → 1,543 |
[Project Header] |
Version = 1302 |
Pathname = "/c/home/cvi/instr/uSMC/uSMC.prj" |
Project Label = "uSMC" |
CVI Dir = "/c/program files/national instruments/cvi2013" |
CVI Shared Dir = "/C/Program Files/National Instruments/Shared/CVI" |
CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2013" |
CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" |
IVI Standard Root Dir = "/C/Program Files/IVI Foundation/IVI" |
VXIplug&play Framework Dir = "/C/Program Files/IVI Foundation/VISA/winnt" |
IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI" |
VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64" |
Number of Files = 8 |
Target Type = "Executable" |
Flags = 16 |
Copied From Locked InstrDrv Directory = False |
Copied from VXIPNP Directory = False |
Locked InstrDrv Name = "" |
Don't Display Deploy InstrDrv Dialog = False |
[Folders] |
Instrument Files Folder Not Added Yet = True |
Folder 0 = "Source Files" |
FolderEx 0 = "Source Files" |
Folder 1 = "User Interface Files" |
FolderEx 1 = "User Interface Files" |
Folder 2 = "Library Files" |
FolderEx 2 = "Library Files" |
Folder 3 = "Include Files" |
FolderEx 3 = "Include Files" |
[File 0001] |
File Type = "CSource" |
Res Id = 1 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "Test MicroSMC.c" |
Path = "/c/home/cvi/instr/uSMC/Test MicroSMC.c" |
Exclude = True |
Compile Into Object File = False |
Project Flags = 0 |
Folder = "Source Files" |
Folder Id = 0 |
[File 0002] |
File Type = "CSource" |
Res Id = 2 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "uSMC.c" |
Path = "/c/home/cvi/instr/uSMC/uSMC.c" |
Exclude = False |
Compile Into Object File = False |
Project Flags = 0 |
Folder = "Source Files" |
Folder Id = 0 |
[File 0003] |
File Type = "CSource" |
Res Id = 3 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "uSMCctrl.c" |
Path = "/c/home/cvi/instr/uSMC/uSMCctrl.c" |
Exclude = True |
Compile Into Object File = False |
Project Flags = 0 |
Folder = "Source Files" |
Folder Id = 0 |
[File 0004] |
File Type = "User Interface Resource" |
Res Id = 4 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "uSMC_ui.uir" |
Path = "/c/home/cvi/instr/uSMC/uSMC_ui.uir" |
Exclude = False |
Project Flags = 0 |
Folder = "User Interface Files" |
Folder Id = 1 |
[File 0005] |
File Type = "Library" |
Res Id = 5 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "USMCDLL.lib" |
Path = "/c/home/cvi/instr/uSMC/USMCDLL.lib" |
Exclude = False |
Project Flags = 0 |
Folder = "Library Files" |
Folder Id = 2 |
[File 0006] |
File Type = "Include" |
Res Id = 6 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "uSMC.h" |
Path = "/c/home/cvi/instr/uSMC/uSMC.h" |
Exclude = False |
Project Flags = 0 |
Folder = "Include Files" |
Folder Id = 3 |
[File 0007] |
File Type = "Include" |
Res Id = 7 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "uSMCctrl.h" |
Path = "/c/home/cvi/instr/uSMC/uSMCctrl.h" |
Exclude = False |
Project Flags = 0 |
Folder = "Include Files" |
Folder Id = 3 |
[File 0008] |
File Type = "Include" |
Res Id = 8 |
Path Is Rel = True |
Path Rel To = "Project" |
Path Rel Path = "USMCDLL.h" |
Path = "/c/home/cvi/instr/uSMC/USMCDLL.h" |
Exclude = False |
Project Flags = 0 |
Folder = "Include Files" |
Folder Id = 3 |
[Custom Build Configs] |
Num Custom Build Configs = 0 |
[Default Build Config Debug] |
Config Name = "Debug" |
Is 64-Bit = False |
Is Release = False |
Default Calling Convention = "cdecl" |
Optimization Level = "No optimizations" |
Require Prototypes = True |
Show Warning IDs in Build Output = False |
Selected Warning Level = "None" |
Warning List None = "4,9,84,105,106,107,108,109,110,111" |
Warning List Common = "" |
Warning List Extended = "" |
Warning List All = "" |
Warning Mode = 0 |
Enable Unreferenced Identifiers Warning = False |
Enable Pointer Mismatch Warning = False |
Enable Unreachable Code Warning = False |
Enable Assignment In Conditional Warning = False |
Uninitialized Locals Compile Warning = "Aggressive" |
Require Return Values = True |
Enable C99 Extensions = False |
Enable OpenMP Extensions = False |
Stack Size = 250000 |
Stack Reserve = 1048576 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN /DuSMC_MAIN" |
Sign = False |
Sign Store = "" |
Sign Certificate = "" |
Sign Timestamp URL = "" |
Sign URL = "" |
Manifest Embed = False |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Runtime Support = "Full Runtime Support" |
Runtime Binding = "Shared" |
Embed Project .UIRs = False |
Generate Map File = False |
Embed Timestamp = True |
Create Console Application = False |
Using LoadExternalModule = True |
DLL Exports = "Include File Symbols" |
Register ActiveX Server = False |
Numeric File Version = "1,0,0,0" |
Numeric Prod Version = "1,0,0,0" |
Comments = "" |
Comments Ex = "" |
Company Name = "" |
Company Name Ex = "%company" |
File Description = "usmc_ctrl_dbg (Debug x86)" |
File Description Ex = "%application (%rel_dbg %arch)" |
File Version = "1.0" |
File Version Ex = "%f1.%f2" |
Internal Name = "usmc_ctrl_dbg" |
Internal Name Ex = "%basename" |
Legal Copyright = "Copyright © 2017" |
Legal Copyright Ex = "Copyright © %company %Y" |
Legal Trademarks = "" |
Legal Trademarks Ex = "" |
Original Filename = "usmc_ctrl_dbg.exe" |
Original Filename Ex = "%filename" |
Private Build = "" |
Private Build Ex = "" |
Product Name = " usmc_ctrl_dbg" |
Product Name Ex = "%company %application" |
Product Version = "1.0" |
Product Version Ex = "%p1.%p2" |
Special Build = "" |
Special Build Ex = "" |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
[Default Build Config Release] |
Config Name = "Release" |
Is 64-Bit = False |
Is Release = True |
Default Calling Convention = "cdecl" |
Optimization Level = "No optimizations" |
Require Prototypes = True |
Show Warning IDs in Build Output = False |
Selected Warning Level = "None" |
Warning List None = "4,9,84,105,106,107,108,109,110,111" |
Warning List Common = "" |
Warning List Extended = "" |
Warning List All = "" |
Warning Mode = 0 |
Enable Unreferenced Identifiers Warning = False |
Enable Pointer Mismatch Warning = False |
Enable Unreachable Code Warning = False |
Enable Assignment In Conditional Warning = False |
Uninitialized Locals Compile Warning = "Aggressive" |
Require Return Values = True |
Enable C99 Extensions = False |
Enable OpenMP Extensions = False |
Stack Size = 250000 |
Stack Reserve = 1048576 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN /DuSMC_MAIN" |
Sign = False |
Sign Store = "" |
Sign Certificate = "" |
Sign Timestamp URL = "" |
Sign URL = "" |
Manifest Embed = False |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Runtime Support = "Full Runtime Support" |
Runtime Binding = "Shared" |
Embed Project .UIRs = False |
Generate Map File = False |
Embed Timestamp = True |
Create Console Application = False |
Using LoadExternalModule = True |
DLL Exports = "Include File Symbols" |
Register ActiveX Server = False |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
[Default Build Config Debug64] |
Config Name = "Debug64" |
Is 64-Bit = True |
Is Release = False |
Default Calling Convention = "cdecl" |
Optimization Level = "No optimizations" |
Require Prototypes = True |
Show Warning IDs in Build Output = False |
Selected Warning Level = "None" |
Warning List None = "4,9,84,105,106,107,108,109,110,111" |
Warning List Common = "" |
Warning List Extended = "" |
Warning List All = "" |
Warning Mode = 0 |
Enable Unreferenced Identifiers Warning = False |
Enable Pointer Mismatch Warning = False |
Enable Unreachable Code Warning = False |
Enable Assignment In Conditional Warning = False |
Uninitialized Locals Compile Warning = "Aggressive" |
Require Return Values = True |
Enable C99 Extensions = False |
Enable OpenMP Extensions = False |
Stack Size = 250000 |
Stack Reserve = 1048576 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN /DuSMC_MAIN" |
Sign = False |
Sign Store = "" |
Sign Certificate = "" |
Sign Timestamp URL = "" |
Sign URL = "" |
Manifest Embed = False |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Runtime Support = "Full Runtime Support" |
Runtime Binding = "Shared" |
Embed Project .UIRs = False |
Generate Map File = False |
Embed Timestamp = True |
Create Console Application = False |
Using LoadExternalModule = True |
DLL Exports = "Include File Symbols" |
Register ActiveX Server = False |
Numeric File Version = "1,0,0,0" |
Numeric Prod Version = "1,0,0,0" |
Comments = "" |
Comments Ex = "" |
Company Name = "" |
Company Name Ex = "%company" |
File Description = "uSMC (Debug x64)" |
File Description Ex = "%application (%rel_dbg %arch)" |
File Version = "1.0" |
File Version Ex = "%f1.%f2" |
Internal Name = "uSMC" |
Internal Name Ex = "%basename" |
Legal Copyright = "Copyright © 2017" |
Legal Copyright Ex = "Copyright © %company %Y" |
Legal Trademarks = "" |
Legal Trademarks Ex = "" |
Original Filename = "uSMC.exe" |
Original Filename Ex = "%filename" |
Private Build = "" |
Private Build Ex = "" |
Product Name = " uSMC" |
Product Name Ex = "%company %application" |
Product Version = "1.0" |
Product Version Ex = "%p1.%p2" |
Special Build = "" |
Special Build Ex = "" |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
[Default Build Config Release64] |
Config Name = "Release64" |
Is 64-Bit = True |
Is Release = True |
Default Calling Convention = "cdecl" |
Optimization Level = "No optimizations" |
Require Prototypes = True |
Show Warning IDs in Build Output = False |
Selected Warning Level = "None" |
Warning List None = "4,9,84,105,106,107,108,109,110,111" |
Warning List Common = "" |
Warning List Extended = "" |
Warning List All = "" |
Warning Mode = 0 |
Enable Unreferenced Identifiers Warning = False |
Enable Pointer Mismatch Warning = False |
Enable Unreachable Code Warning = False |
Enable Assignment In Conditional Warning = False |
Uninitialized Locals Compile Warning = "Aggressive" |
Require Return Values = True |
Enable C99 Extensions = False |
Enable OpenMP Extensions = False |
Stack Size = 250000 |
Stack Reserve = 1048576 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN /DuSMC_MAIN" |
Sign = False |
Sign Store = "" |
Sign Certificate = "" |
Sign Timestamp URL = "" |
Sign URL = "" |
Manifest Embed = False |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Runtime Support = "Full Runtime Support" |
Runtime Binding = "Shared" |
Embed Project .UIRs = False |
Generate Map File = False |
Embed Timestamp = True |
Create Console Application = False |
Using LoadExternalModule = True |
DLL Exports = "Include File Symbols" |
Register ActiveX Server = False |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
[Compiler Options] |
Default Calling Convention = "cdecl" |
Require Prototypes = True |
Require Return Values = True |
Enable Pointer Mismatch Warning = False |
Enable Unreachable Code Warning = False |
Enable Unreferenced Identifiers Warning = False |
Enable Assignment In Conditional Warning = False |
O Option Compatible With 5.0 = False |
Enable C99 Extensions = False |
Uninitialized Locals Compile Warning = "Aggressive" |
Precompile Prefix Header = False |
Prefix Header File = "" |
[Run Options] |
Stack Size = 250000 |
Stack Commit = 4096 |
Image Base Address = 4194304 |
Image Base Address x64 = 4194304 |
[Compiler Defines] |
Compiler Defines = "/DWIN32_LEAN_AND_MEAN /DuSMC_MAIN" |
[Include Paths] |
Include Path 1 Is Rel = True |
Include Path 1 Rel To = "CVI" |
Include Path 1 Rel To Override = "CVI" |
Include Path 1 Rel Path = "instr/CAENV462" |
Include Path 1 = "/c/program files/national instruments/cvi2013/instr/CAENV462" |
Include Path 2 Is Rel = True |
Include Path 2 Rel To = "CVI" |
Include Path 2 Rel To Override = "CVI" |
Include Path 2 Rel Path = "instr/CAENV830" |
Include Path 2 = "/c/program files/national instruments/cvi2013/instr/CAENV830" |
Include Path 3 Is Rel = True |
Include Path 3 Rel To = "Project" |
Include Path 3 Rel Path = "../CAENV288" |
Include Path 3 = "/c/home/cvi/instr/CAENV288" |
Include Path 4 Is Rel = True |
Include Path 4 Rel To = "CVI" |
Include Path 4 Rel To Override = "CVI" |
Include Path 4 Rel Path = "instr/CAENV814" |
Include Path 4 = "/c/program files/national instruments/cvi2013/instr/CAENV814" |
[Create Executable] |
Executable File_Debug Is Rel = True |
Executable File_Debug Rel To = "Project" |
Executable File_Debug Rel Path = "usmc_ctrl_dbg.exe" |
Executable File_Debug = "/c/home/cvi/instr/uSMC/usmc_ctrl_dbg.exe" |
Executable File_Release Is Rel = True |
Executable File_Release Rel To = "Project" |
Executable File_Release Rel Path = "usmc_ctrl.exe" |
Executable File_Release = "/c/home/cvi/instr/uSMC/usmc_ctrl.exe" |
Executable File_Debug64 Is Rel = True |
Executable File_Debug64 Rel To = "Project" |
Executable File_Debug64 Rel Path = "uSMC.exe" |
Executable File_Debug64 = "/c/home/cvi/instr/uSMC/uSMC.exe" |
Executable File_Release64 Is Rel = True |
Executable File_Release64 Rel To = "Project" |
Executable File_Release64 Rel Path = "uSMC.exe" |
Executable File_Release64 = "/c/home/cvi/instr/uSMC/uSMC.exe" |
Icon File Is Rel = False |
Icon File = "" |
Application Title = "" |
DLL Exports = "Include File Symbols" |
Use IVI Subdirectories for Import Libraries = False |
Use VXIPNP Subdirectories for Import Libraries = False |
Use Dflt Import Lib Base Name = True |
Where to Copy DLL = "Do not copy" |
Custom Directory to Copy DLL Is Rel = False |
Custom Directory to Copy DLL = "" |
Generate Source Documentation = "None" |
Add Type Lib To DLL = False |
Include Type Lib Help Links = False |
TLB Help Style = "HLP" |
Type Lib FP File Is Rel = False |
Type Lib FP File = "" |
Type Lib Guid = "" |
Runtime Support = "Full Runtime Support" |
Instrument Driver Support Only = False |
Embed Project .UIRs = False |
Generate Map File = False |
[External Compiler Support] |
UIR Callbacks File Option = 0 |
Using LoadExternalModule = False |
Create Project Symbols File = True |
UIR Callbacks Obj File Is Rel = False |
UIR Callbacks Obj File = "" |
Project Symbols H File Is Rel = False |
Project Symbols H File = "" |
Project Symbols Obj File Is Rel = False |
Project Symbols Obj File = "" |
[ActiveX Server Options] |
Specification File Is Rel = False |
Specification File = "" |
Source File Is Rel = False |
Source File = "" |
Include File Is Rel = False |
Include File = "" |
IDL File Is Rel = False |
IDL File = "" |
Register ActiveX Server = False |
[Signing Info] |
Sign = False |
Sign Debug Build = False |
Store = "" |
Certificate = "" |
Timestamp URL = "" |
URL = "" |
[Manifest Info] |
Embed = False |
[tpcSection] |
tpcEnabled = 0 |
tpcOverrideEnvironment = 0 |
tpcEnabled x64 = 0 |
tpcOverrideEnvironment x64 = 0 |
/cvi/instr/uSMC/uSMC_ui.uir |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/cvi/instr/uSMC/uSMCctrl.c |
---|
0,0 → 1,532 |
/* |
usmc_ctrl -a |
usmc_ctrl -n 0 -i |
usmc_ctrl -n 0 -p 1 -s 5000 -m 10000 - p 0 |
usmc_ctrl -n 0 -p 1 -h -p 0 |
*/ |
#include <stdlib.h> |
#include <stdio.h> |
#include <string.h> |
#ifndef _WINDOWS |
# include "libusmc.h" |
# include <getopt.h> |
# define Delay(x) usleep((int)(x*1000000)) |
#else |
# include "USMCDLL.H" |
# include <utility.h> |
# include <ansi_c.h> |
#define ERR(s, c) if(opterr) fprintf(stderr,"%s %c\n",s,c); |
int opterr = 1; |
int optind = 1; |
int optopt; |
char *optarg; |
int getopt(int argc, char **argv, char *opts){ |
static int sp = 1; |
int c; |
char *cp; |
if(sp == 1) |
if(optind >= argc || |
argv[optind][0] != '-' || argv[optind][1] == '\0') |
return(EOF); |
else if(strcmp(argv[optind], "--") == NULL) { |
optind++; |
return(EOF); |
} |
optopt = c = argv[optind][sp]; |
if(c == ':' || (cp=strchr(opts, c)) == NULL) { |
ERR(": illegal option -- ", c); |
if(argv[optind][++sp] == '\0') { |
optind++; |
sp = 1; |
} |
return('?'); |
} |
if(*++cp == ':') { |
if(argv[optind][sp+1] != '\0') |
optarg = &argv[optind++][sp+1]; |
else if(++optind >= argc) { |
ERR(": option requires an argument -- ", c); |
sp = 1; |
return('?'); |
} else |
optarg = argv[optind++]; |
sp = 1; |
} else { |
if(argv[optind][++sp] == '\0') { |
sp = 1; |
optind++; |
} |
optarg = NULL; |
} |
return(c); |
} |
#endif |
#define MAXNODES 4 |
USMC_Devices devices; |
USMC_StartParameters parstart[MAXNODES]; |
USMC_Parameters parameters[MAXNODES]; |
USMC_State parstate[MAXNODES]; |
USMC_EncoderState parencstate[MAXNODES]; |
#define ERRLEN 128 |
char errstr[ERRLEN]; |
// Function that prints information about device parameters to console |
void print_parameters(USMC_Parameters *Parameters) |
{ |
printf( "The parameters are:\n" ); |
printf( "Full acceleration time - %.0f ms\n", (double) Parameters->AccelT ); |
printf( "Full deceleration time - %.0f ms\n", (double) Parameters->DecelT ); |
printf( "Power reduction timeout - %.0f ms\n", (double) Parameters->PTimeout ); |
printf( "Button speedup timeout 1 - %.0f ms\n", (double) Parameters->BTimeout1 ); |
printf( "Button speed after timeout 1 - %.2f steps/s\n", (double) Parameters->BTO1P ); |
printf( "Button speedup timeout 2 - %.0f ms\n", (double) Parameters->BTimeout2 ); |
printf( "Button speed after timeout 2 - %.2f steps/s\n", (double) Parameters->BTO2P ); |
printf( "Button speedup timeout 3 - %.0f ms\n", (double) Parameters->BTimeout3 ); |
printf( "Button speed after timeout 3 - %.2f steps/s\n", (double) Parameters->BTO3P ); |
printf( "Button speedup timeout 4 - %.0f ms\n", (double) Parameters->BTimeout4 ); |
printf( "Button speed after timeout 4 - %.2f steps/s\n", (double) Parameters->BTO4P ); |
printf( "Button reset timeout - %.0f ms\n", (double) Parameters->BTimeoutR ); |
printf( "Button reset operation speed - %.2f steps/s\n", (double) Parameters->MinP ); |
printf( "Backlash operation distance - %d steps\n", (int)Parameters->MaxLoft ); |
printf( "Revolution distance - %d steps\n", (int)Parameters->RTDelta ); |
printf( "Minimal revolution distance error - %d steps\n", (int)Parameters->RTMinError ); |
printf( "Power off temperature - %.2f\xf8\x43\n", (double)Parameters->MaxTemp ); |
printf( "Duration of the output synchronization pulse - "); |
if(Parameters->SynOUTP == 0) |
printf( "minimal\n"); |
else |
printf( "%.1f * [Tact Period]\n", Parameters->SynOUTP - 0.5); |
printf( "Speed of the last phase of the backlash operation - "); |
if(Parameters->LoftPeriod == 0.0f) |
printf( "normal\n" ); |
else |
printf( "%.2f steps/s\n", (double)Parameters->LoftPeriod ); |
printf( "<Angular Encoder Step> Equals <Angular Step Motor Step>/<%.2f>\n", Parameters->EncMult); |
} |
// Function that prints information about device start parameters to console |
void print_start_params ( const USMC_StartParameters sp ){ |
printf ( "* Steps Divisor - %d\n", sp.SDivisor ); |
if ( sp.SDivisor == 1 ) |
printf ( "* Slow start/stop mode - %s\n", sp.SlStart ? "Enabled" : "Disabled" ); |
else if ( sp.LoftEn ) { |
printf ( "* Automatic backlash operation - Enabled\n" ); |
printf ( "* Automatic backlash operation direction - %s\n", sp.DefDir ? "CCW" : "CW" ); |
printf ( "* Force automatic backlash operation - %s\n", sp.ForceLoft ? "TRUE" : "FALSE" ); |
} else { |
printf ( "* Automatic backlash operation - Disabled\n" ); |
} |
if ( sp.WSyncIN ) |
printf ( "* Controller will wait for input synchronization signal to start\n" ); |
else |
printf ( "* Input synchronization signal ignored \n" ); |
printf ( "* Output synchronization counter will %sbe reset\n", sp.SyncOUTR ? "" : "not " ); |
} |
// Function that prints information about device state to console |
void print_state(USMC_State *State) |
{ |
printf( " The state is:\n" ); |
printf( "- Current Position in microsteps - %d\n", State->CurPos ); |
printf( "- Temperature - %.2f\xf8\x43\n", State->Temp ); |
printf( "- Step Divisor - %d\n", State->SDivisor); |
printf( "- Loft State - %s\n", State->Loft?"Indefinite":"Fixed" ); |
printf( "- Power - %s\n", State->Power?(State->FullPower?"Full":"Half"):"Off" ); |
if(State->RUN) |
printf( "- Step Motor is Running in %s Direction %s\n", |
State->CW_CCW?"CCW":"CW", ((State->SDivisor==1) && State->FullSpeed)?"at Full Speed":"" ); |
else |
printf( "- Step Motor is Not Running\n" ); |
printf( "- Device %s\n", State->AReset?"is After Reset":"Position Already Set" ); |
printf( "- Input Synchronization Logical Pin State - %s\n", State->SyncIN?"TRUE":"FALSE" ); |
printf( "- Output Synchronization Logical Pin State - %s\n", State->SyncOUT?"TRUE":"FALSE" ); |
printf( "- Rotary Transducer Logical Pin State - %s\n", State->RotTr?"TRUE":"FALSE" ); |
printf( "- Rotary Transducer Error Flag - %s\n", State->RotTrErr?"Error":"Clear" ); |
printf( "- Emergency Disable Button - %s\n", State->EmReset?"Pushed":"Unpushed" ); |
printf( "- Trailer 1 Press State - %s\n", State->Trailer1?"Pushed":"Unpushed" ); |
printf( "- Trailer 2 Press State - %s\n", State->Trailer2?"Pushed":"Unpushed" ); |
if( State->Voltage == 0.0f ) |
printf( "- Input Voltage - Low\n"); |
else |
printf( "- Input Voltage - %.1fV\n", State->Voltage); |
} |
void print_enc_state ( USMC_EncoderState enc_state ) |
{ |
printf ( "# The encoder state is:\n" ); |
printf ( "# Current Position in \"Half of Encoder Step\"s - %d\n", enc_state.ECurPos ); |
printf ( "# Encoder Position in \"Half of Encoder Step\"s - %d\n", enc_state.EncoderPos ); |
} |
// Function that prints information about connected devices to console |
void printdevices(USMC_Devices DVS) |
{ |
DWORD i; |
for( i = 0; i < DVS.NOD; i++) |
{ |
printf("Device - %d,\tSerial Number - %.16s,\tVersion - %.4s\n",i,DVS.Serial[i],DVS.Version[i]); |
} |
} |
int usmc_Set_Parameters(int Dev, int mode) |
{ |
USMC_Mode umode; |
if( USMC_GetParameters(Dev, ¶meters[Dev]) ) |
return TRUE; |
switch (mode) { |
case 1: |
// Linear stage |
parameters[Dev].MaxTemp = 70.0f; |
parameters[Dev].AccelT = 200.0f; |
parameters[Dev].DecelT = 200.0f; |
parameters[Dev].BTimeout1 = 500.0f; |
parameters[Dev].BTimeout2 = 500.0f; |
parameters[Dev].BTimeout3 = 500.0f; |
parameters[Dev].BTimeout4 = 500.0f; |
parameters[Dev].BTO1P = 10.0f; |
parameters[Dev].BTO2P = 20.0f; |
parameters[Dev].BTO3P = 30.0f; |
parameters[Dev].BTO4P = 60.0f; |
parameters[Dev].MinP = 60.0f; |
parameters[Dev].BTimeoutR = 500.0f; |
parameters[Dev].LoftPeriod = 50.0f; |
parameters[Dev].RTDelta = 20; |
parameters[Dev].RTMinError = 15; |
parameters[Dev].EncMult = 2.5f; |
parameters[Dev].MaxLoft = 32; |
parameters[Dev].PTimeout = 100.0f; |
parameters[Dev].SynOUTP = 1; |
break; |
case 0: |
// Rotation stage |
parameters[Dev].MaxTemp = 70.0f; |
parameters[Dev].AccelT = 200.0f; |
parameters[Dev].DecelT = 200.0f; |
parameters[Dev].BTimeout1 = 500.0f; |
parameters[Dev].BTimeout2 = 500.0f; |
parameters[Dev].BTimeout3 = 500.0f; |
parameters[Dev].BTimeout4 = 500.0f; |
parameters[Dev].BTO1P = 100.0f; |
parameters[Dev].BTO2P = 200.0f; |
parameters[Dev].BTO3P = 300.0f; |
parameters[Dev].BTO4P = 600.0f; |
parameters[Dev].MinP = 500.0f; |
parameters[Dev].BTimeoutR = 500.0f; |
parameters[Dev].LoftPeriod = 500.0f; |
parameters[Dev].RTDelta = 200; |
parameters[Dev].RTMinError = 15; |
parameters[Dev].EncMult = 2.5f; |
parameters[Dev].MaxLoft = 32; |
parameters[Dev].PTimeout = 100.0f; |
parameters[Dev].SynOUTP = 1; |
break; |
} |
// |
if( USMC_SetParameters( Dev, ¶meters[Dev] ) ) |
return TRUE; |
if( USMC_SaveParametersToFlash( Dev ) ) |
return TRUE; |
if (mode){ |
if ( USMC_GetMode ( Dev, &umode ) ) return FALSE; |
umode.TrSwap = 0; |
if ( USMC_SetMode ( Dev, &umode ) ) return FALSE; |
printf ( "Now, TrSwap is %d \n", umode.TrSwap ); |
} |
//system("cls"); |
print_parameters( ¶meters[Dev] ); |
printf("\nThese Parameters are Saved to Flash"); |
return FALSE; |
} |
int usmc_Init(int node, int mode){ |
printf("\nNode %d\n",node); |
USMC_GetStartParameters(node,&parstart[node]); |
USMC_GetLastErr(errstr,ERRLEN); if (strlen(errstr)) printf("i1 %s\n",errstr); |
USMC_GetState(node,&parstate[node]); |
USMC_GetLastErr(errstr,ERRLEN); if (strlen(errstr)) printf("i2 %s\n",errstr); |
USMC_GetEncoderState(node,&parencstate[node]); |
USMC_GetLastErr(errstr,ERRLEN); if (strlen(errstr)) printf("i3 %s\n",errstr); |
print_state(&parstate[node]); |
print_enc_state ( parencstate[node]); |
print_start_params (parstart[node] ); |
usmc_Set_Parameters(node, mode); |
return 0; |
} |
float usmc_speed=10000; |
int usmc_Move(int node, int pos, BOOL absrel){ |
time_t tcur=0, tprev=-1; |
USMC_GetStartParameters(node,&parstart[node]); |
USMC_GetLastErr(errstr,ERRLEN); if (strlen(errstr)) printf("x1 %s\n",errstr); |
parstart[node].WSyncIN=absrel; |
parstart[node].SlStart=1; |
parstart[node].LoftEn=0; |
print_start_params ( parstart[node] ); |
USMC_Start(node,pos,&usmc_speed, &parstart[node]); |
USMC_GetLastErr(errstr,ERRLEN); if (strlen(errstr)) printf("x2 %s speed %f\n",errstr,usmc_speed); |
do { |
USMC_GetState(node,&parstate[node]); |
USMC_GetLastErr(errstr,ERRLEN); // if (strlen(errstr)) printf("x3 %s\n",errstr); |
tcur= time(NULL); |
if (tcur != tprev){ |
printf("%d CurPos %d L%d R%d Rot%d %s %s\n",node, |
parstate[node].CurPos,parstate[node].Trailer1,parstate[node].Trailer2, parstate[node].RotTr, |
parstate[node].RUN?"Run":"Stopped",parstate[node].Power?"On":"Off" ); |
tprev= tcur; |
} |
} while ( parstate[node].RUN == 1 ); |
USMC_GetState(node,&parstate[node]); |
printf("***** %d CurPos %d L%d R%d %s %s\n",node, |
parstate[node].CurPos,parstate[node].Trailer1,parstate[node].Trailer2, |
parstate[node].RUN?"Run":"Stopped",parstate[node].Power?"On":"Off" ); |
USMC_GetParameters(node,¶meters[node]); |
USMC_GetEncoderState(node,&parencstate[node]); |
printf("node %d ECurPos 0x%0x %f EncoderPos =0x%04x %f\n",node, |
parencstate[node].ECurPos, (((parencstate[node].ECurPos)>>5)&0x8FFFFF)/parameters[node].EncMult, |
parencstate[node].EncoderPos,((parencstate[node].EncoderPos >> 5)&0x8FFFFF)/parameters[node].EncMult); |
return 0; |
} |
void usmc_PowerOnOff ( int cur_dev, int smpower ){ |
USMC_Mode mode; |
if ( USMC_GetMode ( cur_dev, &mode ) ) return; |
mode.ResetD = !smpower; |
if ( USMC_SetMode ( cur_dev, &mode ) ) return; |
printf ( "Now, Power of the node %d is %s\n", cur_dev, mode.ResetD ? "Off" : "On" ); |
} |
int usmc_RelMove(int node, int pos){ |
return usmc_Move(node,pos, TRUE); |
} |
int usmc_MoveTo(int node, int pos){ |
return usmc_Move(node,pos, FALSE); |
} |
int Revert_Start_Position_to_0(int node) |
{ |
USMC_Parameters Prms; |
// Initialize structures (in case this function runs first) |
if( USMC_GetParameters(node, &Prms) ) |
return TRUE; |
Prms.StartPos = 0; |
if( USMC_SetParameters( node, &Prms ) ) |
return TRUE; |
// Then of Course You Need to SaveToFlash |
if( USMC_SaveParametersToFlash( node ) ) |
return TRUE; |
//system("cls"); |
printf("\nStart Position is Reset to 0\n"); |
printf("\nPress any key to exit"); |
return FALSE; |
} |
int usmc_Reset(int node, int mode){ |
usmc_Init(node,mode); |
USMC_SetCurrentPosition(node, 0); |
Revert_Start_Position_to_0(node); |
return 0; |
} |
int usmc_ReferenceMove(int node, int mode){ |
int pos = 1000000; |
int dir=1; |
if (mode) dir = -1; |
USMC_GetState(node,&parstate[node]); |
usmc_MoveTo(node, parstate[node].CurPos -2 *pos * dir); |
USMC_GetState(node,&parstate[node]); |
pos = 5000; |
if (mode) pos=500; |
usmc_MoveTo(node, parstate[node].CurPos + pos * dir); |
USMC_GetState(node,&parstate[node]); |
usmc_speed /=5; |
usmc_MoveTo(node, parstate[node].CurPos -2 *pos * dir); |
USMC_GetState(node,&parstate[node]); |
pos = 2000; |
if (mode) pos=200; |
usmc_MoveTo(node, parstate[node].CurPos + pos *dir); |
USMC_GetState(node,&parstate[node]); |
usmc_speed /= 10; |
usmc_MoveTo(node, parstate[node].CurPos -2 *pos * dir); |
USMC_GetState(node,&parstate[node]); |
USMC_SetCurrentPosition(node, 0); |
Revert_Start_Position_to_0(node); |
return 0; |
} |
int help(){ |
fprintf(stderr, "Usage: mikro [-i node][-n node] [-u up] [-d down] [-r node] [-h node] [-a] [-g] [-m pos]\n"); |
fprintf(stderr," Options:\n"); |
fprintf(stderr," -n node -i mode .. initialize node\n"); |
fprintf(stderr," -n node -h .. homing procedure for node\n"); |
fprintf(stderr," -n node -p 1 .. power on\n"); |
fprintf(stderr," -n node -p 0 .. power off\n"); |
fprintf(stderr," -n node -r mode .. reset node\n"); |
fprintf(stderr," -n node -u .. move node for +1000\n"); |
fprintf(stderr," -n node -d .. move node for -1000\n"); |
fprintf(stderr," -a .. current status of the nodes\n"); |
fprintf(stderr," -n node -v value -f cmd .. set value of the cmd on the node\n"); |
fprintf(stderr," -n node -g cmd .. get value of the cmd on the node\n"); |
fprintf(stderr," -n node -m position -s speed .. move node to position at speed (default 10000)\n"); |
fprintf(stderr," -l delaysec .. loop test with the delay delaysec\n"); |
return 0; |
} |
#ifndef _WINDOWS |
int main (int argc, char ** argv){ |
int i,j,k; |
int node=0,opt,value=0; |
int EOldPos=-1; |
if ( USMC_Init ( &devices ) ) abort(); |
while ((opt = getopt(argc, argv, "i:av:f:l:udn:m:s:v:g:h:r:p:")) != -1) { |
switch (opt) { |
case 'i': |
usmc_Init (node, atoi(optarg)); |
break; |
case 'a': |
printdevices(devices); |
for (i=0;i<devices.NOD;i++){ |
USMC_GetState(i,&parstate[i]); |
printf("%d CurPos %d L%d R%d %s %s\t",i, |
parstate[i].CurPos,parstate[i].Trailer1,parstate[i].Trailer2, |
parstate[i].RUN?"Run":"Stopped",parstate[i].Power?"On":"Off" ); |
USMC_GetParameters(i,¶meters[i]); |
USMC_GetEncoderState(i,&parencstate[i]); |
printf("node %d ECurPos 0x%0x %f EncoderPos =0x%04x %f\n",i, |
parencstate[i].ECurPos, (((parencstate[i].ECurPos)>>5)&0x8FFFFF)/parameters[i].EncMult, |
parencstate[i].EncoderPos,((parencstate[i].EncoderPos >> 5)&0x8FFFFF)/parameters[i].EncMult); |
} |
break; |
case 'l': |
printf("usmc_MoveTo Loop\n"); |
for (i=0;i<5;i++){ |
int xpos=i*1000+10000; |
usmc_MoveTo (1, xpos); |
for (j=0;j<5;j++){ |
int ypos=j*1000+10000; |
usmc_MoveTo (2, ypos); |
for (k=0;k<50;k++){ |
int zpos=k*1000+10000; |
usmc_MoveTo (3, zpos); |
printf("x=%d y=%d z=%d\n",xpos,ypos,zpos); |
Delay(atof(optarg)); |
} |
} |
} |
break; |
case 'n': |
node = atoi(optarg); |
break; |
case 's': |
usmc_speed = atoi(optarg); |
break; |
case 'p': |
usmc_PowerOnOff(node,atoi(optarg)); |
break; |
case 'm': |
usmc_MoveTo (node, atoi(optarg)); |
printf("usmc_MoveTo node=%d pos=%d \n",node,atoi(optarg)); |
break; |
case 'v': |
value=atoi(optarg); |
break; |
/* |
case 'f': |
MIKRO_Set (node,optarg,value); |
printf("MIKRO_Set node %d cmd=%s val=%d\n",node,optarg, value); |
break; |
case 'g': |
MIKRO_Get (node,optarg,&i); |
printf("MIKRO_Get node %d cmd=%s val=%d\n",node,optarg, i); |
break; |
*/ |
case 'r': |
printf("usmc_Reset node=%d mode=%d\n",node, atoi(optarg)); |
usmc_Reset (node, atoi(optarg)); |
break; |
case 'h': |
printf("usmc_ReferenceMove node=%d mode=%d\n",node, atoi(optarg)); |
usmc_ReferenceMove (node, atoi(optarg)); |
break; |
case 'u': |
usmc_RelMove(node, 1000); |
break; |
case 'd': |
usmc_RelMove(node, -1000); |
break; |
default: /* '?' */ |
help(); |
break; |
} |
} |
if (argc==1) help(); |
USMC_Close (); |
#ifdef _WINDOWS |
getchar(); |
#endif |
return 0; |
} |
#endif |
/cvi/instr/uSMC/uSMCctrl.h |
---|
0,0 → 1,20 |
#ifndef usmcctrl_h |
#define usmcctrl_h |
#define MAXNODES 4 |
USMC_Devices devices; |
USMC_StartParameters parstart[MAXNODES]; |
USMC_Parameters parameters[MAXNODES]; |
USMC_State parstate[MAXNODES]; |
USMC_EncoderState parencstate[MAXNODES]; |
int usmc_Set_Parameters(int Dev, int mode); |
int usmc_Init(int node, int mode); |
int usmc_Move(int node, int pos, BOOL absrel); |
void usmc_PowerOnOff ( int cur_dev, int smpower ); |
int usmc_RelMove(int node, int pos); |
int usmc_MoveTo(int node, int pos); |
int Revert_Start_Position_to_0(int node); |
int usmc_Reset(int node, int mode); |
int usmc_ReferenceMove(int node, int mode); |
#endif |