Jump to content
OMRON Forums

bmartins

Members
  • Posts

    7
  • Joined

  • Last visited

Everything posted by bmartins

  1. I want to achieve 3 things: 1. Clearer code I like to have descriptive variable names and I end up with very long lines when doing something like this (in pvt mode): X(VectorEndPos(0)):(VectorSpeed(0)) Y(VectorEndPos(1)):(VectorSpeed(1)) Z(VectorEndPos(2)):(VectorSpeed(2)) A(VectorEndPos(4)):(VectorSpeed(4)) B(VectorEndShutterPos):(VectorShutterSpeed) 2. Conditionally pick which motors will move Sometimes I only want to move a subset of those motors. Currently for the motors that won't move I calculate their positions so they will stay put. 3. Build the motion command in a loop: Something along the lines: i=0 while(i < 4) { {some var corresponding to axis i pos on coord system 1} = VectorEndPos(i) {some var corresponding to axis i speed on coord system 1} = VectorSpeed(i) i = i+1 }
  2. Hi, I have a simple question: is it possible to group motion program commands on different lines as the same command? For instance, say I have: X(10) Y(20) But what I want to have is: X(10) Y(20) As the same command (i.e., X and Y move together). Is it possible to group them together (maybe using parenthesis or something similar)? Another case would be something like this: X(10) if(moveY) { Y(20) } I know I could make it: if(moveY) { X(10) Y(20) }else{ X(10) } Which would work for this toy example, but not for 4 motors and their potential combinations... What I am doing right now is to have variables for those ending positions and set the one corresponding to Y to zero if moveY is false. From the manual I got: "All separate axis moves specified on the same command line (e.g. X10.34 Y20) will execute simultaneously in a coordinated fashion, starting at the same time, and in all modes except possibly rapid mode, ending at the same time. Axis moves specified on separate lines will execute sequentially, with or without stops in between, depending on the mode(s) in effect at the time." But I thought I might ask here if there is a workaround. Thanks!
  3. Hi, I am trying to get the maximum performance out of a brushless servo dc motor. However, I can't seem to get the last bit of performance out of it. My objective is to get a very small following error (better than 0.25 millidegrees, ~30 counts peak to peak) during a short (few seconds) constant speed movement, preferably with no spikes. What I noticed is that the following error seems to correlate with the motor poles positions. I see a sort of a sinusoid with peaks every 15 degrees. Currently I am able to get ~100 cts peak to peak, with spikes almost up to +75 counts (see attached image). Is there a known trick to get rid of it? I tried using a compensation table which reduced the problem somewhat but not much. It is a 48 poles motor with 20736000 quadrature counts per revolution. Thanks!
  4. Hi, I have a motor with a very precise encoder, which makes Phase Capture wrap around every ~18 degrees of its rotation. I want to use Position Compare on this axis and be able to trigger every degree, for example, but for runs that can be longer than 18 degrees. However, when using the Auto Increment function, it apparently gets the IC confused at PhaseCapt=0 (see plot). Is there a way to work around it? I thought maybe I could do the Auto Increment work in the CaptCompISR, but maybe there is a better way. Thanks! plot.pdf
  5. Hi, I am using a PowerBrick LV to control four stages in a Coordinate System. I would like to setup Position Compare on the first stage and, every time that it triggers, have the position of the other three captured. I guess I could wire the Equ output of the first stage into a user flag that the other three would Capture on, but is there a way to programmatically do that? If it's only possible to do that in CaptCompISR, what would be the typical latency and the jitter? Thanks! Bruno
  6. I see. So the maximum achievable is 10MHz right? No way to go up to 20MHz? It is a PowerBrick IMS LV
  7. Hi, I have a PowerBrick LV crate and I want to read a 20MHz quadrature encoder with it. The manual states that "the absolute maximum signal frequency is one fourth of this clock frequency. It is generally recommended that a 20% safety margin for signal imperfections be provided". So, if I set Gate3.EncClockDiv=0, I would have 100MHz of sampling frequency and 25MHz of maximum signal frequency, 20 MHz with the 20% safety margin being considered, which would work great for my purpose. However, the same section of the manual states that "Presently, the ASIC itself can accept higher signal frequencies than the encoder receiver circuits on Power PMAC hardware. These receivers are limited to an absolute maximum 10 MHz signal frequency (40 MHz count frequency). With safety margin, no signal frequency greater than 8MHz should be provided." So, am I really limited by 8MHz? Or is this restriction gone? How could I check my hardware capability? Thanks! Bruno
×
×
  • Create New...