Jump to content
OMRON Forums

MoMo

Omron
  • Posts

    27
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by MoMo

  1. According to the Power PMAC Software Manual, there is no vcross in the scripting language, so its use in the scripting language environment is not supported.
  2. 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. 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.
  3. I think DaveBarnett's method is actually a good method. You can ensure precise synchronization of the two coordinate systems through TimeBase and achieve precise delay through PLC0. First set Coord[x].DesTimeBase=0 in the two coordinate systems, and then run the running program. At this time, the motor will remain stationary. Then first restore the Coord[x].DesTimeBase of the first coordinate system to Sys.ServoPeriod, and start the countdown, and then restore the Coord[x].DesTimeBase of the second coordinate system.
  4. First you must clarify the following: ①No matter what mode your motor uses in PMAC, CSP, CSV or CST, PMAC will eventually change it to position control mode. ②When you use a motion program, the controller plans a position-time curve, so its speed-time curve is also determined. ③If you want to simply offset the motion speed through DacBias, this is only possible when the motor is in open loop mode, which for your current situation means that you cannot control the position. ④The easiest way for your current situation is to use the TimeBase or Coord[].SegOverride mentioned above to change the speed. The premise of using Coord[].SegOverride is that Coord[].SegMoveTime is not 0
  5. I think the IDE cannot run on WinXP because the IDE was developed and tested without considering WinXP at all. Even if you install it successfully, there is no guarantee that it will work properly.
  6. Thank you very much for your information
  7. I use the following RS232 to Ethernet module. About $30 /*For more information see notes.txt in the Documentation folder */ #include <gplib.h> #define _PPScriptMode_ // for enum mode, replace this with #define _EnumMode_ #include "../../Include/pp_proj.h" #include <gplib.h> #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #define PORT_NUM 9739 //端口号 int main(void) { InitLibrary(); // Required for accessing Power PMAC library int server_sockfd = -1; int server_len = 0; int client_len = 0; char Cmd[256],Recv[256]; int result = 0; int i,length_of_Cmd_Recv; struct sockaddr_in server_addr; struct sockaddr_in client_addr; // 创建数据报套接字 server_sockfd = socket(AF_INET, SOCK_DGRAM, 0); // 设置监听的端口、IP server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(PORT_NUM); server_len = sizeof(server_addr); client_addr.sin_addr.s_addr = htonl(INADDR_ANY); client_addr.sin_port = htons(0); client_len = sizeof(client_addr); // 绑定(命名)套接字 bind(server_sockfd, (struct sockaddr *)&server_addr, server_len); length_of_Cmd_Recv=sizeof(Cmd); for(i=0;i<256;i++) { Cmd[i]=0; Recv[i]=0; } while (1) { // 接收数据,用 client_addr 来储存数据来源程序的IP端口 result = recvfrom(server_sockfd, &Cmd, length_of_Cmd_Recv, 0,(struct sockaddr *)&client_addr, &client_len); result = GetResponse(&Cmd,&Recv,length_of_Cmd_Recv,0); //发送处理后的数据 sendto(server_sockfd, &Recv, length_of_Cmd_Recv, 0, (struct sockaddr *)&client_addr, client_len); //清空缓存 for(i=0;i<256;i++) { Cmd[i]=0; Recv[i]=0; } } // 关闭套接字 close(server_sockfd); CloseLibrary(); return 0; } The above is the Socket communication code of PPMAC. I recommend using UDP communication because UDP communication is closer to the serial port and is carried out in the form of messages.
  8. According to my experience, if there are two lines of programs at the same position, the above error will occur. You can add line labels to the program so that you can know the approximate location of the error in the program.
  9. I suggest you upgrade your IDE to 4.6.3.6 because the new version of IDE fixes many bugs. The following is the download link https://www.ia.omron.com/product/tool/pmac-software/
  10. Run the IDE in administrator mode? Or turn off anti-virus software?
  11. I suggest you upgrade your IDE to 4.6.3.6 because the new version of IDE fixes many bugs. The following is the download link https://www.ia.omron.com/product/tool/pmac-software/
  12. You can use the script's preprocessing instructions to implement different settings. The example is as follows: Then you can directly modify the predefinition in us'rflash via the sed command in Linux, such as the “_Machine_1” in the example above. Use the instructions below to switch the _Machine_1 to _Machine_2.After that, all you have to do is send $$$ and you'll be able to use the new settings system mount -o remount,rw /opt system sed -i 's/#define _Machine_1/#define _Machine_2/g' /opt/ppmac/usrflash/Project/PMAC\ Script\ Language/Global\ Includes/global\ definitions.pmh system mount -o remount,ro /opt
  13. I think your idea is very creative. I don't know much about your equipment, something like this can be fixed in the controller as a file. Or modify and set through a host computer software. I may not want unrelated personnel to easily change the PMAC controller configuration through DIP switches. I personally prefer to perform this operation through a dedicated host computer software. I think your needs can be met, but it will be a little more complicated.
  14. My personal experience is that I don't trust the settings generated by the IDE software. Usually I write the settings into the Global Includes folder, and disallow PPMAC from using systemsetup.cfg. It is very reliable to use the "fsave" command to temporarily save the contents of certain variables. Our users have been using it without any problems.
  15. Please use English or contact Omron in China for resolution.
  16. Add your slave station in my IDE, PDO can be edited, just add the content is still byte. The content that can be added or modified in PDO is also determined by the ESI file, so you still need to consult Hilscher on this issue. But there is a high probability that it will be what I guessed before, and it won’t be very elegant.
  17. If you are using a direct drive motor (linear motor), you do not need to compensate for backlash. In other words, the reverse error you measure in a laser interferometer cannot be compensated and is due to mechanical precision. The compensation table can only improve the absolute positioning accuracy of the motor, but cannot improve the repeated positioning accuracy.
  18. Based on the content inside, this is obviously not an ESI file. I guess your module is similar to the user-defined memory in PMAC. In other words, it only delimits the data length of ECAT slave PDO communication. You need to reorganize the data through these bytes described in its existing ESI file. For example, if a 32-bit data is mapped on the master side, it corresponds to a 4-byte PDO on the slave side. In other words, you may need to reorganize the data by writing a program in PMAC.
  19. I don’t know much about your device. It may be that it cannot export the modified ESI file. You may need to consult Hilscher about this. I'm also not sure that the Mapping file exported in your picture is an ESI file. But judging from your current situation, it should not be a problem that can be solved by PMAC. I can give you an example. If the Fixed attribute of the 0x1a0 PDO in the ESI file is 1, the PDO group cannot be edited or modified in the IDE. So all your current troubles are caused by the ESI file. PMAC cannot know your mapping information in the slave station. It must be obtained through the ESI file.
  20. From the file name of your picture "HLS_RTA_ENI", I guess that this is not an ESI file, which means that it is not a file used to describe the slave station information, but an ENI file, which is a file used to describe the master station settings.The meaning of the ENI file is "EtherCAT Network Information (ENI) Specification" Usually used to set and notify the master station of its network topology and slave station information.
  21. The PDO items displayed in the IDE are determined by the imported ESI file(Including whether PDO can be edited is determined by the ESI file), so I think your problem is that the IDE does not import the ESI file exported by Sycon.net. It's not clear to me that the difficulty you're having is when importing the ESI file, the IDE reports an error? Or is it another problem? Usually the IDE cannot import ESI files because ESI does not comply with the EtherCATSlaveInformationSpecification standard. If an error occurs when importing an ESI file, usually the IDE software will report.
  22. Usually, for motors whose position loop is controlled by PMAC, Motor[x].CompPos is used to correct the feedback position. For the application of position loop in the driver(EtherCat), Motor[x].CompDesPos will be used to correct the command position. If your compensation table is effective, observe Motor[x].CompPos or Motor[x].CompDesPos. There should be a numerical change. If there is no change, it means that the compensation table function is not effective. The activation of the compensation table function is determined by Sys.CompEnable and the correct compensation table setting.The compensation table serial numbers must be used continuously and cannot be used at intervals. For detailed setting procedures, please refer to the manual in the attachment. Power PMAC 5-Day Training - December 2016.pdf
  23. Of course, many of our customers who use linear motors use laser interferometer measurement data and the compensation table function to compensate the motors.
  24. You can try this, I tested it on CK3M and it works. TelnetInstall.deb
  25. Hi There are two types of labels in Power PMAC, one is a jumpable label and the other is an indication label. N{constant}:is a jumpable label, and N{constant} is a non-jumpable label. The difference is : . For jumpable labels, as described in your question above, the maximum value used in Power PMAC is 65536. In firmware v2.8.0.0 or later, it will support up to 999999. By default, a program has address pointers reserved for 1024 line jump labels. If more line jump labels are desired, the number of address pointers to reserve must explicitly be declared in the open prog or open plc command that initiates the downloading of the program. In addition, according to the SRM manual, it is obvious that you should have exceeded 1024 jump labels.
×
×
  • Create New...