⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ampfile.cpp

📁 美国COPLEY驱动器,程序开发工具之一.
💻 CPP
📖 第 1 页 / 共 3 页
字号:

	 case 0x05B:
	    err = StrToInt32( seg[segIndex], cfg.motor.loadEncRes );
	    break;

	 case 0x05C:
	    err = StrToInt16( seg[segIndex], i16 ); 
	    cfg.motor.loadEncReverse = (i16!=0);
	    break;

	 case 0x05D:
	    err = StrToInt16( seg[segIndex], cfg.motor.loadEncType );
	    break;

	 case 0x05f: 
	    err = StrToFilter( seg[segIndex], cfg.vloopOutFltr );
	    break;

	 case 0x060:
	    if( !strcmp( seg[segIndex], "Incremental"  ) ) cfg.motor.encType = 0;
	    else if( !strcmp( seg[segIndex], "None"    ) ) cfg.motor.encType = 1;
	    else if( !strcmp( seg[segIndex], "Analog"  ) ) cfg.motor.encType = 2;
	    else if( !strcmp( seg[segIndex], "Absolute") ) cfg.motor.encType = 3;
	    else
	       err = StrToInt16( seg[segIndex], cfg.motor.encType );
	    break;

	 case 0x061: err = StrToInt16( seg[segIndex], cfg.motor.encUnits    ); break;
	 case 0x062: err = StrToInt32( seg[segIndex], cfg.motor.ctsPerRev   ); break;
	 case 0x063: err = StrToInt16( seg[segIndex], cfg.motor.encRes      ); break;
	 case 0x064: err = StrToInt32( seg[segIndex], cfg.motor.eleDist     ); break;

	 case 0x065: 
	    err = StrToInt16( seg[segIndex], i16 ); 
	    cfg.motor.encReverse = (i16!=0); 
	    break; 

	 case 0x066:
	    err = StrToInt32( seg[segIndex], cfg.motor.ndxDist );
	    break;

	 case 0x067:
	    err = StrToInt16( seg[segIndex], cfg.motor.encShift );
	    break;

	 case 0x06A:
	    err = StrToInt32( seg[segIndex], cfg.cLoop.slope );
	    break;

	 case 0x06B:
	    err = StrToFilter( seg[segIndex], cfg.vloopCmdFltr );
	    break;

	 case 0x06e:
	    err = StrToUInt16( seg[segIndex], cfg.motor.resolverCycles );
	    break;

	 case 0x06f:
	    err = StrToInt16( seg[segIndex], i16 ); 
	    cfg.pwmMode = (AMP_PWM_MODE)i16; 
	    break;

	 case 0x070:
	    err = StrToOutCfg( seg[segIndex], cfg.io.outCfg[0], cfg.io.outMask[0], cfg.io.outMask1[0]  );
	    break;

	 case 0x071:
	    err = StrToOutCfg( seg[segIndex], cfg.io.outCfg[1], cfg.io.outMask[1], cfg.io.outMask1[1]  );
	    break;

	 case 0x072:
	    err = StrToOutCfg( seg[segIndex], cfg.io.outCfg[2], cfg.io.outMask[2], cfg.io.outMask1[2]  );
	    break;

	 case 0x073: 
	    err = StrToOutCfg( seg[segIndex], cfg.io.outCfg[3], cfg.io.outMask[3], cfg.io.outMask1[3]  );
	    break;

	 case 0x078:
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[ 0] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x079:
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[ 1] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x07a: 
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[ 2] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x07b:
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[ 3] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x07c: 
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[ 4] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x07d:
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[ 5] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x07e:
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[ 6] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x07f: 
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[ 7] = (INPUT_PIN_CONFIG)i16;
	    break;

	 // This group of parameters are in the ccx file
	 // for reference only.  They describe read-only
	 // parameters of the amplifier.
	 case 0x80: case 0x81: case 0x82: case 0x83:
	 case 0x84: case 0x85: case 0x86: case 0x87:
	 case 0x88: case 0x89: case 0x8A: case 0x8B:
	 case 0x8C: case 0x8D: case 0x8E: case 0xAD:
	    break;

	 case 0x092: 
	    strncpy( cfg.name, seg[segIndex], COPLEY_MAX_STRING );
	    break;

	 case 0x093: 
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.CME_Config[0] = (char)(i16>>8);
	    cfg.CME_Config[1] = (char)(i16);
	    break;

	 case 0x098: err = StrToInt16( seg[segIndex], cfg.fgen.cfg  ); break;
	 case 0x099: err = StrToInt16( seg[segIndex], cfg.fgen.freq ); break;
	 case 0x09a: err = StrToInt32( seg[segIndex], cfg.fgen.amp  ); break;
	 case 0x09b: err = StrToInt16( seg[segIndex], cfg.fgen.duty ); break;
	 case 0x0A5: err = StrToUInt16( seg[segIndex], cfg.io.inPullUpCfg ); break;

	 case 0x0A7: 
	    err = StrToInt32( seg[segIndex], i32 ); 
	    cfg.faultMask = (AMP_FAULT)i32; 
	    break;

	 case 0x0A8: err = StrToInt16 ( seg[segIndex], cfg.pwmIn.cfg    ); break;
	 case 0x0A9: err = StrToInt32 ( seg[segIndex], cfg.pwmIn.scale  ); break;
	 case 0x0Ae: err = StrToInt16 ( seg[segIndex], cfg.cLoop.offset ); break;
	 case 0x0Af: err = StrToUInt32( seg[segIndex], cfg.options      ); break;
	 case 0x0B1: err = StrToInt16 ( seg[segIndex], cfg.stepRate     ); break;

	 case 0x0B2: 
	    err = StrToInt16( seg[segIndex], i16 ); 
	    cfg.phaseMode = (AMP_PHASE_MODE)i16; 
	    break;

	 case 0x0B6:
	    err = StrToInt16( seg[segIndex], cfg.pwmIn.freq ); 
	    break;

	 case 0x0B8:
	    StrToLoadPos( seg[segIndex], cfg.limit.pos );
	    break;

	 case 0x0B9:
	    StrToLoadPos( seg[segIndex], cfg.limit.neg );
	    break;

	 case 0x0BA:
	    StrToLoadPos( seg[segIndex], cfg.window.trackErr );
	    break;

	 case 0x0BB:
	    StrToLoadPos( seg[segIndex], cfg.window.trackWarn );
	    break;

	 case 0x0BC:
	    StrToLoadPos( seg[segIndex], cfg.window.settlingWin );
	    break;

	 case 0x0BD: 
	    err = StrToUInt16( seg[segIndex], cfg.window.settlingTime ); 
	    break;

	 case 0x0BE:
	    StrToLoadAcc( seg[segIndex], cfg.limit.accel );
	    break;

	 case 0x0BF:
	    err = StrToInt16( seg[segIndex], cfg.home.delay );
	    break;

	 case 0x0C1:
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.can.FromAmpFormat( i16 );
	    break;

	 case 0x0C2:
	    err = StrToUInt16( seg[segIndex], u16 );
	    cfg.home.method = HomeMethodConvert( u16 );
	    break;

	 case 0x0C3:
	    StrToLoadVel( seg[segIndex], cfg.home.velFast );
	    break;

	 case 0x0C4:
	    StrToLoadVel( seg[segIndex], cfg.home.velSlow );
	    break;

	 case 0x0C5:
	    StrToLoadAcc( seg[segIndex], cfg.home.accel );
	    break;

	 case 0x0C6:
	    StrToLoadPos( seg[segIndex], cfg.home.offset );
	    break;

	 case 0x0C7:
	    err = StrToInt16( seg[segIndex], cfg.home.current );
	    break;

	 case 0x0C8: 
	    // When setting the profile type over the CANopen interface
	    // we use an encoding that is consistent with DSP402.  Convert
	    // this here:
	    err = StrToInt16( seg[segIndex], i16 );
	    if( err ) break;

	    switch( i16 & 7 )
	    {
	       case 0: cfg.profile.type = PROFILE_TRAP;   break;
	       case 1: cfg.profile.type = PROFILE_SCURVE; break;
	       case 2: cfg.profile.type = PROFILE_VEL;    break;
	       case 3: cfg.profile.type = PROFILE_TRAP;   break;
	       default:
		       err = &AmpFileError::range;
		       break;
	    }
	    break;

	 case 0x0CA: StrToLoadPos( seg[segIndex], cfg.profile.pos   ); break;
	 case 0x0CB: StrToLoadVel( seg[segIndex], cfg.profile.vel   ); break;
	 case 0x0CC: StrToLoadAcc( seg[segIndex], cfg.profile.acc   ); break;
	 case 0x0CD: StrToLoadAcc( seg[segIndex], cfg.profile.dec   ); break;
	 case 0x0CE: StrToLoadJrk( seg[segIndex], cfg.profile.jrk   ); break;
	 case 0x0CF: StrToLoadAcc( seg[segIndex], cfg.profile.abort ); break;

	 case 0x0D0: 
	    err = StrToInt16( seg[segIndex], i16 ); 
	    cfg.io.inCfg[ 8] = (INPUT_PIN_CONFIG)i16; 
	    break;

	 case 0x0D1: 
	    err = StrToInt16( seg[segIndex], i16 ); 
	    cfg.io.inCfg[ 9] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x0D2:
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[10] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x0D3:
	    err = StrToInt16( seg[segIndex], i16 );
	    cfg.io.inCfg[11] = (INPUT_PIN_CONFIG)i16;
	    break;

	 case 0x0D8: 
	    err = StrToUInt16( seg[segIndex], cfg.regen.resistance ); 
	    break;

	 case 0x0D9: 
	    err = StrToUInt16( seg[segIndex], cfg.regen.contPower ); 
	    break;

	 case 0x0DA: 
	    err = StrToUInt16( seg[segIndex], cfg.regen.peakPower ); 
	    break;

	 case 0x0DB: 
	    err = StrToUInt16( seg[segIndex], cfg.regen.peakTime ); 
	    break;

	 case 0x0E1: 
	    strncpy( cfg.regen.model, seg[segIndex], COPLEY_MAX_STRING ); 
	    break;

	 case 0x0E3:
	    err = StrToInt16( seg[segIndex], cfg.pLoop.scale  );
	    break;

	 case 0x0E8: err = StrToUInt16( seg[segIndex], cfg.cLoop.stepHoldCurrent ); break;
	 case 0x0E9: err = StrToUInt16( seg[segIndex], cfg.cLoop.stepRun2HoldTime ); break;
	 case 0x0ED: err = StrToUInt16( seg[segIndex], cfg.cLoop.stepVolControlDelayTime ); break;

	 case 0x0F0: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 0] ); break;
	 case 0x0F1: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 1] ); break;
	 case 0x0F2: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 2] ); break;
	 case 0x0F3: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 3] ); break;
	 case 0x0F4: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 4] ); break;
	 case 0x0F5: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 5] ); break;
	 case 0x0F6: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 6] ); break;
	 case 0x0F7: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 7] ); break;
	 case 0x0F8: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 8] ); break;
	 case 0x0F9: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[ 9] ); break;
	 case 0x0FA: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[10] ); break;
	 case 0x0FB: err = StrToInt16( seg[segIndex], cfg.io.inDebounce[11] ); break;

	 default:
	    cml.Debug( "Unknown paramaeter in CCX file: 0x%02x\n", param );
	    break;
      }
   }

   fclose(fp);

   if( err ) return err;

   // The file was read in successfully.  Now, upload the configuration

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -