Jump to content
OMRON Forums

zerbzhang

Members
  • Posts

    94
  • Joined

  • Last visited

Everything posted by zerbzhang

  1. Add 7 motors in the coordinate system 1, execute the NC program, you will encounter the above problem, there is dwell in the program, has been in the loop, can not jump out (dwell can not continue to execute the next line)! Firmware version 2.5.4.0; When the number of motors in coordinate 1 is 5, everything is normal... How to solve this problem?
  2. I am currently using the WAGO 750-476 module. Ecat [i].io [j].data is stored in Sys.IData[x], Sys.UData[x]. I want to know, 1)How does Sys.UData[x] correspond to the Ecat IO address? 2)Sys.IData[x]= Formula * Sys.UData[x]. How to set?
  3. For an analog quantity of ± 10v, the ecat slave station data ranges from negative 32768 to positive 32767; When reading data on Pmac_ECAT, the Ecat [i]. io [j]. Data data is 0-65535; How to Set Up to Display Correct Results Consistent with ECAT Slaves?
  4. My current situation is: as you said, modify the configuration outside the IDE and then build the download; Then, open tuned page, open loop test no response; I can't find the problem, so I'm wondering if it's a configuration file error; I've been using the Power Series ACC24E3. ECAT tuning, not used before. This addition of the ECAT motor used topology configuration. Is there any ECAT CST tuning guidance document that can be shared for reference? It might help me. If ECAT_CST mode cannot achieve constant oil pressure control, only PLC logic control can be used. Steve,Thanks
  5. // [MOTOR] Motor[1].pEnc=EncTable[1].a Motor[1].pEnc2=EncTable[1].a Motor[1].MaxDac=1000 Motor[1].pDac=ECAT[0].IO[3].Data.a //Analog voltage output controls the hydraulic system motor speed Motor[1].AmpEnableBit=0 Motor[1].pAmpEnable=ECAT[0].IO[5].Data.a // Motor[1].pAmpFault=ECAT[0].IO[4103].Data.a // Motor[1].pLimits=0 Motor[1].AmpFaultBit=3 Motor[1].ServoCtrl=1 Motor[1].AmpFaultLevel=3 Motor[1].DacShift=16 //CST 16 Motor[1].Ctrl=Sys.ServoCtrl // [COORDINATE] // [ENCODER] EncTable[1].type=1 EncTable[1].index1=0 EncTable[1].index2=0 EncTable[1].index3=0 EncTable[1].index4=0 EncTable[1].index5=0 EncTable[1].pEnc1=Sys.pushm//Not Use EncTable[1].pEnc=ECAT[0].IO[4099].Data.a //Hydraulic system pressure feedback analog voltage input EncTable[1].MaxDelta=0 EncTable[1].ScaleFactor=1 EncTable[1].index6=0 EncTable[10].type=0 Steve, I did the above configuration, but as you said, tuning is really difficult; In ECAT topology, motor 1 was added, but it couldn't be tuned, I couldn't find the problem
  6. The system principle is as follows: 1: The driver receives an analog voltage signal(0-10V ) and controls the motor speed (issued by the ECAT analog module of CK3E); 2: The hydraulic system pressure sensor outputs a pressure signal (analog voltage 0-10V) to the ECAT analog receiving module of CK3E; At present, I am writing a PLC program that calculates the difference between the output value and the set value, and adjusts the stability of the system; A simple PID controller model is not an excellent approach. I would like to know if it is possible to use the built-in PID algorithm of CK3E to stabilize the system pressure through the input and output of the ECAT analog module? What is the best solution to this type of problem?
  7. AAnikstein,thanks. The current situation is what you said. Encoder in Acc24E3[0] and flags in Acc24E3[1]. I currently switch the motor[4] encoding channel to Acc24E3[1].Chan[0] (both encoder and home flag can work normally), and start returning to zero; Finally switch to Acc24E3[0].Chan[3] (1vpp signal, no home flag signal) to achieve high-precision positioning //IVPP Motor[4].EncType=6 EncTable[4].pEnc = Gate3[0].Chan[3].ServoCapt.a EncTable[4].pEnc1 = Gate3[0].Chan[3].AtanSumOfSqr.a Motor[4].pEnc = EncTable[4].a; Motor[4.pEnc2 = EncTable[4].a; Motor[4].pEncCtrl =Acc24E3[0].Chan[3].OutCtrl.a Motor[4].pEncStatus=Acc24E3[0].Chan[3].Status.a Motor[4].pCaptFlag=Acc24E3[0].Chan[3].Status.a Motor[4].pCaptPos=Acc24E3[0].Chan[3].HomeCapt.a //TTL Motor[4].EncType=5 EncTable[11].pEnc1=Sys.pushm EncTable[11].pEnc=Acc24E3[1].Chan[0].ServoCapt.a Motor[4].pEnc=EncTable[11].a Motor[4].pEnc2=EncTable[11].a Motor[4].pEncStatus=Acc24E3[1].Chan[0].Status.a Motor[4].pEncCtrl=Acc24E3[1].Chan[0].OutCtrl.a Motor[4].pCaptFlag=Acc24E3[1].Chan[0].Status.a Motor[4].pCaptPos=Acc24E3[1].Chan[0].HomeCapt.a A little necessary work needs to be done. After implementing the encoder switching, different PID parameters and speed settings are required.
  8. Eric, thanks for your reply; Motor[4] runs correctly. My problem now is that the reference position is incorrect; The index home reference position of motor[4] comes from Acc24E3[1].Chan[0], not Acc24E3[0].Chan[3]. But the 1vpp feedback signal is from Acc24E3[0].Chan[3]. (The 1vpp encoder has no home index signal; the home index signal is accessed from Acc24E3[1].Chan[0]) I modified the settings. Motor[4].pCaptFlag=Acc24E3[1].Chan[0].Status.a // Motor[4].pCaptPos=Acc24E3[1].Chan[0].HomeCapt.a// The above settings have no effect;This is confusing.
  9. The homing reference index of Motor[4] is changed to the TTL signal accessed by Acc24E3[1].Chan[0]; pCaptFlag and pCaptPos change from Acc24E3[0].Chan[3] to Acc24E3[1].Chan[0] as the reference signal, the configuration is as follows: Motor[4].pCaptFlag=Acc24E3[1].Chan[0].Status.a //Modified Motor[4].pCaptPos=Acc24E3[1].Chan[0].HomeCapt.a//Modified EncTable[4].pEnc = Gate3[0].Chan[3].ServoCapt.a EncTable[4].pEnc1 = Gate3[0].Chan[3].AtanSumOfSqr.a Motor[4].pEnc = EncTable[4].a; Motor[4.pEnc2 = EncTable[4].a; Motor[4].pEncCtrl =Acc24E3[0].Chan[3].OutCtrl.a Motor[4].pEncStatus=Acc24E3[0].Chan[3].Status.a The bad problem is that the home reference of Motor[4] is not the reference signal connected to the set Acc24E3[1].Chan[0]!I don't know what's wrong . . .
  10. In the c language project, add the reading program, use the PMAC_linux command to load the NC program, and realize the NC program you need to dynamically load the usb.
  11. Eric, thanks for your reply. I use C language to assign 1000 to CamTable[16].OutData. However, the result is 1148846080. What surprised me is that the values of CamTable[16].PosData[3], CamTable[16].PosData[5], CamTable[16].PosData[7], CamTable[16].PosData[9] are 1000 (It is the value I want to assign to CamTable[16].OutData). float *CamDataPtr; CamDataPtr = pshm->CamTable[16].OutData+OffsetTblSHM; for(Ccount=0;Ccount { *(CamDataPtr + Ccount) =myval; }
  12. Eric. I'm trying an electronic cam table. I want to know if there is a definite relationship between CamTable[m].PosData and CamTable[m].OutData? I set CamTable[m].PosData[1] to 1000, CamTable[m].OutData[1] will automatically become 1148846080? I checked the manual document, but did not find the content in this regard. Can you answer it or provide some information for reference?
  13. Thanks, Eric *CompDataPtr = pshm->P[0]; It is possible to assign pointers to P variables. I used to be local variables and always reported errors. This method can efficiently complete the assignment, I am very happy.
  14. Eric,Through the Command (Command("CompTable[0].Data[0]=0")), in the background C language program, about 10 thousand assignments can be completed per second. I am trying to increase the speed of assignment. Exercise time is precious, especially when there are many cycles. Are there any good suggestions worth trying?
  15. This is a bad thing. I followed the Entering Table Data Points in C section of the Power PMAC User’s Manual. In my actual application now, I do need to dynamically assign CompTable[m].Data. Command("CompTable[16].Data[0]=0") implements assignment, unfortunately, it cannot satisfy my application. I'm wondering why, suddenly I can't use the C language to assign values, but Power PMAC User’s Manual explains that POWER PMAC has this function? I do need this feature. Does another version of the firmware have this function? Can I re-order a Power CPU to realize this function? If possible, please email me Eric, thanks again for your reply.
  16. Thanks ,Eric, my firmware version is 2.5.4.0. I have followed your instructions many times and still cannot run the background program C in the plc. Another strange problem also appeared. float *compdataptr; compdataptr = pshm->CompTable[16].Data + OffsetTblSHM; if(Fisprepare==1&&FcompLoad==0) { int i,j; data1=0; data2=0; int diffs=MatfCpoint + 1 ; for(i=0;i<=MatfLinear;i++) { for(j=0;j<=MatfCpoint;j++) { *(compdataptr + diffs*i + j) = tempCuttingDepth; // send to the comp table data2++; } data1++; } } When I run the compensation table data assignment program, the IDE's terminal window prompts "egmentation fault", and then the background C program terminates. I wonder if my assignment is wrong? But can't find the problem?
  17. Enter system "/var/ftp/usrflash/Project/C Language/Background Programs/xoptical.out" in the terminal window; the background c program can run correctly. Then, it cannot be executed in the plc. When xoptical.out runs, prepare will be changed to 0. PLC1data will record the number of executions and complete the count. The program cannot run as designed, only PLC1data has been accumulating. I think it is because the PLC cannot issue the system command correctly to make xoptical.out run. How to avoid this problem? // open plc 1 // --------------------User Code Goes Here------------------------ open plc Xoptical if(prepare==1) { system "/var/ftp/usrflash/Project/C Language/Background Programs/xoptical.out" ; call timer(10); PLC1data++; } if(compWipe==1) { system "/var/ftp/usrflash/Project/C Language/Background Programs/xoptical.out"; call timer(10); PLC2data++; } close
  18. Eric, thanks for your reply. In the past week, I have done many tests, and I have tested all the coordinate system variables. I didn’t continue to use macro variables, and used certain values to write NC. 1) The system has four motors, motor 4 is a main shaft (also with C-axis function), motor 6 is a turntable, and motors 1 and 2 are two linear motion axes. 2) When aligning the workpiece for processing, use C—>S, and motor4 moves at jogspeed. Then, the motors 1, 2, and 6 start to move in continuous jog mode, and then move in incremental mode. Finally stop the spindle movement s—>C and start to execute NC. During the execution, the first execution of the motion program is always normal. The problem started the second time. 3)I did a different test again, just let the spindle rotate, instead of continuous jogging, incremental jogging. Then switch to the C axis. After running the NC system, the problem disappeared. I searched for the logic problem of continuous jog operation and incremental motion program, but did not find the problem. I am very confused. Eric, I cannot upload my program in the attachment. I will send my program and configuration file to your email address. Please check it carefully. thank you for your help
  19. TIA, I have encountered similar problems. Obviously there is nothing wrong with the program, but the download is a problem. I suggest entering "$$$***" in the terminal window and then save. Turn off power pmac, wait a minute and restart. ------------------------------------------- Error: CS Status: Not homed. Ppnc_csparameters.pmh in the Global includes folder of ppnc. ------------------------------------------- // All Motors Required to be Home Before Running Program Coord[1].HomeRequired = 1 ------------------------------------------- Modify it to Coord[1].HomeRequired =0. This error will disappear. The function has changed. When running the program, the motor/axis do not need to return to zero. If your equipment is a machine tool, this setting is not recommended. (I need to confirm that you have added "enable plc InitializePlc;" in the pp_startup.txt file in the Configuration folder. This is very important.) Other mistakes that make you crazy, enter "$$$***", I believe the problem will be solved next time you turn it on (you are lucky enough). Otherwise, just create a new project, and that's how I solved the problem. The Power series is indeed not as stable as the TURBO series, and some errors always make me confused. Need more time to perfect.
  20. I added Coord[1].Nsync to the IDE monitor window. When the N19 line of code is executed, Coord[1].Nsync=19, F specifies 0.5mm/s, but at this time the Z feed speed exceeds the set value, and it continues to accelerate. When Z reaches about half of its stroke(the Z maximum speed is 6MM/S), The speed starts to decrease. At the same time, Coord[1].Nsync =20. the N20 code is executed. Z axis is still decelerating and N19 has not ended. This is the case when an exception occurs. Coord[1].Nsync counts in advance, and linear motion is like PVT, only acceleration and deceleration motion, no uniform motion and more importantly, it exceeds the speed specified by F. There are two issues involved. The first one is motion advance (Coord[1].Nsync count changes). The second is abnormal linear motion. Which variable settings will cause these situations to happen?
×
×
  • Create New...