Atlas と Modelify のために C プロジェクトを設定し、Modelify が Simulink へ変換する方法を選びます。

3 プロジェクトの設定

ModelifyはAtlasを用いてC言語のコードを分析します。C言語のコードをマップするためには、コンパイラがプロジェクトをビルドするために必要な設定と同じ設定が、Atlasに必要です。以下のガイドでは、既存のC言語のベースをEclipseのCDTプロジェクトにインポートし、AtlasおよびModelifyで使用する準備を行うための一般的な方法を説明しています。

Cコンパイラのインストール

この後のセクションでは、Cコンパイラがシステムにインストールされていることを前提としています。

既にCコンパイラがインストールされている場合は、このセクションをとばしてください。それ以外の場合には、以下の手順に従っていただくと、オープンソースのCコンパイラをインストールできます。

MSYS2からgcc (MinGW) とmakeをインストールする

  • https://www.msys2.org/の インストールの項の1-5 の手順に従ってください。
  • インストールパスには、空白を含まないものを選択することをお勧めします。デフォルトは、C:\msys64 です
  • gcc とmakeをインストールします。 上記の手順5で、MSYS2ターミナルが開らかれるので、次のコマンドを実行して、UCRT64バージョンのツールをインストールします。
  • pacman -S mingw-w64-ucrt-x86_64-gcc make

C コンパイラ を使用するようにModelify を設定する

コンパイラとビルドツールのインストールが、PATH環境変数にまだない場合には、Modelify がコンパイラを見つけるように設定することができます。次の手順は、前の項目でMinGW コンパイラをインストールしたことを前提としています。

  • Modelify を実行します
  • Click Window > Preferences をクリックします
  • ダイアログが開かれるので C/C++ > Build > Environment を選択します
  • MSYS2/MinGW bin フォルダを指定する変数PATH を作成します。UCRT64バージョンのツールについては、デフォルトのインストール場所は、C:\msys64\ucrt64\bin です。
  • 一番下のラジオボタンが「追加」に設定されていることを確認して、設定を適用します。

ツールチェーンサポートのインストール(オプション)

Modelify は、gcc とgccベースのクロスコンパイラ ツールチェーンのサポートとともに配布されます。プロジェクトが、(gcc 以外の)特別なコンパイラを必要とする際、ツールチェーンをサポートするために、追加のCDT 機能のインストールが必要な場合があります。

C言語のプロジェクトをEclipseにインポートする

  • プロジェクトにMakefileが含まれている場合:
    • ファイルメニューからインポートを選択します。
    • ポップアップダイアログでC/C++を開き、Existing Code as Makefile Projectを選択して、次へをクリックします。
    • プロジェクト名を入力し、インポートするディレクトリを指定してください。インデクサー設定に対するtoolchainを設定します。Gccを用いたクロスコンパイルには、Cross GCCを選択します。 Gcc以外の場合は、インストール済みの好きなコンパイラを選択してください。(例 MinGW GCC)
    • Finishをクリックします。
    • プロジェクトのビルドにMakefileが用いられることを確認します。
      • プロジェクトの上で右クリックし、プロパティをクリックします。
      • C/C++ ビルドを開き、Tool Chain エディターを選択します。
      • Current ビルダーをGnu Make Builderに設定します。
      • OKをクリックします。
  • プロジェクトにMakefileが含まれていない場合:
    • ファイルメニューから新規、続いてその他...の順に選択します。
    • ポップアップダイアログでC/C++を開き、C プロジェクトを選択して、次へをクリックします。
    • プロジェクトタイプの実行可能を開き、空のプロジェクトをクリックします。
    • プロジェクト名を入力して、終了をクリックします。
    • プロジェクトの上で右クリックし、インポートを選択します。
    • ポップアップダイアログでGeneralを開き、ファイル・システムを選択して、次へをクリックします。
    • 親ディレクトリを入力し、インポートするファイルを選んだら、終了をクリックします。
    • 必要に応じてインクルードパスとプリプロセッサのディレクティブを調整してください。プロジェクト、フォルダ、もしくは、ファイルの上で右クリックし、プロパティを選択します。
    • ポップアップダイアログでC/C++ ビルドを開きます。
      • 必要に応じて設定を選択して、インクルードパスとプリプロセッサのディレクティブを追加します。CDT Helpもご覧ください。
      • Tool Chain エディターを選択します。
        • 「現在のtoolchain:」のオプションでお好みのツールチェーンを選択します(MinGW GCC等)。
        • 「現在のBuilder:」が「CDT内部ビルダー」に設定されていることを確認してください。

C言語のプロジェクトをAtlasに対して設定

この時点で、お客様のC言語のプロジェクトは既に正しく設定されている可能性があります。Atlasがコンパイラの設定(インクルードパスやプリプロセッサのディレクティブ等)を取得するには、CDTがC言語のプロジェクトをビルドし、コンパイラの呼び出しを観察することができる必要があります。Atlasがビルドのプロセスでコンパイラの情報を確実に抽出することができるように、以下の手順を確認してください。

gccベースのクロスコンパイラをプロジェクトで利用している場合は、当該のコンパイラをプロジェクトで利用する設定を行ってください(出典 stackoverflow.com)。

  • プロジェクト上で右クリックし、プロパティを選択します。
  • プロジェクトでCross GCC Tool Chainを利用する設定を行っていることを確認してください。
    • C/C++ Buildを開き、Tool Chain エディターを選択します。
    • 現在のtoolchainをCross GCCに設定します。
    • 適用をクリックします。
  • ポップアップダイアログでC/C++ ビルドを選択します。
    • 自動的にMakefileを生成にチェックを入れますが、適用しないでください。
  • C/C++ ビルドで設定を選択します。
  • ツール設定タブでCross Settingsを選択します。Prefixとパスに対するクロスコンパイラの設定を行ってください。例:
    • Prefix: arm-none-eabi-
    • パス: <path to compiler>
  • 再びC/C++ ビルドを選択し、自動的にMakefileを生成のチェックを外します。
  • 適用をクリックします。

以下の手順は、ビルドしたファイルを正確にマッピングする上で必要な変更を詳しく説明するものです。

  • プロジェクトにMakefileが含まれている場合、追加の手順を踏み、ビルド中にコンパイラの呼び出しをCDTが観察することができるようにする必要があります。大規模なプロジェクト(Linux等)は可読性を考慮して呼び出しのテキスト全文を表示していませんが、通常は冗長モードで呼び出しを表示させる方法があります。
    • C/C++ ビルドを選択し、「デフォルト・ビルド・コマンドを使用」のチェックを外します。コマンドを調整し、出力を冗長化します。「make V=1」や「make VERBOSE=1」が一般的に用いられます。
  • ビルドを観察するようにAtlasを設定します:
    • プロジェクト上で右クリックし、プロパティを選択します。
    • Atlas C ビルドを選択します。
    • ビルドコマンドで、リストにプロジェクトで利用するコンパイラの名前が存在しない場合は追加してください。プロジェクトのビルドの出力を解析するとき、Atlasがこれらのコンパイラの呼び出しを探すためです。
    • マッピングするソースファイルで、現在のビルドのファイルのみをマッピングを選択します。
    • OKをクリックします。

ビルド

プロジェクトのマッピングを正確に実行するには、コンパイラの呼び出しを観察することができるようにビルドする必要があります。

  • プロジェクトがCDTにより生成されたMakefileを利用している場合、もしくは、Makefileに「all」ターゲットが含まれている場合
    • プロジェックト・エクスプローラー内のプロジェクト上で右クリックし、プロジェクトのビルドを選択します。
  • Makefile 手書きのMakefileがプロジェクトに含まれている場合
    • プロジェックト・エクスプローラー内のプロジェクト上で右クリックし、Build Targetsを開いて、作成…を選択します。
    • In ターゲット名でビルドのターゲットの名前を入力します。続いて、OKをクリックします。
    • プロジェックト・エクスプローラービューでプロジェクトを開き、Build Targetsを開いて、ターゲット上でダブルクリックします。

マッピング

プロジェクトを正しくビルドしたら、Atlasを使ってマッピングを行うことができます。

  • プロジェックト・エクスプローラー内のプロジェクト上で右クリックし、Atlasを開き、マッピングを有効化を選択します。
  • メインメニューでAtlasを選択し、ワークスペースを再マッピングを選んでください。

トラブルシューティング

Atlasが適切にプロジェクトのマッピングを実行することができなかった場合、以下の手順を試してください:

  • プロジェクトをクリーンおよびビルドし、ビルドの出力が正確に解析されていることを確認します:
    • パッケージエクスプローラ内のプロジェクト上で右クリックし、プロパティを選択します。
    • Atlas C ビルド > ビルド設定ファイルの順に確認していきます。
    • ビルド設定ファイルで開くボタンが灰色になっている場合、あるいは、ファイルが見つからなかったと記されている場合、Atlasがビルドの設定を見つけることができなかったことを意味します。C/C++ ビルドを選択し、「デフォルト・ビフド・コマンドを使用」のチェックを外してください。
    • コマンドを調整し、出力を冗長化してください。必要なフラグは異なる可能性がありますが、一般的に「V=1」や「VERBOSE=1」等が用いられます。
    • プロジェクトのクリーンとビルドを行います。ビルド設定ファイルがゼロではないことを確認してください。
  • o Atlasのコードマップがまだ空の場合、Makefileが変化するディレクトリを誤って報告している可能性があります。
    • パッケージエクスプローラ内のプロジェクト上で右クリックし、プロパティを選択します。
    • C/C++ ビルドを選択し、「デフォルト・ビルド・コマンドを使用」のチェックを外してください。
    • フラグ「--print-directory」を追加します。
    • プロジェクトのクリーンとビルドを実行します。

Atlasの設定がうまくいかない場合、support@ensoftcorp.comに連絡を取り、支援を要請してください。

4 Modelifyの設定

Modelifyはマルチページのプロジェクト変換エディターを用意しており、このエディターを使って複数の設定を実行することができます。また、このエディターには変換ページがあり、このページで変換を実行し、生成したモデルを開くことができます。

エディターを開くには、modelify.config プロジェクト変換ファイルをダブルクリックします。新しい変換ファイルを作成するには、上のメニューバーでModelify > プロジェクトをSimulinkに変換の順番にクリックします。

メニューバーの Modelify メニューが開き、「プロジェクトをSimulinkに変換」、「デモプロジェクトをインポート」、「チェックリストビューを開く」、「Modelifyの環境設定ページを開く」、「Modelifyのヘルプを開く」、「Modelifyのログをエクスポート」が並んでいます。

Modelifyメニューに関する詳細は、Modelify メニューページをご確認ください。

以下のセクションはエディターの各ページを詳しく説明するものです。

変換

このページにはツールバー、検索ボックス、および、プロジェクト内で見つかった全ての関数を表示するテーブルが提供されています。関数は含まれているフォルダとファイルごとに階層構造で表示されます。

Stopwatch Demo Project の「変換」ページで、フィルターの入力欄と、プロジェクトのファイルと関数ごとに推奨、変換のタイプ、コンポーネント、状態、情報を示す表があります。

以下のテーブルはツールバーのアクションを説明するものです。

Icon 説明
全て折り畳む 名前カラムに表示されているツリープロジェクト構造全体を折り畳みます。
全て拡大する 名前カラムに表示されているツリープロジェクト構造全体を開きます。
選択した部分を変換する 選択した要素を変換します。コンテナの要素が選択されている場合(プロジェクト、フォルダ、または、C言語ファイルの要素等)、選択したコンテナの要素の全ての関数が変換されます。
全て変換する 名前カラムにリストアップされている全ての関数を変換します。
選択した部分の変換を停止する 選択した要素の変換を停止します。コンテナの要素が選択されている場合、そのコンテナの全ての関数の変換を停止します。
全ての変換を停止する 全ての関数に対する変換を停止します。

検索ボックスを使うと、名前カラムで簡単に要素を見つけることができます。検索ボックスはテキストフィールドに入力していくと自動的に要素を絞り込み、検索用語と一致する要素のみを表示します。

絞り込まれた要素と一致する要素は太字で表示されます。コンテナの要素が絞り込まれた要素と一致する場合、その要素の全ての子要素も表示されます。

clC で絞り込まれた「変換」ページで、関数 clCurrentTime、clCountDownTm、clControler が太字で表示されています。

メインのテーブルには以下のカラムが含まれています:

  • 名前: 要素の名前を表示します。要素にはプロジェクトのルート、サブフォルダ、.c ファイル、または、関数があります。ツリー構造は階層を描写しています。
  • 推奨: コードの分析に基づき、推奨される変換のタイプを示します。表示される可能性のある選択肢は Simulink, Stateflow, S-Function and 変換しないで下さいです。 各選択肢の説明は下の変換のタイプをご覧ください。 Modelifyが関数の変換の実行を推奨しない場合、変換しないで下さいの上にカーソルを合わせると、理由を説明するメッセージが表示されます。
  • 変換のタイプ: 変換のタイプを記します。以下に表示される可能性のある変換のタイプを挙げていきます。
    • 親から継承: 変換のタイプは親の要素から引き継がれます。
    • Simulink: 関数はSimulinkモデルに変換され、関数のロジックはブロックと線でモデル化されます。
    • Stateflow: 関数はStateflow Chartのブロックを含むSimulinkのモデルに変換されます。関数のロジックはジャンクションと遷移を用いてフローチャートとしてモデル化されます。
    • S-Function: 関数はS-Functionブロックを持つSimulinkのモデルに変換されます。S-Function ブロックはオリジナルのC-Functionのコードを呼び出します。そのためにMATLABでC言語のコンパイラを設定する必要があるかもしれません。詳細は S-Function変換に対するMATLABのセットアップを参照してください。
    • 変換しないで下さい: 特定の関数を変換から除外したい場合はこのオプションを選択します。別の関数から関数が呼び出されると、スタブモデル(InportとOutportのみを持つモデル)が生成されます。
  • コンポーネント: 作成する必要があるコンポーネントのタイプを示します。以下に表示される可能性のあるコンポーネントのタイプを挙げていきます。
    • モデル: 関数に対するSimulinkのモデルが作成されます。
    • サブシステム: 関数はサブシステムのブロックに変換されます。これは、関数が一度だけ呼び出され、その後、呼び出し元の関数に対応するモデル内でサブシステムとして変換される場合のみ可能です。
    • Libraryブロック: Libraryブロックが関数に対して作成され、ライブラリのモデルに盛り込まれます。関数が多数の場所から呼び出され、共有する必要がある場合、Library Blockは便利です。ライブラリの名前を指定することが可能です(「ユーザーライブラリ」のセクションを参照してください)。
  • 状態: 要素のマッピング/変換の状態を示します。以下に表示される可能性のある状態を挙げていきます。
    • コードマップで見つからなかったため変換することができません: Atlasによるマッピングが要素に対してまだ行われていません。
    • 準備完了: Atlasによるマッピングが要素に対して行われ、変換する準備が整っています。
    • 変換できません: 要素を変換することができないことを意味します。
    • 処理中: 変換が進行中です。
    • キャンセルしました: ユーザーによって変換がキャンセルされました。
    • レビュー可能です: c変換が問題なく終了し、モデルを精査する準備ができています。
    • 部分的に完了: 関数の要素において変換中に問題が起き、部分的にモデルが生成されたことを意味します。コンテナの要素においては(フォルダ、.c ファイル)、少なくとも1つのコンテナ内の関数で変換の問題が発生したことを意味します。
    • エラー: 変換中に問題が発生し、モデルが生成されませんでした。
  • 情報: 一部の状態の値に対して関連する情報を提供します。変換が失敗した際のエラーに関する情報等です。

上の画像にあるように、名前と変換のタイプの間に空のヘッダーを持つ追加のカラムが表示される可能性があります。このカラムは、モデルの生成に変換バンドルを必要とするライセンスのオプションに対して表示されます。バンドルに含まれる関数にはこのカラムでチェックマークが表示されます。

複数の要素を選択し、コンテキストメニューからオプションを選ぶことで、複数の要素でアクションを適用することが可能です。

変換の表で 3 つの関数が選択され、「モデルを開く」、「ソースを見る」、「変換のタイプ」、「コンポーネント」、「変換の状態を消去する」、「デフォルトの設定を回復する」などのコンテキストメニューが開いています。

コンテキストメニューのアクションを説明します。

  • モデルを開く: 選択した関数がモデルに変換された場合、MATLABでSimulinkのモデルを開きます。
  • ソースを見る: .c ファイルと関数に適用されます。Eclipseのテキストエディター内のソースに移動します。
  • チェックリストで表示する: Modelify チェックリストビューで選択した関数に対するチェックリストの項目を表示します(変換の制約や問題等)。選択に関連するチェックリストの項目が存在しない場合、メニューのオプションは無効になります。
  • 初期化ファイルを開く: 初期化ファイルを開きます。Mスクリプトまたはデータディクショナリのファイルのいずれかが該当します。このファイルの詳細は「データ保存」のセクションを参照してください。R2014b以降ではデータディクショナリのファイルを開く必要があります。
  • 変換: 選択した要素を変換します。
  • キャンセル: 選択した要素に対する変換をキャンセルします。
  • 変換のタイプ: 変換のタイプの変更を許可します。
  • コンポーネント: コンポーネントのタイプの変更を許可します。
  • 変換の状態を消去する: 変換の状態を消去し、要素がマッピングされているかどうかに応じて、対応するマッピングの状態を設定します。
  • デフォルトの設定を回復する: 変換のタイプとコンポーネントのタイプをModelifyが提案したオリジナルの設定に戻します。

一般

一般タブはセクションごとに分けられた複数の設定のオプションを提供します。右上には、異なるプロジェクトから設定をインポートするための便利なボタン、および、変換の設定を変更した後に前回レビューした関数を再変換するための便利なボタンが用意されています。

MATLABのバージョン

ここではモデル作成時にModelifyで利用したいMATLABのバージョンを選択することができます。

「一般」ページの「MATLABのバージョン」セクションで、ターゲットの MATLAB のリリースが「グローバルデフォルトを使用 (R2014a)」に設定され、MATLAB 環境設定ページへのリンクがあります。

また、ここでは、システムにインストールし、Modelifyに認識させたいMATLABを設定することが可能なMATLAB Preference ページのリンクも用意されています。

MATLAB の設定ページで、R2011b から R2018b までの MATLAB のリリースが Simulink のバージョンとパスとともに並び、既定のターゲットの MATLAB が R2014a です。

モデル

モデル

「一般」ページの「モデル」セクションで、モデルのオプションのチェックボックスと、Inport のサフィックス _in、Outport のサフィックス _out があります。
オプション 説明
モデル情報のブロックを生成 このオプションを有効にすると、Modelifyが生成した全てのモデルにModel Info Simulinkのブロックを追加します。このModel Info Simulinkのブロックは生成したModelifyのバージョン、生成された日時、および、生成されたもともとの関数に関する情報を提供します。
ブロック名を表示 このオプションは、各ブロックの名前をモデル内に表示するかどうかをコントロールします。
ポートデータのタイプを表示 このオプションを有効にすると、生成されたSimulinkのモデルは各ブロックのポートの隣にデータのタイプを表示するようになります。
行番号の注釈を表示 各ブロックに対してアノテーションが追加され、ソースコード内にブロックが生成された行数が表示されます。
Simulinkのプロジェクトを作成 このC言語のプロジェクトに対して作成されたモデルを管理するため、Simulink プロジェクトが作成されます。
未定義の関数にスタブブロック図を作成 宣言されたものの、定義されていない関数に対してスタブのブロック図が生成されます。スタブのブロック図には、関数のインターフェースを表す上で必要なブロックが含まれます。こうすることで具体的な関数の定義を必要とすることなく、モデルの生成を継続することが可能になります。スタブのブロック図は、モデルとして保存することも、あるいは、ユーザーライブラリのセクションで「スタブブロック図をLibraryブロックとして保存します」が選択されている場合は、Library サブシステムブロックとして保存することが可能です。
TargetLinkと互換性のあるモデルを作成 このオプションを有効にすると、生成されたモデルはTargetLinkが対応するSimulinkのブロックのみを含むようになります。
Inportのサフィックス グローバル変数に対応するInportブロックに使用される拡張子です。この拡張子は名前衝突が検知された場合のみ、つまり同名のOutportが存在する場合のみ追加されます。
Outportのサフィックス グローバル変数に対応するOutportブロックに使用される拡張子です。この拡張子は名前衝突が検知された場合のみ、つまり同名のInportが存在する場合のみ追加されます。

モデルの保存

「モデルストレージ」セクションで、モデルストレージディレクトリと、「フラット」と「フル関数パス」を選ぶストレージ動作のメニューが開いています。
オプション 説明
モデルストレージディレクトリ デフォルトでは、生成されたモデルはプロジェクトのロケーションの「Modelify」フォルダに保存されます。ただし、モデルストレージディレクトリのテキストボックス内の値を変更することで、別のロケーションを設定することも可能です。
ストレージ動作 ストレージ動作はモデルがどのように保存されるのかを示します。「フラット」は全てのモデルが単一のディレクトリに保存されることを意味します。「フル関数パス」は、各関数に対して、プロジェクトのディレクトリの構造と同様のディレクトリの構造が生成されることを意味します。ディレクトリは.c ファイルに対しても生成されます。
ファイル拡張子を削除 ストレージ動作で「フル関数パス」が選択されている場合のみこのオプションは適用されます。このオプションが有効にされると、ソースファイルに対して作成されたディレクトリはディレクトリ名にファイル拡張子を含まなくなります。

データの保存

「データストレージ」セクションで、デザインデータを初期化 MATLAB ファイルに保存し、マクロ定数とグローバル定数に MATLAB の変数を作成する設定です。
オプション 説明
初期化ファイル Modelifyはデザインデータを初期化ファイル内に保存します。デザインデータには、バスと列挙の定義、定数に対するワークスペースの変数、そして、Simulink.Signalの定義が含まれます。このデータは「PreLoadFcn」モデルのコールバック内に含まれる初期化 M-Scriptファイル、もしくは、モデルからリンクが張られているデータディクショナリファイルのいずれかに保存されます。
マクロ定数にMATLAB変数を作成する このオプションを有効にすると、ModelifyはMATLABの変数を対応する値を用いてオブジェクトのマクロに対して生成し、初期化ファイルに保存します。これらの変数はConstant SimulinkブロックやStateflow Transitionsで用いられます。この設定は定数を一箇所に集めることでコントロールシステムの調整を簡素化します。
全てのモデルに初期化ファイルを適用する このオプションを有効にすると、初期化ファイル を全てのモデルに適用します。このオプションが無効にされると、ファイル内で指定されているデザインデータを利用するモデルのみに初期化ファイルは適用されます。

ユーザーライブラリ

「ユーザーライブラリ」セクションで、ライブラリ名 CustomLibrary、ライブラリディレクトリ、Library ブロックのオプション、呼び出しの閾値があります。

Modelifyは一定の基準を満たす関数をLibraryブロックに変換するように設定することが可能です。以下にチェックボックスのオプションを解説し、この基準を説明します。

オプション 説明
ライブラリ名 Simulinkのユーザーライブラリに対して名前を指定します。
ライブラリディレクトリ この値を空にすると、モデルが保存されているディレクトリと同じディレクトリにライブラリが保存されます。もしくは、ライブラリに異なるディレクトリを指定することもできます。
スタブブロック図をLibraryブロックとして保存します この設定はモデルのセクションで「未定義の関数にスタブブロック図を作成」の設定が有効にされていると適用されます。有効にすると、スタブのブロック図がユーザーライブラリ内でサブシステムのブロックとして保存されます。有効にされていない場合は、単独のスタブモデルが作成されます。
呼び出された回数が閾値を超えた関数をLibraryブロックに変換します 頻繁に呼び出される関数をユーザーライブラリのブロックに変換する推奨を有効にします。呼び出しの閾値は関数がユーザーライブラリのブロックに自動的に変換されるために、呼び出されなければならない回数の最小の回数(合計)です。この閾値を満たさない関数は、手動でユーザーライブラリのブロックに変換するように設定することができます。

変換バンドル

C言語のコードをSimulinkのモデルに変換するためには、変換バンドルを作る必要があります。変換バンドルページではバンドルを作成し、C言語のプロジェクトのどの部分をSimulinkに変換するのかを選択することができます。

プロジェクトの変換可能な量はユーザーのライセンスによって異なります。 評価用のライセンスを用いてModelifyの評価を行っている場合、変換バンドルは少量のコードに限定されます。 利用可能な行数は下に表示されます。表示されていない場合、利用可能な予算を再読込みボタンをクリックするとこの値は更新されます。

以下は、変換バンドルページの画像です。

「変換バンドル」ページで、バンドルに Stopwatch_Algo.c が選択され、行は 353、利用可能な予算は 100,000 で、「バンドルを作成」ボタンがあります。

変換バンドルを作成する方法:

  1. チェックボックスをクリックして、変換バンドルに盛り込みたいソースファイルを選択します。さらにファイルを選択すると、選択したファイルに含まれる行数(バンドルのサイズ)が左下に表示されます。
  2. バンドルを作成ボタンをクリックします。
  3. バンドルに署名
    1. インターネットに接続している場合、Modelifyから直接バンドルに署名することが可能です。バンドルの作成後、表示されたダイアログ内のバンドルに署名ボタンをクリックしてください。

    2. バンドルチェックサムファイルを Modelify のライセンスサーバーにアップロードし、署名の手続きを継続するかを尋ねる「バンドルに署名」ダイアログです。
    3. コンピュータがインターネットに接続されていない場合、または、何らかの理由でModelifyのライセンスサーバーにアクセスすることができない場合は、以下の手順に従ってください。
      1. 詳細 >>>ボタンをクリックしてください。
      2. 表示されている新しい一連のボタンの中からチェックサムファイルをエクスポートボタンをクリックして、ディスクに保存します。

      3. 詳細のボタンを表示した「変換バンドル」ページの「アクション」で、ポインターが「チェックサムファイルをエクスポート」にあります。
      4. 保存した変換バンドルのチェックサムファイルをEnSoft(support@ensoftcorp.com)にEメールで送信します。
      5. 承認された変換バンドルの署名ファイルがEnSoftから送られてきたら、署名ファイルをインポートボタンをクリックします。
  4. バンドルに含まれるワークスペースとファイルを再びマッピングすると、Simulinkに変換することが可能になります。

EnSoftに送信される変換のチェックサムファイルにはソースコードは含まれていません。変換バンドルファイルが現在のプロジェクトのコードと一致することをModelifyが確認することができるように、ソースコードのハッシュを持つだけです。

そのためコードへの編集が一部可能であり、ユーザーが必要に応じてコードを調整する、もしくは、Modelifyが異なるソースコードに対してモデルをどのように生成しているのかを観察することができます。Modelifyではバンドルの署名後、最大でコードの10%に変更を加えることが可能になります。

変換バンドルのリベース

バンドルの確定後に、合計 1% 以上のコードを変更するには、リベースを使用する必要があります。

ここで例として、合計 10,000 行のバンドルを所有しており、150 行の変更を行った結果、許容範囲の 1% を超過したと仮定します。現行の行数予算が 150 行以上の場合には、このバンドルをリベースすることが可能です。

バンドルのリベース実行するには、新規作成されたバンドル チェックサム ファイルの署名処理を実行する必要があります。 署名処理は、変更した行数のみが対象となります。 既存のバンドルをリベースする場合には、バンドルのリベース ボタンをクリックして、新規バンドルの署名を実行します。 そのあとダイアログボックスが表示され、バンドルの署名を完了します。なお、EnSoft にファイルを送信して署名処理を完了することも可能です。詳細については、既述の内容をご参照ください。

変換バンドルのページには、バンドルに含まれる行の総数、バンドルの作成時以降に変更した行数、使用可能な行数予算の情報が含まれています。

変換バンドルを消去

変換バンドルのチェックサムファイルをエクスポートし、その後、さらにファイルを含める場合は、バンドルを消去ボタンをクリックして新しくバンドルを作成します。通常、バンドルの署名が行われる前に実行する必要があります。詳細は以下の「警告」のセクションでご確認下さい。

警告

重要な変換バンドルのファイルを失うと、ライセンスに関する問題が発生し、新たにライセンスを購入して頂かなければならない可能性があります。お客様のソースコードを含むため、EnSoftサポートはマスターアーカイブファイルのコピーを保持していません。

変換バンドルが作成されると、Modelifyはプロジェクト内に保存されるソースコードのマスターアーカイブファイルを作成します(.modelify/bundle-master-file.zip)。EnSoftに送信されるチェックサムファイルはマスターアーカイブファイルで計算されたチェックサムのみを含みます。変換バンドルの署名が行われた後、Modelifyは現在のソースコードとアーカイブファイルに保存されているコードを比較します。Modelifyはこのように変更されたソースコードの量を特定します。このファイルが存在しない場合、Modelifyは変換バンドルを認証することができず、また、コードのSimulinkのモデルへの変換を許可することができません。

消去後、または、削除後に変換バンドルを再構成することはできません。要するに、マスターアーカイブファイルを失ってしまうと、当該の変換バンドルを作成するために使用したコード行数(LOC)のご予算も失われてしまうことになります。

ソースコードとマスターアーカイブファイルはEnSoftに送信されないため、弊社はバンドルのファイルのバックアップを有していません。従って、マスターファイルのバックアップを取っておくか、あるいは、削除しないように注意して頂くことを推奨します。

色付け

Modelifyはモデリングライドラインに準拠するように、ブロックの自動的な色付けを行います。各ブロックのタイプ、または、ブロックライブラリに対してルールを設定することが可能であり、その上、バックグラウンドとフォアグラウンドの色を指定することができます。

色付けのルールを設定する方法:

  • 色付けタブを選択し、追加ボタンをクリックします。
  • ブロックのタイプ/ライブラリカラムでセルをクリックし、編集ボタンをクリックします。
  • ダイアログが開いたら、ブロックのタイプ、または、ライブラリを選択し、OKクリックします。
  • バックグラウンドカラー、または、フォアグラウンドカラーをクリックし、続いて...ボタンをクリックします。
  • 色を選んで、ダイアログを閉じてください。
「色付け」ページで、Product、In1、Constant、Out1 のブロックのタイプのバックグラウンドとフォアグラウンドの色を設定するルールがあります。

以下の生成されたサンプルモデルの画像は、上の図にある色の設定に対応しています。 Inportの色は指定されていますが、無効にされているため、適用されていない点にご注意ください。

そのルールで色付けされた生成モデルで、Product ブロックがオレンジ、Constant ブロックがシアン、Outport が赤です。

変換パターン

デフォルトでは、Moldelifyは各関数がどのように変換されるのかに関して推奨を行います。例えば、1度だけ呼び出される関数、および、単一の関数から呼び出される関数はサブシステムに変換されます。その他の関数から何度も呼び出される関数はユーザーライブラリブロックに変換されます。

既定の一連の関数に対する具体的な変換のオプションを設定すれば、デフォルトの推奨をオーバーライドすることができます。

「変換パターン」ページで、パターン clPacer を Stateflow に、パターン Mul.* を Simulink に変換するルールがあります。

変換の設定を行う方法:

  • 追加ボタンをクリックします。
  • パターンカラムのセルをクリックして関数名を指定します。正規表現を指定して、複数の関数をマッチングすることもできます。
  • 続いて、残りのカラムでセルをクリックして以下の設定を行ってください。
    • 変換のタイプ: 変換のセクションで説明した変換のタイプの一つです。
    • ライブラリとして保存: 一致する関数をLibraryブロックに変換するべきかどうかを選択します。「どちらでも構わない」を選び、Modelifyの推奨に従ってください。
    • サブシステムを許可: 一度しか呼び出されないケースで関数をサブシステムに変換するかどうか、または、モデルに変換するかどうかを指示します。

ライブラリマッピング

Modelifyはコードベース内の関数に対して、関数からブロックへのマッピングを指定することができます。 これにより変換において既存のSimulinkのブロック、または、会社が指定するブロックライブラリを活用することが可能になります。

「ライブラリマッピング」ページで、abs、acos、ceil、exp などの C 言語のライブラリ関数を、ポートのマップとブロックのプロパティとともに Simulink のブロックに置き換えるルールがあります。

Modelifyは複数の数学的な演算に対するマッピングのデフォルトのリストを提供しています。デフォルトを追加 ボタンをクリックして、デフォルトのマッピングを追加してください。

関数カラムでチェックボックスをクリックし、マッピングルールを個別に有効、または、無効にすることができます。

新しいカスタムのマッピングルールを作る方法:

  • 追加ボタンをクリックします。
  • 関数のリストから関数を選び、OKをクリックします。関数の名前を入力し始めると、関数リストから関数を絞り込むことができます。
  • ブロックのタイプカラムでセルをクリックし、続いて、編集ボタンをクリックして、関数に置き換えるブロックのタイプを選択します。
  • 必要に応じて対応するInPortマップセルとOutPortマップセルを編集し、関数の入力因数のマッピングをInportブロックへ、関数の出力のマッピングをOutportブロックへ設定することも可能です。
  • 選択したブロックのタイプに対してパラメータを任意で設定する必要があるかもしれません。ブロックのプロパティカラムで編集ボタンをクリックしてください。

ブロックタイプのダイアログ

ブロックタイプのダイアログは、ライブラリマッピングのブロックタイプを選択するために使用します。ブロックタイプはビルトインのSimulinkのブロックタイプ、または、カスタムライブラリから選択することが可能です。

「ブロックのタイプまたはライブラリを検索」ダイアログの「Simulinkのブロック」タブで、Simulink のブロックのタイプの一覧から MinMax が選択されています。

ビルトインのSimulinkのブロックタイプを選択したい場合、ダイアログでSimulink ブロックタブを選択します。検索ボックスを使って、ブロックタイプを探し、リスト内のブロックタイプを選択して下さい。

「ブロックのタイプまたはライブラリを検索」ダイアログの「カスタムライブラリのブロック」タブで、ライブラリのファイルの選択と、サブシステムとサブシステム以外の表示のオプションがあります。

カスタムライブラリからブロックタイプを選択する場合は、ダイアログでカスタムライブラリのブロックを選択します。続いて閲覧...ボタンを使ってカスタムライブラリのファイルを選んで下さい。するとModelifyは選択したファイル内のブロックタイプのリストを読み込み、リストを埋めていきます。

表示するの下のトグルボタンを使うと、リストにサブシステムおよび非サブシステムを表示されるかどうか選ぶことができます。

In Portマッピングダイアログ

入力の「関数のブロックのタイプをマッピング」ダイアログで、パラメータ val1 と val2 を Simulink のブロックのポート 1 と 2 にマッピングしています。

In Portマッピングダイアログは、C言語の関数のパラメータを正しいSimulinkのブロックのポートにマッピングするために使用します。C言語の関数のパラメータがブロックのポートとは異なる順番である場合、もしくは、ポートよりもパラメータの方が多い、または、パラメータの方がポートよりも多い場合、このマッピングを実行する必要があります。

関数のブロックのInportをマッピングするには

  • マッピングのタイプのカラムをクリックして、パラメータまたはリテラルを選択します。
  • 2番目のカラムで、パラメータ名を選択するか、リテラル値を入力します。
  • SimulinkのブロックのポートのカラムでSimulinkのポート番号を設定します。

追加ボタンと削除ボタンを使って、パラメータの追加および削除が可能です。

Out Portマッピングダイアログ

出力の「関数のブロックのタイプをマッピング」ダイアログで、Simulink のブロックのポート 1 を関数の return_value にマッピングしています。

Out PortマッピングダイアログはSimulinkのブロックのOutportをC言語の関数の戻り値にマッピングするために使用します。Simulinkのブロックが複数のOutportを持つ場合、このマッピングを実行する必要があります。

関数のブロックのOutportをマッピングするには

  • ブロックのタイプのカラムでポート番号を入力します。
  • 関数のOutportのカラムで、ドロップダウンメニューからポート番号に対するOutportを選択します。

追加ボタンと削除ボタンを使って、ブロックのポートの追加および削除が可能です。

ブロックプロパティのダイアログ

「ブロックパラメータの値を選択」ダイアログで、プロパティ Function が min に設定されています。

ブロックプロパティのダイアログは、これから作成するブロックのプロパティを設定するために使用します。選択したブロックのパラメータに値を設定することができます。

ブロックのパラメータに値を設定するには:

  • プロパティの値のカラムでドロップダウンメニューから値を選択します。

追加ボタンと削除ボタンを使って、プロパティの追加および削除が可能です。

グローバル変数

このページでは、グローバル変数をどのように変換するべきかに関してModelifyに詳しい情報を与えることができます。定数型のグローバル変数をConstantブロック、または、Inport/Outportとして変換するように設定することが可能です。グローバル変数がポインタ型の場合は、Modelifyはポインタの大きさを特定することができない可能性があり、このページを使ってグローバル変数のサイズを設定することができます。

「グローバル変数」ページで、const_global は Constant ブロックに変換され、global_1 と global_pointer は Inport/Outport ブロックとして経路が設定され、いずれも int32 です。

このページ内の表にプロジェクトで使用しているグローバル変数が自動的に追加されていきます。

定数型のグローバル変数の変換方法を変更するには、Simulink ブロックカラム内のセル内をクリックします。すると、Constant ブロックとInport/Outport ブロックのオプションを持つドロップダウンボックスが表示されます。このオプションは定数型のグローバル変数のみに有効です。

ポインタ型グローバル変数のサイズを変更するには、次元カラムのセル内をクリックします。すると、セルを編集することが可能になり、当該のグローバル変数のサイズを入力することができます。グローバル変数が入力のサイズを継承する必要がある場合は、値-1を利用します。

定数型でもポインタ型でもないグローバル変数に対しては設定を行う必要はありません。

このページには次のアイテムも含まれます。

  • グローバル定数に対してMATLABの変数を作成するチェックボックス:有効にするとModelifyは「const」と表示された、または一度も記述されていないグローバル変数に対してMATLABの変数を作成します。
  • Simulink.Signalのオブジェクトをポートに適用する(Embedded Coder)チェックボックス:グローバル変数に対応するポートのコード生成のオプションを設定することができます。詳細は以下のセクションでご確認下さい。
  • 検索ボックス:表の上部にある検索ボックスはグローバル変数カラムでグローバル変数を探すことができます。

以下の手順に従うと、ポートに対するSimulink.Signalのオブジェクトを設定し、コード生成のオプションを指定することができます。

  1. Simulink.Signalのオブジェクトをポートに適用する(Embedded Coder)チェックボックスにチェックを入れます。すると、表の下の3つのカラムでSimulink.Signalオブジェクトの生成を設定することが可能になります。Modelifyはヘッダーファイルおよび/または定義ファイルのカラムをグローバル変数が宣言/定義された場所の情報を用いて自動的に埋めます。 これらの値は好みに応じて変更することができます。
    • Simulink.Signalを作成:グローバル変数に対してSimulink.Signalを作成する必要があるかどうかを示します。表の上部には全ての変数または変数なしに対するSimulink.Signalsを作成するための便利な全てのSimulink.Signalsを作成するボタンとSimulink.Signalsを作成しないボタンがそれぞれ用意されています。
    • ヘッダーファイル:グローバル変数のヘッダーファイルを指定します。ファイル拡張子(.h)を使用する必要があります。
    • 定義ファイル:グローバル変数の定義ファイルを指定します。ファイル拡張子(.c)を使用する必要があります。
  2. 設定したグローバル変数を用いる関数を変換します
  3. Initializationファイル内でSimulink.Signalのオブジェクトが生成されます。Initializationファイル内で手動で変更を実行することが可能ですが、今後の変換が手動の編集をオーバーライドする可能性があることに注意して下さい。

以下の画像はSimulink.Signalのオブジェクトを持つM-ScriptのInitializationファイルの例を示すものです。

const_global と global_1 の Simulink.Signal オブジェクトを、ストレージクラス ExportToFile と定義ファイル lib_math.c で作成する M-Script の初期化ファイルです。
目次

ご質問、または修正のご希望はありますか?

どのようなご用件ですか?