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 モデルを操作する事が可能なインターフェース
関数
Simulink
のヘルプに記載されています。2011
年12
月7
日Simulink API
知ってますか?MATLAB のコマンドラインから
>>Simulink
>> open_system(' モデル名 .mdl') これも Simulink API です。
コマンドラインから Simulink のモデルを操作する インターフェースの関数です。
* legacy_code() は、 Simulink/ モデル構築系 API
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.
スライド番号
93
モデルアドバイザーのカスタマイズ
NG
OK
自動修正によって、単純作業は激減する。
チェッカーは、カスタマイズが必要です。
ボタンを押すだけで、自動修正
2011
年12
月7
日ツールは自社用にカスタマイズ
• マスワークスは共通の基板部分だけを提供している。
• 各社ごとにプロセスの違い・考え方の違いで、ニーズが 異なる要求は、各社でカスタムツールを作り対応する。
そのための環境も合わせて提供するのが
「マスワークスの基本理念」。
• モデルアドバイザー
–
自動修正を必要とする場合修正方法は自社専用のルールになるケースが多い
• Simulink Design Verifier
–
ブロックを置き換えるルールは各社で作る。2011
年12
月7
日AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
95
Simulink Design Verifier
(形式手法)検査したい場所の考え方は 各社異なる。
Simulink Design Verifier は、
通常の仕組みの中に、ブロック置換用 の関数を呼び出す部分が用意
されている。
カスタマイズが前提!
2011
年12
月7
日Simulink
でモデルを作るだけがMBD
ではない• Simulink でモデルを作成して、本当にメリットがあるの か?
• MBD は、開発環境構築まで含めて、 MBD
従来開発 制御設計 ソフトウェア 設計
試作
モデル設計 モデル設計
号口
開発環境を改善するツールの
併用により品質向上と、工数低減を 実現する。
キーワードは
「改善」
Simulink API
を使えば、効率アップ・自動化が可能です2011
年12
月7
日AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
97
MBD
エンジニアの仕事術まとめ• 自動化はプロセスに依存する。
• 自動化は各社の規約に依存する。
プロセス全体を見て、ニーズにあったツールをニーズの あるプロセスに提供する。
–
次のプロセスにつなげる–
次のプロセスでも活用する• 例
–
カスタムブロックを作って提供するだけではだめ。見栄えの向上、工数削減ができるツールと一緒に提供する
–
ブロック注釈の自動表示何処のプロセスで、注釈として表示すべき物を記述させるのか 工程全体で、無駄のないように仕組みを考える。
プロセス全体の効率化
2011
年12
月7
日最後に
2011
年12
月7
日AISIN AW CO., LTD. All rights reserv ed. Do not reproduce or distribute.
スライド番号
99
開発環境改善活動を実施しよう
• MBD
成功は、開発環境の改善です。•
開発環境を改善する専門チームを作る事をお勧めします。–
ツール開発初期:技術レベルの高い会社に協力してもらいましょう。
例えば、
マスワークス マスワークスマスワークス マスワークス
その他 (パートナーシッププログラムを参考にしてください)