• 検索結果がありません。

目次 当社のご紹介 モデル駆動開発とは モデル駆動開発ツール BricRobo とは BricRobo で L チカ派生開発 BricRobo の展開 記載された商品名 製品名は各社の登録商標または商標です 1

N/A
N/A
Protected

Academic year: 2021

シェア "目次 当社のご紹介 モデル駆動開発とは モデル駆動開発ツール BricRobo とは BricRobo で L チカ派生開発 BricRobo の展開 記載された商品名 製品名は各社の登録商標または商標です 1"

Copied!
22
0
0

読み込み中.... (全文を見る)

全文

(1)

Arduinoで実演

今すぐ始める簡単派生開発

株式会社 富士通コンピュータテクノロジーズ

伊澤 松太朗

(2)

目 次

当社のご紹介

モデル駆動開発とは

モデル駆動開発ツール BricRoboとは

BricRoboでLチカ派生開発

BricRoboの展開

(3)
(4)

会社概要

株式会社 富士通コンピュータテクノロジーズ

設立

1983年

事業所

川崎本社、豊橋事業所、長野事業所

事業内容

サーバ、ストレージ

モバイル端末、車載/FA機器、画像認識

ハードウェア、ネットワーク、検証ソリューション

従業員数 520名

組込みソフトウェア開発 280名

組込みハードウェア開発 50名

組込みプラットフォーム 45名

テストプログラム開発/検証評価 115名

280

50

45

115

組込みソフトウェア開発

組込みハードウェア開発

組込みプラットフォーム

TP開発/検証評価

その他

(5)
(6)

従来はドキュメント駆動開発

生産物

要件定義書

基本設計書

詳細設計書

参照

参照

コピペ

コピペ

ソースコード

(7)

モデル駆動開発はモデルが原本

マスター

モデル

変換

(8)

モデル駆動開発ツール

BricRoboとは

(9)

モデル駆動開発ツール BricRobo

CompositionType <<TopLevel>> S e n so r No de <<RunnableEntity>> + Initialize() :void <<BricRoboKeyElement>> S e n dT ask : T ask elapse = 1000 initTimer = 0 <<BricRoboKeyElement>> S e n se T ask : T ask elapse = 1 initTimer = 0 Λ <<RPortEv>> in l e d : Le d Λ <<RPortEv>> in ▲ <<PPortEv>> recv Λ <<RPortEv>> send u ar t : Uar t ▲ <<PPortEv>> recv Λ <<RPortEv>> send ▲ <<PPortEv>> count i n fr ar e dS e n so r : C e r am i c In fr ar e dS e n so r ▲ <<PPortEv>> count <<BricRoboKeyElem... Le dT ask : T ask elapse = 100 initTimer = 0 Λ <<RPortEv>> in ▲ <<PPortEv>> led par se r : Re c vPac ke t Par se r Λ <<RPortEv>> in ▲ <<PPortEv>> led Λ <<RPortEv>> count ▲ <<PPortEv>> packetOut Λ <<RPortEv>> temperature pac ke t Bu i l de r : S e n dPac ke t Bu i l de r Λ <<RPortEv>> count ▲ <<PPortEv>> packetOut Λ <<RPortEv>> temperature ▲ <<PPortEv>> temperature t e m pe r at u r e S e n so r : T e m pe r at u r e S e n so r ▲ <<PPortEv>> temperature <<BricRoboKeyElement>> SendTask :Task uart :Uart infraredSensor

:CeramicInfraredSensor :TemperatureSensortemperatureSensor :SendPacketBuilderpacketBuilder Run() Run() Run() RunSend()

BricRobo

コードジェネレータ

ソース

コード

BricRobo

検索

FUJITSU Embedded System BricRobo

UMLと似たモデル図から

コード生成するツール

(10)

プラットフォームに依存しない

CPU

OS

BricRobo通信層

BricRobo RTE

タスク

コントローラー

部品

部品

タスク

タスク

部品

タスク

タイマー

BricRobo RTE

BricRoboの層を呼び出すタイマーがあれば、OSレスのマイコン上でも実行可能

(11)
(12)

LED2個のシステム開発から4個のシステムへ派生

Arduinoを使った派生開発

2個のLEDが交互に点滅

4個のLED点滅で、

2進数の0~15を表現

(13)

再利用可能なBricRobo部品を定義する

<<PPort>> out

CompositionType

Hig hLowWa v e

- _lastState: uint8_t

<<ConfigParam>>

+ lastState: uint8_t

<<RunnableEntity>>

+ Run(): void

notes

HIGHまたはLOWを生成する部品

<<PPort>> out

SenderReceiverInterface

IF ::Hig hLowIF

+ value: uint8_t

notes

HIGHまたはLOWを伝え

るインターフェース

Λ

<<RPort>> in

<<PPort>> out

Hig hLowInv ert er

<<RunnableEntity>>

+ Run(): void

notes

HIGHとLOWを反転します

Λ

<<RPort>> in

<<PPort>> out

SenderReceiverInterface

IF ::Hig hLowIF

+ value: uint8_t

notes

HIGHまたはLOWを伝え

るインターフェース

Λ

<<RPort>> in

Dig it a lOut

-

_pin: uint8_t

<<ConfigParam>>

+

pin: uint8_t

<<RunnableEntity>>

+

Run(): void

notes

指定したデジタルピンを出力モードに

し、値を出力します

Λ

<<RPort>> in

SenderReceiverInterface

IF ::Hig hLowIF

+ value: uint8_t

notes

HIGHまたはLOWを伝えるインター

フェース

パルス生成部品

デジタル信号出力部品

パルス反転部品

入出力データ型

(14)

部品を組み合わせて製品を作る

Lc ic a 2

/out

WAVE :

Hig h LowWa v e

lastState = LOW

/out

Λ

/in LE D1: Dig it a lOut

pin = 12

Λ

/in

Λ

/in

LE D2 : Dig it a lOu t

pin = 11

Λ

/in

Λ

/in

/out

INV:

Hig h LowIn v e rt e r

Λ

/in

/out

T IC K : T a s k

elapse = 100

initTimer = 0

Task部品は一定周期で各部品の関数を呼び出す

(15)
(16)

コード生成

「BricRobo一括コード生成」

ボタンをクリック

コード生成が始まり、

EAの出力ウィンドウに結果表示

コンパイルしてArduinoに

アップロード

(17)

部品の入れ替え

CompositionType

Lcica 4b it

notes

4ビットを表すLEDが、カウントアップしながら点滅します。

/out

WAVE :Hig hLowWa v e

lastState = LOW

/out

Λ /in

LE D1 :Dig it a lOut

pin = 12

Λ /in

Λ /in

LE D2 :Dig it a lOut

pin = 11

Λ /in

Λ /in

LE D3 :Dig it a lOut

pin = 10

Λ /in

Λ /in

LE D4 :Dig it a lOut

pin = 9

Λ /in

/out

/carry

Λ /in

BIT 0 :Ad d Hig hLow

init = 0

notes

最下位ビット

/out

/carry

Λ /in

/out

/carry

Λ /in

BIT 1 :Ad d Hig hLow

init = 0

/out

/carry

Λ /in

/out

/carry

Λ /in

BIT 2 :Ad d Hig hLow

init = 0

/out

/carry

Λ /in

/out

Λ /in

BIT 3 :Ad d Hig hLow

init = 0

notes

最上位ビット

/out

Λ /in

T IC K :T a s k

elapse = 200

initTimer = 0

notes

200ミリ秒周期で

駆動する。

LED2個追加

加算演算部品

Λ

<<RPort>> in

<<PPort>> out

<<PPort>> carry

Ad d Hig hLow

-

_bit: int

<<ConfigParam>>

+

init: int

<<RunnableEntity>>

+

Run(): void

notes

1bitを記憶して、入力した1bitと加算演算

を行う。結果を出力し、キャリー発生の有

無ビットも出力する。

Λ

<<RPort>> in

<<PPort>> out

<<PPort>> carry

SenderReceiverInterface

IF ::Hig hLowIF

+

value: uint8_t

notes

HIGHまたはLOWを伝え

るインターフェース

不要なパルス反転部品は

削除

(18)

部品の駆動順序を追加・修正

シーケンス図は分割する

機能毎のシーケンスにまとめる

CompositionType Lcica 4b it notes 4ビットを表すLEDが、カウントアップしながら点滅します。 ▲ /out WAVE :Hig hLowWa v e

lastState = LOW ▲ /out Λ /in LE D1 :Dig it a lOut pin = 12 Λ /in Λ /in LE D2 :Dig it a lOut pin = 11 Λ /in Λ /in LE D3 :Dig it a lOut pin = 10 Λ /in Λ /in LE D4 :Dig it a lOut pin = 9 Λ /in ▲ /out ▲ /carry Λ /inBIT 0 :Ad d Hig hLow

init = 0 notes 最下位ビット ▲ /out ▲ /carry Λ /in ▲ /out ▲ /carry Λ /inBIT 1 :Ad d Hig hLow

init = 0 /out▲ ▲ /carry Λ /in ▲ /out ▲ /carry Λ /inBIT 2 :Ad d Hig hLow

init = 0 /out▲ ▲ /carry Λ /in ▲ /out ▲ /carry Λ /inBIT 3 :Ad d Hig hLow

init = 0 notes 最上位ビット ▲ /out ▲ /carry Λ /in T IC K :T a s k elapse = 200 initTimer = 0 notes 200ミリ秒周期で 駆動する。

(19)
(20)

フィーチャー図連携

 増大するバリエーション対応で苦労していませんか?

ツールにより

相互変換可能

個別製品向けモデル抽出ツール

CompositionType E T ROBO Λ /in NXT _LE F T _MOT OR:

Mot orBricNXT 02 Λ /in Λ /in

NXT _RIG HT _MOT OR: Mot orBricNXT 02 Λ /in ▲ /out NXT _G Y RO: G y roSens orBricNXT ▲ /out ▲ /outMotorL ▲ /outMotorR Λ /inGyro Λ /inTachoL Λ /inTachoR

C ON: C ont roller ▲ /outMotorL ▲ /outMotorR Λ /inGyro Λ /inTachoL Λ /inTachoR ▲ /outTacho NXT _T AC HO_RIG HT : Mot orT a choBricNXT ▲ /outTacho

▲ /outTacho NXT _T AC HO_LE F T : Mot orT a choBricNXT ▲ /outTacho

CompositionType E T ROBO

Λ /in E V3_RIG HT _MOT OR:

Mot orBricE V3 Λ /in

Λ /in E V3_LE F T _MOT OR:

Mot orBricE V3 Λ /in ▲ /out E V3_G Y RO: G y roSens orBricE V3 ▲ /out ▲ /outMotorL ▲ /outMotorR Λ /inGyro Λ /inTachoL Λ /inTachoR

C ON: C ont roller ▲ /outMotorL ▲ /outMotorR Λ /inGyro Λ /inTachoL Λ /inTachoR ▲ /outTacho E V3_T AC HO_RIG HT : Mot orT a choBricE V3 ▲ /outTacho

▲ /outTacho E V3_T AC HO_LE F T : Mot orT a choBricE V3 ▲ /outTacho

フィーチャー図

バリエーション管理表

CompositionType E T ROBO Λ /in NXT _LE F T _MOT OR:

Mot orBricNXT 02 Λ /in Λ /in

NXT _RIG HT _MOT OR: Mot orBricNXT 02 Λ /in Λ /in

E V3_RIG HT _MOT OR: Mot orBricE V3 Λ /in

Λ /in E V3_LE F T _MOT OR:

Mot orBricE V3 Λ /in ▲ /out NXT _G Y RO: G y roSens orBricNXT ▲ /out ▲ /out E V3_G Y RO: G y roSens orBricE V3 ▲ /out ▲ /outValue F ORWARD: C ons t Va lue ▲ /outValue ▲ /outValue T UIRN: C ons t Va lue ▲ /outValue ▲ /outMotorL ▲ /outMotorR Λ /inGyro Λ /inTachoL Λ /inTachoR

C ON: C ont roller ▲ /outMotorL ▲ /outMotorR Λ /inGyro Λ /inTachoL Λ /inTachoR ▲ /outTacho E V3_T AC HO_RIG HT : Mot orT a choBricE V3 ▲ /outTacho

▲ /outTacho E V3_T AC HO_LE F T : Mot orT a choBricE V3 ▲ /outTacho ▲ /outTacho NXT _T AC HO_RIG HT : Mot orT a choBricNXT ▲ /outTacho

▲ /outTacho NXT _T AC HO_LE F T : Mot orT a choBricNXT ▲ /outTacho

全体設計モデル

A製品モデル

B製品モデル

(21)

MATLAB連携

 連続系制御と離散系制御のソース結合に手間がかかっていませ

んか?

MATLAB制御モデル

c omp os it e s t ru c t u re PID Λ <<RPort>> In ▲ <<PPort>> Out CompositionType PID <<RunnableEntity>> + Initialize(): void + Output(): void + Update(): void + Terminate(): void Λ <<RPort>> In ▲ <<PPort>> Out SenderReceiverInterface MT _re a l_T + Value: real_T

BricRobo部品定義

(クラス化)

FCTブースにて

デモ展示中

MATLABが得意な

連続系制御の例

従来手法による

離散系制御の例

MATLAB/Simulink Coderの生成コードをBricRobo部品定義に

インポートする機能でさらに開発効率アップ!

(22)

参照

関連したドキュメント

問55 当社は、商品の納品の都度、取引先に納品書を交付しており、そこには、当社の名称、商

&lt; &gt;内は、30cm角 角穴1ヶ所に必要量 セメント:2.5(5)&lt;9&gt;kg以上 砂 :4.5(9)&lt;16&gt;l以上 砂利 :6 (12)&lt;21&gt; l

Views of Kazunogawa Hydroelectric Power Station Dams &lt;Upper dam (Kamihikawa dam)&gt;. &lt;Lower dam

[r]

When value of &lt;StThr[3:0]&gt; is different from 0 and measured back emf signal is lower than &lt;StThr[3:0]&gt; threshold for 2 succeeding coil current zero−crossings (including

役務分野への事業展開を想定するようであった。すなわち、当該商標を使用