Jump to content
OMRON Forums

Guilherme Semissatto

Members
  • Posts

    5
  • Joined

  • Last visited

Everything posted by Guilherme Semissatto

  1. Is it possible to select which motor will be affected when the Power PMAC receives an "abort all" input? I'm working in a system that has an air pressure bearing with a reed switch (Normally Closed contact). When the pressure goes down I must kill 1 of the 8 axes which the PowerPMAC is driving. The others must be able to move. I thought about a PLC program polling a Digital Input, but I'm concerned about IEC machine safety standards, this is why I prefer to handle the Abort Pin. So what I'm choosing is a .pmh file which set tup 2 coordinates systems. One CS which will be affected by abort pin and the other one not affected as below: -------------------------------------------------------------------------------------- global_definition.pmh undefine all //setup CS1 &1 #1 -> X //setup CS2 &2 #2 -> X #3 -> A #4 -> XX #5 -> YY #6 -> ZZ #7 -> U #8 -> V Sys.pAbortAll = PowerBrick[0].GpioData[0].a Sys.AbortAllBit = 31 Sys.AbortAllLimit = 5 Coord[1].AbortAllMode = 1 // CS1 motors killed after abortAll Coord[2].AbortAllMode = 3 // CS2 dont affected by abortall -------------------------------------------------------------------------------------- Is there a better way to do this?
  2. Dear steve.milici, I saw the 'STO' section of the "Power Brick LV User Manual" and I got confused in 3 points. 1) Is the 'STO feedback' mentioned the same as 'STO Out (pin #1)'? 2) When you say "It is suggested to wire the STO feedback to input#1 of the Power Brick LV". Is the input#1 the Digital Input pin1 'X15: D-sub DC-37F'? ____ 3) (Assumed STO feedback the same as STO Out) It seems the 'recovering from the STO' suggested PLC code has mistakes in the conditionals sentences OPEN PLC STOResetPLC LOCAL Mtr1PrevI2TSet; IF (Input1) // I think this should be 'IF (~(input1))' once STO Out has 0V in failured condition // STO ENGAGED? { IF (Motor[1].I2tSum > 0) // I2T CHARGED? { KILL 1 Mtr1PrevI2TSet = Motor[1].I2TSet DO {Motor[1].I2tSet = 0} WHILE (Motor[1].I2tSum > 0) Motor[1].I2TSet = Mtr1PrevI2TSet } WHILE(Input1){} // Same here } Thanks in advance, Guilherme
  3. Hi @curtwilson Thank for your answer, it was really helpful Now I can drive the brushless. 0. I set the PowerBrick.EncClockDiv = 0 1. Skipped the open loop test 2. Did a Manual Phasing with IbBias 3. Finally, I tuned the servo with very low gains due to high encoder resolution PMAC software is handling the rollover of the encoder counter very well, I don't see any problem in commutation as I expected before. --- At this time, I'm trying to fine tune the motor With an x1.000 interpolation @4MHz digital encoder interface I could achieve 2 counts (0.26 urad - peak to peak) in-position stability But with an x10.000 interpolation @50MHz digital encoder interface the max in-position stability I could achieve was 50 counts (6.7 urad - peak to peak) in-position stability, with the higher interpolation the expected in-position stability is 0.026 urad. Do you think the higher encoder clock frequency (which the hardware doesn't sample robustly) is causing this behavior?
  4. I think the cause of the problem is the high encoder resolution. The encoder has 236.000.000 counts/rev, it means that the PowerBrick[0].Chan[0].ServoCapt will overflow a lot of time during the operation. PowerBrick[0].Chan[0].ServoCapt has 256 times the encoder resolution, i.e., 236.000.000*256 = 60416000000 counts/rev! Thus, 32 bits aren't enough (log2(60416000000) = 35.8), so I can see many overflows during the commutation. Plotting the Motor[].PhasePos I could see just 0 and 2048 (saturated values). How can I handle this? Thanks
  5. Hello all I'm trying to drive a PMSM rotary stage, but the open loop test fails. The motor is an Aerotech Motor Type: S-180-69-A - Rated Speed: 500 rpm - Inductance 1.7mH - Resistance 4.4Ohm - 18 poles (9 pairs) - Continuous Current Stall: 5.1 Apk. The encoder is a Tonic Renishaw 23.600 Line wave with an x10.000 digital interface which gives 236.000.000 counts/rev. I have been following step-by-step the Manual Brushless setup of the PowerBrick LV User Manual. For while I could successfully do: - current loop step (please see attachment) - setup and read the encoder. (I manually turned 360° the motor and I could see the 236.000.000 counts on Motor[].ActPos) - Stepper Phasing (After the Stepper phasing the Motor[].PhaseFound = True) - Hall phasing Even with the steps above I can't the see sawtooth expected wave (please see attachment the open loop test result). It seems the motor locks up to a phase. I have tried all the manuals troubleshooting tips, but I can't see the sawtooth anyway. The Motor[].PhasePosSf is configured as below --- GLOBAL NoOfPolePairsMtr1 = 9; // Motor1 Number of Pole Pairs – User Input GLOBAL CountsPerRevolutionMtr1 = 236000000; // Motor1 Encoder counts per Revolution - User input Motor[1].pPhaseEnc = PowerBrick[0].Chan[0].PhaseCapt.a Motor[1].PhaseEncLeftshift = 0 Motor[1].PhaseEncRightshift = 0 Motor[1].PhasePosSf = 2048 * NoOfPolePairsMtr1 / (256 * CountsPerRevolutionMtr1) --- Attached is all the project files and the scripts used (.pmh files, StepperPhasingPLC, HallPhasingPLC, etc.) What may am doing wrong? Thanks in advance DCM Brushless 03 december 18.zip
×
×
  • Create New...