Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Using a manually derived value for Master or Feedback data
In my Turbo PMAC application I used a PMAC PLC program to calculate a position. I then wrote this position to a free memory location where I used it as the Master position for another motor by setting Ixx05 to point to that same memory location.

In Power PMAC the Motor[n].pMasterEnc can only point to and ECT entry. How do I accomplish the same thing I had in Turbo PMAC?
In Power PMAC the data for the Master position and feedback position must go through the ECT. Also, open memory in Power PMAC is the user buffer, there is no other place. So to accomplish your task you need to slightly modify your setup. You can still do the same PLC calculations and write the results to the user buffer. You must then make an ECT entry to read this location. And finally you set Motor[n].pMasterEnc to this ECT entry. Below is an example for making a force loop. This example used the DAC output of motor 1 as the force command, this is substituted in your application by your PLC. The ECT idea and the Motor[n].pMasterEnc idea are the same as what you need. In this ECT integration was used to convert the force to position. Since your PLC is writing a position you should set the integration off (.index4=0)

Motor[1].pDac = Sys.UData[8].a; // DAC is written to user buffer memory 0
m1->s.user:$8.0.32; // debug m-var
ptr DacOut01->s.user:$8.0.32; // debug pointer
ptr IntDacOut01->s.user:$10.0.32; // debug pointer

IntDacOut01 = 0;

EncTable[13].pEnc = Sys.pushm + $20;
EncTable[13].Type = 1; // parallel 32-bit
EncTable[13].Index1 = 0;
EncTable[13].Index2 = 0;
EncTable[13].Index3 = 0;
EncTable[13].Index4 = 1; // integrate on
EncTable[13].ScaleFactor = 1;

Motor[2].pMasterEnc = EncTable[13].a; // tell master which ECT to use
Motor[2].MasterPosSf = 1/pow(2,24); // Scale factor for this system
Motor[2].MasterCtrl = 1; // enable master following

Forum Jump:

Users browsing this thread: 1 Guest(s)