David Jan Posted April 8 Share Posted April 8 I want to use PMAC and Ethercat to control two identical motors, one in CSP mode and the other in CSV mode,After configuring the configuration file, there are issues with both motor jogs. The CSP motor jog does not move, while the CSV motor jog accelerates directly to the maximum speed, which is very dangerous. Quote Link to comment Share on other sites More sharing options...
steve.milici Posted April 9 Share Posted April 9 How did you configure the EtherCAT motors? Did you follow the step as outlined in the IDE manual under the “EtherCAT Network and Motor Setup” section? What is your PMAC platform and firmware version? What is the IDE version? Quote Link to comment Share on other sites More sharing options...
David Jan Posted April 11 Author Share Posted April 11 I am following the steps in the IDE manual to configure the motors, both motors run fine in CSP mode and in CSV mode at the same time, but when one is in CSP mode and the other is in CSV mode, the motors have problems. My PMAC is a CK3E, the drive is a CDHD2, and the power PMAC IDE is version 4.5.2.9! The configuration file is below: Sys.WpKey = $AAAAAAAA Motor[1].pAmpEnable = Motor[1].AmpEnableBit = 0 Motor[1].pLimits = 0 Motor[1].pDac = EncTable[1].pEnc = EncTable[1].pEnc1 = Sys.pushm EncTable[1].ScaleFactor = 1 EncTable[1].Type = 1 Motor[1].pEnc = EncTable[1].a Motor[1].pEnc2 = EncTable[1].a Motor[1].pAmpFault = Motor[1].AmpFaultBit = 3 Motor[1].AmpFaultLevel = 3 Motor[1].MaxDac = 28000 Motor[1].DacShift = 0 Motor[1].ctrl = Sys.PosCtrl Motor[1].FatalFeLimit =0 Motor[1].MaxSpeed= 200 Motor[1].JogSpeed=100 EncTable[2].type=1 EncTable[2].index1=0 EncTable[2].index2=0 EncTable[2].index3=0 EncTable[2].index4=0 EncTable[2].index5=0 EncTable[2].index6=0 EncTable[2].MaxDelta=0 EncTable[2].ScaleFactor=1 EncTable[2].pEnc = EncTable[2].pEnc1 = Sys.pushm Motor[2].pAmpEnable = Motor[2].AmpEnableBit = 0 Motor[2].pLimits = 0 Motor[2].pDac = Motor[2].pEnc = EncTable[1].a Motor[2].pEnc2 = EncTable[1].a Motor[2].pAmpFault = Motor[2].AmpFaultBit = 3 Motor[2].AmpFaultLevel = 3 Motor[2].MaxDac = 1000 Motor[2].DacShift = 0 Motor[2].ctrl = Sys.servoctrl Motor[2].ServoCtrl = 1 Motor[2].FatalFeLimit =0 Motor[2].MaxSpeed= 200 Motor[2].JogSpeed=100 Sys.WpKey = $0 Quote Link to comment Share on other sites More sharing options...
steve.milici Posted April 11 Share Posted April 11 That is a very old version of the IDE. You should upgrade to the latest version on the website and re-build your project from the beginning. This version encapsulates all the PMAC configuration (including EtherCAT) into the project, so you don’t need to have “separate” configuration files: https://www.ia.omron.com/product/tool/pmac-software/index.htm For your version, the “Control Type” is set in the “Amplifier Topology Block”. Please follow the step-by-step instructions in the IDE manual in the “Motor Setup” chapter starting on page 338. Specifically see the section “EtherCAT Network and Motor Setup” starting on page 340. Also see the section “Topology Blocks” (page 266) in the “PROJECT SYSTEM” chapter starting on page 175. Quote Link to comment Share on other sites More sharing options...
David Jan Posted April 13 Author Share Posted April 13 Thank you, Steve. I'll download the new version and try again Quote Link to comment Share on other sites More sharing options...
David Jan Posted April 13 Author Share Posted April 13 Steve,I understand that the command position and command speed in PMAC are calculated by internal servo algorithms. So, how can I modify the actual speed value without changing the command position, so that the motor speed has an actual bias? Can PMAC achieve this? Do you have any relevant parameters? Option 1: Enable Motor [1] DacBais=20 seems to be unable to implement my idea. Option 2: Can I directly add or subtract from the output address corresponding to Motor [1]. pDac? For example, Motor [1]. pDac=sys Udata [1]. a, I can directly set sys Udata [1]=sys Udata [1]+200, but the speed remains unchanged. Why is this? Quote Link to comment Share on other sites More sharing options...
MoMo Posted April 26 Share Posted April 26 (edited) PMAC actually only controls the position of the motor (closed-loop control). When you plan a position-time motion curve, the velocity-time curve is also determined. Because speed is the derivative of position, if you just want to change the speed without updating the program, you can use TimeBase. Quote Can I directly add or subtract from the output address corresponding to Motor [1]. pDac? No, because PMAC is a closed-loop control that controls the motor position. If you use CST or CSV mode, PMAC's PID algorithm will correct the offset you apply. Give a simple example: If you are a boiler worker, you have a supervisor who monitors the boiler temperature and tells you how much coal to add. You want to get off work early and speed up adding coal to the boiler. At this time, your supervisor finds that the boiler temperature rises too fast and will start to order you to reduce the coal addition. If you do not obey your supervisor's orders, your supervisor will think that there is a risk of the boiler losing control and will open the boiler's pressure relief valve and shut down the boiler directly (PMAC kill the motor). This is similar to if you have two bosses in the company and give you two opposite instructions, how should you execute them? I suggest you tell us your project requirements, because your idea is basically impossible to implement now, and this is not a limitation brought by PMAC. Edited April 26 by MoMo 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.