ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo...

58
ModelicaML Tutorial Getting Started Wladimir Schamai EADS Innovation Works Systems Engineering Possible line for organisation unit / Arial Regular 10pt

Transcript of ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo...

Page 1: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML – Tutorial

Getting Started

Wladimir Schamai

EADS Innovation Works Systems Engineering

Possible line for organisation unit / Arial Regular 10pt

Page 2: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 2

20.03.2011

ModelicaML: Technology

System Modeling with ModelicaML 1

Modelica Code Generation 2

System Simulation with Modelica Tools 3

Page 3: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 3

20.03.2011

ModelicaML: Technology

Acceleo

ModelicaML Code Generator

(Eclipse Plug-In)

Papyrus UML

ModelicaML Profile (Eclipse Plug-In) Any Modelica Simulation Tool

Model to Text Transformation

Generated Modelica Code

(.mo files)

.mo

Page 4: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML

General Description of the

UML-Based Graphical Notation

Page 5: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 5

20.03.2011

ModelicaML: Graphical Notation

Structure

Behavior

Requirements

Page 6: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 6

20.03.2011

ModelicaML: Class Diagram

Class (model, block,

record, connector)

extends relation

(with type

modifications)

variables (of

primitive type) or

components (of

composite type)

(Two-Tanks System Example)

Page 7: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 7

20.03.2011

ModelicaML: Connection Diagram

Class

(model, block) Component (of

composite type)

Connection

Component (port)

of connector type (Two-Tanks System Example)

Page 8: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 8

20.03.2011

ModelicaML: State Machine Diagram

State Machine

Composite

State

Simple

State States Transition

with guards

Start

entry/do/exit

behavior

indication

(Two-Tanks System Example)

Page 9: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 9

20.03.2011

Set of

equations or

assignments

Conditional flow

(if/when) with

guards

Start

Explicit

state

dependency

(Player Example)

ModelicaML: Conditional Eq./Alg. Diagram

Page 10: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML

Hands-on Modeling Tutorial

Page 11: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 11

20.03.2011

•From “source” liquid flows into the “tank1”

•Controller “piContinuous1” controls the level of liquid in “tank1”, based on a

predefined reference value, by opening and closing the tank outflow valve.

•Liquid flows from “tank1” into “tank2”

•Controller “piContinuous2” controls the level of liquid in “tank2”

Source: Peter Fritzson. Principles of Object-Oriented Modeling and Simulation with Modelica 2.1. Wiley-IEEE Press, 2004. page 391.

Example: Two Tanks System

Page 12: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 12

20.03.2011

1

2

3 4

5

6

ModelicaML Papyrus MDT GUI Overview

Page 13: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 13

20.03.2011

•Model Browser: Shows model elements

•Properties View: Shows the properties of selected element

•Diagram Editors (different UML-based diagrams)

•Palette (different for each diagram)

•ModelicaML code generation and validation buttons

•Component tree: Shows the components hierarchy of the

selected class

1

2

3

4

5

6

ModelicaML Papyrus MDT GUI Overview

Page 14: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Project Setup

Page 15: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 15

20.03.2011

Create ModelicaML Project

•Open Eclipse

•Change the Perspective to Papyrus Perspective

Page 16: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 16

20.03.2011

Create ModelicaML Project

1

2

3

Go to File -> Create …

Page 17: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 17

20.03.2011

Create ModelicaML Project

Page 18: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 18

20.03.2011

Papyrus Project Files

Model file

(can be edited using any UML2 tool)

Diagram file

(can only be edited using Papyrus MDT)

Page 19: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 19

20.03.2011

Configure Model Explorer

1

2

3

Page 20: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 20

20.03.2011

Change and Customize the Perspective

1

2

Select and customize the ModelicaML perspective –

disable all features that are not used

Typical ModelicaML customized perspective:

Page 21: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

Model Setup

Page 22: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 22

20.03.2011

Create Model Structure

Create Packages and Classes using ModelicaML menus

ModelicaML

Actions

Page 23: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 23

20.03.2011

Hint: Setting type of components

Page 24: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 24

20.03.2011

Hint: Setting type of components

ModelicaML Primitive Types are:

•ModelicaReal

•ModelicaInteger

•ModelicaString

•ModelicaBoolean

Page 25: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 25

20.03.2011

Hint: Setting of the component properties (Declaration, Causality, Variability, etc.)

Page 26: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 26

20.03.2011

Create Class Components

p => Set variability to “parameter” i => Set causality to “input”

p

p

p

i

p

p

p

p

p

= 2

= 2 => Set declaration

= 10

= 0.02

= 0

= 0.05

= 10

= 0.5

= 1

Page 27: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 27

20.03.2011

Create Function Arguments

i => Set causality to “input”

i

i

i

o

o => Set causality to “output”

Page 28: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

Inheritance/Extension Modeling

Page 29: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 29

20.03.2011

Create Class Diagram

Page 30: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 30

20.03.2011

General: Working with diagrams

Creating edges:

• Select the palette tool

• Click on the edge source element

and hold the mouse button

• Move the mouse to the target

element and release the mouse

button

1

2

3 2

3

1

Page 31: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 31

20.03.2011

General: Working with diagrams

Deletion of elements:

• Right click on a diagram element

• (preferred) Select the option “Delete Selected Element” in order to delete it from the model. This is recommended in order to keep the model and the diagram consistent

• Select the option “Hide Selected Element” in order to remove the element from the diagram. The element will still exist in the model and can be shown on the diagram by drag&drop.

Page 32: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 32

20.03.2011

Configure Diagram Palette

right click here…

Page 33: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 33

20.03.2011

Create Extends Relation

•Drag & drop BaseController and

PIcontinuousController onto diagram

•Use the palette tool “Extends Relation”

Page 34: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 34

20.03.2011

Hint: Element Appearance: Show stereotype name

1

2 3

4

Select an

element

Page 35: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 35

20.03.2011

Hint: Element Appearance: Compartments

1

2

right click

3

Page 36: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

Behavior Modeling

Page 37: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 37

20.03.2011

Hint: Editing Modelica Code

•Syntax highlighting and code completion is supported in code editors

•Hit Ctrl + Space for code completion when editing Modelica code

Page 38: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 38

20.03.2011

Create Behavior

Page 39: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 39

20.03.2011

Create Behavior

Page 40: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 40

20.03.2011

Create Behavior

Page 41: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 41

20.03.2011

Create State Machine

Page 42: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 42

20.03.2011

Configure Diagram Palette

right click here…

Page 43: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 43

20.03.2011

General: Working with diagrams

State Transitions:

• Select the palette tool

• Click on the transition source state

(click on label) and hold the mouse

button

• Move the mouse to the target state

(to its label) and release the mouse

button

1

2 3

2

3

1

Page 44: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 44

20.03.2011

Create State Machine

Page 45: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

Architecture Modeling

Page 46: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 46

20.03.2011

Create Connection Diagram

•Create a ModelicaML Connection Diagram under the TanksConnectedPI class

•Use components tool from the palette to create components inside the class on the diagram

•Define the types of components

•Use Model Explorer to find the ports

•Drag&Prop ports into respective components

•Arrange the components

•Use the “Connection” tool from the palette for connecting ports

Page 47: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 47

20.03.2011

Model System Architecture

Page 48: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 48

20.03.2011

Create Connection Diagram

Drag&drop the

port into

component

Set component

type

Create

components

using the

palette tools

1

2

3

Connect

components

4

Page 49: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 49

20.03.2011

Hint: Hide the name of all connectors

•Click on the compartment of the class

•Right-click -> “Select” -> “All Connectors”

•Right-click on one of the selected connectors -> “Filters” -> “Show/Hide connector

Labels” -> “No connector Labels”

Page 50: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 50

20.03.2011

Hint: Element Appearance: Hide the name of the connection stereotype

1

2

3 4

Select an

element

Page 51: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

Component Modifications

Page 52: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 52

20.03.2011

Define Component Modifications

1

2

3

4

Page 53: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 53

20.03.2011

Define Component Modifications

Page 54: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

Model Validation

Page 55: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 55

20.03.2011

Validate Model

Page 56: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

Modelica Code Generation

Page 57: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 57

20.03.2011

Launch Modelica Code Generation

Page 58: ModelicaML – Tutorial...ModelicaML Tutorial Page 3 20.03.2011 ModelicaML: Technology Acceleo ModelicaML Code Generator (Eclipse Plug-In) Papyrus UML ModelicaML Profile (Eclipse Plug-In)

ModelicaML Tutorial

Page 58

20.03.2011

Generated Modelica Code