Jump to content
OMRON Forums

paddax

Members
  • Posts

    44
  • Joined

  • Last visited

Everything posted by paddax

  1. Whats the easiest way to create an axis that writes its desired position to its actual position
  2. We don't use the standard M variable definition and I don't have the manuals to hand. If your referfing to Motor or Coord status register, then yes it stays latched. Actively writing to the register does not clear it.
  3. What is the correct method of clearing the "Stopped on Desired Position Limit" / "Desired position limit stop" flag in the motor status (?) and Coordinate status (??) without starting a new program.
  4. We are using a Turbo UMAC and Macro to connect to a set of Copley drives. When performing a move until trigger the system works most of the time, however occasionally the trigger is missed and the axis continues until the target position. Move until trigger command is as follows X(M140)^0Y(M141)^0Z(M142)^0 I can't get any further with this problem as the entire process is controlled in the protocol between the UMAC and the Copley drives.
  5. That's interesting, the code on the Turbo did not use the Q command it only used the S command and it performed as I would have expected. As I write this I'm feeling obliged to go and check the Turbo code..... The Turbo code never issued a Q command
  6. That's not the answer I'm looking for. I'm currently investigating the possibility of moving our CNC machine to the Power PMAC. We currently use the Turbo UMAC and have used the PMAC, PMAC2 and Galil. Our company also use Heidenhain, Siemens and Fanuc controllers. In every case the user could select single block and reasonably expect the machine to finish the current move and stop. There is absolutely no way that I could sell this behaviour to my company or my customers. I'm hoping that among the plethora of options their is something that can make the system act in a more sane manner.
  7. While running a simple program while(1 == 1) { X10 F100 x-10 } Issuing an S command with Coord[x].NoBlend=1 finishes the execution of the current line and then runs the next line. Issuing an S command with Coord[x].NoBlend=0 finishes the execution of the current line and then runs 2 subsequent lines. I would expect a motion controller to pause the program at the end of the current line providing your not already passed the point where deceleration can occur. Have I got something wrong?
  8. That caught me out, why is the default an invalid value?
  9. Thanks, your right we do want to be in segmentation mode in the actual application so this problem will ultimately not apply to us
  10. The following program will single step without error with Coord[x].NoBlend=0 open prog 2 X1 F10 Y1 X2 Y2 X3 Y3 X4 Y4 close However when you use bstart and bstop the program aborts with RunTimeError open prog 3 bstart X1 F10 Y1 bstop bstart X2 Y2 bstop bstart X3 Y3 bstop bstart X4 Y4 bstop close
  11. I'm assuming I have something wrong here but here are my conclusions. Given the following motion program running in a simple #1->1000X coordinate system. open prog 1 linear F1000 X1 X2 X3 X3 X3 close When this program is run at the point the system hits the second X3 the program aborts with RunTimeError. It appears that programming the same position twice while Coord[x].NoBlend=0 (the default condition) causes the error. Changing the program to the following allowed the program to run open prog 1 linear F1000 X1 X2 X3 X3.00000001 X3.00000002 close It appears any closer to coincidence of two sequencial moves causes a RunTimeError. Addendum An incremental move of 0 causes the same problem.
  12. If your running the program from a rotary buffer, a Coord[x].RuntimeError will occur if the buffer empties or does not have enough contents to perform blending.
  13. Thank you for your prompt response, I think this is a possible solution and look forward to any further updates.
  14. Maybe this is the wrong way to think about it, but I would have thought that the D0 value returned from the forward kinematic routine would tell the coordinate system that these motors were solved.
  15. Thanks that's perfect:) Is this syntax is mentioned in the manual?
  16. Is there a gpascii method for getting and setting IData, DData etc as a block rather than issuing single commands. As an example if I have 10,000 IData elements, to read or write all of them appears to be 10,000 discrete communications and this is going to take a long time (probably about 10 seconds). There are methods for obtaining values for a number of contiguous P,M,Q etc variables e.g. P1..4, but I can't see any method for setting a set of contiguous variables e.g. P1..4=1,2,3,4 I just realised that's actually two questions, I hope you don't mind
  17. I'm developing a PC application that drives the ppmac via the rotary buffer, it is a valid state for my application to completely run out of commands in the rotary buffer. Previously the Turbo pmac would stay in cycle and wait for further commands, however the Power Pmac drops out of cycle in this condition. Is this the expected behaviour? You can start a program with b0r with no contents in the buffer and the program will run when you add contents. When I say in-cycle I'm referring to Coord[x].ProgActive
  18. On the Turbo Pmac it was possible to create a Y word encoder entry and construct my own motor feedback from a function, is this possible with the Power PMAC?
  19. I have a power pmac with a very simple configuration There are 4 axis all configured as inverse kinematic axis #1->I #2->I #3->I #4->I Then the forward and inverse kinematic programs are as follows. Obviously these are just examples that replace the instructions #n->1000x open forward (0) KinAxisUsed = $1C1 // ZXYA KinPosAxisX = KinPosMotor1 / 1000 KinPosAxisY = KinPosMotor2 / 1000 KinPosAxisZ = KinPosMotor3 / 1000 KinPosAxisA = KinPosMotor4 / 1000 close open inverse (0) KinPosMotor1 = KinPosAxisX * 1000 KinPosMotor2 = KinPosAxisY * 1000 KinPosMotor3 = KinPosAxisZ * 1000 KinPosMotor4 = KinPosAxisA * 1000 close My problem is once the above is downloaded I can't get the Coord[0].Csolve to set. I have tried setting Csolve for each of the axes in the coordinate system but this has not effect on the Coord[0].Csolve A more serious problem is that even though Csolve is false I'm still able to run a program in this coordinate system using the defined kinematics. The manual is very clear that this is not possible. Obviously I want the program to run and this is what its doing, its just my own software which is written against the manual is telling me cycle start is not permitted.
×
×
  • Create New...