logi.CAD3 logi.CLOUD An expe ri en ce rep or t on migratj ng a - - PowerPoint PPT Presentation

logi cad3 logi cloud
SMART_READER_LITE
LIVE PREVIEW

logi.CAD3 logi.CLOUD An expe ri en ce rep or t on migratj ng a - - PowerPoint PPT Presentation

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,


slide-1
SLIDE 1

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

slide-2
SLIDE 2
  • 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)

Agenda of this Talk

slide-3
SLIDE 3
  • 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

Goals of this Talk

slide-4
SLIDE 4

About logi.cals

1987

FOUNDED

35

EMPLOYEES

2

OFFICES

slide-5
SLIDE 5

Overview: Our (Original) Goal IDE for Programmable Logic Controllers

  • IEC 61131-3
  • Structure T

ext (ST)

  • Function Block Diagram (FBD)
  • Sequential Function Chart (SFC)
slide-6
SLIDE 6

Overview: Our (Original) Goal IDE for Programmable Logic Controllers

slide-7
SLIDE 7

AUTOMOTIVE

80% of all buses in Europe

BUILDING

Thousands of controllers for security and comfort in modern ships

ENERGY

30% of all hydro- electric power plants

SYSTEM

Projects with 6 million I/O and communication data points

Solutjons Overview

Controllers for ofg-highway and agricultural machines

MOBILE AUTOMATION

slide-8
SLIDE 8

Live Demo: logi.CAD3

logi.cals Austria

Europaplatz 7/1 3100 St. Pölten Austria +43 5 77147-0

  • ffjce@logicals.com

logi.cals Germany

Postfach 1306 40738 Langenfeld Germany +49 2173 9191-0 germany@logicals.com www.logicals.com Follow us on social media:

slide-9
SLIDE 9

Overview: Current State High-Level Architecture

logi.CAD3

ST-/FBD-editor Target Communication

logi.RTS

Scheduler Target-Binary (Shared Object) Target-Binary (Shared Object) TCF Binary Build Infrastructure

slide-10
SLIDE 10

Architecture of logi.Cloud Architecture and Components

Build Server LC3 Server Target Comm Server Targets Engineering Theia IDE Backend Theia IDE Frontend

slide-11
SLIDE 11

Live Demo: logi.CLOUD

logi.cals Austria

Europaplatz 7/1 3100 St. Pölten Austria +43 5 77147-0

  • ffjce@logicals.com

logi.cals Germany

Postfach 1306 40738 Langenfeld Germany +49 2173 9191-0 germany@logicals.com www.logicals.com Follow us on social media:

slide-12
SLIDE 12

Structure of logi.CAD3 Architecture and Components

Formatter Validator Project Index Target Proxy Platform Toolkits Binary Code Generation FBD-Editor EMF Model Elements (EObjects) Instance View C-Code Generator Resolver Synchronizer/ Transformer BuiltInPlc Project Database Gateway .c/.h files ST-Editor Xtext Xcore Model Variable Values View OEM SDK

slide-13
SLIDE 13

Structure of logi.CAD3 What will be re-used for the Cloud?

Formatter Validator Project Index Target Proxy Platform Toolkits Binary Code Generation FBD-Editor EMF Model Elements (EObjects) Instance View C-Code Generator Resolver Synchronizer/ Transformer BuiltInPlc Project Database Gateway .c/.h files ST-Editor Xtext Xcore Model Variable Values View OEM SDK

BUILD EDIT COMM

slide-14
SLIDE 14

Structure of logi.CAD3 What will be re-used for the Cloud?

Formatter Validator Project Index Target Proxy Platform Toolkits Binary Code Generation FBD-Editor EMF Model Elements (EObjects) Instance View C-Code Generator Resolver Synchronizer/ Transformer BuiltInPlc Project Database Gateway .c/.h files ST-Editor Xtext Xcore Model Variable Values View OEM SDK

slide-15
SLIDE 15
  • 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

slide-16
SLIDE 16

Architecture of logi.Cloud Architecture and Components

Server Browser Theia Backend LC Server

… (Theia core stufg ) IEC Language Backend LC API Service Backend LC3 API Server IEC support Xtext via LSP4J

Theia Frontend

… (Theia core stufg ) IEC Language Frontend Instance View LC3 Service

HTTP GET Web Socket LSP over Web Socket Web Socket

...

Read & listen Write into DB Project Index

Build Service LC Build Service Backend LC Build Server

Web Socket

Target Com Service LC Target Com Backend LC Target Com Server

Web Socket

IEC FBD Backend IEC FBD Frontend

GLSP over Web Socket

IEC FBD

via GLSP

R e a d

slide-17
SLIDE 17

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
slide-18
SLIDE 18

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
slide-19
SLIDE 19

Challenges: Dependencies Making logi.CAD3 ready for the Cloud

  • Dependency Analysis of Java Code using CDA
  • Class Dependency Analyzer

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
slide-20
SLIDE 20

Challenges: Dependency Categorizatjon Making logi.CAD3 ready for the Cloud

slide-21
SLIDE 21

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
slide-22
SLIDE 22

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

slide-23
SLIDE 23

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
  • ...
slide-24
SLIDE 24

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, …
slide-25
SLIDE 25

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
slide-26
SLIDE 26

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
slide-27
SLIDE 27

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/
slide-28
SLIDE 28

Thank you for your atuentjon!

logi.cals Austria

Europaplatz 7/1 3100 St. Pölten Austria +43 5 77147-0

  • ffjce@logicals.com

logi.cals Germany

Postfach 1306 40738 Langenfeld Germany +49 2173 9191-0 germany@logicals.com www.logicals.com Follow us on social media:

slide-29
SLIDE 29

Contact

logi.cals Austria

Europaplatz 7/1 3100 St. Pölten Austria +43 5 77147-0

  • ffjce@logicals.com

logi.cals Germany

Postfach 1306 40738 Langenfeld Germany +49 2173 9191-0 germany@logicals.com www.logicals.com Follow us on social media:

slide-30
SLIDE 30

Spare Slide(s)

logi.cals Austria

Europaplatz 7/1 3100 St. Pölten Austria +43 5 77147-0

  • ffjce@logicals.com

logi.cals Germany

Postfach 1306 40738 Langenfeld Germany +49 2173 9191-0 germany@logicals.com www.logicals.com Follow us on social media:

slide-31
SLIDE 31

Challenges: Additjonal concerns Making logi.CAD3 ready for the Cloud

public interface Lc3Project extends Comparable<Lc3Project> { [...] File getFile(String name); }

LC3/logi.CLOUD: General interface of LC3 projects:

slide-32
SLIDE 32

Challenges: Additjonal concerns Making logi.CAD3 ready for the Cloud

@Override public File getFile(fjnal String name) { fjnal IFile eclipseFile = this.eclipseProject.getFile(name); return new File(eclipseFile.getLocation().toOSString()); } @Override public File getFile(fjnal String name) { fjnal URI baseDir = this.projectManager.getBaseDir(); return new File(baseDir.toFileString() + name); }

LC3: Using Eclipse IProject to retrieve fjles logi.CLOUD: Using Language Server Project Manager to retrieve fjles (LC3 Server; JAVA)

slide-33
SLIDE 33

Challenges: Additjonal concerns Making logi.CAD3 ready for the Cloud

private void initializeProjects() { fjnal IProject[] iProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for (fjnal IProject iProject : iProjects) { if (iProject.isOpen() && IECProjectNature.isIECProject(iProject)) { fjnal Lc3Project project = new Lc3ProjectImpl(iProject); projects.put(project.getName(), project); } } }

LC3: Using Eclipse Workspace and Projects to initjalize Project Index

slide-34
SLIDE 34

Challenges: Additjonal concerns Making logi.CAD3 ready for the Cloud

private void initializeProjects() { for (fjnal ProjectManager projectManager : workspaceManager.getProjectManagers()) { if (projectManager.getBaseDir() != null) { fjnal Lc3Project project = new LC3CloudProject(projectManager); projects.put(project.getName(), project); } } }

logi.CLOUD: Use Language Server Workspace Manager and Project Manager to initjalize Project Index (LC3 Server; JAVA)

slide-35
SLIDE 35

Challenges: Additjonal concerns Making logi.CAD3 ready for the Cloud

protected void buildAndLoadApplication(fjnal ActionEvent event) { T argetSession targetSession = T argetProxy.getT argetSessionForUI(resource); new BuildProgramJob(targetSession.getResource(), new BuildOptions()).schedule(); new UploadProgramJob(targetSession).schedule(); } public static NormalizedFile getT argetOutputDirectory(IProject project) { return new NormalizedFile(project.getLocation().toFile()).append("target"); }

LC3: Build and Upload Program triggered by client

slide-36
SLIDE 36

Challenges: Additjonal concerns Making logi.CAD3 ready for the Cloud

async buildAndLoadApplication(connectionInfo: Lc3ResourceConnectionInfo): Promise<void> { const jobId = await this.buildService.buildWithProgress(connectionInfo.resource.instancePath); await this.buildService.onJobFinished(jobId); const buildLocation = await this.buildService.getBuildLocation(); return this.targetService.upload(connectionInfo, buildLocation); }

logi.CLOUD: Build and Upload Program triggered by client (Theia Backend; TypeScript)

public NormalizedFile getT argetOutputDirectory(String buildLocation, String projectName) { return new NormalizedFile(buildLocation).append(projectName).append("target"); }

logi.CLOUD: Determining the actual build locatjon (LC3 Build Server; JAVA)

slide-37
SLIDE 37

Overview: PLC-Programming Programming Languages: ST (IEC61131-3)