IEC 61499
The international standard IEC 61499, addressing the topic of function blocks for industrial process measurement and control systems, was initially published in 2005. The specification of IEC 61499 defines a generic model for distributed control systems and is based on the IEC 61131 standard. The concepts of IEC 61499 are also explained by Lewis and Zoitl as well as Vyatkin. Part 1: Architecture. IEC 61499-1 defines the architecture for distributed systems. In IEC 61499 the cyclic execution model of IEC 61131 is replaced by an event driven execution model. The event driven execution model allows an explicit  specification of the execution order of function blocks. If necessary, periodically executed applications can be implemented by using the E_CYCLE function block for the generation of periodic events as described in Annex A of IEC 61499-1. IEC 61499 enables an "application-centric" design, in which one or more applications, defined by networks of interconnected function blocks, are created for the whole system and subsequently distributed to the available devices. All devices within a system are described within a "device model". The topology of the system is reflected by the "system model". The distribution of an application is described within  the "mapping model". Therefore, applications of a system are distributable but maintained together. IEC 61499 is strongly influenced by Erlang, with its shared-nothing model and distribution transparency. Like IEC 61131-3 function blocks, IEC 61499 function block types specify both an interface and an implementation. In contrast to IEC 61131-3, an IEC 61499 interface contains "event" inputs and outputs in addition to "data" inputs and outputs. Events can be associated with data inputs and outputs by "WITH constraints". IEC 61499 defines several function block types, all of which can contain a behavior description in terms of service sequences : To maintain the applications on a device IEC 61499 provides a "management model". The "device manager" maintains the lifecycle of any resource and manages the communication with the software tools (e.g., configuration tool, agent) via "management commands". Through the interface of the software tool and the management commands, online reconfiguration of IEC 61499 applications can be realized. Part 2: Software tool requirements. IEC 61499-2 defines requirements for software tools to be compliant to IEC 61499. This includes requirements for the representation and the portability of IEC 61499 elements as well as a DTD format to exchange IEC 61499 elements  between different software tools. There are already some IEC 61499 compliant software tools available. Among these are commercial software tools, open-source software tools, and academic and research developments. Usually an IEC 61499 compliant runtime environment and an IEC 61499 compliant development environment is needed. Part 3: Tutorial Information (2008 withdrawn). IEC 61499-3 was related to an early Publicly Available Specification (PAS) version of the standard and was withdrawn in 2008. This part answered FAQs related to the IEC 61499 standard and described the use of IEC 61499 elements with examples to solve common challenges during the engineering of  automation systems. Among other examples, IEC 61499-3 described the use of SIFBs as communication function blocks for remote access to real-time data and parameters of function blocks; the use of adapter interfaces to implement object oriented concepts; initialization algorithms in function block networks; and the implementation of ECCs for a simplified motor control of hypothetical VCRs. Additionally the impacts of the mapping concerning the communication function blocks was explained, as well as the device management by management applications and its function blocks, and the principle of the device manager function block (DEV_MGR). Part 4: Rules for compliance profiles . IEC 61499-4 describes the rules that a system, device or software tool must follow to be compliant to IEC 61499. These rules are related to "interoperability, portability" and "configuration". Two devices are "interoperable" if they can work together to provide the functionality specified by a system configuration. Applications compliant to IEC 61499 have to be "portable", which means that they can be exchanged between software tools of different vendors considering the requirements for software tools described within IEC 61499-2. Devices of any vendor have to be "configurable" by any IEC 61499 compliant software tool. Besides these general rules , IEC 61499-4 also defines the structure of "compliance profiles". A compliance profile describes how a system conforms to the rules of the IEC 61499 standard. For example, the configurability of a device by a software tool is determined by the supported management commands. The XML exchange format which determines portability of IEC 61499 compliant applications is defined within part 2 and is completed by the compliance profile, for example by declaring the supported file name extensions for exchange of software library elements. The "interoperability" between devices of different vendors is defined by the layers of the OSI models. Also  status outputs, IP addresses, port numbers as well as the data encoding of function blocks like PUBLISH/SUBSCRIBE and CLIENT/SERVER, which are used for the communication between devices, have to be considered. HOLOBLOC, Inc. defines the "IEC 61499 compliance profile for feasibility demonstrations", which is for example supported by the IEC 61499 compliant software tools FBDK, 4diac IDE, and nxtSTUDIO.