Jump to content
OMRON Forums

KEJR

Members
  • Posts

    297
  • Joined

  • Last visited

Everything posted by KEJR

  1. I didn't think that the zero velocity state would be different. It is almost definitely not a tuning thing just in that it only happens when I am just on the hairy edge of the limit switch or when I manually trigger the switch and then let go. I think I might try a plot looking at the EOT switch and the commands and see what it shows. I think this will probably tell us something. thanks KEJR
  2. I don't think the bug is the loss of EOT switch *while* decellerating, I think it is after the decelleration is complete. So to recreate what I was talking about have a normal decel time and then *make* your EOT switch for that direction and just hold it there until you are sure decel is done. Now after a few seconds remove the switch condition and you will hear the clunk. I don't think that the program is causing it. I performed the test while jogging from a command terminal. I will recreate this now to confirm and get back to you. Another "symptom" is that if you had stopped on EOT limit (and motor is still enabled as is the default behavior) and you can back drive the system it oscillates with a tiny vibration. It is bizarre. I don't know if this matters but I am using scaled motor units and Macro drives. Everything else appears to be working correctly. KEJR
  3. how does one go about mapping a ptr var to the minus limit bit in the macro register? I tried to do: ptr XMinusLimHW->Acc5e.Macro[0][3].a.26.1 but the editor or the command window won't take that syntax. I also tried the raw address reported by that register when I typed it in the terminal screen but it doesn't like that either. I want to shut off limits but still read the hardware limit register. I can still read the value of the full register, but was hoping that I could use the convenience of the pointer variable bit addressing. Let me know if there is a way to do this or if I have to mask the bit myself. Thanks, KEJR
  4. Hello, I don't know if this is a bug or I am doing something wrong. In testing I often jog a linear axis and then wave a screwdriver in front of the limit switch to test the motor. I adjusted motor[].AbortTa appropriately to get a soft but responsive decelleration. This works fine. When I lift the screwdriver away from the limit switch there is an audible clunk sound as my motor is rapidly moved back a small amount away from the limit switch. I know that besides testing this isnt' really a valid situation, but is this normal? thanks, KEJR
  5. I ended up writing a C program function for this. I am setting motor[].pLimits to zero and using jog commands with data structure access for things like MAxDac and following error. I'll keep the canned routine in mind for future applications. I didn't want to do the home switch to index pulse (or end travel switch) thing just because if someone takes the motor off for service or replacement I don't have to recalibrate with the hard stop home. These machines are pretty clean so debris on the hard stop isn't as big a deal as say a machining center, etc. Thank you very much. It is good to know that the pLimits method is acceptable and not going to have adverse effects on something else. KEJR
  6. A follow on question would be how do I detect the limit switch is active? Do the limits need to be active for this to work?
  7. Hello, I'll start by explaining my application: I would like to do a hard stop torque limited homing operation with a ballscrew with end of travel (EOT) limit switches. Currently my limits are performing properly and stop the motor with a controlled stop. What I would like to do is to have a homing motion program that disables the negative limit and commands a motion in the negative direction until the limit switch is detected. Upon hitting the limit switch the prog will change feerate, limit torque, and open up following error (so we don't trip out). Then of course I will wait for torque to equal the current command limit and record that position for setting the home value later. Then slightly move off of the hard stop, re-enable limits and be on my way. 1) So how do I disable my negative limit? Do I just disable both limits by setting motor[].pLimit to zero? 2) Do I limit the torque by setting Motor[].MaxDac or is there a different way? I may end up doing this from a C program using jogging functions instead of a motion prog, but it really should work the same way. Thanks, KEJR
  8. I guess for cmd and PLC moves the timing in msec isn't a big deal and I can use the scale factors in a manual way. Most machines we leave this alone anyway. I really don't want to do anything to trick the PMAC or anything strange. For motion progs it looks like Coord[].FeedTime sets the time units somehow. So by setting this we could get MotorUnits/sec in a C.S. prog if I read this right. Is this true? Thanks, KEJR
  9. We have done inspection tasks where we wanted to read a sensor and a position at the same time (although we didn't need hardware capture synch). So picture moving from A-B-C-D positions and then performing fast readings while in range of positions B-C. You could do some of the triggering and such with the blended moves, but we really do want to know the actual position when we take the reading of the sensor, so in this case I think we would need the home position subtraction trick. Since this is a rare case, using blended moves and such probably gets us 95% of the way there and using the home position subtraction for these other cases is not so bad. [quote='bradp' pid='1206' dateline='1296064450'] It is the same anywhere, you query ActPos and subtract HomePos from it. But please tell me what you are trying to do in the motion program and why you would need this. There might be a better way. [/quote]
  10. On my C code this is fine, I can write a funciton to subtract these two: GetActPosRelativeToHome() ... or something like that. for motion programs is there a way to query actual position, home referenced? I suppose I could write a script subroutine as well, but is there a better way? Thanks, KEJR
  11. [quote='bradp' pid='1197' dateline='1296061798'] Personally, I would not try and change time units by adjusting a position scale factor. [/quote] No, I am adjusting position units only at this point to get it in inches of travel. Did you mean to reply to my other thread?
  12. Is there a simple way to change the time units for a motor? I now have my motor in inches for position, but inch/msec and inch/msec^2 are awkward units. Alternatively should I just scale them right in the setup code? //Converts for items expecting motor units per millisecond to motor units per second #define UnitsPerSecondSf 0.001 Motor[n].JogSpeed = 5 * UnitsPerSecondSf I'm just looking for best practice that lets me work with reasonable units. Thanks, KEJR
  13. Hello, This is probably a fundamental question, but I can't seem to find help on it anywhere. I've now got my motors in units of inches and I can Homez and then watch the position watch window and it matches the real world in those units. When I read the Motor[].ActPos register it appears to display the position since reset. Is there a way to zero this after I do my homing routine? I basically want to use this to read position in inches, or another similar method. I'm not doing any of the canned home routines, but a custom homing prog based on torque limit and hardstop. Obviously there is a way to do it since the position watch window is displaying position correctly after I do a homez command. Thanks, ~Ken
  14. Another Update: After talking with Sina he had also mentioned setting up a file in the global includes to do all of the system setup. I don't know if this is documented or not but I was doing all my system inits in a PLC file. By moving all of the setup info into a .pmh file it is like "downloading" setup files to the old PMACs and when you do a Save operation it saves the parameters. This approach is great for folks like me who prefer to have all of the setup information in a human readable file. So in the end, I don't need the cmd" " fix for PLCs afterall, but it is good to know that the bug fix is there. KEJR
  15. For what its worth I just set up my motor (attached to ballscrew) and tuned it in motor units of inches. After a conversation with Sina on the phone I changed my scaling from ECT to the Motor[].PosSF and Motor[].Pos2Sf. It really rocks to have your following error set to real units in the plots and settings screen. I currently have mine set to 0.010" which is 10:1 conservative with the tuning I've acheived and moves I'll be performing. 17bit encoder + MACRO + Copley + 15Khz/7.5Khz speed = :o) Also, anyone using Copley drives in torque mode with MACRO should consult them as they have a fairly new option to synchronize the drive current loop with the macro update.
  16. Just another vote on C language intellisense for local and global C variables (not to be confused with PMAC global and local vars). Its not high on my priority list but it would be helpful.
  17. Sina, Thanks for looking into this. We are OK right now with defining it in our C code via Command(), but it is good that it is being fixed so that in the future we (and others) won't have this problem. Thanks, KEJR
  18. I've installed emacs-gtk, rlogin, and some other utilities. So far no issues with /var. That is crap that they don't create a folder in code. Maybe we should write a patch ;) There are /.readonly/var and a /.readonly/var-tmpfs-mirror directories, so one would guess that it is handled exactly like the /etc filesystem. So in theory creating the log directory in /.readonly/var in addition to the instructions in my previous post would do it. I'd be hesitant to copy all files in the /var folder to the read only equivalent only because you don't want to save every log file generated since startup to your flash drive. While this is a pain in the butt I really have to hand it to Delta Tau for giving us a read only filesystem. I really like how we can just pull the plug on the PPMAC and not worry about "shutting it down". KEJR
  19. Henry Bausley described how the readonly filesystem works better than I can here: http://forums.deltatau.com/showthread.php?tid=198&pid=447&mode=threaded Are you sure that the applications that touch /var are not just doing some logging and stuff? The reason I ask is that I would think it bad practice to put install files in /var, but I am not a linux guru. My point is that you shouldn't have to use rsync , the procedure I listed worked for me in several cases and was recommended by Delta Tau on various posts here on this forum. If there are packages that install [valid] things to /var I would like to know about it and modify my procedure. What files got added/modified to /var? KEJR
  20. Welcome to PowerPMAC terminal Select device to start communication Telnet communication to PowerPMAC successful Please wait!!! database Sync in progress Database sync complete vers 1.2.1.5 date Jul 14 2010 I do have a new linux kernel from you guys that has the USBRS-232 support, but I doubt this has anything to do with it, just wanted to mention it. Thank you, KEJR
  21. [quote='michaelthompson' pid='1088' dateline='1295047727'] When using the apt-get install method to install packages, I have noticed that some files get installed in the /var and /etc folders. [/quote] Micheal, This has been covered in other posts, but I pasted in my own notes on installing debian packages with the PPMAC. There are a few extra manual steps before and after you do apt-get: *** Notes On Debian Package Installation The root filesystem “/” is mounted readonly so you have to mount that as read-write while installing packages. In addition the “/etc” folder is mounted as a virtual ram disk. Anything that normally writes to /etc (such as apt-get…) will end up putting information in “/.readonly/etc-tmpfs-mirror”. So after installing packages anything that gets written to “/.readonly/etc-tmpfs-mirror” must then get copied to “/.readonly/etc”. The contents of “/.readonly/etc” gets copied to the virtual “/etc” upon a reboot. Here is an example of installing emacs with gtk support: # mount –o remount,rw / # apt-get install emacs22-gtk (apt-get processes as normal, answer typical prompts…) # cd /.readonly/etc-tmpfs-mirror # cp –a * ../etc # mount -o remount,ro / After doing this procedure you should have everything back at reboot time. KEJR
  22. Have you drilled down to the simplest test example where no dynamic memory allocation is performed? I would do this to start. If you are dealing with an application with all static global classes there really shouldn't be any glaring possibility for memory leaks. KEJR
  23. The problem I was having before is that I was trying to add the file in the IDE with the .h extension and the IDE was not letting me do it. Adding it as a .pmh file and only having #define statements in it works and I just tested it. Thank you! KEJR
  24. I did try using the cmd"" call but it barfed on me at compile time with this error: initplc.plc:77:1: Preprocessing Error: Prog Buffer Open: on string:" cmd "&1#1->1X" Any ideas? [quote='bradp' pid='1082' dateline='1295041316'] When that post was written we had no CMD"" ability in script language. Now we have that ability so you can do this using CMD statements. [/quote]
  25. Hello, I found reference to this in an old post: http://forums.deltatau.com/showthread.php?tid=42 Are we going to be able to define C.S. from PLC programs at some time? We do all our configuration of the PMAC through code (usually an Initialization PLC of some sort). Right now I am calling an init PLC from C code and then turning around and defining the coordinate systems from a command() call. KEJR
×
×
  • Create New...