Jump to content
OMRON Forums

Eric Hotchkiss

Omron
  • Posts

    558
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Eric Hotchkiss

  1. SPI requires 3 signal pairs where most other serial options only require 2. This means connectors on some products do not have enough pins to support it.
  2. It should be possible to set up an ethernet pendant, but it would not be easy. Using the handwheel on an encoder port will probably be much easier to setup. Is there an EtherCAT pendant you can use?
  3. Are you able to build and download a new/blank project?
  4. SPI is not available in the Power Brick. It is available on a UMAC with an ACC-24E3.
  5. This issue was solved over email. noLookAheadSupression has a default value of false, when it is changed to true there will be an issue with lookahead. This issue can be corrected by changing the jog move commands used in PLCs on PMAC from native jog commands to command quote jog commands. Examples are shown below. Original Commands -> New Commands Jog+1 -> Cmd “#1j+” Jog/1,2,3 -> Cmd “#1..3j/” Jogret1,2,3 -> Cmd “#1..3j=”
  6. For OutData, the pointer must be declared as an int. int *OutDataPtr; OutDataPtr = pshm->CamTable[0].OutData + OffsetTblSHM; *OutDataPtr = (int) pshm->P[0]; *(OutDataPtr+1) = (int) pshm->P[1];
  7. Lathe capability is built into the default project. Just getting the standard project and selecting the Lathe settings in the configuration.ini file should work.
  8. Going forward, users are recommended to reach out to their respective Omron Tech Support representatives in order to obtain the C API help files. I am also attaching them to this comment. PowerPMACHelp.zip
  9. Using Python with the Power PMAC is not officially supported. You could use Python to simulate mouse clicks and button pushes, but there is no API that would allow it to control the IDE natively. You could have a Python script communicate to PMAC over GPASCII to do things like run a PLC once the project is downloaded.
  10. CamTable[m].OutData is used for enabling GPIO based on motor position. If you bring the motor to a position of CamTable[m].X0 with the camtable properly enabled, then... The location specified by CamTable[m].pOut will be set to CamTable[m].OutData[0] CamTable[m].PosOffset/Motor[x].CompDesPos will be set to CamTable[m].PosData[0]
  11. You can use numbered L-Variables like L0 or or named local variables for looping over Motor[index]. Looping over global variables arrays works with either. Ldata.motor can be used to specify a single motor jog commands that don't otherwise specify a number go to. It would probably be clearer to include the motor number in the jog commands (even if as a loop variable).
  12. I would not suggest recording this position to find the zero position after turning the machine back on. If that is desired, do a homing search more or get an absolute encoder. You could save the value Motor[x].AbsPos-Motor[x].HomePos (or Motor[x].DesPos-Motor[x].HomePos) so that you can go back there after homing. If you set Motor[1].ProgJogPos=This value, then you will be able to go to that position with "#1J=*" in the terminal or "Jogret1=*" in programs. If you add Motor[1].ProgJogPos (or a global variable name) to pp_custom_save.tpl (within the configuration folder), then it can be saved and recovered. To save: "fsave" To load: "fload"
  13. I was just using "pshm->P[0]" as a placeholder so I could edit the value and not have to re-compile. You can also use C-Variables or literal numbers.
  14. The easiest way would be to add a call to ppnc_gcodes.pmc . For example, this could be added before the final close if MyVar is already a global variable. I'm not sure what G-Code number to suggest or if it would be better as M-Code. //G500 CfromScript n500000: MyVar = CfromScript(1,2,3,4,5,6,7) return
  15. This was submitted as bug ODTSIT-113.
  16. open loop percent times max dac Just to be clear, the size of the dac output is the percent from the open loop test times Motor[x].MaxDac, so if you want to go the route of finding a value that barely moves the motor. Motor[1].Servo.Ksff = (Open Loop Percent) * Motor[x].MaxDac - Motor[1].Servo.Kfff
  17. You might try using the open loop test with a single iteration to look for the smallest value that makes the motor moves. This can be taken as the sum of Motor[1].Servo.Kfff and Motor[1].Servo.Ksff . If PMAC is sending an analog signal to the amplifier, you would want to make sure the DAC bias is calibrated first. Another option would be to try Parabolic or point to point tuning moves and look for low initial following error. Point to point tuning moves in the newer IDE versions are jog like moves. In older IDE versions they may be replaced with trapezoidal and S-Curve tuning moves.
  18. I haven't used them, but I would try parabolic or point to point tune moves. Does your system have stiction?
  19. The following code worked to change the first 2 table entries for me with either a 1D or 2D compensation table. I am using firmware 2.6.0.1 and IDE 4.5.1.3 on a UMAC 1040 CPU, but I would expect it to work the same on any Power PMAC. float *CompDataPtr; CompDataPtr = pshm->CompTable[1].Data + OffsetTblSHM; *CompDataPtr = pshm->P[0]; *(CompDataPtr+1) = pshm->P[1]; I'm not sure why this isn't working for you. I tried writing to values past the end of the table, but I can't get a segmentation fault. Can you try code that manual writes to the same location as the first couple iterations of that loop?
  20. If the PWM Frequency is set too high, it could lead to an amplifier overcurrent fault (C on 7 segment display) or overheating. What are your Phase and PWM clock frequencies?
  21. The first line should just switch to rapid move, but not move anything. The second line should move X either to 0.1 or by 0.1. You might want to add G90 or G91 to be sure. The third line is just end of program. Are you sure X doesn't move? What response do you get if you type the following into the IDE terminal? #1-> That's normal and expected.
  22. G00 should just go into rapid mode, not actually move anything. What are the other 2 lines?
  23. To read the position from the encoder table directly, multiply the following two structure elements. As long as the ECT entry does not integrate, nothing extra is needed. EncTable[4].PrevEnc*EncTable[4].ScaleFactor It would probably be preferable to set up a "motor" to read the encoder conversion table entry so it can be added to the position window. Motor[x].pEnc=EncTable[4].a Motor[x].pEnc2=EncTable[4].a Motor[x].ServoCtrl=1 Optionally you can set the following variables for unit labels in the position window or scaling. Motor[x].PosSf Motor[x].Pos2Sf Motor[x].PosUnit Motor[x].Pos2Unit
  24. The Gate3 inside the Power Brick will send an above 30 kHz signal to the amplifier, which may have issues due to the power transistors. I am assuming you have already set BrickLV.Chan[j].TwoPhaseMode = 1 and then ran the Power On Reset PLC to apply it. I don't know of any tricks required for tuning current loop on stepper motors (Brushed need a couple). It may have to do with your resistance/inductance. If you use the equations in the Power Brick LV manual to calculate minimum PWM frequency for the motor, what do you get? Are you using automatic or interactive current loop tuning? What goes wrong with it?
  25. This is described in the latest version of the Power PMAC SRM and Users Manual. You can get them from your local Omron technical support or download it from the US website available here. https://assets.omron.com/m/76e3f5e50c46e0e9/original/Power-PMAC-Software-Reference-Manual.pdf https://assets.omron.com/m/2c1a63d391d6bfa3/original/Power-PMAC-Users-Manual.pdf Basically we add Motor[x].Servo.Ksff to the servo loop output for Motor[x].Servo.SffCycles servo cycles to break free from static friction.
×
×
  • Create New...