logi.CAD3 → logi.CLOUD An expe ri en ce rep or t on migratj ng a n i nd ust r ia l -gra de ID E t o the Cl o ud u si ng t he Ec li pse e cosys tem
Agenda of this Talk ● Introductjon (7 Minutes) ● Goal ● Company focus (products, technical) ● High-level goal ● Experience report (20 Minutes) ● Architectural decisions ● Challenges ● Outlook (3 Minutes) ● Future steps ● Q&A (5 Minutes)
Goals of this Talk ● Usage scenario of Eclipse technologies ● Industrial Automation ● Sharing experiences: Make Fat Desktop App usable in Cloud Environment ● Overview of frameworks and projects ● Challenges, Pitfalls ● How we got started
About logi.cals 1987 35 2 FOUNDED EMPLOYEES OFFICES
Overview: Our (Original) Goal IDE for Programmable Logic Controllers ● IEC 61131-3 Structure T ext (ST) ● Function Block Diagram (FBD) ● Sequential Function Chart (SFC) ●
Overview: Our (Original) Goal IDE for Programmable Logic Controllers
Solutjons Overview BUILDING SYSTEM AUTOMOTIVE ENERGY MOBILE AUTOMATION 80% of all buses Thousands of 30% of all hydro- Controllers for ofg-highway Projects with 6 million I/O in Europe controllers for security electric power and agricultural machines and communication and comfort in plants data points modern ships
Live Demo: logi.CAD3 logi.cals Austria logi.cals Germany Europaplatz 7/1 Postfach 1306 www.logicals.com 3100 St. Pölten 40738 Langenfeld Follow us on social media: Austria Germany +43 5 77147-0 +49 2173 9191-0 offjce@logicals.com germany@logicals.com
Overview: Current State High-Level Architecture logi.CAD3 Target-Binary ST-/FBD-editor (Shared Object) Scheduler Binary Build Infrastructure logi.RTS Target Communication Target-Binary (Shared Object) TCF
Architecture of logi.Cloud Architecture and Components Build Server LC3 Server Target Comm Server Targets Engineering Theia IDE Backend Theia IDE Frontend
Live Demo: logi.CLOUD logi.cals Austria logi.cals Germany Europaplatz 7/1 Postfach 1306 www.logicals.com 3100 St. Pölten 40738 Langenfeld Follow us on social media: Austria Germany +43 5 77147-0 +49 2173 9191-0 offjce@logicals.com germany@logicals.com
Structure of logi.CAD3 Architecture and Components OEM SDK FBD-Editor ST-Editor Variable Values View Instance View Target Proxy Xcore Xtext Formatter Project Index Model Gateway EMF Model Elements Synchronizer/ Project Database (EObjects) Transformer BuiltInPlc Validator Resolver Binary Code Generation Platform Toolkits C-Code Generator .c/.h files
Structure of logi.CAD3 What will be re-used for the Cloud? OEM SDK FBD-Editor ST-Editor Variable Values COMM View Instance View Target Proxy Xcore EDIT Xtext Formatter Project Index Model Gateway EMF Model Elements Synchronizer/ Project Database (EObjects) Transformer BuiltInPlc Validator Resolver Binary Code Generation BUILD Platform Toolkits C-Code Generator .c/.h files
Structure of logi.CAD3 What will be re-used for the Cloud? OEM SDK FBD-Editor ST-Editor Variable Values View Instance View Target Proxy Xcore Xtext Formatter Project Index Model Gateway EMF Model Elements Synchronizer/ Project Database (EObjects) Transformer BuiltInPlc Validator Resolver Binary Code Generation Platform Toolkits C-Code Generator .c/.h files
Architecture of logi.Cloud Architecture and Components ● logi.CAD3 ofgers public API ● logi.CAD3 is a tool integrated by OEMs ● API is pretty comprehensive ● Makes it quite simple to ● Extend logi.CAD3 itself ● Create stand-alone applications (with extensions)
Architecture of logi.Cloud Architecture and Components Browser Server HTTP GET LC Server Theia Backend Theia Frontend Web Socket … (Theia core stufg ) … (Theia core stufg ) IEC support LSP over IEC Language Backend IEC Language Frontend Web Socket Xtext via LSP4J Write into DB GLSP over IEC FBD Backend IEC FBD Frontend Project Web Socket Index IEC FBD R e a d via GLSP ... Instance View Read & listen Web Socket LC API Service Backend LC3 Service LC3 API Server Web Socket LC Target Com Backend Target Com Service LC Target Com Server Web Socket LC Build Service Backend Build Service LC Build Server
Key Enablers Making logi.CAD3 ready for the Cloud ● Eclipse projects ● Xtext: language mechanisms ● LSP4J: JSON RPC over WebSockets (incl. support for LSP) ● Eclipse Theia: Frontend/Backend framework ● Eclipse GLSP: Graphical Language Server Protocol ● Eclipse Che: future execution context of logi.CLOUD
Challenges: Dependency Categorizatjon Making logi.CAD3 ready for the Cloud ● UI dependencies ● Rely on Eclipse UI to work ● Example: custom editors ● Eclipse dependencies ● Rely on common Eclipse functionality (but no UI) ● Example: Eclipse builders, Workspace ● OSGi ● Low-level Eclipse functionality ● Example: Service access ● OK ● Functionality that works in any Java environment ● Example: (Generated) Xtext parsers
Challenges: Dependencies Making logi.CAD3 ready for the Cloud ● Dependency Analysis of Java Code using CDA C lass D ependency A nalyzer ● http://www.dependency-analyzer.org/ ● Handles class, package, and plug-in level dependencies ● Can visualize dependency hierarchies ● Dependencies exported to CSV format ● Categorizatjon and aggregatjon in Spreadsheet Sofuware ● Identifjcation of (potentially) problematic dependencies
Challenges: Dependency Categorizatjon Making logi.CAD3 ready for the Cloud
Challenges: Workspace handling Making logi.CAD3 ready for the Cloud ● Challenge: ● Eclipse Workspace depending functionality (Project Index; H2-based) ● Theia IDE does not know Eclipse Workspaces ● Solutjon: ● Custom “Cloud-aware” Workspace implementation ● Will behave difgerently to Eclipse fjle system ● Limits possibility of shared code with logi.CAD3
Challenges: Workspace handling Making logi.CAD3 ready for the Cloud ● Workspace types being used ● Theia Backend: FS/TS-based workspace ● logi.CAD3 Server: Cloud-aware workspace ● logi.CAD3 Build Server: Eclipse workspace (generated; snapshot) ● logi.CAD3 T arget Comm Server: none needed
Outlook The (near) Future ● Full support for C/C++ editjng ● Based on clangd ● Diagnostjc Features ● View variable values ● Contjnue FBD support ● Variable table ● Context menus ● Full editing, e. g. routing for connections ● Copy-paste ● ...
Outlook The (far) Future ● Integratjon of new platgorms ● Licensing issues/challenges ● Workspace management ● Based on Eclipse Che ● Decision on the executjon platgorm for logi.CLOUD ● RedHat OpenShift, MS Azure, …
Outlook The (far) Future ● Ofgering logi.CLOUD as an integrable solutjon ● logi.cals products typically sold as integrable framework ● OEMs use our product and add branding ● OEMs expect a plugin infrastructure
Summary Findings, Recommendatjons ● Build Proof-of-Concept Prototypes ● Based on well-defjned use-cases ● Getting to know new technologies and frameworks ● Helps to estimate the time frame for developing the actual product
Bibliography Further reading ● Overall Architecture ● (Initial) Eclipse Theia Design Document: https://docs.google.com/document/d/1aodR1LJEF_zu7xBis2MjpHRyv7JKJzW7EWI9XRYCt48/ ● EclipseSource Documents on Eclipse Theia and Eclipse Che: https://eclipsesource.com/blogs ● Gettjng Started (Motjvatjonal example) ● https://theia-ide.org/docs/
Thank you for your atuentjon! logi.cals Austria logi.cals Germany Europaplatz 7/1 Postfach 1306 www.logicals.com 3100 St. Pölten 40738 Langenfeld Follow us on social media: Austria Germany +43 5 77147-0 +49 2173 9191-0 offjce@logicals.com germany@logicals.com
Contact logi.cals Austria logi.cals Germany Europaplatz 7/1 Postfach 1306 www.logicals.com 3100 St. Pölten 40738 Langenfeld Follow us on social media: Austria Germany +43 5 77147-0 +49 2173 9191-0 offjce@logicals.com germany@logicals.com
Spare Slide(s) logi.cals Austria logi.cals Germany Europaplatz 7/1 Postfach 1306 www.logicals.com 3100 St. Pölten 40738 Langenfeld Follow us on social media: Austria Germany +43 5 77147-0 +49 2173 9191-0 offjce@logicals.com germany@logicals.com
Challenges: Additjonal concerns Making logi.CAD3 ready for the Cloud LC3/logi.CLOUD: General interface of LC3 projects: public interface Lc3Project extends Comparable<Lc3Project> { [...] File getFile(String name); }
Challenges: Additjonal concerns Making logi.CAD3 ready for the Cloud LC3: Using Eclipse IProject to retrieve fjles @Override public File getFile(fjnal String name) { fjnal IFile eclipseFile = this.eclipseProject.getFile(name); return new File(eclipseFile.getLocation().toOSString()); } logi.CLOUD: Using Language Server Project Manager to retrieve fjles (LC3 Server; JAVA) @Override public File getFile(fjnal String name) { fjnal URI baseDir = this.projectManager.getBaseDir(); return new File(baseDir.toFileString() + name); }
Recommend
More recommend