Jump to content
OMRON Forums

Eric Hotchkiss

Omron
  • Posts

    558
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Eric Hotchkiss

  1. It may be easier to write to user shared memory from C like this. You would still have to shift and mask. unsigned int *Udata; Udata = (unsigned int *)pushm; Udata[10]=99; Do you still get the issue with this method? We use it in the ISR, so I would be surprised if it had issues. In script, you can access the whole word easily like this M1 -> Sys.Udata[10] or a partial word by finding the address and then using it. L0= Sys.Udata[10].a -Sys.pushm L0 M1->U.USER:40.0.1
  2. There shouldn't be any relationship between the IDE and EtherCAT. You might want to try closing watch windows to see if any commands they are be sending could be the problem. What Power PMAC CPU is this? (460? 465? Dual Core ARM?)
  3. The "chirp" is a sinesweep. "Open Loop" transfer function is derived from closed loop response.
  4. Just in case anyone is still looking, this is the current IDE download location. https://automation.omron.com/en/us/products/family/PMAC%20IDE Any IDE 4 would work. I would recommend the latest. EC Engineer is a part of IDE 4. In IDE 3 it was a stand alone program included in the installer.
  5. The suggested settings worked for me. This works for True DAC models (1515). DACB+ in pin 2 AGND is pin 3 You can shift the value left 16 bits instead of multiplying if you prefer. CK3WAX[0].Chan[0].Pwm[1]=(Volts*32767/10)<<16
  6. If you use the clock_gettime function, you will have access to the time in two variables to get past these limitations. Here is a CfromScript example. double CfromScript(double cfrom_type, double arg2, double arg3, double arg4, double arg5, double arg6, double arg7, struct LocalData *Ldata) { double Nano_Time; struct timespec start; clock_gettime( CLOCK_REALTIME, &start); Nano_Time=start.tv_sec+start.tv_nsec/1000000000.0; return Nano_Time; }
  7. In some cases customers may not be able to connect to Power PMAC ARM through the USB-Serial UART Diagnostic Port over a Micro-USB cable. In this case, after pressing the button to put the port into serial mode, the CPU appears in the device manager as "FX230X Basic UART" instead of receiving a COM port. To fix this issue, install the appropriate version of this driver. (Windows 32 or 64 bit) https://www.ftdichip.com/Drivers/D2XX.htm
  8. What hardware is in your network? What settings do you have? This sounds like either bad settings or noise.
  9. PMAC can read two file formats for USB sticks. FAT32 and Ext4. If you are working from a Linux computer it would be easy to use Ext4 to get around the 4gb file size limit in FAT32. If you are on a windows computer, I would recommend you transfer the files by FTP. If you open a file explorer in windows and paste "ftp://192.168.0.200/" into the address bar, that will be the same location as /var/ftp/ on PMAC. I usually use the gather folder for transfers to avoid permissions issues that prevent transfers directly to /var/ftp/ on some CPUs.
  10. Most customers do not have issues with timing in PLCs. Timing for motion is handled by firmware and IO is usually less important. What are you trying to accomplish? Does your EtherCAT network have a distributed clock or is it free run? If you just want to verify all data is from the same EtherCAT cycle you should be able to check the value of Sys.ServoCount before and after copying the values into holding registers. If you want your code to run every EtherCAT cycle guaranteed you would be looking at writing a different type of program. (PLC 0 or Servo Routine) You could make a custom servo routine to copy all values to where a PLC could use them, but then that servo routine could interrupt the PLC and you would have to do the same check.
  11. Because ECAT[0].IO[4103].Data is not a saved variable, it is set to 0 when PMAC powers up. Since it's an output that means if no actions are taken PMAC will repeatedly send a value of 0. The easiest way to solve this problem is to set the value in a header file. I am referring to the files in the "Global Includes" folder that have a .pmh extension. These files are ran during the $$$/boot process. They are run after saved variable values are loaded so I like to say they "win" during startup.
  12. Does your PMAC always work with USB sticks in a FAT32 format? I'm not sure what you meant by fussy. It should be possible to install the package, if you can find the right version. The 460 is on debian 5 (lenny) with PowerPC so it can be difficult to find a repository still up. If you can find the file I can share instructions. Here is an example file that should work for Dual/Quad Core ARM https://packages.debian.org/jessie/exfat-fuse
  13. Have you tried formatting the USB sticks as exFAT? Are you sure the USB sticks are making good contact? I've seen some small ones that angle when inserted.
  14. We should be able to turn the EtherCAT port into an extra Ethernet port. Are you still looking for this? I know you're looking at a solution involving swapping out ESI files.
  15. I am going to assume there is a 1 to 1 correlation between motors. If not, that would affect some of these settings. #1->X #2->Y I think the issue here might be units. InvAMax has units of msec^2/mu so you want: Motor[x].InvAMax=1,000,000/8 A larger setting allows limits acceleration more. The best we can do is a trajectory pre-filter. The same filter settings should be applied to all motors moving together. Curt mentioned a damping ratio of 0.85 that has worked for some users. I would also recommend a damping ration of 1 to prevent overshoot in your desired position. In either case please set Sys.ZeroVelSetPoint so the timing of the ZeroVel bit will be correct. No, you would have to set Motor[x].InvaMax to limit the acceleration rate of programmed moves. That was a comment about how negative values of Motor[x].JogTa works. I'm not sure I understand the question. I don't think I see any jerk limited sections. Commanded acceleration would be diagonal. It could in principle be done with TS if you want to recalculate it for ever move. I would suggest using a Trajectory Prefilter, InvJMax will not be used in segmentation mode. Can you replicate the issue with virtual motors so we will be able to see it with different hardware? Yes, you should apply the same filter to all motors.
  16. SystemSetup.cfg is generated/updated on download. It contains settings from the Setup Wizard under the System folder that are downloaded with the project. You may wish to disable it if you are using manual setup instead of that wizard. To do so: Right click on project and select properties. Set "Download systemsetup.cfg File" to no.
  17. Bill, I believe one of our field engineers is actively working on this with you, but here is what I have. /var, /etc, and /root are only stored in ram, so the read only versions they are copied from on boot can be relatively unchanged. The flash storage contains 3 partitions / (linux filesystem), /opt (pmac firmware), and /opt/user (extra partition for customers to write stuff like this). The user file is only available on PMACs shipping with firmware 2.5.1.7 or above. See the attached Application Note. (It can be added by image, but precautions must be made) The following procedure should move the logs to the /opt/user partition where it will not be replaced by pmac. It should only be attempted by advanced users. Creating a backup image first is strongly encouraged. mount -o remount,rw /opt/user echo “” >/opt/user/messages rm -rf /.readonly/var/log/messages ln -s /opt/user/messages /.readonly/var/log/messages mount -o remount,rw / nano /.readonly/etc/fstab mount -o remount,ro / reboot and start ryslog Using the User Folder to Save Data.pdf
  18. What robot shape are you working with? I have used a PLC that sets Coord[1].ErrorStatus = 255 if Coord[1].TPExec.Pos[j] is not within bounds. I believe this protects against program moves that go out of bounds, but not individual motor jog moves. A pread or dread would be more useful for getting axis positions in the case of motor level moves.
  19. Did you edit pp_proj.h? This file should be left alone and managed by the IDE. Your kinematics should not be in a .o file. Any c code in the project should be compiled at the build and download step. If you're looking for a place to put kinematic functions I recommend adding a .h file within the include folder and including it in usercode.c. #include "../Include/Kinematic_Functions.h" You should be able to access any global variables declared in script by their script variable name. (This is in enum mode which is default, if you change the comments at the top of a c code file you can go into a mode that works differently.) Is this what you meant or did I misunderstand something?
  20. Yes this is possible. I believe the line in the Software Reference Manual stating otherwise was an error left over from a decision made in early ARM firmware that has been reversed for firmware 2.4 and above. We have an App Note for changing the EtherCAT port to Ethernet, let me verify it works the same on quad core and then upload it. There is a section on modbus setup starting on slide 140 of the following presentation. http://forums.deltatau.com/filedepot/download.php?f=Power%20PMAC/Training%20Slides/Reference%20Slides/Full%20Training/Power%20PMAC%20Additional%20Training%20Material%20-%20December%202016.pdf [FILE REMOVED]
  21. This issue was resolved over email. An unsolicited messaged can only be received one time. If the unsolicited messages window receives it, then C code will not be able to see it. By default the unsolicited messages window receives messages on buffer0, so if you wish to use if to send messages change it to buffer 1 with the pulldown in the top left of the window (see attachment) and change your GetSend(0,x) command to use buffer 1 GetSend(1,x). It If you right click the window and go to "Properties -> Control -> General" you can enable receiving of various buffers.
  22. Before closing the IDE you can save your work to the project file on your computer. Either go to "File -> Save All" or use the shortcut "CTRL+SHIFT+S". This will remove the asterisk by the file name (on the table title within the editor) that indicates unsaved changes. I'm not sure what version of the IDE, firmware or form factor you are using, but I know there is a known bug that can cause that message in error. If you try to download again without closing the program, does it work normally?
  23. If you include the send command (but not the getsend command), can you read your message from the unsolicited messages window? It is available under the tools menu. You may want to send a message from somewhere else so that this code can receive it to test the GetSend command. Try the following in the terminal. cx send0,"Hello, World!"
  24. Did the PC reboot normally or did something crash? If you make a new project, will that build and download?
  25. This issue is fixed in Power PMAC IDE v4.4.1.7 which is now available on the Omron Website through the "Power PMAC IDE Download" link. https://automation.omron.com/en/us/products/family/pmac%20ide
×
×
  • Create New...