Achieving Reconfigurability of Automation Systems by Using the New International Standard IEC 61499: A Developer’s View (Copyright CRC Press)

Hans-Michael Hanisch and Valeriy Vyatkin
Martin Luther University of Halle–Wittenberg, Germany

1      Reasons for a New Standard

The development of the IEC 61499 has been stimulated by new requirements coming mainly from the manufacturing industry and by new concepts and capabilities of control software and hardware engineering.

To survive growing competition in more and more internationalized global markets, the production systems need to be more flexible and reconfigurable. This demand is especially strong in highly developed countries with high labor costs and individual customer demands. Acting successfully in such markets means decreased lot sizes and therefore frequent changes of manufacturing orders that may require changes of the manufacturing system itself. This means either a change of parts of the machinery or a change of the interconnection of subsystems by flow of material.

Each change corresponds to a partial or complete redesign of the corresponding control system. The more frequent the changes are the more time and effort has to be spent on the redesign. As a consequence, there is a growing economic need to minimize these costs by application of appropriate methodologies of control system engineering. The desire of control engineers is to reach so called “plug and play” integration and reconfiguration.

When the production systems are built from automated units the control engineers naturally try to reuse the software components of the units. This is especially attractive in case of a reconfiguration, when the changes of units functionality may seem to be minor.  However, the obstacles come from the software side.

The currently dominating International Standard IEC 61131 for programming of Programmable Logic Controllers (PLCs) [2] is reaching the end of its technological lifecycle, and its execution semantics do not fit well into the new requirements for distributed, flexible automation systems. The IEC61331 systems rely on the centralized programmable control model with cyclically scanned program execution. Integration of this kind of systems via communication networks may require quite complex synchronization procedures. Thus, overheads of the integration may be as complex as the start-over system development. Furthermore, even different implementations of the same programming language of IEC61131 may have different execution semantics. Moreover, PLCs of different vendors are not interoperable and require vendor-dependent configuration tools.

For dealing with distributed non-heterogeneous systems it would be convenient to define control applications in a way that is independent from a particular hardware architecture. However, the architectural concept for such definition is missing.

These are severe obstacles towards the plug and play integration and reconfiguration of flexible automation systems.

The newly emerging International Standard IEC 61499 [1] is an attempt to provide the missing architectural concept. The standard defines a reference architecture for open, distributed control systems. This provides the means for real compatibility between automation systems of different vendors. The standard incorporates advanced software technologies, such as encapsulation of functionality, component-based design, event-driven execution, and distribution. As a result, specific implementations of different providers of field devices, controller hardware, human-machine interfaces, communication networks, etc. can be integrated in component-based, heterogeneous systems. The IEC 61499 standard stimulates the development of new engineering technologies that are intended to reduce the design efforts and to enable fast and easy reconfiguration.

This chapter provides an overview of the concepts and design principles of the standard.  For the internal details of the standard, the reader is referred to [1], for a more systematic introduction into the subject to [4], and to [7] for the evolution of the idea.  Since the design principles differ considerably from those of the well known IEC 61131, the general issues are introduced in a rather intuitive way. To illustrate the design principles and new features, an example is presented in this chapter. Real applications – although sparse – do exist but are too complex to be explained here in detail. The interested reader is referred to [9].  This chapter is based on the publicly available specification (PAS) of the IEC TC65 from March 2000.  The final form of the standard is expected in the early 2004.
 

2      Basic Concepts of IEC 61499

The standard defines several basic functional and structural entities. They can be used for specification, modeling and implementation of distributed control applications. Some of them stand for pure software components. Others represent logical abstractions of a mixed software/hardware nature. The main functional entities are function block types, resource types, device types, and applications that are built of function block instances. System configurations include instances of device types and applications that are placed (mapped) into the devices. The following sub-sections will briefly discuss all these entities.

The specification of functionality of a control application and the specification of a system architecture can be performed independently. An implementation of an application on a given system architecture is done by mapping of its function blocks onto the devices and their resources. Each function block must be mapped to a single resource and cannot be distributed over different resources.

Thus, Section 2.1 discusses the means to define the functionality of a distributed control application, and Section 2.2 shows how a particular system configuration can be defined.

2.1                   Describing the Functionality of Control Applications
 

2.1.1          Overview of the Function Block concept

 

Figure 1. External interface of a Function Block.

The basic entity of a portable software component in IEC 61499 is a so-called function block. The new standard defines several types of blocks: basic function blocks, service interface function blocks, and composite function blocks. Although the term function block is known from IEC 61131, a function block of IEC 61499 is different from IEC61131 function blocks. Figure 1 shows a function block interface following the standard (note that the graphical appearance is not normative). The upper part is often referred to as the “head” and the lower as the “body” of the function block. A block may have inputs and outputs. There is a clear distinction between data and event input/output signals. Events serve for synchronization and interactions among the execution control mechanisms in interconnected networks of function blocks. The concept of data types is adopted as in any programming language.  In particular, the standard refers to the data types of IEC61131. In the graphical representation in Figure 1, the event inputs and outputs are associated with the head of the function block, and the data inputs and outputs are associated with the body.

The IEC 61499 defines a number of standard function blocks for manipulations with events, such as splitting or merging events, generation of events with delays or cyclically, etc. 

The definition of the function block external interface includes also an association between the events and relevant data. It is denoted by vertical lines connecting an event and its associated data inputs/outputs in the graphical representation. The association literally means that the values of the variables associated with a particular event (and only these!) will be updated when the event occurs.

The IEC61499 standard uses the typing concept of function blocks that is similar to that in IEC61131 and in the object-oriented programming. Once a function block type is defined, it can be stored in the library of function block types and later instantiated in applications over and over again.

The standard does not determine in detail the languages to define the internal functionality of a function block. However, for each type of blocks the ways of structuring the functionality are identified. These will be discussed in the following sections.

2.1.2          Basic Function Blocks

Basic function blocks are software structures intended to implement basic functions of distributed control applications. The standard says that in addition to inputs and outputs, the internal structure of a basic function block may include internal variables, one or several algorithms, and an execution control chart.

An algorithm is a structure of finest granularity. It represents a piece of software code operating on the common input, output and internal data of the function block. The algorithms can be specified, for example, in languages defined in IEC 61131. But in general, they can be given in any form supported by the implementation platform. Important to observe is that an algorithm has to be implemented in one programming language. The internal data of a function block cannot be accessed from outside and can only be used by the internal algorithms of the particular function block.

Figure 2. A Basic Function Block.

The execution control function specifies the algorithm that must be invoked after a certain input event in a certain state of the execution control function. It is specified by means of Execution Control Charts (ECC for short). Figure 3 shows an example. An Execution Control Chart is a finite state machine with a designated initial state. An ECC consists of states with associated actions (designated by ovals in the Figure) and of state transitions (designated by arrows). The actions contain algorithms to invoke and output events to issue upon the completion of the algorithms’ execution.

Each state transition is labeled with a BOOLEAN condition that is a logic expression utilizing one or more event input variables, input variables, output variables, or internal variables of the function block. The event inputs are represented in the conditions as BOOLEAN variables that are set to TRUE upon an event and cleared after all possible state transitions (initiated by a single input event) are exhausted.

Figure 3. An example of the Execution Control Chart [1].

An input event causes the invocation of the execution control function that in more detail is as follows (see Figure 4):

Step 1:       The input variable values relevant to the input event are made available.

Step 2:       The input event occurs, the corresponding BOOLEAN variable is set, and the execution control of the function block is triggered.

Step3:        The execution control function evaluates the ECC as follows. All the transition conditions going out of the current ECC state are evaluated. If no transition is enabled, then the procedure goes to the Step 8. Otherwise, if one or several state transitions are enabled (i.e. if the corresponding conditions evaluated to TRUE), a single state transition takes place[1]. The current state is substituted by the following one. The algorithms associated with the new current state will be scheduled for execution. The execution control function notifies the resource scheduling function to schedule an algorithm for execution.

Step 4:       Algorithm execution begins.

Step 5:       The algorithm completes the establishment of values for the output variables.

Step 6:       The resource scheduling function is notified that algorithm execution has ended.

Step 7:       The scheduling function invokes the execution control function. The procedure resumes from the Step 3.

Step 8:       When some of the output event variables were set during this invocation of the execution control function then the execution control function signals the corresponding event output and clears the BOOLEAN variables corresponding to the triggered input and output events.

Figure 4. Execution of a Function Block.

First conclusions can be drawn at this point:

  • A Basic Function Block is an abstraction of a software component adjusted for the needs of measurement and control systems. Its execution semantic is event-driven and platform independent. Basic Function Blocks are intended to be main instruments of an application developer.

  • The standard implies separation of the functions, implemented by algorithms, from the execution control. The algorithms encapsulated in a function block can be programmed in different programming languages.

  • The execution of function blocks is event-driven. This means that algorithms are executed only if there is a need to execute them in contrast to the cyclically scanned execution in IEC 61131. The need has to be indicated by events. The source of events can be other function blocks. Some of them may encapsulate interfaces to the environment (controlled process, communication networks, hardware of a particular computational device).

  • The execution function of a Basic Function Block is defined in a form of a state machine that is available for documentation and specification purposes even if the algorithms are hidden.

  • The function block abstracts from a physical platform (the resource) on which it is located. This means that the specification of the function block can be made without any knowledge of the particular hardware on which it will be later executed.

2.1.3          Composite Function Blocks

The standard also defines Composite Function Blocks, functionality of which, in contrast to Basic Function Blocks, is determined by a network of interconnected function blocks inside. Figure 5 shows the principle.

Figure 5. Composite Function Block.

More precisely, members of the network are instances of function block types. These can be either Basic Function Blocks, or other Composite Function Blocks. Therefore, hierarchical applications can be built.

It is important to note that Composite Function Blocks have no internal variables, except for those storing the values of input and output events and data. Thus, the functionality of Composite Function Blocks completely depends on the behavior of the constituent function blocks and their interconnections by events and data.

Along with Basic Function Blocks, the Composite Function Blocks are intended to be main instruments of an application developer.

2.1.4          Service Interface Function Blocks

In contrast to Basic and Composite Function Blocks, Service Interface Function Blocks are not intended to be developed by an application developer. These have to be provided by vendors of the corresponding equipment, e.g. controllers, field buses, remote input/output modules, intelligent sensors, etc. The application scope determines the differences of this kind of function blocks from the previously considered ones.

To hide the implementation-specific details of the system from the application, the IEC 61499 defines the concept of services the system provides to an application. A service is a functional capability of a resource that is made available to an application. A service is specified by a sequence of service primitives which define properties of the interaction between an application and a resource during the service. The service primitives are specified in a graphical form of the time-sequence diagrams described in Technical Report 8509 of the International Standard Organization (ISO) [3]. This is rather a qualitative specification form as it does not specify exact timing requirements to the services. An example of time-sequence diagrams is presented in Figure 7 and will be briefly discussed later in this section.

Figure 6. Generic REQUESTER [1].


A Service Interface Function Block is an abstraction of a software component implementing the services. Figure 6 shows an example of a Service Interface Function Block REQUESTER that provides some service upon request to an application (examples of possible services: read the values of sensors, increase the memory used by a resource, shut down a resource, send a message, access remote database, etc.). The standard pre-defines some names for input/output parameters of Service Interface Function Blocks such as INIT for initialization, INITO for confirmation of the initialization, QI for input qualifier, etc.

Some of the services provided by this block are specified in the form of time-sequence diagrams in Figure 7. These are “normal establishment” of the service, “normal service”, and “application initiated termination” of the service.

The input event INIT serves for initialization / termination of the service, depending on whether the BOOLEAN input QI is true or false. The notation INIT+ means the occurrence of the event INIT with the qualifier value QI=true, and INIT- correspondingly with QI=false.

The input parameter PARAMS stands for the service parameters that have to be taken into account during the service initialization. At the end of the initialization/termination procedure, the Service Interface Function Block responds by event INITO its completion and indicates  by the BOOLEAN data output QO whether initialization / termination was successful (QO=true) or not (QO=false).

Figure 7. Diagrams of service sequences for application-initiated interactions.

The input data needed to perform the service are denoted as inputs SD_1 ... SD_m. Note that these data are associated with the event input REQ. The data outputs RD_1 ... RD_n stand for the data computed as a result of the service. These data are associated with event CNF that represents confirmation of the service. The output STATUS provides information about the status of the service upon the occurrence of an event output.

The execution of Service Interface Function Blocks is initiated by input events. The internal structure of Service Interface Function Blocks is not specified as firmly as for Basic Function Blocks. For example, a programming implementation of a Service Interface Function Block can be done in the form of several encapsulated algorithms (methods, procedures) that are invoked upon a particular event (say algorithm init stands for the event INIT).  The algorithms may check the value of the qualifier QI and call then either the subroutine responsible for the “normal service establishment” (if QI=true) or the one responsible for the “application initiated termination” (if QI=false). Note that the concept of Service Interface Function Blocks does not presume the need for internal variables – the conditions for initiating services are described by input events and data (qualifiers).

A particular case of Service Interface Function Blocks are Communication Interface Function Blocks. The standard explicitly defines two generic communication patterns: PUBLISH/SUBSCRIBE for uni-directional transactions and CLIENT/SERVER for bi-directional communication. These patterns can be adjusted to a particular networking or communication mechanism of a particular implementation. Otherwise, a provider of communication hardware/software can specify his own patterns if they differ from the above mentioned ones. Figure 8 illustrates the generic PUBLISH and SUBSCRIBE blocks performing uni-directional data transfer via a network.

Figure 8. Publish and Subscribe communication interface blocks.

The PUBLISHER serves for publishing data SD_1 ... SD_m that come from one or more function blocks in the application. It is therefore initialized / terminated by the application in the same way as described above.

Upon the request-event REQ from the application, the data that need to be published are sent by the PUBLISHER via an implementation-dependent network. When this is done, the PUBLISHER informs the publishing application via event output CNF.

The SUBSCRIBER function block is initiated by the application that reads the data RD_1 ... RD_m in the same way as described above. Normal data transfer is initiated by the sending application via the REQ input event to the PUBLISHER. This is illustrated in Figure 9 by means of time-sequence diagrams. The PUBLISHER sends the data and triggers the IND-event at the outputs of the SUBSCRIBER to notify the reading applications that new values of data are available at RD_1 ... RD_m outputs of the SUBSCRIBER. The reading application notifies the SUBSCRIBER by the RSP-event that the data are read.

Figure 9. Communication establishment and normal data transfer sequence.

In summarizing this subsection, one can see that Service Interface Function Blocks implement the interface between an application and the specific functionality that is provided by control hardware or system software. The content of Service Interface Function Blocks can be hidden, but the means are reserved to specify their functionality in a visual form.

2.1.5          Application

An application following IEC 61499 is a network of function block instances whose data inputs and outputs and event inputs and outputs are interconnected (see Figure 10).

Figure 10.  An application .

An application can be considered as an intermediate step in the system development. It already defines the desired functionality of the system completely, but it does not specify the system’s structure in terms of computational devices where the function blocks can be executed. The next step in the engineering process is to define a particular set of devices and to “cut” the application, assigning the blocks to the devices as illustrated in Figure 11.

Figure 11. The application distributed onto two devices.

The way in which the separated parts of the distributed applications communicate with each other has to be explicitly defined. This can be done by adding Communication Function Blocks in the places where the “cut” took place (see Figure 12).

A network of function blocks (forming the application) can be encapsulated in a Composite Function Block if needed. In this case, however, it could not be distributed across several devices or resources as a function block can be executed only in a single resource.

Figure 12. Communication Function Blocks explicitly connecting parts of the distributed application.

In fact, the standard provides a structure (called subapplication) that combines features of Composite Function Blocks and of applications. The content of a subapplication can be distributed across several devices. However, practical applicability of this structure is quite questionable.

The following subsection will show the concepts and specifications of a system following IEC 61499 as a platform for implementation and execution of an application.

2.2                   Specification of the System Architecture
 

2.2.1          Resources and Devices

A device in IEC61499 is an atomic element of a system configuration. The standard provides architectural frames for creating models of devices, including their subdivision in computationally independent resources.

A device type (Figure 13) is specified by its process interface and communication interfaces. A device can contain zero or more resources (see the description below) and function block networks (this option is reserved for the devices having no resources).

Figure 13. A device model.

A "process interface" provides a mapping between the physical process (analog measurements, discrete I/O, etc.) and the resources. Information exchanged with the physical process is presented to the resource as data or events, or both.

Communication interfaces provide a mapping between resources and the information exchanged via a communication network. In particular, services provided by communication interfaces may include presentation of communicated information to the resource and additional services to support programming, configuration, diagnostics, etc.

The interfaces are implemented by the libraries of corresponding Service Interface Function Blocks. The libraries of these blocks form the “identity” of a device. A device that contains no resources is considered to be functionally equivalent to a resource.

A resource (Figure 14) is considered to be a functional unit, contained in a device, that has independent control of its operation.  It may be created, configured, parameterized, started up, deleted, etc., without affecting other resources within a device. The functions of a resource are to accept data and/or events from the process and/or communication interfaces, process the data and/or events, and to return data and/or events to the process and/or communication interfaces, as specified by the applications utilizing the resource.

Furthermore, a resource provides physical means for running algorithms. This means storage for data, algorithms, execution control, events etc. It also has to provide software capabilities for managing and controlling the function blocks’ behavior, scheduling its algorithms (scheduling function), etc.

Figure 14. A model of resource.

2.2.2          System Configuration

A system is a collection of one or more devices (Figure 15). The devices communicate with each other over communication networks. Also the devices are linked with the controlled process via sensor and actor signals. 

Figure 15. A system configuration.

Applications are mapped on to the devices. This means that their function blocks are assigned to the resources of the corresponding devices. In this way a system, configuration is formed. A system configuration is feasible if each device in it supports the function block types that are mapped on it. Otherwise, the block would not be instantiated, and the system will not run.

3      Illustrative example
 

3.1                    Desired Application Functionality

The example “FLASHER” that is used in this section was borrowed from the set of samples provided with the Function Block Development Kit (FBDK). This is the first software tool supporting IEC61499 system development. It was developed by Rockwell Automation, USA. The toolset can be downloaded from [5]. The example represents an abstraction of an automation system. It is supposed to make 4 lamps blinking according to a preprogrammed mode of operation.

The system consists of human-machine interface components and of a core functional component. The core component generates the output signals determined by input parameters. The output values are delivered then to the visualization device (lamps). In the form presented here, the system is completely simulated in a computer. All human-machine interface components and lamps exist only on the computer screen. The example visually shows how easy each of the software components that interact with a simulated object can be replaced by components that would interact with the real physical equipment (e.g. buttons, switchers, knobs). After such a reconfiguration, the whole system will show then the same functionality without changing its structure and without redesign of the other components.

Figure 16. FLASHER in centralized system configuration.

Figure 16 shows a screenshot of the FBDK containing a system configuration. As a result of its execution, the output frame is produced. The output frame is located in the Figure below the FBDK screen. The arrows connect the function blocks with the screen objects created by them.

The system configuration includes one application. It is placed in one device with only one resource. An instance of the device type FRAME_DEVICE is used in this example. This type of device creates a windows frame on the computer screen. The resource of type PANEL_RESOURCE creates a rectangular panel within this frame. If a function block creates an output to the screen, it will be placed in the corresponding panel.

In this particular case, the system configuration implements the application in a centralized fashion. The application includes all the blocks shown in Figure 16 in the shaded rectangular area. The only block which falls out of the application is the block START of type E_RESTART. It belongs to the resource type PANEL_RESOURCE.

The application creates the following models of human-machine interface primitives. Buttons START and STOP are created by the blocks START_PB and STOP_PB. Both are instances of the type IN_EVENT. Block DT creates the input field for the TIME parameter. It is an instance of type IN_ANY. Block MODE creates the pull-down menu to select a desired mode of operation.

The block that produces the output combination is FLASHIT. It is an instance of type FLASHER4. The output values are visualized then by the block LEDS of type LED_HMI. The FLASHER4 generates the output values at every input pulse of the input REQ. The pulses are generated by the block PERIODIC with the frequency determined in the field that is created by the block DT. 

The operation of the system configuration is started when the resource is initialized, for example when the device is created (or switched on for more realistic devices). At that moment the Service Interface Function Block START produces the event COLD (cold restart). It is connected to the input event INIT of the block START_PB. This input event causes the block of type IN_EVENT to place a button image in the resource’s panel. The caption of the button is given by the input parameter “LABEL” of the block, i.e. “START” in our case. After that, an output event INITO is generated that is connected to the input INIT of the block STOP_PB. It leads to the creation of the button “STOP” and so forth in the chain until the whole picture is created on the resource panel as shown in Figure 16.

Once a button START is pressed (e.g. by a mouse click), it ignites the event output IND. This event propagates through the chain of blocks DT and PERIODIC. It makes the latter to generate the output event EO with the desired frequency. Every moment the event comes to the input REQ of the FLASHIT, the output combination of LED0..LED3 is created, and the output event CNF notifies the block LEDS which updates the picture.

If the operating mode is changed during the operation, the corresponding event IND of the block MODE would notify the FLASHIT. Then FLASHIT will change the pattern according to which its outputs are generated.

Figure 17. FLASHER4: Execution Control Chart.

A more detailed description of the function block type FLASHER4 is given now. Figure 17 shows the Execution Control Chart of this block. The state machine either switches to the desired algorithm corresponding to the selected MODE of operation (number in the interval 1..5) at input event REQ, or to the initialization algorithm INIT at the input INIT.

Note that one half of the algorithms encapsulated in the FLASHER4 is programmed in Structured Text (ST), while the other half is programmed in Ladder Logic Diagrams (LD). This is shown in Figure 18 and Figure 19. This illustrates the opportunities the IEC61499 function blocks provide to reuse the legacy code and even to combine different programming languages in a single software component.

Figure 18. Algorithm COUNT_UP programmed in structured text.

Figure 19. Algorithm CHASE_UP programmed in ladder logic.

3.2                   Distribution

The distributed version of the same application is shown in Figure 20. The system configuration includes two devices: CTL_PANEL and FLASHER. The function blocks of the application are mapped to either of these devices. In addition, the Communication Function Blocks PUBLISH and SUBSCRIBE are added to connect the parts of the application. The devices may be started or shut down completely independently from each other. As soon as the part located in CTL_PANEL produces any changes in the operation parameters, it will notify the FLASHER’s part via the communication channel.

Figure 20. Application FLASHER distributed across 2 devices.

Figure 21 shows a distribution of the same application across three devices. Device “FLASHER” (on the right) produces no picture. It produces the output values and sends them to the device DISPLAY given the input parameters received from the CTL_PANEL.

Figure 21. Distribution of the FLASHER application across 3 devices.

4      Engineering Methods and Further Development

In contrast to present practice of IEC 61131, the specification of a control system following IEC 61499 is a complete change of paradigms. Execution of control code in IEC 61131 is sequential and time-driven. The control engineer who uses the IEC 61499 needs to think in terms of event-driven execution of encapsulated pieces of code. The execution is distributed and concurrent. This requires new methodologies for control system design, verification/validation, and implementation.

A natural way of system engineering using IEC61499 is a method with the following steps:

1.                   Identification of the functionality of system components.

2.                   Encapsulation of basic functionality in these components. This gives the Basic Function Blocks or even Composite Function Blocks.

3.                   Interconnection of the function blocks to build an application. External coordination of the network of function blocks may be needed and added.

4.                   Mapping of the application in o a control system architecture.

At least the following questions must be answered to make such a methodology applicable.

o                    How to encapsulate the existing controllers (sometimes implementing very sophisticated ad hoc algorithms) into new event-driven capsules?

o                    How to specify the component controllers in a way allowing (semi-)automatic integration into distributed systems?

o                    Conversely, given a desired behavior of the integrated system, how to decompose it to the control actions of the component controllers?

This requires further research and development, in particular around the concept of Automation Objects [11]. The concept of Automation Objects is understood as a framework for encapsulation and handling of the diverse knowledge relevant to automation systems. This includes operation semantics as well as layouts, CAD data, circuitry, etc. As the scope of IEC61499 cannot cover all these issues, it probably needs to be combined with ideas arising from other developments, in particular with IEC68104 [12] for more detailed description of device types.

Conducting such a work requires integration of development activities among leading vendors and users of automation technologies on a global scale. Currently, such an activity is being organized under support of the Intelligent Manufacturing Systems Research and Development program (www.ims.org) in the form of OOONEIDA project [13].

Currently available engineering methodologies can be found in [6,10].  Also the idea of combining Unified Modeling Language (UML) with the IEC61499 promises to provide a consistent engineering methodology for control system engineering. Some details on that can be found in [11].

Another major future issue is how to bring the ideas of reconfiguration to practical applications. The standard itself provides the following means.

1.                   Basic Function Blocks do not depend on a particular execution platform. They will show equivalent execution semantics on different platforms, regardless, for example, in which sequence they are listed. This is not the case in the current implementations based on IEC 61131.

2.                   The functionality of whole applications that are represented as hierarchical networks of function blocks also does not depend on a particular number and topology of computational resources. Thus, system engineering can be done in an implementation independent way.

3.                   Models of various devices are represented as device types. This will allow anticipation of the system’s behavior after reconfiguration. On the one hand, the way of modeling of devices and resources is very modular. On the other hand, it uses a very limited number of constituent instruments. It allows modeling of a great variety of system configurations without going to unnecessary details.

4.                    There are also more technical concepts for reconfiguration. One is the use of adapter interfaces to minimize inter-block connections by means of predefined patterns. Another one are standard function blocks for manipulations with events. This, however, goes beyond the scope of this contribution.

Another open question for future research and development is how the correctness of the system can be validated. This requires more formal models for simulation or even for formal analysis of the behavior. The concept of encapsulation is extremely useful for embedding such models in the design. In principle, it allows modeling of the whole measurement and control systems with all their diverse components, such as sensors and actuators, networks, computational resources etc. The models could reproduce the execution semantics of the real system taking into account also such factors as communication delays of particular networks. Moreover, models of the controlled objects can be encapsulated in function blocks as well This allows to study the behavior of the controller and the controlled object in closed loop. Desired properties could be validated by simulation or even formally verified. A first approach for formal modeling and verification of IEC61499-compliant designs was applied in [8]. This approach can also be used for prototyping of the distributed control systems based on their formal models.

It is obvious that all these future developments must be supported by appropriate tools, compliant devices, runtime systems, etc.

Last but not least, there is a considerable need for training and education of engineering staff to understand and to apply the new concepts of the standard.

Nonetheless, despite of the amount of development that still lies ahead, the potential benefits of using IEC 61499 are very clear, and the ideas and concepts define cornerstones of future development and design of distributed control systems.

5       Acknowledgements

The authors thank Sirko Karras for help in managing the graphic material of this contribution. The authors furthermore express their gratitude to Rockwell Automation and personally to Dr. James Christensen for providing the FLASHER example, for the permission of using Figures 8 and 9, and for the fruitful ideas expressed in the personal communication.

6      References

1.                   Function Blocks for Industrial Process Measurement and Control Systems. Publicly Available Specification, International Electrotechnical Commission, Part 1: Architecture, Tech. Comm. 65, Working group 6, Geneva, 2000.

2.                   International Standard IEC 1131-3, Programmable Controllers - Part 3,  International Electrotechnical Commission, 1993, Geneva, Switzerland

3.                   ISO TR 8509-1987, Information processing systems - Open Systems Interconnection - Service conventions

4.                   R. Lewis: Modeling Distributed Control Systems using IEC 61499, Institution of Electrical Engineers; London, 2001, ISBN: 0852967969

5.                   www.holobloc.com – web site devoted to IEC61499.

6.                   J.H. Christensen: IEC 61499 ARCHITECTURE, ENGINEERING, METHODOLOGIES AND SOFTWARE TOOLS, 5th IFIP International Conference BASYS’02, Proceedings, Cancun, Mexico, September, 2002

7.                   R. Schoop and H.-D. Ferling: Function Blocks for Distributed Control Systems, DCCS’97, Proceedings, pp.145--150

8.                   Vyatkin V., Hanisch H.-M.: Verification of Distributed Control Systems in Intelligent Manufacturing, Journal of Intelligent Manufacturing, vol.14, N.1, 2003, pp.123-136

9.                   Vyatkin V., “Intelligent Mechatronic Components: Control System Engineering using an Open Distributed Architecture”, IEEE Conference on Emerging Technologies and Factory Automation (ETFA'03), Proceedings, vol. II, pp.277—284, Lisbon, September, 2003

10.               C. Tranoris and K. Thramboulidis, “Integrating UML and the Function Block Concept for the Development of Distributed Applications”, IEEE Conference on Emerging Technologies and Factory Automation (ETFA'03), Proceedings, vol.II, pp.87—94, Lisbon, September, 2003

11.               IEC 61804 Function Blocks for Process Control, Part 1 - General Requirement; Part 2 - Specification, Publicly Available Specification, International Electrotechnical Commission,  Working group 6, Geneva, 2002

12.               Automation Objects for Industrial-process Measurement and Control systems,  Working draft , International Electrotechnical Commission, Technical Committee No. 65

13.               OOONEIDA: open object-oriented network economy in intelligent industrial automation: a proposal for an international research and development project. Official web-site: http://www.oooneida.net


[1] The standard does not determine a rule how to choose a state transition if several are simultaneously enabled.


Copyright notice:
In The Industrial Information Technology Handbook, Zurawski R. (Ed.), CRC Press, Boca Raton, FL, 2004. With permission