Jump to content
OMRON Forums

Eric Hotchkiss

Omron
  • Posts

    558
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Eric Hotchkiss

  1. I'm not familiar with TCP-NODELAY. Are you trying to implement telnet, or is this something more?
  2. What are your IDE and firmware versions? What is your PMAC type? They should be visible on the top of the IDE. These can be compared to the "Installation compatibility chart" in the IDE manual. The manual can be found under the help menu.
  3. I personally have only done master to master communication with the ECX-EC EtherCAT Bridge, by esd electronics. This is what is shown in the Application Note I posted. The EtherCAT settings are very generic. It should work for other devices, I just haven't had a chance to try them.
  4. I am not familiar with this particular document, but it is about a option that is not currently released for most form factors called PMAC slave. I think of using a bridge to connect two PMAC networks as master to master communication. Here is an application note showing the setup and use of such a device. We have not tested this application note with the EL6695 and cannot comment on whether that would be acceptable hardware for this application. Connecting Multiple Power PMACs over EtherCAT.pdf
  5. If you still need an IDE version this old, please request it from your local Omron representative. More recent versions are available here.
  6. This option is now available under "File -> Open -> From Power PMAC". It looks like we need to update our documentation a bit. I believe this will just save the project to your hard drive and you will then have to open it.
  7. The displayed position is Motor[x].ActPos-Motor[x].HomePos
  8. I'm glad you found the file. Would it be possible to link to the web location of the ESI file in case it is updated?
  9. Here is the manual. https://assets.omron.com/m/7e2e54414e64a1d1/original/ACC-14E-Manual.pdf You can filter the Omron Automation website search for "Delta Tau Legacy" to find other Legacy manuals. https://automation.omron.com/en/ca/search?filters=tags==delta-tau-legacy&pageSize=10
  10. I responded to this question through a different channel, but I wanted to just give a little information here. The Servo.OutDb settings were intended to be used with piezo electric motors. The following settings can sometimes help to reach the desired position faster for step and settle type applications. Motor[x].Servo.BreakPosErr = 3 * Motor[x].InPosBand // Adjust this, I believe 3 is a decent starting point. Motor[x].Servo.Kbreak = 2 // Adjust this, I believe 2-3 are typical values. Make sure to update Kp with it. Motor[x].Servo.Kp = Old Value / Motor[x].Servo.Kbreak Motor[x].Servo.OutDbOff = 0 Motor[x].Servo.OutDbOn = 0 Motor[x].Servo.OutDbSeed = 0 Alternatively, using Motor[x].Servo.BreakPosErr, with Motor[x].Servo.Kbreak=0 will prevent most servo output in this region, leaving only velocity feedback (damping) gain in affect while the motor's trajectory is stationary.
  11. I believe I shared this file with your local Omron representative last week. Do you still need anything?
  12. This forum section is meant for legacy Delta Tau Products, mostly Pre-Turbo PMAC. For that product, please reach out to your local Omron Representative.
  13. Option 1 When you edit the values in the IDE a linux file with the correct settings is created, but it will not survive reboot. You can move this file to the saved location to make changes permeant. This can be done from the IDE terminal. System mount -o remount,rw System cp /.readonly/etc/ssh/ssh_config /.readonly/etc/ssh/ssh_config_backup System cp /etc/ssh/ssh_config /.readonly/etc/ssh/ssh_config System mount -o remount,ro / Option 2 Add just the alive interval. System mount –o remount,rw / System sed -ie '/^Host */a ClientAliveInterval 0' /.readonly/etc/ssh/ssh_config System mount –o remount,ro / Option 3 Add all needed lines to the file. This can be done through Putty. mount -o remount,rw nano /.readonly/etc/ssh/ssh_config [Move to end of file with arrow keys] [Paste with right click] [Ctrl-X, Y, ENTER] mount -o remount,ro / These are the lines to paste. Change X to an integer or leave it out. ClientAliveCountMax X ClientAliveInterval 0
  14. The CaptCompISR should be as short as is possible. The best method would be to set a flag (such as a script global variable), that can be reacted to by a background Script/C PLC. Here is an example Script PLC. GLOBAL MyGatherFlag OPEN PLC StartGatherPLC LOCAL MyGatherLatch IF(MyGatherFlag == 1) { IF(MyGatherLatch == 0) { Gather.Enable = 2 MyGatherLatch = 1 } } ELSE { IF(MyGatherLatch == 1) { Gather.Enable = 0 MyGatherLatch = 0 } } CLOSE
  15. Yes we do have a plan, however it will most likely not be addressed particularly soon.
  16. If the issue with header files in the includes folder was modularity, then it would still be possible to create some level of modularity by creating an include file that includes other includes files and using a helpful naming convention. I've made a feature request with the software team for subfolders in the Include folder. I can't comment on whether it will be accepted.
  17. Point-to-point tuning moves will be available with firmware 2.7 or higher when it is released.
  18. If a motor's servo algorithm is enabled, PMAC will write to certain registers for that motor every servo cycle. You will not be able to write to these registers directly. Fortunately, PMAC has several ways to inject a little bit extra into a few of them for flexibility. In your case the easiest method will be to enable the motor at a position of 0 #nJ=0 and write your desired position to Motor[n].MasterPos. Note that Motor[x].MasterMaxSpeed and Motor[x].MasterMaxAccel can be used to smooth this trajectory. If you are already using Motor[x].pMasterEnc for position following this may interfere. This method is better suited for cases where you are creating a smooth trajectory and calculating a desired position every servo cycle. A custom servo routine for motor 0 would be a good location if it is not computationally intensive. It is also possible to jog motors or run motion programs from C code. This allows you to take advantage of PMAC's trajectory generation.
  19. Only the functions added through the "Add a New Function" button can be used for user servo/phase routines. You can call other functions from inside these functions. However, I do not believe libraries can be called from usercode.c. You may have to create a header file in the "Include" folder and include it.
  20. You can disable the servo algorithm by setting Motor[x].ServoCtrl=0. While this may be okay for auxiliary functions written in custom C functions, It is strongly discouraged for motors. This setting would prevent encoder tracking and safety checks. A better solution would be for the servo routine to behave differently when the motor not in closed loop. Our simple servo routine example returns 0 servo effort in this case. double MyServo(struct MotorData *Mptr) { double ServoEffort; if (Mptr->ClosedLoop && Mptr->AmpEna) { ServoEffort = Mptr->Servo.Kp * Mptr->PosError - Mptr->Servo.Kvfb * Mptr->ActVel; Mptr->Servo.Integrator += Mptr->PosError * Mptr->Servo.Ki; ServoEffort += Mptr->Servo.Integrator; return ServoEffort; } else { Mptr->Servo.Integrator = 0.0; return 0; } }
  21. I believe that the act of setting Gather.Enable from the script environment applies the settings in Gather. variables. Setting Gather.Enable to 2 or 3 from C code after changing these settings, but before changing the value in the script environment, will crash PMAC. The "Command" command can be used from C to run code in the script environment after changing these settings. Command("Gather.Enable=2");
  22. The following user servo routine will run one time (if applied to motor 0) and send a message on buffer 1. double MyServo(struct MotorData *Mptr) { char MyCharArray[100]; MyCharArray[0]='H'; Send(1,&MyCharArray); pshm->Motor[0].ServoCtrl = 0; return 0; } Malloc should not be included in usercode.c. Any time malloc is used, free must also be used to free up that memory. free(servoData);
  23. The servo algorithm is started by setting Motor[x].ServoCtrl=1. I would not recommend stopping this by setting the value to 0, as encoder position would no longer be tracked. If you want to stop some function of your user servo routine when the motor is not in closed loop or amplifier enabled, I would suggest an if statement looking at Mptr->ClosedLoop or Mptr->AmpEna. Is this servo algorithm attached to a physical motor with an encoder?
  24. You can start motor 1's servo algorithm with "pshm->Motor[1].ServoCtrl = 1;". This would not put the motor into closed loop without additional commands. What is the goal of calling the routine?
  25. It sounds like you've made a backup of the current machine using our "Backup Restore tool". You could also use the "Device Imaging" tool to make a full backup of your PMAC's flash memory (which includes the project). To recover the project from PMAC, you should be able to navigate to "File" -> "Upload Project from Power PMAC" and avoid messing with a tar file. For a software manual matching your IDE version, navigate to "Help" -> "Power PMAC IDE Manual". The short answer is add the pointers to a header file within "PMAC Script Language" -> "Global Includes". Right click the project/solution name to build and download all (or just download). If the changes don't work you can revert back with "$$$", if they do you can issue "save" to keep them on the PMAC. Make sure you have a good backup before issuing save.
×
×
  • Create New...