FX-controller programming - Logical setup#

Getting started#

../../_images/programming_basics1_1.png ../../_images/programming_basics1_2.png ../../_images/programming_basics1_3.png

Introduction#

The FX-controller comes in many flavours and types; with touch screen, without screen, with embedded I/O’s or without, with one, two or three serial RS485 ports etc. Basically, you can select the hardware configuration that suits you best.

The main types of FX-controllers that are currently being used are:

  • FX-3000-X (1 on-board serial RS485 port)

  • FX-SPIDER-X (40 on-board I/O’s, 1 or 2 serial RS485 ports, 10.1” touch screen)

A typical system layout of a project executed with Fidelix consists of 1 FX-controller with a number of I/O modules connected through Modbus RTU RS485. We can extend this by adding more serial ports on the FX-controller, adding programmable room controllers and / or room panels.

../../_images/programming_basics1_4.png

We can extend this by connecting Modbus TCP or UDP devices, or by adding more serial ports with the help of a multiLINK protocol converter. We can extend this by interconnecting several FX-controllers; they can share points, alarm devices (email sending, SMS messages, …), they can share one public IP address, … We can extend this by adding a supervisory layer through our webVision software.

You get the picture; any Fidelix system is built up of the same components. We strive for simplicity, and having a product portfolio as small as possible is our way to achieve it.

In this manual, we will teach you reach the full potential of the FX-controller; after all, the FX is a powerful controller. You might not need to add anything else to get your projects up and running.

Setting up your FX#

Changing the user interface language#

Should your controller be delivered in a language you are not familiar with, these are the steps you should take to change its user interface language:

  1. Either on the touch screen or in your browser, log in with following credentials:

    user: system

    password: 24680

  2. Once you are logged in:

  1. On the touchscreen, where the menu is hidden by default, as to provide as much space as possible for the graphics on the pages, go to the top left corner and click or make a sliding movement inside the menu area on the left to open the menu.

  2. In your browser; simply click in the left “menu” area to open the same menu.

Now open the upper menu and select the THIRD item in the drop-down list to select “Settings” (in Finnish for instance, this is “Asetukset”).

../../_images/programming_basics1_5.jpg ../../_images/programming_basics1_6.jpg ../../_images/programming_basics1_7.jpg ../../_images/programming_basics1_8.jpg

Open the lower menu and select the THIRD item in the drop-down list to select “Settings” (in Finnish for instance, this is “Asetukset”). You will immediately see flags inside the menu area with which you can choose a user interface language you are more comfortable with.

NOTE: when changing from or to Russian, the FX will reboot to start up with a different character set.

../../_images/programming_basics1_9.png

Connecting modules#

To be able to communicate, the FX needs to know the specifics of the port.

Port 1 is used to connect an SMS modem for sending out alarm messages via RS232.

Port 2 (also called Port 0) is used for M-Bus communication through the physical interface of a multiLINK module.

Ports 3-5 are the on-board serial ports (not all ports are always present on each controller!), and

ports 6-10 are ports connected through Ethernet. This can be serial ports using a multiLINK module, or genuine TCP or UDP ports.

Navigate to ‘Settings - Ports’ to parametrise the ports. Here, you can set baud rate, parity and other significant parameters for the communication with modules or other devices.

On-board RS485-ports can be used for Modbus or BACnet MS/TP communication.

Remote RS485-ports via multiLINKs can only be used for Modbus communication.

Once you have connected your I/O modules to one of three on-board serial ports, activated that port, and parametrisized it with 8 data bits, no parity and 1 stop bit, you can simply go to ‘Programming - Modules’ and click the “Find Modules” button at the bottom of the screen. The FX will poll all addresses (from 1 to 63) on all activated on-board serial RS 485 ports (ports 3, 4 and 5) to see if any module is connected. Once the FX is ready, you will see all your modules appear listed here, with the module’s firmware version and the possible % of communication packages dropped or lost.

Fidelix programming layers#

The FX works in three very distinct yet interconnected layers:

Each layer can only communicate directly with the next layer. The passing of information, and especially directing the information and commands, happens through point IDs. We call these point IDs “FX-point IDs”.

Every point - physical and fictive - has a unique point ID which may be up to 29 characters long. This ID is frequently used when the value of a point is needed, e.g.

  • A point may refer to another point (e.g. DO point is (de)activated based on a time schedule)

  • IEC programs are referring to FX-points by point ID

  • Third party software may refer to FX-points through an OPC server

  • The web graphics are displaying point values using FX-point IDs

    ../../_images/programming_basics1_10.png

This means that in your HTML pages, you will use these FX-point IDs to show the correct value, in the FX-point programming, you will attribute a physical I/O point to the FX-point ID, and in the PLC programming layer, you will set special conditions or do complicated calculations with the value retrieved from the I/O.

This means that the FX-point ID is the most important identifier, because from your graphics or PLC program, you can only connect to an I/O through the FX-point ID, so choose them wisely when you start!

Graphical layer / HTML#

Using the Graphics Editor in the FX-Editor suite, create html pages that can be loaded to your FX-controller.

Alternatively, the Fidelix Graphics / HTML Editor can be used, but there is no integration with the Point-programming or PLC layer, so this is not recommended as it is much more prone to typing errors. The reference manual for this editor however, gives more detailed instructions on how to create or edit graphics and how to add special values (limit values, time values etc.).

It is important to know that you can define a “User level” for each point and each page that you add to the graphics. This means that you can show or hide certain values or pages for different types of users (view only, maintenance, admin, etc.). Read more about User Level in the User Level section.

It is also in the HTML pages where you can define if a value is editable from the UI or not.

Lastly, you can add “buttons” that behave just like physical buttons in the graphics.

For most projects, you will start by creating HTML pages, embedding and choosing immediately the FX-point IDs that will be used throughout the whole project.

FX-Point layer / Point Database#

FX-point IDs are generally chosen when making the graphics, and are subsequently read into the FX-Editor point database where you can parametrise them and connect them to physical I/O’s, or keep them as virtual FX-points. One FX can store up to 2000 (virtual and physical) FX-points. This number includes time schedules, conversion tables, alarm points, set points, etc.

Any manipulation you do inside FX-Editor will be replicated on the FX-controller, meaning that in theory you could do all the FX-point programming on the web interface of the controller. Obviously this is not recommended. Instead, use FX-Editor to parametrise everything and upload from your PC to the FX-controller.

The programming you can do in the FX-points layer are for example; parametrise the PID loop of a set point, set alarm limit values, set digital point on and/or off delays, parametrise a time schedule, link a time schedule to a digital point, group alarms, attribute actions to alarm groups, select the right conversion table to be used for your measurement point, adjust conversion tables, link physical I/O’s to FX-points, and many more things.

NOTE: each measurement point has 8 sub-values, or limit values. They are generally used to store alarm limits related to the measurement point (e.g. supply air lower limit, supply air upper limit, return water lower limit, …)

Each FX-point, whether physical or virtual, can have 3 different so called LockStates. The LockState of a point tells you what process is operating a point. The LockStates are hierarchically organised, meaning that the bigger LockState value will ALWAYS take priority on the lower LockState value. This also means that once a point has been operated on to get it in LockState 1, the value will stay there until OR a different process sets the LockState to 2, OR the LockState is (manually) set back to zero (in reality, more LockStates than 0, 1, and 2 are possible, but let’s get to that later).

LockState 0 or AUTO: This means the point is in its default state. If it is a measurement point, the point value will be simply directly the value the module is measuring, if it is a time schedule, the point will have the direct same value as how the time schedule is parametrised, etc. Basically; things are working in an automatic way.

LockState 1 or PROGRAM: This means the program that you wrote in ST-Edit or OpenPCS is the last process to control the point. Note that this LockState will remain active until you actively change the LockState of the point, even if you changed your program and are no longer controlling the point. In this case, you should “release” the point by switching back to AUTO mode in the UI: Note that this LockState will remain active until you actively change the LockState of the point, even if you changed your program and are no longer controlling the point. In this case, you should “release” the point by switching back to AUTO mode in the UI:

Click on your point, choose “Manual command” and click “Auto” to set the point back to LockState 0.

../../_images/programming_basics1_11.jpg ../../_images/programming_basics1_12.jpg

LockState 2 or MANUAL:

This means the value was set from the UI. This is indicated by a blue border around the value as shown on the image. As this is the LockState with the highest authority, any value that would come from the IEC program or from the automatic parametrising of the point are ignored. You can enter a value manually by clicking a point and simply entering a value. It will by default pass into manual mode.

The manual LockState can be released either from the UI by passing to AUTO again as described above, or by overwriting a manual value from the IEC program. This means that even though MANUAL is the highest LockState, you can still grab control from your software, for instance to avoid faulty or extreme values to be entered by unknowing maintenance personnel.

See the description of the functions SetDigitalPointF and SetAnalogPointF in the FX programming reference manual for more details on how to overwrite LockStates.

NOTE: In addition to this, alarm points have three more LockState values to indicate whether the alarm has been acknowledged or not.

In some cases, you will not restart a process until the alarm has been acknowledged, to make sure some (manual or even on-site) action has been taken. More details in the Alarms section.

Different LockState values are also used to change the on or off delay of alarms and other digital points. More details the full Fidelix programming reference manual.

../../_images/programming_basics1_13.png

PLC layer#

../../_images/programming_basics1_14.png

FX-controllers are programmed following the industrial automation standard IEC 61131-3. We use the program called OpenPCS (issued by infoteam). This is a completely separate program, for which Fidelix provides the correct drivers to program the FX-controller. As mentioned above, OpenPCS communicates solely through the means of FX-point IDs. In principle, the program doesn’t (need to) know if the FX-point is a physical point, or even (to some level) what type of point it is. This separation allows for a very portable architecture, where changes in the hardware (e.g. changing the type of sensor connected, or connecting to a different module) only need to be reflected by minor changes in the FX-point layer parametrising (e.g. simply selecting another conversion table or module).

NOTE: IEC code, IEC program, PLC code, PLC program, OpenPCS code, OpenPCS program, IEC project, … are all terms that are used randomly, but are 100% interchangeable. They basically mean the same thing: the line coding program you write!

Fx-Editor offers an integrated environment with connections to the FX-point names.

While you thus will need OpenPCS for driver support and the compiler, the software simply needs to be installed on your computer, but you will use FX-Editor to write and edit special programs.

Verify your skills:#

--- primary_color: orange secondary_color: lightgray text_color: black shuffle_questions: false --- ## On how many different operational levels are FX-controllers operating ? > You need the PLC, GUI and the point DB! - [ ] One - [ ] Two - [x] Three ## Which layer will end users use ? > End users have an interface of their own - [x] Graphical layer - [ ] Point layer - [ ] PLC layer ## Which communication ports are used for FX-RS485-C extension module ? > The built-in ports end up in port 3 - [x] Ports 4 & 5 - [ ] Ports 6-10 ## Which communication ports are used for multiLINK protocol converter ? > The built-in ports end up in port 3 - [ ] Ports 4 & 5 - [x] Ports 6-10 ## What LockState prefers to automatic process ? > Auto, program, manual... - [x] LockState 0 - [ ] LockState 1 - [ ] LockState 2 ## What LockState prefers to PLC-programmed process ? > Auto, program, manual... - [ ] LockState 0 - [x] LockState 1 - [ ] LockState 2 ## What LockState prefers to manual process ? > Auto, program, manual... - [ ] LockState 0 - [ ] LockState 1 - [x] LockState 2