iclim Posted March 7, 2014 Share Posted March 7, 2014 Hello, I would like to write a program which writes directly to the memory address for the position target of a co ordinate system. Is there a means to do this rather than performing a move through a single line motion program? The reason behind this is that we want to use the PPMAC to track a position target which is sent over the network. To perform this I would like to setup a TCP/IP server on the PPMAC which receives a position target from a client and then updates the memory address containing the position target. Also if someone else has done this before and has example code they want to share, that would also be greatly appreciated. Thanks Choon Link to comment Share on other sites More sharing options...
Omron Forums Support Posted March 10, 2014 Share Posted March 10, 2014 Hi, You could write your desired position to Motor[x].ProgJogPos and then jog the motor to it with #xj=*, where x is the motor number. You could do this a much more complicated way with position following by slaving your physical motor to a virtual motor, jog the virtual motor, and have the slave follow the virtual motor's desired position as its master position. I can describe that if need be. Link to comment Share on other sites More sharing options...
Richard Naddaf Posted March 10, 2014 Share Posted March 10, 2014 There are many ways to do this in Power PMAC. It depends on the type of application. You can turn master following on, and write directly into the master position Motor[].MasterPos. Another way is to repeatedly issue JOG = * commands to specific variable destinations, and write those to Motor[].ProgJogPos. But in general, if you want smooth continuous motion, you do want to take advantage of the motion programs' features. For Telescope type of tracking applications for example, using an endless while loop in a motion program is very effective and provides a lot of flexibility. You may want to test for best acceleration times and feedrate for your system. This could all be figured out based on the update frequency of the target position. GLOBAL TrackPos = 0; OPEN PROG 1 ABS // Absolute Mode LINEAR // Linear Moves TA 20 // Accel Time TS 10 // S-Curve Time F 50 // Feedrate [deg/sec] DWELL 0 // Dwell 0 msec WHILE (1 > 0) { A(TrackPos) } CLOSE Link to comment Share on other sites More sharing options...
iclim Posted March 11, 2014 Author Share Posted March 11, 2014 Thanks guys. I will try both methods and see what solution works best Link to comment Share on other sites More sharing options...
Recommended Posts