We are connecting a vision sensor to a UR robot via MODBUS, but because of the complexity of the visual inspection, we are running into an unexpected issue. The maximum number of MODBUS signals the UR controller accepts is 56, but we need a minimum of 75. Is there any way the number can be extended?
Is it possible that Modbus get a floating data (currently we get only integer)?
We are using a controller with software version 126.96.36.199.
Thank you in advance.
According to the Modbus specification, it only allows 16 bit registers (integers) and binaries.
So the Modbus standard is not really built for float numbers, unless you would combine multiple registers for a float number, and do the conversion yourself.
Did you consider to use a custom proprietary protocol instead of Modbus?
In this way you could implement a daemon service in a URCap, that could handle the conversion.
Modbus spec is 16 bit registers, but many modbus applications support using a pair of registers for 32 bit integers and/or single precision floats. Ideally this would be supported by the UR controller natively…
What we’ve done to get around this is to shift the decimal place by the precision we require, send the result as an integer, and shift the decimal back inside the UR controller. This is obviously limited in its potential application, but was much simpler than setting up socket communication for our vision application.