<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Tools Integration through a Central Model and Automatic Generation of Multi- Platform Control Code</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marco Colla</string-name>
          <email>marco.colla@supsi.ch</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tiziano Leidi</string-name>
          <email>tiziano.leidi@supsi.ch</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>SUPSI - University of Applied Sciences of, Southern Switzerland</institution>
          ,
          <addr-line>CH-6928 Manno</addr-line>
          ,
          <country country="CH">Switzerland</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>approach to the design of control applications, which should also integrate mechanical, electrical and process information. A European project tackled this problem, and for achieving the goal of integrating engineering activities and tools proposed a link between the design and implementation phases by using a modelbased repository, supported by automatic generation of control code for various environments. This paper focuses on some project results particularly regarding the generation of multi-platform control code. Even if the project outcome has confirmed the feasibility of the proposed approach and generated code has been successfully used by project partners, some research questions are still worth to be investigated.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        In the industrial automation field, control applications
can be run on various hardware platforms, from classical
Programmable Logic Controllers (PLC) with a closed
architecture to open Programmable Automation
Controllers (PAC), from ad-hoc developed embedded
systems to standard PC hardware architectures down to
Field Programmable Gate Arrays (FPGA). The number
of programming languages is accordingly wide; the
authors grouped them into three main categories:
− industrial automation specific languages, like the
ones standardized in the IEC 61131-3 norm [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
or the Function Block based IEC 61499 [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
− generic computer programming languages,
either procedural (C) or object-oriented (Java)
− hardware description languages, e.g. Very High
Speed Integrated Circuit (VHSIC) Hardware
Description Language (VHDL) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>In consequence, the implementation of the control
solution for a given problem, and the required skills,
greatly varies depending on the chosen hardware,
runtime environment and programming language.</p>
      <p>On the other side, the growing number of sensing and
acting points of a mechanical device or plant, and the
increasing complexity of the related functionality
aggravate the task of the control engineer.</p>
      <p>In order to reduce the hurdles and risks of
implementing a control solution by manually writing
code, various design approaches and tools can be used to
tackle the control problem at a more abstract level.</p>
      <p>
        On the previous themes, a survey and analysis of
current practices and needs has been performed by the
authors [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] on a limited number of industrial enterprises
of different size and from various sectors. It showed that
the step from the design specification to platform
specific implementations of control applications is often
done by hand, and rules for doing such conversion are
seldom codified, often relying on the programmer’s skill.
      </p>
      <p>
        To overcome this situation, the European project
MEDEIA [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], Model driven Embedded systems Design
Environment for the Industrial Automation sector, was
conceived and led by the Austrian company Profactor
GmbH with support of eight partners. The automatic
linking of design and implementation phases through a
central model-based repository supporting, by contrast to
comparable approaches, various tools, methods and
languages was the main goal.
      </p>
      <p>The automatic generation of the control code out of
the information contained in the repository is necessary
to achieve this goal. Several hardware platforms and
programming languages have been considered, and a
number of transformations have been implemented
according to the industrial partners’ needs.</p>
      <p>This paper reports some information and results from
such experimental development, particularly regarding
control code generation out of a central model-based
repository. Section 2 introduces more details about some
project objectives, while section 3 analyzes other
approaches from the industry and research domains.
Section 4 details the code generation process adopted by
the project, section 5 introduce considered languages and
platforms, and section 6 ends up the paper resuming
conclusions and further research issues.</p>
    </sec>
    <sec id="sec-2">
      <title>2. MEDEIA integration approach</title>
      <p>
        Engineering of industrial automation systems requires
knowledge from and information transfer among different
scientific disciplines. Moreover different application
fields adopt various design methods and approaches,
while solutions based on heterogeneous hardware and
software platforms aggravate the implementation of
control applications. To overcome these hurdles,
specification of systems and of their functionality should
be done at a high level of abstraction, different design
techniques should be applicable, and the integration of
these data and the implementation on different platforms
using various languages should be automatic [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>The MEDEIA project set various goals, covering also
diagnostic, simulation and verification aspects. In this
presentation we introduce the ones that support the
bidirectional flows depicted in Fig. 1, which shows some
considered design techniques on the left and some
implementation languages on the right, namely:
− a formal framework for model-driven
componentbased development of control applications
− a modeling approach that considers design
methods and tools currently used by experts from
different domains
− automatic platform specific code generation.</p>
      <sec id="sec-2-1">
        <title>2.1. Formal framework</title>
        <p>The main objective of MEDEIA was the development
of a formal framework for integrating the various
heterogeneous design and implementation models and
tools existing in the industrial automation field.</p>
        <p>For this reason the environment depicted in Fig. 2,
named Design and Engineering Framework (MDEF), has
been defined. It consists of a project manager and various
model editors, transformers, simulators, verifiers and
code generators that access a central data repository
through a service manager. The whole framework
integrates various software applications, some already
existing on the market and others developed ad hoc.</p>
        <p>MEDEIA supports the usage of already existing formal
description methods through automatic model
transformations to and from the central repository.</p>
        <p>Moreover MEDEIA developed a set of code generators
that navigate the information contained in the central
repository and automatically generate the artifacts for the
chosen platform and programming language. This way,
systems from different vendors and various languages can
be supported inside a single company or application, and
existing applications can be reused after platform changes.</p>
        <p>An Engineering and Configuration Environment
(MECE) coordinates the previously listed applications.</p>
        <p>
          The MECE is based on the open source Eclipse [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]
project and on various plug-ins extensions. This choice
has been motivated by the diffusion of this environment,
by the growing number of projects and plug-ins that
allow an easy integration of ready-to-use functionalities,
and last but not least because it is open and free.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Central data repository</title>
        <p>
          The information in the central repository is organized
using various meta-models. At the basis of the
architecture is the Automation Component (AC)
metamodel, which represents the control functionality [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
        </p>
        <p>In the MEDEIA context, a component is similar to an
integrated circuit (IC) in the electronic domain. The
description of an AC is made up of its interface to other
components or the physical environment through custom
and plant ports, and of its internal, hidden contents and
behavior. The behavior of basic components can be
described e.g. using timed state charts, while bigger
components and whole applications can be created by
hierarchical composition, as shown in Fig. 3.</p>
        <p>Components can produce and consume events and
data, contributing to build an event-driven architecture,
and their instances can be connected together using port
connections to form bigger ones. A flow-based paradigm
is hence used: black boxes (ACs) build networks for
exchanging information through connections.
This way the control designer can focus on the
functional properties of the single components
independently from the chosen technical architecture.</p>
        <p>Other meta-models allow describing the real
hardware of a specific implementation, and how the
components instances inside an application map to the
various physical devices and I/Os. Further meta-models
cover diagnostic information for failure detection,
identification and handling, and the description of the
plant architecture for simulation purposes, while
mechanical and electrical aspects can be added too.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Comparable initiatives</title>
      <p>
        In the industrial automation field many research
activities have been already undertaken or are currently
running, e.g. the CESAR project [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], with goals similar
to MEDEIA. Some commercial products on the market
also present some similarities. Nevertheless, generally
they focus either on the design or on the implementation
side, and consequently adopt different solutions for the
data repository and the code generation process.
      </p>
      <p>
        At the University of Patras, Greece, the Software
Engineering Group led by Prof. Thramboulidis [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] is
active since more than ten years on various aspects
regarding the model-driven development of
componentbased mechatronic systems, particularly focusing on
UML [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and SysML [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] for the design, and on the
IEC 61499 standard as implementation platform [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        A similar effort, oriented this time towards the
integration of UML with the IEC 61131-3 standard, has
been particularly pursued by Witch and Vogel-Heuser
[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], leading to the new object oriented 61131-3 version.
      </p>
      <p>
        The Department of Automatic Control and Systems
Engineering at the University of the Basque Country,
Bilbao, Spain, also fosters since many years a
component-based approach for implementing industrial
control systems [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. They developed a markup language
for industrial control systems called icsML whose
software architecture closely follows the model of IEC
61131-3. This way the data transformation from icsML
to the IEC 61131-3 platform is straightforward and can
be accomplished through eXtensible Markup Language
XML [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] based technologies like the eXtensible
Stylesheet Language Transformation XSLT [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>
        At the industrial level, the AutomationML
organization [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], founded by four leading industries in
the automation field, promotes a free, open and XML
based intermediate data format. The goal is to permit the
data exchange and synchronization among existing tools
for all phases of plant engineering, covering plant
topology, geometry, kinematics, motion planning and
control behavior [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Regarding the logic description,
AutomationML introduces an Intermediate Modeling
Layer (IML) for enabling a two step data translation
from various inputs, like e.g. Gantt charts or Impulse
diagrams, to languages specific to PLC platforms. With
this respect, AutomationML precisely focuses on
Sequential Function Charts (SFC) and adopts the
PLCopen XML data format [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], whose purpose is to
allow the exchange of programs among tools from
different vendors. As a direct consequence, IML is
comparable to SFC, and the transformation between the
two formats is straightforward.
      </p>
      <p>
        To terminate this partial review of comparable
initiatives it is worthwhile to cite Simulink [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] that,
starting from Simulink models, Stateflow charts [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], or
Embedded MATLAB functions [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], can generate code
for different platforms and languages. A wide family of
Coder products permits to create C, C++, VHDL and
even IEC 61131-3 Structured Text supporting PLCopen
XML as also many other vendor specific data formats.
      </p>
      <p>Aside this commercial product, which supports
different implementation platforms and languages
starting from an own model based approach, the other
activities previously presented mainly focus on one
single specific language. Also for the modeling phase a
single method or formalism is usually supported, except
in case of AutomationML. As a consequence, the
intermediate model between the modeling and the
implementation levels usually can be similar to the one
of the destination language. A transformation of models
is then sufficient to accomplish the step towards the
implementation, and a real code generation is not
required. By contrast MEDEIA supports various
methods, formalisms and languages for both the
modeling and implementation phases. As a consequence,
the difference between the central component-based
model and a given implementation language can be
large, due to the many-to-many relationship between the
modeling and implementation environments.</p>
    </sec>
    <sec id="sec-4">
      <title>4. MEDEIA code generation process</title>
      <p>Even if the MEDEIA approach turns round the
concept of the Automation Component, the AC
metamodel is just one of the meta-models used in the
MEDEIA repository for organizing information.</p>
      <p>For automatically generating code such meta-models
must be navigated and information must be collected,
grouped, integrated with further constructs or modified
accordingly to the selected platform and language. The
navigation of different models by the code generators
would be particularly difficult and heavy indeed.
Moreover in the various meta-models the same concept,
e.g. the internal behavior of a component, can be
described with different methods. If code generators
would directly access such different ways of information
representation, then their implementation should cover a
matrix of N description methods and M specific
platforms. For this reason an additional internal model,
called Platform Oriented Merged Automation
Component Model (POMAC) has been introduced for
concentrating the necessary information, reducing the
complexity and increasing the efficiency of the code
generation process.</p>
      <sec id="sec-4-1">
        <title>4.1. Intermediate meta-model</title>
        <p>The POMAC can be seen as an intermediate layer that
links the bigger and numerous MEDEIA central
metamodels to the various code output formats. Various
characteristics and sometimes diverging peculiarities of
the selected platforms have been considered, and the
information inside the POMAC model has been
consequently structured for allowing the various code
generators to adequately convert it. Also the naming of
the single model elements was chosen in order to be
neutral to the various platforms terms, which sometimes
identify different concepts with the same name. An ad
hoc model transformer selects, merges and unifies just
the necessary information that is contained in the various
models, particularly in the AC, Mapping and Execution
System ones, and put it in the POMAC. The resulting
information flow is shown in Fig. 4.</p>
        <p>The POMAC consists of elements, their properties,
relationships and rules used for automatic validation of
the models. The meta-information inside can be grouped
in the following main categories:
− Event, Variables and Complex elements as a
combination of events and variables
− Components
− Component Aliases
− Component, Parameter and Plant Links for
connecting the components interfaces
− Distribution
− Documentation.</p>
        <p>The functional aspects of control applications are
built around the component concept, whose internal
behaviour is either described through state charts and
actions triggered by events, or through event and data
flows among contained components.</p>
        <p>Aliases for a component and its interface elements are
useful when on a platform a predefined implementation
already exists, e.g. in library, in order to convert the
neutral POMAC definition avoiding to generate code.
Timer components are an example of application of
aliases: one defines language independent timer
functionality in the model, and then specifies aliases for
e.g. IEC 61131-3 and IEC 61499 implementations.</p>
        <p>The distribution category contains the configuration
of an execution system made of applications, hardware
devices types and instances, I/Os, tasks running on the
devices, network connections, and the mapping of
application elements on the physical and logical ones.</p>
        <p>The last category, documentation, contains the
information for specifying non functional properties like
e.g. external behaviour of component interfaces
(transaction sequence, timing, quality of service ...).</p>
        <p>
          XMI (XML Metadata Interchange) format [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] has
been used for storing the metadata information of the
POMAC. Interchangeable code generators, as also
additional graphical and textual editors for direct
information editing, have been then developed and
integrated inside the MDEF environment.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Code generation technique</title>
        <p>
          For flexibly driving the transformations and for
supporting the management of automatic operations
related to generation (e.g. creation of projects and files) a
generation engine approach has been implemented. This
choice is due to the complex kind of the needed
transformations, which include nonlinear generation
phases where model objects are related to resulting
artifacts in a many to many relationship. This approach
was also well suited for handling the large amount of
variability when generating source code for computer
programming languages like C. The generation engine is
supported by the JET (Java Emitter Template) language
[
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] contained in the EMF (Eclipse Modeling
Framework) [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] plug-in of the Eclipse development
environment. JET uses a subset of the JSP (Java Server
Pages) syntax [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ] for creating template implementation
classes, in this case Java classes. Such classes have been
used for generating small pieces of code made of static
parts, written in the same way they have to be
reproduced, and dynamic ones generated using Java
code, embedded in the JET template, which queries the
model. This way the generator engines are made of Java
files, written by hand or built through templates without
using complicated scripting languages, which query the
model, load the elements and produce the code. This
approach simplifies the navigability and maintenance of
the code generator during refactoring phases too.
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Languages and platforms</title>
      <p>According to the interests of the project partners, the
following four languages have been considered for
automatic code generation, and the related
transformations rules have been defined:
− IEC 61131-3
− IEC 61499
− C
− VHDL.</p>
      <p>For C and VHDL no code generators have been
written during the project due to time constraints.
5.1. IEC 61131-3</p>
      <p>The concept of component, either basic or composite,
can be mapped to the concept of Function Block (FB) in
IEC 61131-3. By contrast events, not present in IEC
61131-3, have been converted both from the syntactic
and semantic points of view using a BOOL type and
generating extra code for preserving the transient
character of an event. Complex ports have been
converted to structures of data.</p>
      <p>Among the five IEC 61131-3 languages, for the
behavior of basic components SFC initially seemed the
ideal choice due to its graphical aspect that resembles a
state chart. Nevertheless some problems arose, due to
some limitations in the tools implementations and in the
language itself. For these reasons SFC has been
discarded in favor of Structured Text (ST).</p>
      <p>The IEC 61131-3 language that naturally lend itself
for expressing the behavior of composite ACs and
applications was the Function Block Diagram (FBD).
The conversion from the POMAC to FBD was
straightforward; nevertheless some differences and
limitations arose among the considered platforms.</p>
      <p>Just a subset of the information in the POMAC about
the execution system and the mapping can be used. In
IEC 61131-3 the available concepts of configuration,
resource, task, global variable, access paths or
communication FBs are more restrictive, and some
platform implementations set further limitations.</p>
      <p>
        Code generators for three platforms using different
persistence formats, all based on the eXtensible Markup
Language (XML) [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], have been implemented and
tested. No one of the platforms directly uses the XML
format standardized by PLCopen [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Nevertheless, the
first one, logi.CAD from logi.cals [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], can convert
programs to and from PLCopen XML. The second one,
Orchestra Logic Programmaing from Sintesi [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], even
if it claims to offer this conversion functionality uses a
slightly modified version of the PLCopen format. The
third platform, UnityPro from Schneider Electric [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ],
doesn’t offer conversion support at all, and code for its
proprietary format is directly generated.
5.2. IEC 61499
      </p>
      <p>The IEC 61499 model is different and more formal
than the 61131-3 one, nevertheless the concept of
component, either basic or composite, can be mapped to
the concept of Function Block (FB) in IEC 61499.</p>
      <p>As the IEC 61499 model is event based, if the
definition of a component doesn’t contain events default
ones are automatically generated and connected.</p>
      <p>The code generated for actions inside basic FBs is ST.</p>
      <p>In 61499 the information about the management of a
control application and its interfacing with the run-time
environment, e.g. I/O mapping or timing of execution,
has to be included into the application. Hence extra
elements, called Service Interface Function Blocks
(SIFB), are automatically generated and parameterized
e.g. with the physical I/O addresses and the plant ports of
the components are connected to them.</p>
      <p>
        XML is used for persistence format as defined by the
IEC standard [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], Part 2. The generated code has been
imported in two different open source runtime
environments, 4DIAC [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ] and FBDK [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ], and used for
experimental validation tasks in the robotic domain.
      </p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusions</title>
      <p>Industrial partners have successfully employed the
whole MEDEIA framework, e.g. in a manufacturing cell,
for semi-carter production for motorbikes, composed of
two complex machine tools, one common tool storage
unit, two pallet changers, one robot and one conveyor
belt. Code generation starting from a component-based
event-driven model, most control engineers were scared
about, demonstrated to be effective. Reusability of ACs
and time efficiency rated the highest satisfaction scores
(9/10). Process traceability and quality of generated code
rated 7/10. An assessment of the methodology over ten
years estimated a benefit-cost ratio of 2.2 and a reduction
of work hours of about 20%.</p>
      <p>The transformation for different IEC 61131 platforms
showed that, in spite of standardization, considerable
differences exist among the various implementations,
particularly regarding graphical languages. Often the
possibility of distributing applications, expressed in term
of number of supported configurations and resources, is
limited. At the end, just some tools support PLCopen
XML, or derivatives of it, as exchange format.</p>
      <sec id="sec-6-1">
        <title>6.1. Further research and developments</title>
        <p>
          The authors are considering if a pure
componentbased model and the related composition approach is
appropriate versus a class-based one, or a mix of the two.
The concept of component is a highly debated one, from
its formal definition of Szyperski [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ] as unit of
independent deployment and of third-party composition,
to the distinction between source and binary level
underlined by Thramboulidis [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ]. Defining a control
block as a class with methods and calling them inside
another block, instead of connecting the interfaces of the
two blocks, could offer greater design flexibility. Of
course this approach applies if the two blocks instances
cannot be distributed or deployed independently,
otherwise components are more suitable.
        </p>
        <p>From the industrial partners, two main suggestions
emerged after the validation phase: first of all the
possibility in AC of integrating functionality from a
parent. The current version of the AC meta-model lacks
of the inheritance concept indeed.</p>
        <p>Secondly the possibility to properly instrument
generated code in order to support e.g. application
debug. Currently the transformation rules are
documented but fixed in the generators Java source code.</p>
        <p>The authors of the MEDEIA tool chain are now
evaluating the best way for further developing and
exploiting the proposed approach.</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgements</title>
      <p>The research leading to these results has received
funding from the European Community’s Seventh
Framework Programme (FP7/2007-2013) under grant
agreement no ICT 2007-211448.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>International</given-names>
            <surname>Electro-technical</surname>
          </string-name>
          <string-name>
            <surname>Commission</surname>
          </string-name>
          , (IEC),
          <source>“Programmable controllers - Part</source>
          <volume>3</volume>
          :
          <string-name>
            <surname>Programming</surname>
            <given-names>languages</given-names>
          </string-name>
          ,
          <source>International Standard IEC61131-3”, Second Edition</source>
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>International</given-names>
            <surname>Electro-technical</surname>
          </string-name>
          <string-name>
            <surname>Commission</surname>
          </string-name>
          , (IEC),
          <source>“Function Blocks, Part</source>
          <volume>1</volume>
          - 4,
          <string-name>
            <given-names>International</given-names>
            <surname>Standard</surname>
          </string-name>
          IEC61499”,
          <source>First Edition</source>
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Electronic</given-names>
            <surname>Design Automation (EDA) Industry Working Groups</surname>
          </string-name>
          , http://www.vhdl.org/.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Colla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Leidi</surname>
          </string-name>
          , M. Semo, “
          <article-title>Design and Implementation of Industrial Automation Control Systems: a Survey”</article-title>
          ,
          <source>Proceedings of 7th IEEE International Conference on Industrial Informatics (INDIN '09)</source>
          , pp.
          <fpage>570</fpage>
          -
          <lpage>575</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <article-title>[5] MEDEIA: Model driven Embedded systems Design Environment for the Industrial Automation sector</article-title>
          ,
          <source>ICT Project Nr</source>
          .
          <volume>211448</volume>
          ,
          <string-name>
            <surname>7th EU</surname>
            <given-names>FP</given-names>
          </string-name>
          , http://www.medeia.eu/.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>T.</given-names>
            <surname>Strasser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rooker</surname>
          </string-name>
          , I. Hegny,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wenger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zoitl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Ferrarini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dedé</surname>
          </string-name>
          , M. Colla, “
          <article-title>A Research Roadmap for Model-Driven Design of Embedded Systems for Automation Components”</article-title>
          ,
          <source>Proceedings of 7th IEEE International Conference on Industrial Informatics (INDIN '09)</source>
          , pp.
          <fpage>564</fpage>
          -
          <lpage>569</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <article-title>[7] The Eclipse open development platform</article-title>
          , http://www.eclipse.org.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <article-title>[8] CESAR: Cost-efficient methods and processes for safety relevant embedded systems</article-title>
          , ARTEMIS Joint Undertaking, http://www.cesarproject.eu/ .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Prof</surname>
          </string-name>
          . K. Thramboulidis, University of Patras, Greece, http://seg.ee.upatras.gr/thrambo/dev/index.htm.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <article-title>UML: the Unified Modeling Language</article-title>
          , http://www.uml.org/#UML2.0.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <article-title>SysML: the Systems Modeling Language</article-title>
          , http://www.sysml.org/.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>D.</given-names>
            <surname>Witsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Vogel-Heuser</surname>
          </string-name>
          , “
          <article-title>Close integration between UML and IEC 61131-3: New possibilities through object oriented extensions”</article-title>
          ,
          <source>Proceedings of IEEE International Conference on Emerging Technologies and Factory Automation (ETFA '09)</source>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>E.</given-names>
            <surname>Estévez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Marcos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Orive</surname>
          </string-name>
          , “
          <article-title>Automatic generation of PLC automation projects from component-based models”, The Int</article-title>
          .
          <source>Journal of Advanced Manufacturing Technology</source>
          , Springer London, Vol.
          <volume>35</volume>
          ,
          <string-name>
            <surname>Nb</surname>
          </string-name>
          . 5-
          <issue>6</issue>
          , pp.
          <fpage>527</fpage>
          -
          <lpage>540</lpage>
          ,
          <year>December 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <article-title>XML: eXtensible Markup Language</article-title>
          , http://www.w3.org/XML/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>XSLT: eXtensible Stylesheet Language Transformation</surname>
          </string-name>
          , http://www.w3.org/TR/xslt.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>[16] AutomationML, http://www.automationml.org/.</mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>A.</given-names>
            <surname>Lüder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Estévez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Hundt</surname>
          </string-name>
          , M. Marcos, “
          <article-title>Automatic transformation of logic models within engineering of embedded mechatronical units”, The Int</article-title>
          .
          <source>Journal of Advanced Manufacturing Technology</source>
          , Springer London, Vol.
          <volume>54</volume>
          ,
          <string-name>
            <surname>Nb</surname>
          </string-name>
          .
          <fpage>9</fpage>
          -
          <issue>12</issue>
          , pp.
          <fpage>1077</fpage>
          -
          <lpage>1089</lpage>
          ,
          <year>June 2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <source>[18] PLCopen Technical Committee</source>
          <volume>6</volume>
          ,
          <string-name>
            <surname>“</surname>
            <given-names>XML</given-names>
          </string-name>
          <article-title>Formats for IEC 61131-3”</article-title>
          ,
          <source>Technical Paper, Version</source>
          <volume>2</volume>
          .01,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <source>[19] Simulink: Simulation and Model Based Design</source>
          , http://www.mathworks.com/products/simulink/.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Stateflow</surname>
          </string-name>
          : State Machines and Flowcharts, http://www.mathworks.com/products/stateflow/.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <article-title>Using the MATLAB Function Block</article-title>
          , http://www.mathworks.com/help/toolbox/simulink/ug/f6 -
          <fpage>6010</fpage>
          .html.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <article-title>XMI: Xml Metadata Interchange</article-title>
          , http://www.omg.org/spec/XMI/.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>[23] JET: Java Emitter Template, http://www.eclipse.org/modeling/m2t/?project=jet#jet.</mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <article-title>EMF: Eclipse Modelling Framework project</article-title>
          , http://www.eclipse.org/modeling/emf/.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>JSP: JavaServer Pages Technology</surname>
          </string-name>
          , http://www.oracle.com/technetwork/java/javaee/jsp/inde x.
          <source>html.</source>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Logi</surname>
          </string-name>
          .
          <article-title>CAD automation tool from logi</article-title>
          .cals, http://www.logicals.com/products/logi.CAD/.
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>Orchestra</given-names>
            <surname>Control Engine by Sintesi</surname>
          </string-name>
          <string-name>
            <surname>SpA</surname>
          </string-name>
          , http://www.orchestracontrol.com/Home/tabid/36/Default .aspx.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <article-title>Unity Pro from Schneider Electric</article-title>
          , http://www.schneiderelectric.com/site/home/index.cfm/ww/.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          <article-title>[29] 4DIAC, open source for Distributed Industrial Automation</article-title>
          , http://www.fordiac.org/.
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <article-title>FBDK, the Function Block Development Kit</article-title>
          , http://www.holobloc.com/doc/fbdk/.
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>C.</given-names>
            <surname>Szyperski</surname>
          </string-name>
          , Component Software:
          <article-title>Beyond Object Oriented Programming, Addison-</article-title>
          <string-name>
            <surname>Wesley</surname>
          </string-name>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>K.</given-names>
            <surname>Thramboulidis</surname>
          </string-name>
          , “
          <article-title>The Function Block Model in Embedded Control and Automation from IEC61131 to IEC61499”, WSEAS Transactions on Computers, Issue 9</article-title>
          , Volume
          <volume>8</volume>
          ,
          <year>September 2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>