PLC Compilation Model Using Intermediate Language
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional industrial controllers and devices are inflexible and inefficient, requiring specific programming languages and code for each device, which limits their adaptability and execution performance in industrial automation processes.
Innovation Solution
A system that generates an intermediate language from multiple language-specific compilers, allowing for universal programming of resources, which increases code execution performance and flexibility by compiling languages into a target-independent binary format that can be executed on various hardware platforms.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If conventional controllers use specific programming languages and code for each device, then device-specific control functionality is achieved, but adaptability and execution performance deteriorate
Solution Approach 1:
The patent introduces an intermediary compilation layer that translates high-level programming languages into optimized target code. This intermediary compiler acts as a mediator between the programmer's high-level language choices and the hardware-specific execution requirements, enabling both adaptability through language selection and high execution performance through optimized code generation.
Solution Approach 2:
The system allows dynamic selection of programming languages and compilation parameters based on the specific application requirements. By changing the parameter of programming language type and using different compilation strategies, the system can optimize for either adaptability or execution performance depending on the specific use case.
2Adaptability or versatility
If multiple programming languages are supported for universal programming, then flexibility and adaptability improve, but system complexity increases
Solution Approach 1:
The patent segments the compilation system into distinct modules, each handling a specific programming language. Rather than creating a monolithic complex system that handles all languages simultaneously, the compiler is divided into language-specific front ends that feed into a common optimization and code generation backend, reducing overall system complexity.
Solution Approach 2:
The patent creates a universal compiler architecture that can handle multiple programming languages through a common framework. The universal code generator and optimization passes serve all language types, allowing the system to support multiple languages without proportionally increasing complexity.
3Productivity
If high-level control languages are compiled directly to target code, then execution performance improves, but language-specific compilation limitations reduce versatility
Solution Approach 1:
The patent introduces an intermediary representation layer between the high-level source code and the target code. This intermediate representation allows the compiler to perform language-independent optimizations while preserving the ability to accept multiple high-level programming languages as input, thus maintaining both execution performance and language versatility.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
The claimed subject matter provides a system and/or method that facilitates creating executable code for an industrial environment. A language editor can enable a programming of a portion of data within a programming language. A compiler can compile the portion of data within the programming language. An assembler component can utilize an intermediate language to convert the portion of data into a portion of assembly object code, wherein the assembly object code is target independent. A linker can create a binary file from the portion of assembly object code, wherein the binary file is target independent. A loader can specifically tailor the binary file to a target resource by leveraging at least one PLC definition, wherein the loader creates a target executable code (TEC) program at runtime or at development time.