Universal Robots Forum

Modbus Digital Input

I’m trying to use a Phoenix Contact Ethernet (Modbus) module for additional I/O. The outputs work as digital outputs, but the inputs always seam to be HIGH/True. I have changed the Frequency from 1 to 500 and the best I can get is the “Value” will change from Light blue to white for less then 1 second. A simple program that assigns the Modbus values to a variable shows that the value stays True most of the time, unless the input (connected to a proximity sensor) is triggered high. With no sensor connected to the module, the Digital Input value stays mostly true.
What needs to change for this to work correctly?

Does the Modbus master declare those inputs as coils? The IFM masters forces me to use register inputs instead. Can you share a datasheet for that one?

Here is the datasheet for the Phoenix Contact AXL E ETH DI8 DO8 M12 6P module

ah_en_axl_e_eth_modscan32_105959_en_01.pdf (690 KB)

What are you putting in for register values for, let’s say, Port 1 and Port 2?

Hello Terry;

Here is the Modbus client IO setup I have (from the simulator):

The digital outputs work as expected, but the digital inputs do not. I Wireshark capture of the TCP/IP message shows that the module is sending the information as expected, but Polyscope does not seem to interpret it correctly. It shows true with occasional false for an input that is not connected (and the Wireshark capture shows as false). I have changed the frequency and there is very little change in response. If I set the module to have a sensor and it is true, then the value in Polyscope stays true, but when I change the sensor to a false, the value in Polyscope does not change to indicate a false.

Please note, Potential Shipping Disruptions: In light of the ongoing pandemic there may be possible delays related to our quoted lead times.
Stay informed, for our Covid-19 operational updates click here

Duane Scherzinger
Sr. Application Specialist

Advanced Motion & Controls Ltd.

T. 705.726.2260 x2292 | F. 705.726.5829 | C. 249.288.4866
A. 26 Saunders Road, Barrie, ON L4N 9A8
W. www.AdvancedMotion.com | www.QuickSolutions.ca

ISO 9001:2015 Certified

These are always hard to read, but looking at this:

It looks like 8001 is a 16 bit register with bits 0-7 representing each digital input. Try reading it as a register and see what comes through and convert to binary perhaps?

integer_to_binary_list(x)

might help

Hello Terry;

Two things. First that portion of the datasheet is for the IO-Link master. We could use the register method and then extract the bits out, but we are trying to find something for those customers who do not want a lot of additional programming and would like to simplify the ability to add addition inputs and outputs to the robot system without having to add an additional control system.

Please note, Potential Shipping Disruptions: In light of the ongoing pandemic there may be possible delays related to our quoted lead times.
Stay informed, for our Covid-19 operational updates click here

Duane Scherzinger
Sr. Application Specialist

Advanced Motion & Controls Ltd.

T. 705.726.2260 x2292 | F. 705.726.5829 | C. 249.288.4866
A. 26 Saunders Road, Barrie, ON L4N 9A8
W. www.AdvancedMotion.com | www.QuickSolutions.ca

ISO 9001:2015 Certified

Sounds like you need a different device that has a register for each port DI/DO. For example, the IFM ones I use dedicate modbus register n000 for the digital input, and n100 (n being IO port 1-8). The only difference is that the value is a 1 or 0 instead of True or False.