# This header is for providing additional information to hugo for the website generation it ignored by asciidoctor

title: "The Eclipse 4diac Project" url: doc/intro/4diacframework.html page_css_file: /4diac/css/4diac_doc.css sidebar: - sb-doc ---

# The Eclipse 4diac Project

To understand what’s next, you need to know IEC 61499. If you did not read the following page yet, go there now: IEC 61499 101

## Overview on the Eclipse 4diac Project

This section outlines the big picture from the design to actually controlling physical units.

As shown in the IEC 61499 explanation, an application developed using this standard uses Function Blocks (FB). There are ways of creating and defining FBs, but at some point in the workflow ranging from FBs to actually controlling something physical, the logic behind the FBs and the FB networks has to be implemented. That’s where the run-time environment comes in. This software loads the network of FBs and then executes the events and follows the rules of the standard like the one seen here.

So, where is the run-time environment in the standard? Nowhere directly. For executing the distributed control applications modeled with IEC 61499 the standard defines the device model containing resources, the FB execution model, and the management model allowing tools to configure devices. This is what a run-time environment provides. In the next image, the idea behind decoupling the application development and the execution is presented.

The rectangle on the top represents the system according to IEC 61499. Here, you need a tool that allows creating FBs and connecting them. Also, it should represent the devices of your system, and some method to show the part of your application which will be deployed to each device. This is usually done on a normal computer.

The big squares in the second row represent real devices such as PLCs, control hardware, or a Raspberry Pi. In these devices, the mentioned run-time environment needs to run. It receives information from the top rectangle to create the network of FBs, execute FBs, send events between FBs, and so on. The devices normally have inputs and outputs which are accessed by the run-time environment.

## Components of Eclipse 4diac

Eclipse 4diac provides two main components for developing and executing distributed control systems compliant to the IEC 61499 standard:

- 4diac FORTE is a small portable C++ implementation of an IEC 61499 run-time environment which supports executing IEC 61499 FB networks on small embedded devices. 4diac FORTE typically runs on top of a (real-time) OS. 4diac FORTE is a multi-threaded and low memory-consuming run-time environment. It has been tested on several different operating systems, for example, Windows, Linux (i386, amd64, ppc, xScale, arm), NetOS, eCos, rcX from Hilscher, vxWorks, and freeRTOS.

- 4diac IDE: is an integrated development environment written in Java, based on the Eclipse framework. It provides an extensible engineering environment for modeling distributed control applications compliant to the IEC 61499 standard. You use 4diac IDE to create FBs, applications, configure the devices and other tasks related to IEC 61499. Within 4diac IDE, these results can also be deployed to devices running 4diac FORTE or other compliant run-time environments.

Because the development of systems according to IEC 61499 and the run-time environment are decoupled, some things have to be taken into account. As described, you can create FBs in 4diac IDE. At this point, however, the run-time environment doesn’t know that the FB exists nor how to execute it. Within 4diac IDE, you therefore have the possibility to export your created FB into 4diac FORTE code (i.e., C files). You then need to add your exported code to the source code of 4diac FORTE and compile all as explained in the xref:../installation/overview.adoc#FORTE[Compile 4diac FORTE] section of the installation documentation. This is possible only for Basic and Composite Function Blocks (BFB and CFB), since both definitions are in the standard. However, for Service Interface Function Blocks (SIFBs) only the interface is defined. The internal implementation of an SIFB has to be coded manually in C, the language 4diac FORTE is written in.

## Human Machine Interface

4diac FORTE is intended to run in PLCs, so a Graphical User Interface (GUI) as Human Machine Interface (HMI) is not supported. Therefore, for providing HMIs for your control solutions developed in Eclipse 4diac, you need external components. 4diac FORTE features a set of different communication protocols which allow to interact with such external HMI components. Currently, the most commonly used protocols are MQTT or OPC UA.

## Where to go from here?

- Now that you have a better understanding of the IEC 61499 standard, and know about the tools around Eclipse 4diac, is time to start using them. Take a look at the following page:
  Installation

- If you want to go back to the Where to Start page, we leave you here a fast access:
  Where to Start

Or Go to top