Gepponline Posted April 21, 2022 Report Share Posted April 21, 2022 (edited) Hi, I'm currently communicating with some Rockwell (allen Bradley)PLCs via ethernet IP using an old ethernet IP toolkit. Now I would like to communicate with an OMRON PLC but the toolkit have some problem with it ( I suppose it's due to a specific DLL used to communicate). Does anyone of you know how to communicate with an Omron PLC via Ethernet IP? (no OPC or Modbus) I found ther is an NI official toolkit for ethernet IP but I can't find an evaluation version to know if it allow communication or not. Thank you so much. Edited April 21, 2022 by Gepponline Quote Link to comment
Rolf Kalbermatter Posted April 21, 2022 Report Share Posted April 21, 2022 This project may be interesting. It talks directly the Omron proprietary FINS protocol: https://github.com/jmor2000/LV-OMRON-FINS No OPC, no special Ethernet/IP function block or whatever needed on the Omron PLC. While the Omron FINS protocol is proprietary it is actually openly documented by Omron: https://www.myomron.com/downloads/1.Manuals/Networks/W227E12_FINS_Commands_Reference_Manual.pdf 1 Quote Link to comment
Gepponline Posted April 21, 2022 Author Report Share Posted April 21, 2022 Ok, Iv'e opened it and the communication seems to be ok, but it's not clear to me how to get values. I know variable names and data type. But in the examples there are no use of variable or tage name or something similar... Quote Link to comment
Rolf Kalbermatter Posted April 21, 2022 Report Share Posted April 21, 2022 (edited) 29 minutes ago, Gepponline said: Ok, Iv'e opened it and the communication seems to be ok, but it's not clear to me how to get values. I know variable names and data type. But in the examples there are no use of variable or tage name or something similar... You need to translate them. There may be a service in the PLC that lets you translate names to addresses but I have no experience with Omron PLCs. For Beckhoff PLCs it is possible to retrieve a list of variables that enumerate all variables with their name and list the actual register address where they are stored. Lacking that you need to refer to the W227E12 FINS document and locate your type of PLC in there. There is a Memory Area Designation for each model series that tells you how the CIO, TR, G, A, AR, CNT etc registers map to memory addresses. And then from your ladder logic you have to determine what specific register address a variable may have, and then translate that to a linear memory address and then use the FINS "MEMORY_AREA_READ" and "FINS_MEMORY_AREA_WRITE" commands to get that information. The library on the github site is a bit strange as it packs all the TCP/IP handling into a LV 2 style global. That makes the whole a bit complicated to use and won't allow for instance two parallel connections to two different PLCs. It would have been a lot better to actually create LabVIEW classes that keep the connection related information in the class wire. That would allow to implement a layered approach where you have a basic class that implements the actual FINS protocol (pretty much what this library is) and also provides empty overwrite templates for actually writing and reading to registers by their type and offset and then implement for each PLC type a small child class that translates the register type into an actual linear memory address for that PLC type. Edited April 21, 2022 by Rolf Kalbermatter Quote Link to comment
Gepponline Posted April 21, 2022 Author Report Share Posted April 21, 2022 WOW..such a complicated way...It's not a PLC where I have full control, it is from an external supplier Maybe a CIP communication specific for Omron will be a better way. At the moment I can read variable values using RAW data type so variable names are accepted, but I can't write them. Quote Link to comment
Gepponline Posted May 3, 2022 Author Report Share Posted May 3, 2022 I solved My problem Using the old Ethernet IP toolkit (the one you can find online without license). REAL and INTEGER datatype are writeable/readble without any problems, BOOLEAN and STRNGS needs a workaraound. You have to read/write them as RAW data and manipulate them. Quote Link to comment
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.