Jump to content
OMRON Forums

luis.segalla

Members
  • Posts

    9
  • Joined

  • Last visited

Everything posted by luis.segalla

  1. Hi Richard I'm using the "MacroAuxiliaryRead" from the master PB. This problem is weird, as you can see from the figure below: - When calling "MacroAuxiliaryRead" with "Elem_X" as slave PB variable I get the "OUT OF RANGE NUMBER" error. - When calling "MacroAuxiliaryRead" with "P90", which is the addres of Elem_X at the slave PB, I get the reading, as shown. It's not as big of a problem as I can pass the addres with no problem, but it's weird that this happens only with this specific variable.
  2. Hello I'm using the Macro Ring to cummunicate between two Power Bricks. I've been able to stabilish communication and exchange information among them using the command: macroauxiliaryread 0,Elem_X,Elem1_X Where Elem_X is a slave variable attatched to the P90 register. Elem1_X is a master variable also attached to the P90 register, but in another PB. The problem is that when issuing the command to read from the auxiliari PB e get the following error: stdin:4:1: error #23: OUT OF RANGE NUMBER: macroauxiliaryread 0,Elem_X,P90 I found it weird that when calling directly the addres of the Elem_X variable I don't get this problem and can read the value. The same happens to a variable called Elem_Z with addres P91.
  3. Hi Richard! Thanks for the advice! We've tried it but it didn't work as expected. I also didn't get why you shifted index 1 and 2 13 bits? As MacroIn expects 24 bits words. We're losing information this way, ain't we? I've tried a new approach for the problem. Now we have a real motor connected to the slave Power PMAC this motor has it's own EncTable that reads from the encoder. We also created a virtual motor that read from the same EncTable and do the same bit shits, but sends this information to the output (pDac register) that is connected to the Macro Ring via MacroOut. The code for the EncTable and Motor is as follows: EncTable[21].type=1 EncTable[21].pEnc=EncTable[11].PrevEnc.a EncTable[21].pEnc1=Sys.pushm EncTable[21].index1=8 EncTable[21].index2=8 EncTable[21].index3=0 EncTable[21].index4=0 EncTable[21].index5=0 EncTable[21].MaxDelta=0 EncTable[21].ScaleFactor=1 Motor[11].pDac=Gate3[0].MacroOutA[0][0].a Motor[11].pEnc = EncTable[21].a Motor[11].pEnc2 = EncTable[21].a On the Master side we receive this information in the following EncTable: EncTable[1].type=1 EncTable[1].pEnc=Gate3[0].MacroInA[0][0].a EncTable[1].pEnc1=Sys.pushm EncTable[1].index1=8 EncTable[1].index2=8 EncTable[1].index3=0 EncTable[1].index4=0 EncTable[1].index5 = 0 EncTable[1].ScaleFactor=1/256 The problem we're facing right now is that the information is not being sent, the MacroOutA[0][0] register is empty when we check it. But if we force it to send the message by changing "Motor[11].pDac=Sys.pushm" and inputing "Gate3[0].MacroOutA[0][0]=PowerBrick[0].Chan[0].ServoCapt" in the terminal the information gets to the master. I don't want to use a PLC or Subprogram to keep sending this info. There is any way I can send it thorugh the pDac register or any other register like it?
  4. Hi I'm trying to use macro ring to read the position of a motor from one Power PMAC (slave) to another Power PMAC (master). I can establish comunication between the two controllers, but the data they are sharing it's looking weird. Inside the master's project I'm creating an virtual motor that is used only for reading from the slave's EncTable with the following code: EncTable[1].type=1 EncTable[1].pEnc=Gate3[0].MacroInA[0][0].a EncTable[1].pEnc1=Sys.pushm EncTable[1].index1=1 EncTable[1].index2=1 EncTable[1].index3=0 EncTable[1].index4=0 EncTable[1].ScaleFactor=1/65536 Motor[1].pEnc = EncTable[1].a Motor[1].pEnc2 = EncTable[1].a From the slave's project I'm using another virtual motor (for now) and writing what is read from the EncTable in the Macro Channel: Gate3[0].MacroOutA[0][0] = EncTable[1].pEnc; But when I move the slave motor there are no reads in the master. Can you help me figure out what I'm doing wrong?
  5. Hi Eric! We have two files that configure the coordinate systems' motors. In the Forward Kinematics .kin file we have: &2 open forward(2) . . . close and in the Inverse Kinematics .kin file we have: &2 #4->I #5->I #6->I #7->I #13->I #14->I open inverse(2) . . . close (The CS 1 files are configured in the same way, just using motors 1, 2 and 3 instead.) There are any relation between the way this is configurated with the delay we're seeing? I still don't understand why the delay is the exact sum of jogTa and jogTs for the individual motors we configured. Thank you for the attention Eric
  6. Hi Eric I was dragging the following commands from the note.txt to the IDE terminal: #4,5,6,13,14j/ &2Q78=1 &2b2r The kinFlag is a flag set in the motion program as soon as it is called: open prog 2 kinFlag = 1 . . . close One interesting thing I found while trying to debug the problem was that when changing the values of jogTa and jogTs on the motors of the CS there was no delay. The first image shows the movement when using JogTa = 6000 and JogTs = 2000, you can see that the time between enabling the motor and starting the motion program is approximately 8 seconds. On the second test, I changed the JogTa and JogTs of all motors to 0 and the delay was gone. Do you have any idea why? As I see it, Ta and Ts are associated with the movement time, do they have any special relation with the motion program being called?
  7. Hi Eric Thanks for the answer! The InPos doesn't seem to be the problem. It is only is used in a readback PLC, but we tried disabling all the PLCs from the project and the delay still happened. We're using virtual motors now to test this and it shows the same problem. The motors are being controlled directly by the motion program, we're calling it via terminal for now and passing the values calculated by the Kinematics implemented in C to the corresponding Axis in each Coordinate System and there is a specific Motion Program for each CS (we're using two). I understand that the delay might be normal, but then, why does it only happen in one of the CSs? There is any field in the motor struct that could be set to change this? Thanks for the attention Eric
  8. Hello I'm having some problems when calling a motion program inside Delta Tau. It shows a delay between turning on all the motors for the coordinate system (The AmpEna flag being set to 1) and calling the motion program (in our case this is represented by setting the kinFlag to 1) as shown in the attached file (motion-delay). This motion program calls the CfromScript function and inside it we implemented some calculations for the direct and inverse kinematics. We don't understand this delay because it is happening before the CfromScript function is called, could it be some kind of pre-processing when using C? There are some special flags that need to be set (besides UserAlgo.CFunc=1)? Or is this delay normal? Another intriguing point is that it only happens in one of the coordinate systems. It does not have the delay when we run the coordinate system 1, as shown in the second attachment (mr7-Ipê2). Do you have any ideia why? Anyways Thank you for your attention Best regards Luis Fernando.
×
×
  • Create New...