8 research outputs found

    A Sequential Control Language for Industrial Automation

    Get PDF
    Current market trends for industrial automation are the need for customizable production, shorter time to market, and powerful global competitive pressure. Based on these trends two challenges have been identified: 1) flexible production systems and 2) integration and utilization of devices and software. Applications from both process automation, manufacturing, and robotics have been considered. More flexible languages and tools are needed to get a flexible production system. The graphical programming language Grafchart, based on the IEC 61131-3 standard language Sequential Function Charts (SFC), is considered with the aim to make both the language and its implementation more flexible. In particular, new constructs have been added to the Grafchart language and modern compiler techniques are evaluated for JGrafchart, a Grafchart implementation, with focus on an extensible language implementation. A first step toward real-time execution of Grafchart applications is also taken to make it possible to use Grafchart for hard real-time control. High execution rates often reveal concurrency issues and thus execution concurrency has also been investigated. Access to more data from industrial devices and software can be used to optimize production. Architectures for factory integration have been considered as this is the foundation to connect all devices and thus address the challenge of integrating and utilizing devices and software. Service Oriented Architecture (SOA) is a flexible software design methodology widely used in IT systems and for business processes. SOA service orchestration is brought to industrial automation by integrating support for both Devices Profile for Web Services (DPWS) and OPC Unified Architecture (OPC UA) in JGrafchart. Looking further, SOA 2.0 is event driven and features extremely loose coupling between components. An architecture based on SOA 2.0 where it is easy to integrate any device or software, in particular legacy devices with limited knowledge and capabilities, has been developed with focus on service choreography in industrial manufacturing. Another step toward real-time execution of Grafchart applications is integrated support for the high performance communication protocol LabComm. Additionally, it is investigated how Grafchart can be connected to Functional Mock-up Interface (FMI) for co-simulation to further address the shorter time to market trend by introducing simulation support. The PID controller is the most common controller for industrial automation. A PID implementation has been added to a Grafchart library and a flaw with the PID algorithm has been discovered. The problem occurs for PID controllers with a derivative part when the process value saturates. The derivative part then backs off which leads to undesired changes in the control signal. This issue has been analyzed and a solution to the problem is proposed

    The SystemJ approach to system-level design

    Get PDF
    In this paper, we propose a new system-level design language, called SystemJ. It extends Java with synchronous reactive features present in Esterel and asynchronous constructs suitable for modelling globally asynchronous locally synchronous systems. The strength of SystemJ comes from its ability to offer the data processing and encapsulation elegance of Java, Esterel-like reactivity and synchrony, and the asynchronous de-coupling of CSP all within the Java framework. Using standard Java environments, for specification and modelling, or specialised reactive embedded processors, for high performance implementation, the SystemJ design flow is extremely versatile. With the increasing attention that Java gets in embedded systems, SystemJ comes to address data and control, software and hardware, modelling and implementation in a unified manner

    First-class features

    Get PDF
    Magdeburg, Univ., Fak. fĂĽr Informatik, Diss., 2011von Sagar Sunkl

    Contributions to the Construction of Extensible Semantic Editors

    Get PDF
    This dissertation addresses the need for easier construction and extension of language tools. Specifically, the construction and extension of so-called semantic editors is considered, that is, editors providing semantic services for code comprehension and manipulation. Editors like these are typically found in state-of-the-art development environments, where they have been developed by hand. The list of programming languages available today is extensive and, with the lively creation of new programming languages and the evolution of old languages, it keeps growing. Many of these languages would benefit from proper tool support. Unfortunately, the development of a semantic editor can be a time-consuming and error-prone endeavor, and too large an effort for most language communities. Given the complex nature of programming, and the huge benefits of good tool support, this lack of tools is problematic. In this dissertation, an attempt is made at narrowing the gap between generative solutions and how state-of-the-art editors are constructed today. A generative alternative for construction of textual semantic editors is explored with focus on how to specify extensible semantic editor services. Specifically, this dissertation shows how semantic services can be specified using a semantic formalism called refer- ence attribute grammars (RAGs), and how these services can be made responsive enough for editing, and be provided also when the text in an editor is erroneous. Results presented in this dissertation have been found useful, both in industry and in academia, suggesting that the explored approach may help to reduce the effort of editor construction

    Well-Formed and Scalable Invasive Software Composition

    Get PDF
    Software components provide essential means to structure and organize software effectively. However, frequently, required component abstractions are not available in a programming language or system, or are not adequately combinable with each other. Invasive software composition (ISC) is a general approach to software composition that unifies component-like abstractions such as templates, aspects and macros. ISC is based on fragment composition, and composes programs and other software artifacts at the level of syntax trees. Therefore, a unifying fragment component model is related to the context-free grammar of a language to identify extension and variation points in syntax trees as well as valid component types. By doing so, fragment components can be composed by transformations at respective extension and variation points so that always valid composition results regarding the underlying context-free grammar are yielded. However, given a language’s context-free grammar, the composition result may still be incorrect. Context-sensitive constraints such as type constraints may be violated so that the program cannot be compiled and/or interpreted correctly. While a compiler can detect such errors after composition, it is difficult to relate them back to the original transformation step in the composition system, especially in the case of complex compositions with several hundreds of such steps. To tackle this problem, this thesis proposes well-formed ISC—an extension to ISC that uses reference attribute grammars (RAGs) to specify fragment component models and fragment contracts to guard compositions with context-sensitive constraints. Additionally, well-formed ISC provides composition strategies as a means to configure composition algorithms and handle interferences between composition steps. Developing ISC systems for complex languages such as programming languages is a complex undertaking. Composition-system developers need to supply or develop adequate language and parser specifications that can be processed by an ISC composition engine. Moreover, the specifications may need to be extended with rules for the intended composition abstractions. Current approaches to ISC require complete grammars to be able to compose fragments in the respective languages. Hence, the specifications need to be developed exhaustively before any component model can be supplied. To tackle this problem, this thesis introduces scalable ISC—a variant of ISC that uses island component models as a means to define component models for partially specified languages while still the whole language is supported. Additionally, a scalable workflow for agile composition-system development is proposed which supports a development of ISC systems in small increments using modular extensions. All theoretical concepts introduced in this thesis are implemented in the Skeletons and Application Templates framework SkAT. It supports “classic”, well-formed and scalable ISC by leveraging RAGs as its main specification and implementation language. Moreover, several composition systems based on SkAT are discussed, e.g., a well-formed composition system for Java and a C preprocessor-like macro language. In turn, those composition systems are used as composers in several example applications such as a library of parallel algorithmic skeletons

    Implementing Java Compilers Using ReRAGs

    No full text
    Rewritable Reference Attributed Grammars (ReRAGs) is a recently developed compiler-compiler technology based on object-orientation, aspect-orientation, reference attributed grammars, and conditional rewrites. In this paper we describe our experiences from using ReRAGs for implementing Java compilers. We illustrate how the usage of ReRAGs renders a rather compact, yet easy-to-understand and modular compiler specification where code analysis, restructurings, and optimizations can be conveniently described as aspects performing computations and transformations on the abstract syntax tree. Currently, we have implemented two compilers: one that generates C code with real-time support, and one that generates Java bytecode. Both share the same front end
    corecore