スライド 1

Similar documents
CANapeを用いたラピッドコントロールプロトタイピングのバイパス手法による制御モデル開発

Simulinkモデル開発における工夫事例

プレポスト【問題】

Microsoft Word - VBA基礎(6).docx

EnSight 10.1の新機能

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

個人依存開発から組織的開発への移行事例 ~ 要求モデル定義と開発プロセスの形式化 による高生産性 / 高信頼性化 ~ 三菱電機メカトロニクスソフトウエア ( 株 ) 和歌山支所岩橋正実 1

編集する ファイルを開く マイクロデータの設定を行うファイルまたはファイルを開きます 開かれたファイルは編集画面に表示されて ブラウザ表示した時のプレビューも同時に表示されます HTML ファイルの選択 編集する ファイルを開くためにメインメニューから ファイル 開く を選びます ファイル選択ダイア

Microsoft Word - Training10_プリプロセッサ.docx

図 1 アドインに登録する メニューバーに [BAYONET] が追加されます 登録 : Excel 2007, 2010, 2013 の場合 1 Excel ブックを開きます Excel2007 の場合 左上の Office マークをクリックします 図 2 Office マーク (Excel 20

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

スクールCOBOL2002

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

Microsoft Word - NaviPortalFAQ-master.doc

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

グーグル検索マクロの使い方

PowerPoint プレゼンテーション

◎phpapi.indd

Microsoft PowerPoint - A1-2_株式会社ネクスト_藤澤正通_S _005.pptx

HDC-EDI Manager Ver レベルアップ詳細情報 < 製品一覧 > 製品名バージョン HDC-EDI Manager < 対応 JavaVM> Java 2 Software Development Kit, Standard Edition 1.4 Java 2

IBM i ユーザーの課題 モバイルや IOT に対応した新しい開発案件への対応 RPG COBOL など既存アプリのメンテナンス 要員の確保 属人化しない運用 管理体制 2

TFTP serverの実装

<< 目次 >> 1 PDF コンバータのインストール ライセンスコードの入力 PDF にフォントを埋め込みたい場合の設定 PDF オートコンバータ EX で使用しない場合 PDF コンバータ単体で使用する場合の説明 PDF コンバータのアン

IBM API Connect 開発者ポータル構成ガイド 1章

CONTENTS マニュアルの表記... S01-13_01 1.DataNature Smart 全体概要図... S01-13_11 2. 基本操作... S01-13_ Web レポートの表示... S01-13_ 画面構成... S01-13_ 集計表 /

すると メインメニューと呼ばれる DC さくらのメインウィンドウ部が表示されます ( 下の画面がスクリーンシ ョットです ) メインメニューは ウィンドウ右上の ボタンを押すと閉じます リスト内のアイテムは ダウンロードのタスクを表します ダウンロード状況を把握できます メニュー項目やボタンの説明は

スライド 1

ことばを覚える

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

3. 回路図面の作図 回路図の作成では 部品など回路要素の図記号を配置し 要素どうしを配線するが それぞれの配線には 線番 などの電気的な情報が存在する 配線も単なる線ではなく 信号の入力や出力など部品どうしを結び付ける接続情報をもたせることで回路としての意味をもつ このように回路図を構成する図面は

スクールCOBOL2002

作業環境カスタマイズ 機能ガイド(応用編)

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

Microsoft Word - VB.doc

JACi400のご紹介~RPGとHTMLで簡単Web化~

Fujitsu Standard Tool

スライド 1

<chemsherpa-ai の入力について > (1) 発行者 承認者情報 発行者 承認者情報は 必須項目です 会社情報をクリックし 必要事項を入力します 5. 新規にデータを作成する (P.12 参照 ) 承認者情報も入力します (2) 日付の入力日付の入力規則で年月日は " ハイフン " でつ

新ポータル説明書.indd

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

マニュアルの表記 呼称について本マニュアルでは以下の呼称を使用しています DataNature Smart 管理ツール :DN 管理ツール DataNature Smart クライアント :DN クライアント 画面に表示されるコマンド名などの文字コマンド名やダイアログボックス名など 画面上の固有の文

プログラミング実習I

PowePoint Free Design Template

C#の基本

Source Insight

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

PAT-LIST-GLS V3.0 新機能のご紹介 ここでは PAT-LIST-GLS Ver2.1.1.X からの機能アップについて説明しています 特に 新しい TPL ファイル 2.0 は従来のバージョンの GLS ではお使いになれませんので 必ず本書 をお読みになり ご利用をお願い致します 1

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

ミガロ.製品 最新情報

UMLプロファイル 機能ガイド

CodeRecorderでカバレッジ

スライド 1

概要 ABAP 開発者が SAP システム内の SAP ソースまたは SAP ディクショナリーオブジェクトを変更しようとすると 2 つのアクセスキーを入力するよう求められます 1 特定のユーザーを開発者として登録する開発者キー このキーは一度だけ入力します 2 SAP ソースまたは SAP ディクシ

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

easyhousing 環境設定 操作マニュアル Ver 年 7 月 2 日

SnNCutCnvs ステッカーウィザードを使ってデザインを作成する ここでは スターターキットに付属している A4 サイズ (210 mm 297 mm) のプリントステッカーを使用する場合の例を説明します [ ステップ 1] エリアサイズを変更します パソコンの場合 : 編集画面 >[ プロジェ

ドライブドア点呼記録オプション 機能・操作説明書_pptx

プレポスト【解説】

プレゼンタイトルを入力してください

civil_ver.7.5 新機能.indd

Managing and Sharing MATLAB Code

24th Embarcadero Developer Camp

PowerPoint Presentation

PDFオートコンバータEX

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  

10th Developer Camp - B5

VBコンバータ利用方法

SysMLに関する操作方法について

目次 更新履歴... 1 画面設計書の目的... 3 必要な内容... 3 画面一覧... 4 必要な内容... 4 画面遷移... 5 画面レイアウト... 6 入力パラメータ... 7 必要な内容... 7 項目定義... 8 必要な内容... 8 部品の種類... 9 ( 参考 ) 部品指定と

触覚マウスライブラリを使った 触覚付き Web ページの作り方 ver 富士ゼロックス株式会社 -1-

Moodleアンケートの質問一括変換ツール

PowerPoint プレゼンテーション

インテル(R) Visual Fortran コンパイラ 10.0

フォト アルバム

<4D F736F F D20837D836A B5F93C192E88C AC888D593FC97CD5F2E646F63>

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

生成された C コードの理解 コメント元になった MATLAB コードを C コード内にコメントとして追加しておくと その C コードの由来をより簡単に理解できることがよくありま [ 詳細設定 ] [ コード外観 ] を選択 C コードのカスタマイズ より効率的な C コードを生成するベストプラクテ

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

memo

ModelSim-Altera - RTL シミュレーションの方法

FTPサーバーへのアクセス権限設定

AI1608AYUSB手順V3

Microsoft Word - ModelAnalys操作マニュアル_

Create!Form V11 - 機能リファレンス - テスト実行

プログラミング基礎

Proc luaを初めて使ってみた -SASでの処理を条件に応じて変える- 淺井友紀 ( エイツーヘルスケア株式会社 ) I tried PROC LUA for the first time Tomoki Asai A2 Healthcare Corporation

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^

VelilogHDL 回路を「言語」で記述する

Fortran 勉強会 第 5 回 辻野智紀

SimulinkによるReal-Time Test環境の構築

1. 画面説明 ここでは普通にアプリケーションを開いた場合に表示される対話型画面の説明をしています パスワード ( 再入力 ) パスワード登録 パスワード消去 事前チェックの処理の際に必要になるパスワ

64bit環境で32bitコンポーネントの利用

SILAND.JP テンプレート集

1 はじめに 2016/7 に更新された Windows Update によりアドインファイルのブロックを解除しないと使用できなくなりました このため ファイルのプロパティにてブロックを解除してご使用ください リンク 設定方法はコチラをご覧ください 1.1 アドインの機能このツールは Microso

WebOTX V6 J2EEアプリケーションのトラブルシューティング

Transcription:

アノテーション自動表示によるモデル可読性向上への取り組み 2014 年 12 月 18 日アイシン エィ ダブリュ株式会社技術本部第 2 制御技術部主席研究員久保孝行

説明の流れ アノテーション表示が必要な背景 アノテーション表示に使用する技術の紹介 SimulinkAPI 最初の実施内容の紹介 改善内容の紹介 応用事例 まとめ その他 ( 時間があれば ) 1

背景 C 言語同様 Simulinkを用いたモデル記述もスタイルガイドに準じたモデリングを行います 例えば モデリングガイドラインには MAAB 定義のガイドラインがあります db_0140 : ブロックパラメータの表示重要なブロックパラメータは表示されなければなりません 可読性向上のため 2

Ver4 からはルール毎のユーザーパラメータが明確に db_0140 対象となるプロセス毎に 以下のリストを設定します 対象ブロックタイプと表示すべきオプション名 表示する条件 表示方法 表示文字 つまり 何を表示するかは ユーザーが決める 3

表示したい情報を整理する ブロック毎に何を表示しますか? どの様に表示しますか? ブロックごとに表示したい内容が異なる 内容を決定する 複数人から情報を集約 17 ブロックに対しての要求をまとめた 4

17 ブロックに必要な情報を表示した例を作成 17 ブロックについて表示すべき例題を作成し ルールとして定義 課題 : アノテーション表示を人が実施する事が 工数的に 可能なのか?

ルール準拠への実現手段決定 スタイルガイドへの準拠について チェック機能を重視されがちですが この例では 人がモデルに設定し 自動チェックを実施しても ルール準拠の作業が膨大でルールが守られない可能性がある つまりチェックしても大量にエラーを検出するだけで意味が無い db_0140: アノテーション表示は シミュレーションやコード生成に影響が出ない したがって モデルを変更しても影響度が無いので 自動化する事が出来る つまり チェックではなく 必要な時にボタンを押すようにして対応する事が可能 自動表示の仕組みを開発する 6

自動化には API を使う Simulink API を使います API Application Program Interface Simulink API とは MATLAB のコマンド操作にて Simulink の外部から Simulink モデルを操作する事が可能なインターフェース関数 Simulink のヘルプに記載されています

Simulink API 知ってますか? MATLAB のコマンドラインから >>Simulink Simulinkライブラウザの起動 >> open_system(' モデル名.mdl') モデルのオープン これもSimulink APIです コマンドラインからSimulinkのモデルを操作できます

API を活用しない場合の作業 要望 : ブロックの概要を表示したい 人が実施する場合 マウス操作によりブロックプロパティ画面を開き ブロック注釈に " 概要 " を表示するように選択する モデル内に数十個ブロックがあった場合 作業は一瞬では終わりません ブロック注釈の追加

SimulinkAPI を活用した場合 Simulink APIを使う場合 わずか数行のプログラムを書いて 実行すれば 全てのブロックに対して数秒で作業が終了する Simulink APIは非常に便利 (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>'); end

アノテーション表示 : 初期の実装方法 ブロックのタイプ毎に 何をどのように表示させるか設計し 実行させる プログラム例 for blkno=1:length(blocklist) if strcmp(blocktype,'buscreator') elseif strcmp(blocktype,'constant') elseif strcmp(blocktype,'gain') 欠点 ブロックが追加されるたびに 行数が増える 見たいオプションが変わると プログラムを修正する 手直しの工数が莫大で 実運用できない 11

サイズの比較 苦労 徐々に対応ブロック数が増え 17 ブロックから 33 ブロックになった時に コードサイズがほぼ倍増 プログラム総行数 700 600 500 400 300 200 100 0 プログラム総行数 300 17 570 33 653 97 対応ブロック数 逐次逐次新方式 140 120 100 80 60 40 20 0 対応ブロック数 対応ブロックの種類やオプションの追加ニーズは次々に出てくる ここで もう一度ニーズを集約 整理した 12

改善に向けて

表示したい情報を整理 1. どの様に表示しますか ブロック毎に何を表示しますか? どの様に表示しますか? ブロックごとに表示したい内容が異なる 2. 誰が重要と判断しますか? 機能を検討する人 実装用にコード生成の設定を行う人 検査を行う人 プロセス担当者によって 表示したい内容が異なる 14

対象ユーザーごとに表示したいオプションが異なる 機能を考えるユーザーは 最小限のオプション表示が良い 表示が多すぎると仕様の理解の邪魔 実装設定を行うユーザーは 実装に影響する情報が欲しい 信号の最大 最小値の表示 コードに影響するオプションを表示 整理すると 3 職種 :2 種類に集約可能 15

表示パターンを調査 アノテーション表示のオプション毎の操作内容を調査 分類した 1. 個々のブロック固有のオプションを用いた表示 UnitDelayはinit ConstatnブロックはValue 2. 共通するオプションを用いた表示 サンプリング周期 プロパティ 3. 状況によって アクティブになるオプションを用いた表示 Enableサブシステム内に存在するoutportブロック 16

見せ方 パターンを整理 見た目でパラメータが解る パラメータが隠れている 見せ方の種類を 5 種類に統合 17

機能を整理 工夫 表示パターンを指定する ブロック毎に表示オプションを指定する 特殊ケースは 関数名を記載する これらの対応で プログラムの統合とプログラムの一部をデータへ移動可能! a.blocktype={'constant'}; ブロック種類 a.option={'value'}; 表示オプション a.optiontype={'1-a'}; 見せ方 a.specialcond = []; a.text.eng={'value'}; 表示文字 ( 英語 ) a.text.jp={' 定数 '}; 表示文字 ( 日本語 ) 18

追加方法 工夫 a.blocktype={'constant'}; a.option={'value'}; a.optiontype={'1-a'}; a.specialcond = []; a.text.eng={'value'}; a.text.jp={' 定数 '}; a.text.disp=[]; ShowAnnotationParameter(end+1)=a; a.blocktype={'unitdelay'}; a.option={'x0','stateidentifier'}; a.optiontype={'1-c','2'}; a.specialcond = []; a.text.eng={'inivalue','stateidentifier'}; a.text.jp={' 初期値 ',' 状態変数 '}; a.text.disp=[]; ブロック毎に構造体にオプションを指定する 対応ブロックが増えると構造体を追加していく 19

特殊ケースへの対応 関数を呼び出す宣言ができる a.blocktype={'switch'}; a.option={'criteria','threshold'}; a.optiontype={'2','3'}; a.specialcond = @sp_func_switch; a.text.eng={'passingcondition','threshold'}; a.text.jp={' 通過条件 ',' 閾値 '}; a.text.disp=[]; ShowAnnotationParameter(end+1)=a; @sp_func_switch: 関数ハンドルを使用する %% Switch 固有の特殊処理 function spstr = sp_func_switch(varargin) spstr = ''; Criteria = get_param(varargin{1}, 'Criteria'); if ~strcmp(criteria, 'u2 ~= 0') % 条件式が 'u2 ~= 0' のとき 通過条件 閾値を表示する spstr = [varargin{3}, ' = ', '%<',varargin{2},'>']; end end 20

サイズの比較 結果 対応ブロック数 33 と新方式の 97 ブロック対応で プログラム総行数にはそれほどの違いがない 対応ブロック数が少なければ 個別の対応が望ましく およそ 30 ブロックを超える対応が必要な場合に本手法が有効である事が解る プログラム総行数 700 600 500 400 300 200 100 0 プログラム総行数 300 17 570 33 653 97 対応ブロック数 逐次逐次新方式 140 120 100 80 60 40 20 0 対応ブロック数 21

その他の変更点 ユーザーの職種毎にデータを切り替える事で 必要とされる表示パターンを変更できるようになった 対象ユーザーの複数化に対応 22

なぜプログラムの一部をデータ化できるのか? MATLAB は テキストデータを そのまま実行できる 追加したプログラム ( データ ) はコンパイルが不要 この機能を活用する事で プログラムを変更しなければならないようなユーザーニーズに柔軟に対応できる環境を構築する事ができる 応用 : 複数の流派があるガイドライン ブロックサイズ ブロックの色の使い方 23

拡張 応用の例 応用 同様の仕組みを利用すれば ブロックサイズの調整も プロジェクト あるいはチーム単位で標準化した設定にできる データの設定例 BlockType MaskType option1 Comparison Name option2 width hight データに文字を含め可変長の数式に対応 X_VariableS ize Y_VariableS ize MaxWidth MaxHight SubSystem SubsystemLength 100 42 num*7 numio*30 500 1000 Masked Default SubsystemLength 30 30 numio*7 numio*50 500 500 Masked Stateflow SubsystemLength 30 30 num*7 numio*50 500 500 Bitwise Operator 60 40 Data Type Propagation 40-1 Delay InitialConditi Input port onsource 55 40 Delay 40 40 Function-Call Generator numberofite rations 1 50 26 特殊な関数の呼び出しで Function-Call Generator 100 26 Integer Delay 複雑な処理を実行させる 40 40 Lookup Table Dynamic 55 50 Tapped Delay Line 40 40 Abs 30 30 Bias 40-1 Bit Clear 60 40 Bit Set 60 40 Block Support Table 40 38 BusAssignment -1-1 BusCreator 5 38 (19 * numi) 500 BusSelector 5 38 (19 * numo) 500 この例では m ファイルの構造体形式をやめて エクセルファイルで管理できるようにした 24

応用例 : モデル情報の数値化 モデルファイル エクセルファイルを使ってモデルが持つ情報の数を測定するツールを作成 3 次データ メトリクスのマップ換算値 + リンク / マスクのパラメータの設定 使用変数 ( データ ) マップ値 + 0 次データ サブシステムリスト チャートリスト ブロックパラメータの設定 チャートオブジェクトの設定 1 次データ + + ブロック情報 信号線情報 チャート情報 階層毎のデータ種 関数名 2 次データ メトリクス用データ 2013/02/28 ユーザーは MATLAB 言語を知らなくても モデルから必要な情報の数を取得できる 25

まとめ アノテーション表示ツールを作る事で 見やすさが改善され レビュー時間の削減が実現できた レビュー時の視点によって表示を切り替える事ができる db_0140については ガイドラインチェッカーを使用する必要が無くなり 検査工数の手間が削減できた プログラムを一部データ化する事で メンテナンス性が向上し ユーザーがチーム単位でメンテナンスできるツールを作る事が出来た 同様の手法を他の機能に展開する事で 複数個の機能について メンテナンス性が向上した 26

開発環境設計は 組込みソフトウェア開発とは違う 波形形式 A 適合ツール 波形形式 B HILS: 結果 変換 入力 波形形式 D 単体検査 作り方 1. 全ての組み合わせを作る A D,E B D,E 波形形式 E 自動検査 4 通りの変換を作ればよい 波形に含まれる様々な情報と形式 時間一つに複数の信号データ 時間と信号データのセット 同一時間のステップ移動 信号ヘッダ情報 軸情報 出力 波形形式 A 適合ツール 波形形式 B HILS: 結果 波形形式 D 単体検査 波形形式 E 自動検査 それぞれのフォーマットに対して 個別に変換プログラムを作る 27

組み合わせが増えたらどうする 波形形式 A 適合ツール 波形形式 B HILS: 結果 波形形式 C Simulink Scope 波形形式 D 単体検査 波形形式 E 自動検査 波形形式 F Signal builder 作り方 1. 全ての組み合わせを作る A D,E,F B D,E,F C D,E,F 種類が増えると 組み合わせが増えて すぐにプログラムが複雑化 メンテナンス不可能となる 9 通りの変換を作る 28

存在しない中間フォーマットを経由する 波形形式 A 適合ツール 波形形式 B HILS: 結果 波形形式 C Simulink Scope 入力 中間形式 変換 波形形式 D 単体検査 波形形式 E 自動検査 波形形式 F Signal builder 出力 作り方 2. 共通フォーマットを作る A G G D B G G E C G G F 共通のデータフォーマットを作り 片側の変換を用意する この場合は 6 通りの変換を作れば良い このような設計手法は 制御系組みソフトウェア開発とは異なるので 慣れが必要 従来のソフトウェアエンジニアから開発環境エンジニアに職種切り替えを実施する場合 単にプログラム言語が MATLAB に切り替わるだけでなく プログラムテクニックが大きく異なります これらの事を習得するには 訓練が必要です 29

MATLAB 言語を用いた開発の注意 MATLAB 言語を用いた環境開発を受託してくれる会社はありますが メンテナンス性まで考慮してツールを作ってくれるところはほぼありません なぜか! 単発のプログラム開発は早い方が好まれる 安かろう 悪かろう ユーザーが同じ事が出来るなら安い方を好む 保守 メンテナンスを受託する場合 工数が多い方が受託会社が儲かる 騙されない対策は 発注側にそれを見極める能力が無ければ 騙されたままになるわけです 発注側も 技術的なテクニックを身に付け 嘘偽りを見抜く事が出来なければいけません 30