2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
1
MBD
エンジニアの仕事術
アイシン・エィ・ダブリュ株式会社
技術本部 解析技術部
2011
年
12
月
7
日
目次
• MBD
エンジニアのキャリア種別
•
モデリング編
–
要求表現
•
タイミングチャート
•
状態遷移図
–
状態遷移図の描き方
•
書き方のルール
•
教育方法
• MBD
開発環境エンジニア編
– MBD
開発環境の「改善」
•
最後に
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
3
アイシン・エィ・ダブリュ株式会社
基本情報
〒
444-1192
愛知県安城市藤井町高根
10
番地
0566-73-1111
(代表)
本社所在地
連結
19,545
名
(2011
年
3
月
31
日現在)
単独
12,903
名
(2011
年
3
月
31
日現在)
従業員数
オートマチックトランスミッション、
ハイブリッドシステム、
カーナビゲーションシステム
主要製品
連結
8,545
億円
(2011
年
3
月期
)
単独
7,927
億円
(2011
年
3
月期
)
売上高
取締役社長 石川 勉
代表者
264
億
8,000
万円
資本金
1969
年
5
月
15
日
設立
アイシン・エィ・ダブリュ株式会社
社名
アイシン・エィ・ダブリュ
「本館」
2011
年
12
月
7
日
アイシン・エィ・ダブリュ 駆動系製品
FR
多段
FR
多段:
4
~
8
速ラインナップ
8速
A/T
:トヨタ自動車
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
5
アイシン・エィ・ダブリュ 駆動系製品
FF
多段
FF
多段:
4
速~
6
速をラインナップ
6速
A/T
:ボルボ、オペル、
サーブ、ランドローバー、
プジョー、フォルクスワーゲン等
2011
年
12
月
7
日
アイシン・エィ・ダブリュ 駆動系製品
FR
ハイブリッドシステム
トヨタ自動車
FF CVT:
トヨタ自動車、マツダ等
FR
、
FF
がラインナップ
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
7
カーナビゲーション
カーナビゲーションシステムは、
トヨタ自動車への純正カーナビが中心
その他
•
アウディ純正日本向け
• GM
純正北米向け
•
イクリプス市販日本向け
…
等
2011
年
12
月
7
日
NAVIelite
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
9
自己紹介
経歴
• 1994
年 アイシン・エィ・ダブリュへ入社
FF5
速
A/T
の制御開発を担当
• 2002
年
MBD:HILS
装置の開発を担当
MATLAB/Simulink
を本格的に使い始める
• 2009
年
IPA
から
SEC
ジャーナル最優秀論文書受賞
近年は、
MBD
の教育を含め、
MBD
開発環境改善活動に従事
氏名:久保孝行
2011
年
12
月
7
日
自己紹介
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
11
自己紹介
•
統合系プロジェクト
2010
年度、
2011
年度
•
モデルベース開発系の委員として活動
2011
年
12
月
7
日
Car Testing and Car Designing Japan 2012
2012
年
2
月
7,8,9
日開催
http://cartesting2012.jp/
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
13
目次
• MBD
エンジニアのキャリア種別
•
モデリング編
–
要求表現
•
タイミングチャート
•
状態遷移図
–
状態遷移図の描き方
•
書き方のルール
•
教育方法
• MBD
開発環境エンジニア編
– MBD
開発環境の「改善」
2011
年
12
月
7
日
MBDと
V
プロセスの関係
HILS
制御装置
モデル
設計
設計
設計
設計
検証
検証
検証
検証
MILS
RCP
Code
①
②
③
④
制御
装置
モデル
制御対象モデル
実制御対象
実ECU
結合
機能保障
結合
機能保障
ハード
アクチュエータ
センサ
ハード
制御ソフト
Virtual World
Virtual World
Virtual World
Virtual World
Real World
Real World
Real World
Real World
ハート
ハート
ハート
ハード゙゙゙機能要求仕様書
機能要求仕様書
機能要求仕様書
機能要求仕様書
制御機能要求仕様書
制御機能要求仕様書
制御機能要求仕様書
制御機能要求仕様書
実車評価
MILS
HILS
RCP
ACG
実車評価
⑤
制御対象
制御対象
モデル
モデル
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
15
アイシン
AW
版:
MBD
プロセス詳細
設計
設計
設計
設計
検証
検証
検証
検証
C
ソース
Model-Based Design
Model-Based
verification
適合
適合
適合
適合
制御対象
モデル設計
生成コードの
評価
モデルの
評価
要求検証
要求検証
要求検証
要求検証
制御対象モデル
機能モデル
テストモデル
実装モデル
要件
実装
設計
モデル
解析
Automatic
C-code generation
テスト
設計
一致性
検証
PILS
機能評価
機能評価
機能評価
機能評価
結合検査
結合検査
結合検査
結合検査
単体検査
単体検査
単体検査
単体検査
実機評価
実機評価
実機評価
実機評価
HILS
C
コード
静的解析
validation
MILS
要求分析
要求分析
要求分析
要求分析
RCP
制御
設計
機能評価
機能評価
機能評価
機能評価
verification
2
工程に分かれる
MBD
開発環境エンジニア
2011
年
12
月
7
日
アイシン
AW
の
MBD
エンジニア定義
• MBD
エンジニアとは、モデルベース開発に携わる
エンジニアのことである。
特徴
キャリア種別
制御対象(プラント)をモデリングする
エンジニアです。
プラントモデルエンジニア
Simulink
モデルを使った開発環境を改善する。
ツール作成や、ガイドラインの制定も行う。
MBD
開発環境エンジニア
ソフトウェアに関する高度なスキルと共に、
Simulink
からどの様なコードが出力されるの
か正しい知識を持ち、仕組みを知った上で
モデリングができる
Simulink
に対する高度なス
キルが必要。
実装モデルエンジニア
(制御モデル後半)
制御機能が実現されたモデルを作成する。
自動車、
A/T
などのドメインの知識と、制御に
対して高度なスキルを必要とする。
機能モデルエンジニア
(制御モデル前半)
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
17
コントローラモデルの開発は
2
工程
分析
設計
検査
抽出
機能を作りこむスパイラル開発
最適な制御・機能を考える。
品質を作りこむスパイラル開発
仕様を変えず、バグ0を目指す
機能モデルを開発する工程
実装モデルを開発する工程
抽出
分析
設計
検査
目的:機能を増やす。
目的:品質を良くする。
矢印は外に
向かって
大きくなる。
矢印は
中心(ゴール)
向かっ行く。
2011
年
12
月
7
日
エンジニアのスキルの配分イメージ
•
機能モデル設計エンジニア
•
実装モデル設計エンジニア
ドメイン
Simulink
Simulink
ドメイン
ドメインの知識が重要
見栄えを良くするよりも、新たな機能開発を
重視する。
全体を見渡し、本当に必要な手段を
新たな発想を持って、開発できる事が重要
品質を確保する為に、
非常に高度なモデルスキルと
ソフトウェアスキルが必要である。
機能を増やすよりも品質を上げる
事に主眼を置ける人材が必要である。
ソフトウェア技術
求められるスキルよりは、性格の方が重要であると考えている。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
19
2011
年
12
月
7
日
目次
• MBD
エンジニアのキャリア種別
•
モデリング編
–
要求表現
•
タイミングチャート
•
状態遷移図
–
状態遷移図の描き方
•
書き方のルール
•
教育方法
• MBD
開発環境エンジニア編
– MBD
開発環境の「改善」
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
21
要求理解:シナリオ作成へ
•
最初に、要求を理解し、要求を明確化します。
次に、制御モデルの設計が始まります。
まずは、要求を理解する。
それには、
シナリオを作る事
が効果的
シナリオを作るとは?
頭の中で仮想シミュレーションし、
やりたいことを実現すると、どの様になるのかを表現する。
その表現は、自然言語だけでなく、図や表を用いると良い。
2011
年
12
月
7
日
シナリオ作成と
UML
の関係
図を描く目的
•
要求を理解する。
•
理解した結果を示す。
ソフトウェアを作成するのに必要
だから、図・表を描く
抽出
分析
検査
要求段階では、
設計・分析で色々な図や表を使って
スパイラル的に工程が繰り返えされる
シナリオ表現の図とは? ⇒
UML
なのか?
UML
の図は、要求を理解し、ソフトウェアを作成するために必要な図として定義された。
図を書けば要求を理解できるのではない。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
23
シナリオ作成と
UML
の関係
決められた図・表を描けば、要求が理解でき、
ソフトウェアが作れる。
ケースバイケースで、要求を理解するために、
必要な図や表を使えば良い。
要求理解の為に
シナリオを作成する
それに、必要な図を使う。
必要な図は開発対象、
開発プロセスによって
異なる。
2011
年
12
月
7
日
シナリオ作成に有効な図は?
•
「時間変化によって、
出力値が変わる制御開発に適した図は?」
「タイミングチャート」
が最も活用しやすい。
シナリオ=ユースケース毎の
タイミングチャート
タイミングチャートを使って表したシナリオは、
テスト工程でも活用できる。
タイミングチャートは、入力に対する、あるべき振る舞いを定義する
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
25
自動販売機を例題にする
•
入力:お金の種類:
50
円、
100
円
•
入力:ボタンの種類:
150
円ジュース購入ボタン、
200
円
ジュース購入ボタン
•
動作:お金を入れて、金額が満たされた状態で購入ボタ
ンを押すと、ジュースが購入できる。
2011
年
12
月
7
日
自動販売機の状態遷移例
•
まずは、どの様な流れになるのかシナリオを作る。
ユースケースを検討する。
150
円のジュース購入例
(合計
200
円投入:
50
円のおつり出力)
1. 50
円+
50
円+
50
円+
50
円
⇒ ジュース1購入
2. 50
円+
50
円+
100
円
⇒ ジュース1購入
まずは、ユースケース1について
タイミングチャートを描いてみよう。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
27
タイミングチャート例
50
円
100
円
150
円ジュース
200
円ジュース
150
円ジュース
50
円
ジュース出力
おつり
1
次
入
力
信
号
中
間
信
号
出
力
信
号
ユースケース1
時間
2011
年
12
月
7
日
シナリオ作成例:タイミングチャート
•
タイミングチャートの作成には、信号のレイヤに対して4
つの考え方が必要。
–
1次入力信号
•
想定するシステムへの直接の入力信号
–
2次入力信号あるいは中間信号
•
1次入力信号を用いて、作られた信号
•
出力信号を得るために、必要不可欠な中間信号
–
出力信号
•
想定するシステムの出力値
–
他への影響
•
システムの出力によって、他のモジュールが受ける影響
画面の枠を分けても良いし、混ぜて書いても良い。
観点として4つある事を意識する。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
29
タイミングチャート例
50
円
100
円
150
円ジュース
200
円ジュース
150
円ジュース
50
円
ジュース出力
おつり
1
次
入
力
信
号
総額
中
間
信
号
出
力
信
号
ユースケース1
時間
2011
年
12
月
7
日
タイミングチャート以外のシナリオ表現
状態遷移を使ったシナリオ作成例
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
31
お金の組み合わせは、非常に多いので、タイミング
チャートでは数が多くなりすぎる。
状態遷移図を使うことで、複数のユースケースをまとめ
て表現できる。
状態遷移図を使ったシナリオ表現例
[50円]
[50円]
[50円]
意味
合計50円
意味
合計100円
意味
合計150円
意味
合計200円
[100円]
[ジュース1購入]
/ジュース1出力
返金50円
ユースケース1、ユースケース2を表現
ユースケース1
ユースケース2
[50円]
2011
年
12
月
7
日
ミーリーマシンを用いた状態遷移図の例
[50円]
[50円]
[50円]
意味
合計50円
意味
合計100円
[ジュース1購入]
意味
合計150円
/ジュース1出力
意味
合計200円
[100円]
[ジュース1購入]
[ジュース2購入]
/ジュース1出力
返金50円
/ジュース2出力
[100円]
[100円]
200
円投入までの全てのユースケースを
表現した状態遷移図
[50円]
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
33
シナリオ表現としての状態遷移図
•
ユースケースが多すぎるものは、状態遷移図を使うこと
で、複数のユースケースをまとめた「シナリオ」を表現で
きます。これによって、全体の振る舞いが解り、仕様を
明確にする事ができる。
[50円]
[50円]
[50円]
意味
合計50円
意味
合計100円
[ジュース1購入]
意味
合計150円
/ジュース1出力
意味
合計200円
[100円]
[ジュース1購入]
[ジュース2購入]
/ジュース1出力
返金50円
/ジュース2出力
[100円]
[100円]
[50円]
質問:この状態遷移図は完成している。
だからコード生成しても良い。
2011
年
12
月
7
日
シナリオ表現としての状態遷移図
•
ユースケースが多すぎるものは、状態遷移図を使うこと
で、複数のユースケースをまとめた「シナリオ」を表現で
きます。これによって、全体の振る舞いが解り、仕様を
明確にする事ができる。
•
注意点
–
このような状態遷移図は、そのままソフトウェアとして
実装する事はできない。
–
もちろん形式手法によるチェックも意味がない。
•
理由は、この状態遷移図は、要求を理解するため描か
れた「シナリオ」だからです。
•
ここから、実装に必要な情報を抜き出す為の、「分析」
が必要である。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
35
状態遷移図の分析観点:
状態変数
•
状態変数には、記憶と状態の二つが混在していること
に気をつけるべきである。
–
記憶(無限個)
–
状態(有限個)
記憶:無限個
中身の量
(
××
ml)
中身の温度(℃)
発熱量(カロリー)
状態:有限個
空・満水
沸騰前・沸騰中・沸騰後
2011
年
12
月
7
日
状態遷移図の表現:記憶の例
•
状態遷移図(ミーリーチャート)はフリップフロップ(論理演算)の
振る舞い説明の為に作られたが、あくまで振る舞いを説明する
ためのものであり、コード生成を意識した表現方法ではない。
保持
0
0
0
1
(リセット)
0
1
0
1
0
(不定)
1
1
Q
R
S
出力
入力
(1,0)
(x,1)
Q1/0
Q2/1
ムーアーチャート
/0
(1,0)/1
(x,1)/0
Q1
Q2
(x,1)/0
(0,0)/0
(0,0)/1
Q=(!R)&&(S||Q)
真理値表や、論理演算
振る舞いを説明
変換
変換の方向に注意
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
37
状態遷移図からコード生成
フリップフロップ回路の振る舞いを書いて、
最適化された論理演算が出力されるか?
コード生成する状態遷移図は、
記憶と状態を区別した物を対象とする。
Q=(!R)&&(S||Q)
(1,0)
(x,1)
Q1/0
Q2/1
ムーアーチャート
/0
(1,0)/1
(x,1)/0
Q1
Q2
ミーリーチャート
(x,1)/0
(0,0)/0
(0,0)/1
変換
最適化されたコードは自動生成されない
記憶
2011
年
12
月
7
日
状態遷移図の整理例
–
記憶(無限個)
–
状態(有限個)
•
金額の組み合わせや、ジュースの種類は、有限個と考
えるかも知れない。
•
しかし、両方共に、数の設定を増減することができるの
で、無限と考えるべきである。
•
金額やジュースの種類は、「記憶」に分類される項目で
あり、状態として扱ってはいけない。
•
つまり、シナリオで用意した以外にも、お金の組み合わ
せや、ジュースの種類があると判断すべきである。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
39
状態遷移図の分析観点:
システム
•
お金の投入毎処理するのか?
「お金が投入された」は、不定期なイベント
連続投入された場合は、高速な応答性が要求される。
状態遷移図のような高度な制御を、高速起動させるべき
ではない。
•
対応方法
投入金額を高速計算する部分を外部に作る。
状態遷移は、定期的に外部へ総額を問い合わせるだけ
にする。
正しい状態遷移図は
正しい、システム設計の元で成立する。
2011
年
12
月
7
日
AUTOSAR
ソフトウェアプラットフォームの概念
XX制御 コンポーネント XX制御 コンポーネント何をアプリケーションとして
何をシステム側とするのか
構造的な設計思想が必要。
高負荷・低速・定期的な処理
不定期あるいは、高速な処理
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
41
自動販売機の動作例
•
状態遷移の分析観点、記憶と状態の区別・システムの考え方を
前提に、自動販売機の「状態」を検討する。
•
この例では、「動作の異なるポイント」を状態と考えると、
3
つに
切り分けができる。
–
初期状態(待機)、ボタン待ち(ボタンを光らせる)、ジュースの
取り出し(排出)。
待機
排出
金額のチェック
[50円]
[50円]
[50円]
意味
合計50円
意味
合計100円
[ジュース1購入]
意味
合計150円
/ジュース1出力
意味
合計200円
[100円]
[ジュース1購入]
[ジュース2購入]
/ジュース1出力
返金50円
/ジュース2出力
[100円]
[100円]
[50円]
ボタン待ち
2011
年
12
月
7
日
タイマ成立
遷移条件2
初期状態
遷移先
返金
条件アクション
状
態
名
初期化
初期状態
排出終了
ジュースの取り出し
排出
ボタンが押される
&&
金額が満たされる
お金のカウント
コイン投入
遷移条件
1
排
出
遷移先
条件アクション
遷移条件1
ボ
タ
ン
動
作
待
ち
遷移先
条件アクション
条件アクション
遷移先
遷移条件
1
初
期
状
態
表で整理して、状態遷移図へ
表を使って情報を整理し、状態遷移図へ変換する
仕様検討で使う状態遷移表は、
シンプルな物を使うべき。
必要最低限の事を表に書き込み、整理する。
思考速度を落とさないシンプルさが重要。
検証用(
)の表と、設計用(
)の表は異なる。
初期状態
排出
[
コイン投入
]
[
ボタン
]
ボタン待ち
[
タイマー
]
購入可能な
ジュースのライトを
点灯させる
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
43
制御機能の追加
状態遷移図に対するタイミングチャート
150
円ジュース
200
円ジュース
150
円ジュース
50
円
ジュース出力
おつり
1
次
入
力
信
号
総額
中
間
信
号
出
力
信
号
ユースケース1
時間
可能
不可
ジュース1購入可能
コイン投入
ジュースのライト
消灯
点滅
点灯
抽出
分析
設計
検査
要求が育っていくスパイラル
2011
年
12
月
7
日
内容
重要度
種別
お金は、少なくとも、
50
円と
100
円が
使える。
システム要件
ジュースは
2
種類以上
システム要件
購入可能金額より多く入れた場合
は、お釣りが返却される
必須要件
機能要求
お金を入れて何もしないと、一定時
間でお金が返却される
必須要件
機能要求
購入金額が満たされ、購入可能に
到達したことが購入者に解るように
する。
希望要件
機能要求
システム要件
ボタンを押してから、
5
秒以内に
ジュースが取り出し口に来ている
必須要件
非機能要求
要求の整理と分析
要求・要件の整理は忘れずに
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
45
MBD
エンジニアの「仕事の流れ」
シナリオを作る
頭の中で仮想シミュレーション
適切な時期に
PC
上のシミュレーションへ
Simulink
でモデリング!
2011
年
12
月
7
日
要求からモデリング
実現したい機能とシナリオの両方を設計し、
シミュレーションによって検証する。
要求検証表現を行っておく
詳細は、要求開発プロセス
WG
発行のガイドラインを参考にしましょう。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
47
要求分析の仕事術
•
要求を理解するにはシナリオを作る。
–
シナリオは、タイミングチャートが使いやすい
–
タイミングチャートは
4
つの観点が必要
–
タイミングチャートは、検証にも使える。
–
状態遷移図もシナリオ表現に使える
–
状態遷移図は、記憶と状態の区別が必要
–
状態遷移図は、システムの分析が必要
要求分析工程では、必要な図、表を書く。
決められた図、表を書くことから始まる事はない!
自然言語だけでは伝わらない部分が多いので、
図・表は積極的に活用しよう。
2011
年
12
月
7
日
目次
• MBD
エンジニアのキャリア種別
•
モデリング編
–
要求表現
•
タイミングチャート
•
状態遷移図
–
状態遷移図の描き方
•
書き方のルール
•
教育方法
• MBD
開発環境エンジニア編
– MBD
開発環境の「改善」
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
49
状態遷移の書き方
•
状態遷移図は、さまざま書き方ができる。
そのため、他者からの理解度が極端に悪い図もかけて
しまう。
(自分だけが満足してる図)
•
しかし、書き方を限定することで、他者からの理解度を
上げる事ができる。
•
アイシン
AW
では、書き方を2種類に限定した。
– A
型:ウォーターフォール型状態遷移図
– B
型:多状態・多遷移
A
型、
B
型の書き方についての説明を行う。
2011
年
12
月
7
日
状態遷移図の記述ルール制定について
•
アイシン・エィ・ダブリュでは、
1995
年から状態遷移表を
用いた制御開発を行ってきた。当時から拡張された
意味論を使用しており、現在の
Stateflow
と同等である。
–
状態の階層化、並列化が可能
–
イニシャライズと通常実行の区別
–
遷移条件と条件アクションが使用可能
–
自己遷移、インナートランジションが使用可能
–
タイマーによる強制遷移が標準ルール
残念ながら、書けるだけで、自動コード生成ができない。
⇒
Stateflow
へ
•
表⇒図:状態遷移図の描き方は、
15
年間の状態遷移に
関する設計的な考え方を継承している。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
51
A
型:ウォーターフォール型状態遷移図
状態は上から下に流れるように、記述する。
下へ遷移する条件は
左側へ記述する。
遷移条件は真ん中より
上側へ記述する。
遷移線よりも左側に
記述したほうが
全体のバランスが良い。
状態の大きさには意味は持たせない。
状態の大きさが状態の優先度を示したり、
状態の重要度を示す事はない。
初期
初期、中期、終了の3つに分けて図を描く
中期は、初期遷移から流れる
系統毎に並列に並べる。
終了
上へ遷移する条件は
右側へ記述する。
遷移条件は真ん中より
下側へ記述する。
遷移線よりも右側に記述したほうが
全体のバランスが良い。
リセット
制御は、不安定から安定へ⇒ウォータフォール同様、上流に戻すのはリスクがある
2011
年
12
月
7
日
B
型:多状態・多遷移
hasChange(ST)
状態変数をチェック
状態変数と一致した
状態へ遷移する
A
B
C
D
E
[ST==A]
[ST
==
B]
[ST
==
C]
[ST
==
D]
[ST
==
E]
2.遷移条件が多い場合は、
パラレルチャート化し、外へ出す。
function f1
function f2
function f3
function f4
function f5
{function f1}
{function f2}
{function f3}
{function f4}
{function f5}
[in(A)]
i[n(B)]
[in(C)]
[in(D)]
[in(E)]
1.インナートランジションを活用し
遷移線をまとめる。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
53
A,B
混在型:状態遷移図の描き方
•
状態遷移図は、
A
型ウォーターフォール型を基本に
多遷移の
B
型を組み合わせる事で全ての表現が可能。
2011
年
12
月
7
日
具体的な事例説明
拡張階層構造化状態遷移表設計手法
Ver2.0
P54
から
状態遷移表
(STM)
から状態遷移図へ変換する
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
55
B
型を使った状態遷移表現
MainS 2 S0 S1 ON S2 S3 S4 S5 S6 S7 S8 S9 subCartMainS 1 function fcn_ S2 function f cn_ S3 function f cn_ S4 function f cn_ S5 function f cn_ S6 function f cn_ S7 function f cn_ S8 [Button==E1] [Button==E0] [Button==E2] [Button==E3] [Button==E4] 1[hasChanged ( enum_ MainS) ]
2 1[enum_MainS==S3] 2 [enum_MainS==S4] 1 2 [enum_MainS==S5] 1 2 [enum_MainS==S6] 1 2 [enum_MainS==S7] 1 2 [enum_MainS==S8] 2 1 [enum_MainS==S9] [in( MainS.S2)] {fcn_ S2( ) ;} 1 2 [in(MainS.S3)] {f cn_ S3() ;} 1 2 [in(MainS.S4)] {f cn_ S4() ;} 1 2 [in(MainS.S5)] {f cn_ S5() ;} 1 2 [in(MainS.S6)] {f cn_ S6() ;} 1 2 [in(MainS.S7)] {f cn_ S7() ;} 1 2 [in(MainS.S8)] {f cn_ S8() ;} 1 2
1
2
STM
どおりの遷移条件を記載する
遷移しない場合も記述は、
何もしない事を示すために
記述だけ残す。
B
型は、状態遷移表
(STM)
と
1
対
1
で全てのケースを表現できる。
表の段階で、最適化されていれば、それを
B
型でそのまま表現できる。
本当は、⇒
9
も同一に描けるが、
録音は、特殊操作として分けた
E5
E6
E7
E8
E9
E5
E6
E7
E8
3
7
8
2011
年
12
月
7
日
A
型で表現:インナートランジション活用
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
57
A
型で表現:状態の考え方がおかしい部分
状態遷移表の指定どおりに
変換すると、状態定義が
おかしいところがある。
外部から、子の状態へ直接遷移する
遷移ができる場合は、
状態の考え方がおかしい
状態内部は独立性が必要!
2011
年
12
月
7
日
A
型で表現:親子依存関係の見直し
親から子への直接遷移を防止した場合
赤枠の中に状態が8個
独立性を保持した状態遷移
ただし、状態数が多く、
同じような制御内容の状態が
複数個あるのがわかる。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
59
A
型で表現:状態変数の分析
「再生」、「早送り」、「逆送り」は、
速度が異なるだけで、
同じ「速度制御という状態」と定義
赤枠の中は、状態が2個
速度制御:遅
速度制御:早
同じボタンが押された時に
異なる動作をする場合「状態」が存在する。
と考えると、殆どのボタンは、
記憶として整理できる。
2011
年
12
月
7
日
実際の教育方法について
•
状態遷移図は、分析、整理する事で、
A
型、
B
型によって
表現が可能である。
•
状態遷移図の描き方を限定しても、ルールの徹底には
教育しかない。
•
しかし、描き方を制限するような教育は教え方を誤ると、
受けいれてもらえず、効果がでてこない。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
61
実際の教育方法について
•
教育内容を肯定的に受け入れさせる点を注意しなけれ
ばならない。
•
自らが書いた状態遷移図を、強制的にフォーマットに
従った書き方に変更させると、最初に自分が書いた図
の方が理解度が高いと感じるので、反感を買い、教育
効果が薄まってしまう。
•
フォーマットへの変換方法を指導する場合、他人が書い
た状態遷移図を共通フォーマットへ変換する演習を行う
べきである。
2011
年
12
月
7
日
演習例
問題点:
横型になっている。
状態の中にある状態へ
他の親から子へ直接遷移している。
修正点:
縦型に修正。
Waitは使用していないので、
削除する。
この教育では、状態遷移図の制御内容に関して、
内容を正確に理解する部分には力を入れない。
形の修正を学ぶところに力を入れる。
形を修正してから、状態の流れを理解してもらう。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
63
B
型適応例
変更前
先ほどの状態遷移図をよく見ると、
同一条件で状態変化しているので、
B
型で描けば、最小化される。
全ての状態へ遷移線があり、
ディフォルト遷移の場所がおかしい
標準フォーマットの教育
他人の作った状態遷移図を
標準フォーマットに修正する演習を繰り返す
A
A
B
B
C
C
C
B
A
2011
年
12
月
7
日
仕事術:記憶と状態の区別
•
入力信号から直接追いかけて作った状態遷移は、
記憶を扱っており、シナリオを表現している場合が多い。
先ほどの事例では、入力信号に対する「ボタンの役割」
を状態として定義しています。
教育用の例題は、「記憶」でかつ「シナリオ」を表現して
いるものが多い。(ツール教育の為だから)
•
正しい状態定義:出力の違いから考えたものが、正しい
状態定義になる事が多い。
先ほどの事例では、モーター速度やモータ電流の違い、
画面表示、音声の
On,off
等から
状態を考えます。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
65
仕事術:状態遷移の使い方まとめ
•
シナリオ表現として使われている場合がある。
–
シナリオ表現は、そのままでは、仕様ではない、自動生成して
も、ソフトウェアとして実装することはできない。
そこから、分析・最適化が必要である。
•
分析・最適化
–
記憶と、状態の区別する。
–
システムの明確化を行う。
–
図は、決まったフォーマットに統一する事を心がける。
–
インナートランジションを活用し、遷移線をまとめる。
–
パラレルチャートを活用し、状態数を削減する。
2011
年
12
月
7
日
出力
on-off
だから状態ではない
•
ライトの点灯の制御で
on-off
の状態を作らない。
ライトは
PWM
の
duty
比と周波数
で指定できる。
単なる数値
状態ではありません。
ハードウェアの構成と合わせて、考えましょう。
初期状態
排出
[
コイン投入
]
[
ボタン
]
ボタン待ち
[
タイマー
]
購入可能な
ジュースのライトを
点灯させる
duty
比
意味
0%
消灯
点滅
点灯
100%
50%
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
67
MBD
エンジニアの仕事術
モデリング編 終了
アイシン・エィ・ダブリュ(株)
久保孝行
MBD
エンジニアの仕事術
MBD
開発環境エンジニア編へ
2011
年
12
月
7
日
目次
• MBD
エンジニアのキャリア種別
•
モデリング編
–
要求表現
•
タイミングチャート
•
状態遷移図
–
状態遷移図の描き方
•
書き方のルール
•
教育方法
• MBD
開発環境エンジニア編
– MBD
開発環境の「改善」
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
69
MBD
エンジニアの仕事術
2011
年
12
月
7
日
MBD
の現実
• MBD
を実践すると、意外に作業時間が多い。
更に自動コード生成すると
RAM
、
ROM
も多い!
• Simulink
でモデルを作成して、本当にメリットがあるの
か?
制御設計
ソフトウェア
設計
モデル設計
モデル設計
現実の開発工数
YES
と答えられますか?
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
71
MBD
開発環境エンジニアは何をするのか?
先の問題定義に対して、「キー」となるのが
MBD
開発環境エンジニアの存在です。
Q:MBD
開発環境エンジニアは何をするのか?
A:MBD
の開発環境を改善するのが仕事です。
•
自動コード生成用のカスマイズ例
S-function
ブロックの作成・提供について
2011
年
12
月
7
日
ハンドコードとの統合
既存の
C
ソースを
Simulink
に組み込むには?
•
自力で
S-function
を作って、
tlc
ファイルをカスタマイズす
るのは大変です。
• legacy_code()
関数がお勧めです。
– 2007
年にリリースされた、
MATLAB
の標準機
能です。
御存知ですか?
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
73
legacy_code
(
(
(
(
LCT
)
)
)
)
•
テンプレートにしたがって必要な項目を入力すれば、既
存の
C
ソースを
S-function
ブロックとして作成することが
できます。
コマンドを書いて
実行すれば、
S-function
ブロックが作られる。
2011
年
12
月
7
日
legacy_code
(
(
(
(
LCT
)
)
)
)
• legacy_code()
関数を使って作成したブロックは、シミュ
レーションも実行でき、コード生成もできます。
• S-function
に対する詳しい知識が無くてもブロックを作
る事ができます。
ヘルプ参照先
http://www.mathworks.co.jp/help/toolbox/simulink/slref
/legacy_code.html
(
MATLAB
コマンドラインに切り取って実行する)
web('C:/Program
Files/MATLAB/R2011b/toolbox/rtw/rtwdemos/html/ja/rtwde
mo_lct_filter_script.html', '-helpbrowser')
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
75
ハンドコードの活用
ハンドコードを活用する
S-function
ブロックを作った。
•
作ってモデル設計者に提供しただけでは、
だめ
。
• S-function
は通常のブロックと異なり、入力の型毎に沢山あり、
機能モデルエンジニアは当然、実装モデルエンジニアも使いこな
すのは大変。
*****
コード生成ブロックと
入れ替える。
*****
*****
*****
*****
*****
*****
*****
作っただけでは、使われない!
2011
年
12
月
7
日
自動コード専用ブロックの専用置換ツール
•
手作業でブロックを置き換えると、大変な工数が必要と
なります。
•
専用の自動置き換えプログラムを作り、
「
「
「
「ボタン
ボタン
ボタンを
ボタン
を
を押
を
押すだけ
押
押
すだけ
すだけ」
すだけ
」
」
」
で自動置き換えできる環境を用意
する。
これが、工数削減のコツ。
ブロックと共に、
専用の自動置き換えツールを配布する
自動置換
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
77
ブロックライブラリの提供
例:タイマー
ブロックライブラリの提供は、
仕様意図が一目でわかる絵を表示。
場合によっては、設定用の専用
GUI
と
共に提供する。
2011
年
12
月
7
日
関数ブロック作成
GUI
数式を入力し、
数式が表示されたブロックを
自動的に作成する
GUI
を使って、
カスタムブロックを
自動生成する
こういった開発環境を改善するのが
MBD
開発環境エンジニアの仕事
工数削減+可視化の向上の
W
メリット
メリット
メリット
メリット
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
79
改善用のツールはどうやって作るのか?
Simulink API
を
を使
を
を
使
使
使います
います
います。
います
。
。
。
API
【
【
【
【
Application Program Interface
】
】
】
】
• Simulink API
とは
MATLAB
のコマンド操作にて、
Simulink
の外部から
Simulink
モデルを操作する事が可能なインターフェース
関数
2011
年
12
月
7
日
Simulink API
知ってますか?
MATLAB
のコマンドラインから
>>Simulink
>> open_system('
モデル名
.mdl')
これも
Simulink API
です。
コマンドラインから
Simulink
のモデルを操作する
インターフェースの関数です。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
81
簡単な
SimulinkAPI
活用例
要望:
Constant
ブロックの概要を表示したい。
•
人が実施すると、マウスをダブルクリックして、ブロック
注釈に、
"
概要
"
を表示するように選択する。
•
モデル内に数十個ブロックがあった場合、作業は一瞬
では終わりません。
特に最新バージョンは
ウインドウの起動が遅い
ブロック注釈の追加
2011
年
12
月
7
日
(
MATLAB
コマンドラインに切り取って実行する)
modelH=get_param(bdroot,'Handle');
CblockH=find_system(modelH,'LookUnderMasks','all','type','block');
for n1=1:length(CblockH)
set_param(CblockH(n1),'AttributesFormatString','%<Description>');
ブロック注釈の自動追加
• Simulink API
を使う場合、
わずか数行のプログラムを書いて、
実行すれば、
数秒で作業が終了する。
Simulink API
は非常に便利
WEB
掲載予定
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
83
制御仕様書として見る場合は、仕様意図を読み取るのが主な目的
仕様意図が解る記述部分だけを表示する。(概要部分だけ)
実装用のモデルとして、チェックを行う場合は、実装に必要となる
情報を全て表示する必要がある。
ダブルクリックで
GUI
を開いて確認していては工数がかかる。
ブロックの説明を行うブロック注釈は、
プロセスの中で、表示の切り替えが必要
ブロック注釈の切り替え
関係ない表示が沢山あると
理解しにくい
必要な情報は全て
表示したい
相反する
ニーズ
2011
年
12
月
7
日
ブロック注釈の切り替え
•
プロセスの途中で、注釈の切り替えが必要
–
機能モデルのレビュー
–
実装モデルのレビュー
上記の2種類は、議論する内容が大きく異なり、
必要とする情報量が異なる。
ブロック注釈の表示は、プロセスによって切り替えが必要である。
ボタンを押すだけで切り替え可能な
環境を提供する。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
85
概要の追加と日本語⇒英語
GUI
の提供
変換に使用するリスト
ブロックの概要はいつ書くのか?
Simulink
モデルを作る最初の段階で、サブシステム名を
日本語で書き込んで作っておきます。
そして、プロセスの途中で英語に置き換える。
という全体プロセスを考えます。
•
変換時に日本語を、ブロック概要に転記すれば良い。
2011
年
12
月
7
日
概要の追加と日本語⇔英語 変換
英語
英語
英語
英語
日本語
日本語
日本語
日本語
変換
変換
変換
変換リスト
リスト
リスト
リスト
機能を作りこむとき
コード生成するとき
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
87
実際の
API
活用例
ガイドライン準拠
ガイドラインチェッカー
2011
年
12
月
7
日
実際のモデル
•
ブロックサイズはめちゃくちゃ
•
アノテーションの表示はない
•
作ったサブシステムの名前が全て「
Subsystem?
」
ルール違反は、どうやって調べますか?
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
89
ルールのチェックは、モデルアドバイザー
ルールチェックは、純正ツール
モデルアドバイザーを使えます。
2011
年
12
月
7
日
ルール例:
MAAB
ルールのチェック項目
R2011b
では、
MAAB
ルールの
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
91
db_0042:Inport
ブロックの使用方法
NG
OK
Simulink
標準機能
モデルアドバイザーによる
MAAB
ルールチェック
標準ツールは、チェックが自動化できる。
ここまでは、
Simulink API
は必要ない。
自動チェック可能
2011
年
12
月
7
日
モデルアドバイザーのカスタマイズ
自動修正可能な場合は、
修正ボタンが表示される
カスタムルールは、
チェックだけでなく
「
「
「
「自動修正
自動修正
自動修正
自動修正」
」
」
」
を追加できる
モデルアドバイザーは、
自作した専用カスタムルールを追加できる。
2011
年
12
月
7
日
AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.