Fidelix FX-RP multiDISPLAY
Programming manual
page 33 of 38
How to work with input/output registers
Each display point (POINT1, POINT2, ..., POINT250) has 6 registers attributed to it (3 input and 3 output).
When making graphics, you can assign a unit and a divider (the number of decimals) to each point. You can
also set these attributes from your master, if that is desirable, into register 0, 3, ..., 747. This feature is currently
no longer frequently used. Its original purpose (during development there were only 50 display points) was to
set the point type dynamically; having only 1 page, "looping through" different values. Currently that register is
set at 0F99x16 (3993) if it has not been written over by the Modbus master.
Each point has an "info" register (1000, 1003, ..., 1747) which indicates if the point’s value has been set from
the display (=1). This is useful when you allow a user to enter a value (you ticked the “controller set value” box
in the EditPoint dialog box in the graphics editor) and you have not defined #MIN and/or #MAX on the graphics,
but want to validate the input, or simply monitor this register to detect changes in setpoints. In this case you can
use the "Parameters, Divider, Unit" registers (0, 3, ..., 747) to initially hide the user input value, validate it in your
master and only then write it to the display (bits 7 and 8 of the most significant byte, see
A value set from the display will be saved into registers 1001+1002, 1004+1005, ..., 1748+1749. At the same
time, it will set register 1000, 1003, ..., 1747 to "1", indicating a point's value has been changed locally. If the
master reads these values, it can “confirm” them by writing the same value into registers 1+2, 4+5, ..., 748+749.
Once that has been done, the display will set the info register (1000, 1003, ..., 1747) back to 0, again notifying
the Modbus master that all points and values have been properly synchronized.
A 4-and-a-half-minute video is available on Youtube to clarify this process:
This rather complex process is however not always necessary. Actually, in most cases, we don't use it when not
working with the Fidelix multi24 controller (where all of these functionalities are embedded into two functions
GetDisplayPointF and SetDisplayPointF). Using a third party controller, the easiest way is to just write directly
into registers 1001+1002, 1004+1005, ..., 1748+1749, overwriting any value from the display when the point
value is editable from both the multiDISPLAY and the Modbus master.
TL;DR:
In most cases, you will have a very distinct separation between the points you want to read and the ones
you want to write and only select “controller set value” for those points you will set from the multiDISPLAY. Read
those from registers 1001+1002, 1004+1005 etc and write “read only” values on the multiDISPLAY that are
being written by the Modbus master into registers 1+2, 4+5 etc.
Trends (history)
The FX-RP multiDISPLAY can show trends with up to 300 points. The data is requested by the FX-RP
multiDISPLAY from the Modbus master. The data is presented as 16bit signed integers, the divider is taken from
the point definition. Instead of polling registers 2000 and 2001, the Modbus master may poll register 3012 which
also contains information about requested trend.
Reg2000
0=Trend ready (cleared by Modbus master), 1=Trend request (set by display)
Reg2001
Point number of requested point
Reg2002
Minimum value (used for y-axis scaling)
Reg2003
Maximum value (used for y-axis scaling)
Reg2004
Sample interval (seconds, used for x-axis scaling)
Reg2005
Number of points (max 300)
Reg2006
Last unsaved measurement
Reg2007
seconds from last unsaved measurement (0=not used)
Reg2008
Update interval (seconds, 0=not in use)
Reg2009
reserved
Reg2010
Trend data start (300 registers)
Reg2011
…
Reg2309
Trend data end