Explicit Messaging between R30iB and OMRON PLC

  • Hello,

    I am currently working on upgrading one of our cells consisting of R30iB controller and Omron NX series PLC connected with EIP protocol. As I have the time I thought it would be a good chance to play around with Explicit messaging as I never had the chance in the past. But digging through Omron manuals the only thing I found close to explicit messaging is FINS protocol. Has anyone ever used it before to configure explicit messaging on a FANUC robot ?

  • Why you don't wonna use EIP? All Omron NX PLCs support EIP.

    I do use EIP successfully. I can already send and recieve data through Digital I/O exchange between PLC and Robot and Group I/Os. I just need to learn how to also use explicit messaging for more advanced functions like Position Register manipulation through the HMI.

  • Explicit messaging is EthernetIP. You would need it to read or write to numeric registers or position registers.

    I searched on google and it mentioned Omron Ethernet IP datalink. You might want to look into that.

  • Explicit messaging is EthernetIP. You would need it to read or write to numeric registers or position registers.

    I searched on google and it mentioned Omron Ethernet IP datalink. You might want to look into that.

    To my understanding, not many people from the forum use Omron PLCs for robots, at least in USA. Ethernet IP Datalink is used to connect 2 PLCs from what I understood. Explicit message is implemented with built in functions but there are too many functions used for different types of messages. What about other PLC brands?

    Do you use special ladder functions to implement explicit message ? do you need to first OPEN the connection and after send the message ? In order to read the variable you need another function ? Or read and write commands fall on the same bucket ?

    To better understand what I mean here are some Omron built-in functions for communication:


    uses a serial gateway and sends a command to a Serial Communications

    Unit. Or, it sends an explicit command to a DeviceNet Unit. (prolly not what I need).

    opens a CIP class 3 connection with the specified remote node. (maybe what I need?)


    uses a class 3 explicit message to read the value of a variable in another Controller

    on a CIP network.(prolly not what I need as it refers to Controller)


    uses a class 3 explicit message to write the value of a variable in another Controller

    on a CIP network.

    sends a class 3 CIP message to a specified device on a CIP network. Maybe the answer to my question ? CIPSend accepts as Inputs ServiceCode, RqPath which is Request path (class ID, instance ID, attribute ID) which to my understanding it fits with the variables described to EIP fanuc manual.


    opposite of CIP Open


    uses a UCMM explicit message to read the value of a variable in another Controller on the specified CIP network. Prolly not what I need, maybe explicit message from PLC to PLC ?


    UCMM explicit message to write the value of a variable inanother Controller on a CIP network.


    sends a UCMM CIP message to a specified device on a CIP network.. This function also accepts as inputs the same one CIP send has which troubles me. What is the difference between UCMM and class 3 explicit messages ?

    How do you implement the concept on other controllers like allen brandley or siemens ?

  • I'm not sure about omron, but some of those look promising. You could contact omron or just try them out.

    In Allen Bradley there is a MSG instruction which can be set to different types. For messing a Fanuc robot it is set to "Set single attribute" to write to a single register.

  • UPDATE on the thread to anyone who will try setting up explicit message between OMRON and FANUC.

    The built-in function for OMRON is CIPUCMMSend. Omron supports two types of CIP (Common Industrial Protocol- TCP/IP Layer) CIPSend which is a class 3 explicit Message and UCMM which is unconnected message. FANUC EIP Manual states that it supports both but I didnt get into the trouble of using both. The difference between the two is that Class 3 CIP needs you to open a connection to the server (robot controller), send your message and after close the connection. UCMM is direct, no connection open/close.

    What took me so many days and gave so much trouble was the data types used to pass the correct parameters from the PLC to the Robot. The FANUC Manual writes everything with HEX but with omron PLC some must be passed as HEX and others as UINT. Especially the value you want to pass to a Register for example must be sent as DWORD (FANUC says in the manual you can send INT or REAL which I was not able to do so)

  • Famous_Fella

    Changed the title of the thread from “Explicit Messaging between R30iB and OMRON PLC with FINS” to “Explicit Messaging between R30iB and OMRON PLC”.
  • No special setup required on the robot's end except the initial setup required for Ethernet IP connection between Robot Controller and PLC CPU. I currently have R30iB configured as an adapter. I unfortunately cannot provide a sample smc as this is intellectual property for the company I work for, but the screenshots are pretty much a guide by themselves.

    Something I discovered right now:

    For the fetch messages I use a 10ms update interval (6message commands in total fetching 6 blocks of Registers) but this interval stresses the controller a lot making the Teach Pendant cumbersome and increasing response time of any commands issued from it. Increasing Update Interval to 1 sec seemed to have corrected this problem.

  • Have you figured out how to write and read integers from Fanuc registers using the CIP?

    I'm battling with the problem right now, and I'm getting errors from writing and reading: 1C00 "Explicit message error" from Write and 0407 "Data range exceeded" from reading.

    So far only thing that works is Writing and reading reals, but it becomes problem when I need to use integers in robo registers without making converting program on the robot side.

  • That just it, it doesn't work with just changing the class id, I'm getting the errors mentioned in previous message. Does the R30ib+ controller have different configs compared to R30ib?

  • Here's image of my read/write integer setup, it's using custom made function block, to make using the function easier.


    Here's image of what's inside the function block.


    I'm using almost exactly the same function block to move real numbers to Robot, with difference in variables: "Resp_data" and "Service_data" which are for moving integer numbers with datatype of INT, (Tried using UINT, no luck), Moving integers doesn't work with this.

    I'm not sure what you mean "sending a 32 bit integer"?


    Tried changing the 16 bit settings to 32 bit, no luck. Is it just that, you can't write/read integers from robots that are using the R30ib+ controller, that only real datatype works?

    Edited once, last by Toni_V: Update ().

  • It isn't the settings that need 32 bit. It is the datatype for the integer you read/write. In Allen bradley this would be called a DINT.

    Also in AB all the settings are in hex not decimal. And Size is set in bytes, so = 4. Maybe decimal for you, I'm not sure.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now