00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __kmot__
00015 #define __kmot__
00016
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020
00021 #define KMOT_VERSION(ver) ((ver>>4)&0xf)
00022 #define KMOT_REVISION(ver) (ver&0xf)
00023
00024
00025
00026
00027 #define KMOT_ORDER_MASK ( KNET_ORDER_LITTLE | \
00028 KNET_ORDER_REP_ADR | KNET_ORDER_MSB_FIRST )
00029
00030
00031
00032
00033 #define MOT_FWVersion 0x00
00035 #define MOT_Mode 0x28
00036 #define MOT_SetPointSource 0x29
00037 #define MOT_HWOptions 0x2A
00038 #define MOT_SWOptions 0x2B
00039 #define MOT_ControlTyp 0x2C
00040 #define MOT_ErrorFlags 0x2D
00041 #define MOT_StatusFlags 0x2E
00042
00043 #define MOT_SetPointLL 0x2F
00044 #define MOT_SetPointLH 0x30
00045 #define MOT_SetPointHL 0x31
00046 #define MOT_SetPointHH 0x32
00047
00048 #define MOT_Filter 0x33
00049
00050 #define MOT_PositionLL 0x34
00051 #define MOT_PositionLH 0x35
00052 #define MOT_PositionHL 0x36
00053 #define MOT_PositionHH 0x37
00054
00055 #define MOT_SpeedLL 0x38
00056 #define MOT_SpeedHL 0x39
00057
00058 #ifdef NEW_KMOT_FIRMWARE
00059 #define MOT_SpeedLH 0x3A
00060 #define MOT_SpeedHH 0x3B
00061
00062 #define MOT_TorqueL 0x5A
00063 #define MOT_TorqueH 0x5B
00064
00065 #else
00066 #define MOT_TorqueL 0x3A
00067 #define MOT_TorqueH 0x3B
00068 #endif
00069
00070 #define MOT_TorqueBiasL 0x3C
00071 #define MOT_TorqueBiasH 0x3D
00072
00073 #define MOT_KpSpeedL 0x3E
00074 #define MOT_KpSpeedH 0x3F
00075
00076 #define MOT_KdSpeedL 0x40
00077 #define MOT_KdSpeedH 0x41
00078
00079 #define MOT_KiSpeedL 0x42
00080 #define MOT_KiSpeedH 0x43
00081
00082 #define MOT_SampleTimeL 0x44
00083 #define MOT_SampleTimeH 0x45
00084
00085 #define MOT_BlockedTime 0x46
00086 #define MOT_IntGenPeriod 0x47
00087 #define MOT_IntGenAmplitude 0x48
00088 #define MOT_IntGenOffset 0x49
00089
00090 #define MOT_SoftStopMinLL 0x4A
00091 #define MOT_SoftStopMinLH 0x4B
00092 #define MOT_SoftStopMinHL 0x4C
00093 #define MOT_SoftStopMinHH 0x4D
00094
00095 #define MOT_SoftStopMaxLL 0x4E
00096 #define MOT_SoftStopMaxLH 0x4F
00097 #define MOT_SoftStopMaxHL 0x50
00098 #define MOT_SoftStopMaxHH 0x51
00099
00100 #define MOT_Acceleration 0x52
00102 #define MOT_Unused 0x53
00103 #define MOT_StaticFriction 0x54
00105 #define MOT_HWCurrentLimit 0x55
00108 #define MOT_SWCurrentLimitL 0x56
00109 #define MOT_SWCurrentLimitH 0x57
00111 #define MOT_MinSampleTimeH 0x59
00112 #define MOT_MinSampleTimeL 0x58
00113
00114 #define MOT_PID_OUTH 0x5D
00115 #define MOT_PID_OUTL 0x5C
00116
00117 #define MOT_MinSpeedL 0x5E
00118 #define MOT_MinSpeedH 0x5F
00119
00120 #define MOT_NearTargetMargin 0x60
00121
00122 #define MOT_KpPosL 0x61
00123 #define MOT_KpPosH 0x62
00124
00125 #define MOT_KdPosL 0x63
00126 #define MOT_KdPosH 0x64
00127
00128 #define MOT_KiPosL 0x65
00129 #define MOT_KiPosH 0x66
00130
00131 #define MOT_KpTorqueL 0x67
00132 #define MOT_KpTorqueH 0x68
00133
00134 #define MOT_KdTorqueL 0x69
00135 #define MOT_KdTorqueH 0x6A
00136
00137 #define MOT_KiTorqueL 0x6B
00138 #define MOT_KiTorqueH 0x6C
00139
00140 #define MOT_MaxSpeedL 0x6D
00141 #define MOT_MaxSpeedH 0x6E
00142
00143 #define MOT_Prescale 0x70
00144
00145 #define MOT_SpeedMultL 0x71
00146 #define MOT_SpeedMultH 0x72
00147
00148
00149 #define MOT_VelocityPrescaler 0x73
00150
00151
00152
00153
00154
00155 enum kMotMode
00156 {
00157 kMotModeIdle = 0 ,
00158 kMotModeNormal = 1 ,
00159 kMotModeStopMotor = 2 ,
00160 kMotModeSleep = 3 ,
00161 kMotModeReset = 4 ,
00162 kMotModeSaveE2PROM = 5 ,
00163 kMotModeSearchLimit = 6
00164 };
00165
00166
00167
00168
00169 enum kMotRegType
00170 {
00171 kMotRegOpenLoop = 0 ,
00172 kMotRegPos = 1 ,
00173 kMotRegPosProfile = 2 ,
00174 kMotRegSpeed = 3 ,
00175 kMotRegSpeedProfile = 4 ,
00176 kMotRegCurrent = 5 ,
00177 kMotRegTorque = 5 ,
00178 kMotRegZeroFriction = 6
00179 };
00180
00181
00182
00183
00184 enum kMotMesureType
00185 {
00186 kMotMesPos = kMotRegPos ,
00187 kMotMesSpeed = kMotRegSpeed ,
00188 kMotMesCurrent = kMotRegCurrent ,
00189 kMotMesTorque = kMotRegTorque
00190 };
00191
00192
00193
00194
00195 enum kMotPointSource
00196 {
00197 kMotPtSrcExtI2C = 0 ,
00198 kMotPtSrcExtAnalog = 1 ,
00199 kMotPtSrcSquare = 2 ,
00200 kMotPtSrcTriangle = 3 ,
00201 kMotPtSrcSinus = 4
00202 };
00203
00204
00205
00206
00207 enum kMotHWOptions
00208 {
00209 kMotHWOptIdle = (0<<0) ,
00210 kMotHWOptNormal = (1<<0) ,
00211 kMotHWOptAnSetPtInEn = (1<<1) ,
00212 kMotHWOptLed = (1<<2) ,
00213 kMotHWOptEncRes4x = (0<<3) ,
00214 kMotHWOptEncRes1x = (1<<3) ,
00215 kMotHWOptTorqueInv = (1<<4) ,
00216 kMotHWOptDriverOpt1 = (1<<5) ,
00217 kMotHWOptDriverOpt2 = (1<<6) ,
00218 kMotHWOptDriverOpt3 = (1<<7)
00219 };
00220
00221
00222
00223
00224 enum kMotSWOptions
00225 {
00226 kMotSWOptSepD = (1<<0) ,
00227 kMotSWOptWindup = (1<<1) ,
00228 kMotSWOptSoftStopMin = (1<<2) ,
00229 kMotSWOptSoftStopMax = (1<<3) ,
00230 kMotSWOptSoftStopErr = (1<<4) ,
00231 kMotSWOptStopMotorBlk = (1<<5) ,
00232 kMotSWOptCurrentCtrl = (1<<6) ,
00233 kMotSWOptDirectionInv = (1<<7)
00234 };
00235
00236
00237
00238
00239 enum kMotErrorFlags
00240 {
00241 kMotErrorSampleTimeTooSmall = (1<<0) ,
00242 kMotErrorWDTOverflow = (1<<1) ,
00243 kMotErrorBrownOut = (1<<2) ,
00244 kMotErrorSoftStopMotor = (1<<3) ,
00245 kMotErrorMotorBlocked = (1<<4) ,
00246 kMotErrorPosOutOfRange = (1<<5) ,
00247 kMotErrorSpeedOutOfRange = (1<<6) ,
00248 kMotErrorTorqueOutOfRange = (1<<7)
00249 };
00250
00251
00252
00253
00254 enum kMotStatusFlags
00255 {
00256 kMotStatusMoveDet = (1<<0) ,
00257 kMotStatusDir = (1<<1) ,
00258 kMotStatusOnSetPt = (1<<2) ,
00259 kMotStatusNearSetPt = (1<<3) ,
00260 kMotStatusCmdSat = (1<<4) ,
00261 kMotStatusWindup = (1<<5) ,
00262 kMotStatusSoftCurCtrl = (1<<6) ,
00263 kMotStatusSoftStop = (1<<7)
00264 };
00265
00266
00267
00268
00269
00270 extern void kmot_GetFWVersion( knet_dev_t * dev ,
00271 unsigned int * version );
00272
00273 extern void kmot_GetStatus( knet_dev_t * dev ,
00274 unsigned char * status ,
00275 unsigned char * error );
00276
00277 extern void kmot_GetOptions( knet_dev_t * dev ,
00278 unsigned char * software,
00279 unsigned char * hardware);
00280
00281 extern void kmot_ConfigurePID( knet_dev_t * dev ,
00282 int regtype ,
00283 int16_t Kp ,
00284 int16_t Kd ,
00285 int16_t Ki );
00286
00287 extern void kmot_SetPointSource( knet_dev_t * dev ,
00288 int regtype ,
00289 int wavetype ,
00290 int period ,
00291 int amplitude ,
00292 int offset );
00293
00294 extern long kmot_GetMeasure( knet_dev_t * dev ,
00295 int regtype );
00296
00297 extern void kmot_SetPosition( knet_dev_t * dev ,
00298 long position );
00299
00300 extern void kmot_SetSpeedProfile( knet_dev_t * dev ,
00301 int maxspeed ,
00302 int acceleration );
00303
00304 extern void kmot_SetLimits( knet_dev_t * dev ,
00305 int regtype ,
00306 long softStopMin ,
00307 long softStopMax );
00308
00309 extern int kmot_SearchLimits( knet_dev_t * dev ,
00310 int8_t blockedTime ,
00311 int32_t setPoint ,
00312 int32_t * minpos ,
00313 int32_t * maxpos ,
00314 unsigned int timeout );
00315
00316 extern void kmot_SetOptions( knet_dev_t * dev ,
00317 int hwOptions ,
00318 int swOptions );
00319
00320 extern void kmot_SetPoint( knet_dev_t * dev ,
00321 int regtype ,
00322 long setPoint );
00323
00324 extern void kmot_SaveConfig( knet_dev_t * dev );
00325
00326 extern void kmot_ResetError( knet_dev_t * dev );
00327
00328 extern void kmot_SetBlockedTime( knet_dev_t * dev , int time );
00329
00330 extern void kmot_SetSampleTime( knet_dev_t * dev , int sample );
00331
00332 extern void kmot_SetFilterOrder( knet_dev_t * dev, int order);
00333
00334 extern void kmot_SetMode( knet_dev_t * dev , int mode );
00335
00336 extern void kmot_SetMargin( knet_dev_t * dev , int margin );
00337
00338 extern void kmot_GetSpeedMultiplier( knet_dev_t * dev , unsigned short *mult );
00339
00340 extern void kmot_SetSpeedMultiplier( knet_dev_t * dev , int mode );
00341
00342 extern void kmot_SetPrescale( knet_dev_t * dev , int mode );
00343
00344 extern void kmot_SetVelocityPrescale( knet_dev_t * dev, int mode );
00345
00346 #ifdef __cplusplus
00347 }
00348 #endif
00349
00350 #endif