//the motor has 512*200*100 usteps per revolution (512 uystep/step, 200 steps/rev 1:100 gear) //the ssi-encoder has 2**18=262144 steps per revolution //calibration values such that 0 mdeg is the highest point (+5mm) and 180000mdeg = lowest point (-5mm) //#1: homeoffset: -20907.5928142 //#2: homeoffset: 102320.329068 //#3: homeoffset: 168946.772022 //#4: homeoffset: -87830.7554146 //#5: homeoffset: -47956.2759182 !encoder_ssi(enc=1,numBits=18,posSf=-5625./4096) !motor(mot=1,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=10,FatalFeLimit=1000,HomeOffset=65477.,FaultMode=0) !encoder_ssi(enc=2,numBits=18,posSf=-5625./4096) !motor(mot=2,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=10,FatalFeLimit=1000,HomeOffset=-154370.,FaultMode=0) !encoder_ssi(enc=3,numBits=18,posSf=-5625./4096) !motor(mot=3,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=10,FatalFeLimit=1000,HomeOffset=-5248.,FaultMode=0) !encoder_ssi(enc=4,numBits=18,posSf=-5625./4096) !motor(mot=4,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=10,FatalFeLimit=1000,HomeOffset=-46620.,FaultMode=0) !encoder_ssi(enc=5,numBits=18,posSf=-5625./4096) !motor(mot=5,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=10,FatalFeLimit=1000,HomeOffset=93168.,FaultMode=0) Motor[1].Servo.BreakPosErr=0 Motor[2].Servo.BreakPosErr=0 Motor[3].Servo.BreakPosErr=0 Motor[4].Servo.BreakPosErr=0 Motor[5].Servo.BreakPosErr=0 // PKP266D14BA2 1.4A 1.8deb/step // encoder: Renishaw: RL26BAT050B050A 26 bit, 50nm/enc_cnt //!encoder_sim(enc=6) //!motor(mot=6,dirCur=1400,JogSpeed=40,InPosBand=0,FatalFeLimit=1000,HomeOffset=0.) // #6j=102400 -> 1 rev //#6j=102400 == 1 rev == 102400 enc_cnt == 2000*1um //#6j=102400 steps == 1 rev == 2000*20 enc_cnt == 2000*1um //servoSf : motorusteps/user_units = 102400./2000 //posSf : user_units/encoder_steps = 0.05nm/1enc_cnt=1/20 //Open loop //!encoder_sim(enc=6,posSf=2000./102400,pos2Sf=0) //!encoder_biss(enc=6,tbl=16,mot=16,numBits=26,posSf=1./20) //!motor(mot=6,dirCur=1400,servoSf=102400./2000,invDir=False,JogSpeed=2,InPosBand=1,FatalFeLimit=1000,HomeOffset=0.) //Closed loop !encoder_sim(enc=6,tbl=16,mot=16,posSf=2000./102400) !encoder_biss(enc=6,numBits=26,posSf=1./20) !motor(mot=6,dirCur=1400,servoSf=102400./2000,invDir=False,JogSpeed=2,InPosBand=1,FatalFeLimit=1000,HomeOffset=1684405.) // break configuration // at the beginning brakes were handeled with 'custom motion', but this has been removed, // as it was possible to cofigure simple brake handling with the motor on a better approach // s.a. following implementation // ~/Documents/prj/SwissFEL/epics_ioc_modules/PBPG/cfg/motEnc-PBPG050.cfg //!holding_current template not needed. The brake stuff below turns off the amplifiers // brake // PowerBrick[0].GpioData[0].16 is GPIO-OUT[1] Motor[1].pBrakeOut = PowerBrick[0].GpioData[0].a // put proper reference to gpio here !!! Motor[1].BrakeOutBit = 16 Motor[1].BrakeOffDelay = 100 // delay in ms before the brake is released after motion was triggered Motor[1].BrakeOnDelay = 100 // delay in ms before the amplifier is disabled after motion has stopped Motor[2].pBrakeOut = PowerBrick[0].GpioData[0].a // put proper reference to gpio here !!! Motor[2].BrakeOutBit = 17 Motor[2].BrakeOffDelay = 100 // delay in ms before the brake is released after motion was triggered Motor[2].BrakeOnDelay = 100 // delay in ms before the amplifier is disabled after motion has stopped Motor[3].pBrakeOut = PowerBrick[0].GpioData[0].a // put proper reference to gpio here !!! Motor[3].BrakeOutBit = 18 Motor[3].BrakeOffDelay = 100 // delay in ms before the brake is released after motion was triggered Motor[3].BrakeOnDelay = 100 // delay in ms before the amplifier is disabled after motion has stopped Motor[4].pBrakeOut = PowerBrick[0].GpioData[0].a // put proper reference to gpio here !!! Motor[4].BrakeOutBit = 19 Motor[4].BrakeOffDelay = 100 // delay in ms before the brake is released after motion was triggered Motor[4].BrakeOnDelay = 100 // delay in ms before the amplifier is disabled after motion has stopped Motor[5].pBrakeOut = PowerBrick[0].GpioData[0].a // put proper reference to gpio here !!! Motor[5].BrakeOutBit = 20 Motor[5].BrakeOffDelay = 100 // delay in ms before the brake is released after motion was triggered Motor[5].BrakeOnDelay = 100 // delay in ms before the amplifier is disabled after motion has stopped