

I guess there should be a way to read inputs, since there is a "Read Input" function block in Visilogic Modbus Master. There is offcourse the chance to "map" SBs or Inputs to MBs and then read them as MBs, but is not a clean way to do it, and you need to consume MBs just for mapping purposes. Modbus offcourse supports 1xxxx addresses for inputs, but Unitronics OPLCS seem to support only 0xxxx (coils) and 4xxxx (registers). Well, this simply doesn't work, reading addresses 3000 or 4000 does not return SBs or Inputs, also any attemp to read a coil address above 4095 will return an error. (similar story for registers different from MIs) Or in order to read OPLC discrete inputs you should read coils starting at 4000 This table apparently indicates for example that in order to read SBs you should read coils starting at 3000 address Visilogic help shows a "slave adressing" table. I've been able to read and write MIs and MB successfully.īut I'm not able to access any other type of addresses.
MODBUS ADDRESS HMI REGISTER SERIAL
If the data type is a signed or unsigned 32-bit integer, for instance, the number of registers is probably 2.I've implemented Modbus communications with Unitronics Vision series, both serial and Ethernet. This can be specified in the manufacturer's documentation or it can be inferred by the data type.
MODBUS ADDRESS HMI REGISTER CODE
Function code - this explains what type of data is found in the register and, if standards are followed, where the register is located.Critical Labs provides a number of different options when creating Modbus register mappings to accommodate manufacturer specifications, including: The key here is to find the manufacturer's documentation on how the equipment's Modbus registers are implemented. Some will support signed integers (negative numbers) and others won't. Some manufacturers will provide the value as a float. Some manufacturers will provide an integer (a whole number) and then a corresponding "multiplier" (such as 0.1) to convert that whole number to a decimal. Depending on the manufacturer of the equipment and how they chose to implement Modbus, these data types can vary. Each register is 16-bits long and can hold a signed integer, an unsigned integer, or a float. Registers in the 3xxxx and 4xxxx range are considered numerical, meaning that they can hold large number values. This is currently done using a special shorthand in the sensor's unit. In the Critical Labs web app, you can give the 0 value a state name and the 1 value a state name. Registers in the 1xxxx range are for reading state. Critical Labs does not support controlling equipment, so we typically do not deal with registers in this domain. Examples of this would include starting a piece of equipment or changing its state. The first 9999 registers are designed to handle control input. The table below describes the Modbus standard for different register addresses in the protocol (table information courtesy of Simply Modbus): Let's take a look at the Modbus standard to understand what to expect from different Modbus register locations and how they can help you get more information out of your equipment with Critical Labs. Did you know that Modbus has standards for numbering registers? It turns out, if you access register 10004, you should expect to get different information than if you access the register at 30392.
