メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

rmi

Requirements Toolbox のプログラムによる操作

説明

リンク情報の取得

linkedDest = rmi("get",modelOrBlock) は、modelOrBlock で指定されたモデルまたはモデル要素からの外向きリンクのリンク先を返します。

numLinks = rmi("count",modelOrBlock) は、modelOrBlock で指定された最上位モデルまたはモデル要素からの外向きリンクの数を返します。

descriptions = rmi("descriptions",modelOrBlock) は、modelOrBlock で指定されたモデルまたはモデル要素のリンク先の説明を返します。

codeComments = rmi("codeComment",modelOrBlock) は、modelOrBlock で指定されたモデルまたはモデル要素からリンクされた要件に対応するコード コメントを返します。これらのコメントは、モデルからコードを生成するときに Requirements Toolbox™ によって生成コードに挿入されます。詳細については、モデルから生成されたコードまでの要件のトレースを参照してください。

linkedDest = rmi("codeReqs",modelOrBlock) は、modelOrBlock で指定されたモデルまたはモデル要素からの要件へのリンクについて、Requirements Toolbox が生成コードに含めるリンク先を返します。モデル要素が Simulink® ライブラリのブロックの参照インスタンスである場合、ライブラリ ブロックからと参照ブロックからの両方のリンクがリンク先に含まれます。モデル要素が Simulink ライブラリのブロックの参照インスタンスでない場合、この関数の出力は rmi("get",modelOrBlock) の出力と同じです。ライブラリ ブロックの参照インスタンスの詳細については、リンク付きブロック (Simulink)を参照してください。

リンクの削除

rmi("clearAll",modelOrBlock) は、最上位モデルまたはモデル要素からの外向きリンクを削除するよう求めるダイアログ ボックスを開きます。

rmi("clearAll",model,"deep") は、モデルからの外向きリンクを削除するよう求めるダイアログ ボックスを開きます。

rmi(___,"noPrompt") は、ダイアログ ボックスを開かずに外向きリンクを削除します。前の 2 つの構文のいずれかを使用し、その後に引数 noPrompt を続けます。

モデルの操作

rmi("highlightModel",model) は、model で指定されたモデル内の、外向きリンクをもつモデル要素を強調表示します。

rmi("unhighlightModel",model) は、model で指定されたモデル内の強調表示をオフにします。

[blockHandles,modelIndices,isSf,objSIDs] = rmi("getObjectsInModel",model) は、model で指定されたモデル内の各モデル要素について、ブロック ハンドル blockHandles、モデルの階層構造のインデックス parentIndices、モデル要素が Stateflow® チャートに属するかどうかを示すインジケーター isSf、およびモデル要素の SID objSIDs を返します。

[modelOrBlockName,modelOrBlockType] = rmi("getObjLabel",modelOrBlock) は、modelOrBlock で指定されたモデルまたはモデル要素の名前とタイプを返します。

guidChar = rmi("guidGet",modelOrBlock) は、modelOrBlock で指定されたモデルまたはモデル要素のグローバル一意識別子を返します。modelOrBlock にグローバル一意識別子がない場合、この関数で作成されます。グローバル一意識別子は REQ ファイルでのみ使用されます。

handle = rmi("guidLookup",model,guid) は、model で指定された Simulink モデル内のグローバル一意識別子 guid に対応するモデルまたはモデル要素の数値ハンドルを返します。グローバル一意識別子は REQ ファイルでのみ使用されます。

トレーサビリティのレポート

rmi("report",artifactToReport) は、artifactToReport で指定されたアーティファクトについて HTML 形式のトレーサビリティ レポートを生成します。トレーサビリティ レポートの詳細については、要件トレーサビリティ レポートの作成とカスタマイズを参照してください。

rmi projectReport は、現在のプロジェクト内のファイルについて HTML 形式のトレーサビリティ レポートを生成します。このレポートの最上位ページには、外向きリンクをもつ各プロジェクト ファイルのレポートへのリンクが含まれています。詳細については、プロジェクトの要件トレーサビリティ レポートの作成を参照してください。

サードパーティ製ツールとの統合

rmi register myCustomDocInterface は、登録関数 myCustomDocInterface で指定されたカスタム ドキュメント インターフェイスを登録します。これにより、Requirements Toolbox で組み込みサポートが提供されていないサードパーティ製アプリケーションの要件への直接リンクを作成できます。詳細については、Define Custom Document Interface for Direct Linking to Requirementsを参照してください。

rmi unregister myCustomDocInterface は、登録関数 myCustomDocInterface で指定されたカスタム ドキュメント インターフェイスの登録を解除します。詳細については、Define Custom Document Interface for Direct Linking to Requirementsを参照してください。

rmi httpLink は、HTTP プロトコルを使用するブラウザー ベースのサードパーティ製要件ツールのバックリンクから MATLAB® または Simulink のリンク項目へのナビゲートに使用できる内部 HTTP サーバーをアクティブにします。HTTPS サーバーのバックリンク ナビゲーションは既定で有効になっています。

メモ

あるいは、rmipref 関数を使用して UnsecureHttpRequests 基本設定を true に設定することで内部 HTTP サーバーをアクティブにすることもできます。UnsecureHttpRequests 基本設定が true の場合、MATLAB の起動時に内部 HTTP サーバーがアクティブになります。

connectorStatus = rmi("httpLink","status") は、内部 HTTP サーバーのポート番号を返します。ポート番号が 0 の場合、サーバーがアクティブになっていません。

rmi setup は、Microsoft® Office および IBM® DOORS® との相互作用のためにコマンド ラインで Requirements Toolbox を構成するためのプロンプトを開きます。詳細については、Microsoft Office および IBM DOORS との相互作用のための Requirements Toolbox の構成を参照してください。

rmi setup doors は、IBM DOORS との相互作用のためにコマンド ラインで Requirements Toolbox を構成するためのプロンプトを開きます。詳細については、Microsoft Office および IBM DOORS との相互作用のための Requirements Toolbox の構成を参照してください。

rmi("doorsSync",model) は、model で指定された Simulink モデルの IBM DOORS 同期設定ダイアログ ボックスを開きます。IBM DOORS の同期の詳細については、Synchronize Requirements Traceability in IBM DOORS by Using Surrogate Modulesを参照してください。

currentSettings = rmi("doorsSync",model,"settings") は、model で指定された Simulink モデルの現在の IBM DOORS 同期設定を返します。設定を変更するには、IBM DOORS 同期設定ダイアログ ボックスを使用して変更を加え、[設定の保存] をクリックします。

ヒント

既定の設定を返すには、model[] として指定します。

rmi("doorsSync",model,syncSettings) は、syncSettings で指定された同期設定を使用して、model で指定された Simulink モデルから IBM DOORS サロゲート モジュールを作成します。IBM DOORS サロゲート モジュールが既に存在する場合、この関数はモデルとモジュールを再同期してサロゲート モジュールを更新します。IBM DOORS の同期の詳細については、Synchronize Requirements Traceability in IBM DOORS by Using Surrogate Modulesを参照してください。

numScreenshots = rmi("surrogateUpdateScreenshots",model) は、サロゲート モジュール内のオブジェクトに対応する各モデル要素のサロゲート モジュールにスクリーンショットを追加し、追加されたスクリーンショットの数を返します。サロゲート モジュールに既にスクリーンショットがある場合、関数はスクリーンショットを更新します。

currentTemplate = rmi("getDoorsLabelTemplate") は、IBM DOORS の要件へのリンクの現在のラベル テンプレートを返します。

tf = rmi("setDoorsLabelTemplate",customTemplate) は、IBM DOORS の要件へのリンクの現在のラベル テンプレートを customTemplate で指定された形式に設定し、成功ステータスを返します。既定のラベル テンプレートには、DOORS 要件リンク ターゲットのセクション番号およびオブジェクト見出しが含まれています。

ヒント

リンク ラベル テンプレートを既定のテンプレートに戻すには、MATLAB コマンド プロンプトで次のコマンドを入力します。

tf = rmi("setDoorsLabelTemplate","")

label = rmi("doorsLabel",moduleID,doorsReqID) は、moduleID で指定されたモジュール内の doorsReqID で指定された IBM DOORS 要件へのリンクを作成するときに Requirements Toolbox が使用するリンク ラベルを返します。

numUpdatedLinkLabels = rmi("updateDoorsLabels",model) は、model で指定されたモデルから IBM DOORS の要件への外向きリンクのリンク ラベルを更新し、更新されたリンク ラベルの数を出力します。関数は現在のリンク ラベル テンプレート currentTemplate を使用します。

リンクの有効性と整合性のチェック

validationProblems = rmi("checkDoc") は、Microsoft WordMicrosoft Excel®、または IBM DOORS の要件からのリンクについて有効性をチェックします。関数はコマンド ラインでドキュメント タイプとドキュメント名の入力を求め、検出された問題の数を返し、リンクの有効性に関する情報を含むレポートを開きます。詳細については、要件ドキュメント内の要件リンクの検証を参照してください。

validationProblems = rmi("checkDoc",docName) は、docName で指定されたドキュメント内の要件へのリンクについて有効性をチェックし、検出されたリンクの検証に関する問題の数を返し、ドキュメントのリンク検証レポートを開きます。詳細については、要件ドキュメント内の要件リンクの検証を参照してください。

consistencyProblems = rmi("check",artifactToCheck) は、artifactToCheck で指定されたアーティファクトからのリンクについて整合性をチェックし、ファイルのリンク整合性レポートを開きます。詳細については、直接リンクの有効性のチェックを参照してください。

すべて折りたたむ

CruiseRequirementsExample プロジェクトを開きます。crs_controller モデルを読み込みます。

openProject("CruiseRequirementsExample");
model = "crs_controller";
load_system(model);

CruiseControlMode サブシステムの OpMode サブシステムにある Switch ブロックのリンク先を取得します。

modelElement = model+"/CruiseControlMode/opMode/Switch";
linkedDest = rmi("get",modelElement)
linkedDest = struct with fields:
            doc: 'crs_req_func_spec.slreqx'
             id: '25'
         linked: 1
    description: '#25: Precedence of mode determination'
       keywords: ''
         reqsys: 'linktype_rmi_slreq'

CruiseRequirementsExample プロジェクトを開き、crs_controller モデルを読み込みます。

openProject("CruiseRequirementsExample");
model = "crs_controller";
load_system(model)

外向きリンクをもつモデル要素のブロック ハンドルと Stateflow® ID を取得します。

[blockHandles,sfIDs] = rmi("getHandlesWithRequirements",model);

modelElement という変数を作成し、最初のブロック ハンドルを値として代入します。

modelElement = blockHandles(1);

モデル要素からのリンクの数を取得します。

numLinks = rmi("count",modelElement)
numLinks = 
1

そのリンクに対するリンクの説明を取得します。

desc = rmi("descriptions",modelElement)
desc = 1×1 cell array
    {'#19: Cruise Control Mode'}

リンクされた要件に対応するコード コメントを取得します。

codeComment = rmi("codeComment",modelElement)
codeComment = 
    '*  1. Cruise Control Mode
     *  2. [crs_controllerdic.sldd:brake_threshold] Threshold value for brake pressure
     *  3. [crs_controllerdic.sldd:tsp_max] Maximum Target Speed
     *  4. [crs_controllerdic.sldd:tsp_min] Minimum Target Speed'

モデル要素からのリンクで Requirements Toolbox™ がモデルの生成コードに含めるリンク先を取得します。

linkedDest = rmi("codeReqs",modelElement)
linkedDest=4×1 struct array with fields:
    doc
    id
    linked
    description
    keywords
    reqsys

CruiseRequirementsExample プロジェクトを開き、crs_controller モデルと crs_plant モデルを読み込みます。

openProject("CruiseRequirementsExample");
model1 = "crs_controller";
load_system(model1);
model2 = "crs_plant";
load_system(model2);

モデル要素からのリンクの削除

crs_controller モデル内の外向きリンクをもつモデル要素を取得します。

[blockHandles,sfIDs] = rmi("getHandlesWithRequirements",model1);

最初のモデル要素のリンクを検証します。

modelElement = blockHandles(1);
linkedDest = rmi("get",modelElement)
linkedDest = struct with fields:
            doc: 'crs_req_func_spec.slreqx'
             id: '19'
         linked: 1
    description: '#19: Cruise Control Mode'
       keywords: ''
         reqsys: 'linktype_rmi_slreq'

最初のモデル要素からのリンクをプロンプトに従って削除します。

rmi("clearAll",modelElement)

リンクが削除されたことを確認します。

linkedDest = rmi("get",modelElement)
linkedDest =

     []

2 番目のモデル要素のリンクを検証します。

modelElement = blockHandles(2);
linkedDest = rmi("get",modelElement)
linkedDest = struct with fields:
            doc: 'crs_req_func_spec.slreqx'
             id: '36'
         linked: 1
    description: '#36: Disabling override'
       keywords: ''
         reqsys: 'linktype_rmi_slreq'

2 番目のモデル要素からのリンクをダイアログ ボックスを開かずに削除します。

rmi("clearAll",modelElement,"noprompt")

リンクが削除されたことを確認します。

linkedDest = rmi("get",modelElement)
linkedDest =

     []

モデルからのリンクの削除

crs_controller モデル内の外向きリンクをもつモデル要素を取得します。

[blockHandles,~] = rmi("getHandlesWithRequirements",model1)
blockHandles = 62×1
103 ×

    0.3360
    0.3470
    0.3630
    0.3790
    0.3840
    0.3890
    0.4360
    0.4830
    0.4880
    0.4930
      ⋮

crs_controller モデルからの外向きリンクをプロンプトに従って削除します。

rmi("clearAll",model1,"deep")

リンクが削除されたことを確認します。

[blockHandles,~] = rmi("getHandlesWithRequirements",model1)
blockHandles =

  0×1 empty double column vector

crs_plant モデル内の外向きリンクをもつモデル要素を取得します。

[blockHandles,~] = rmi("getHandlesWithRequirements",model2)
blockHandles = 5×1
103 ×

    2.1400
    2.1420
    2.1440
    2.1460
    2.4080

crs_controller モデルからの外向きリンクをプロンプトに従って削除します。

rmi("clearAll",model2,"deep","noprompt")

リンクが削除されたことを確認します。

[blockHandles,~] = rmi("getHandlesWithRequirements",model2)
blockHandles =

  0×1 empty double column vector

CruiseRequirementsExample プロジェクトを開き、crs_controller モデルを読み込みます。

openProject("CruiseRequirementsExample");
model = "crs_controller";
load_system(model);

外向きリンクをもつモデル要素を強調表示してモデルを開きます。

rmi("highlightModel",model)
open_system(model);

モデル内の強調表示をオフにします。

rmi("unhighlightModel",model)

CruiseRequirementsExample プロジェクトを開きます。crs_controller モデルを読み込みます。

openProject("CruiseRequirementsExample");
model = "crs_controller";
load_system(model);

enbl 入力端子のグローバル一意識別子を取得します。

modelElement = model+"/enbl";
guID = rmi("guIDGet",modelElement)
guID = 
'GIDa_69736d09_e527_45f7_b302_c9b5b8678aff'

モデル要素のグローバル一意識別子から数値ブロック ハンドルを取得します。

handle = rmi("guidlookup",model,guID)
handle = 
155.0002

CruiseRequirementsExample プロジェクトを開きます。crs_controller モデルを読み込みます。

openProject("CruiseRequirementsExample");
model = "crs_controller";
load_system(model);

crs_controller モデル内のオブジェクトを取得します。

[blockHandles,modelIndices,isSf,objSIDs] = rmi( ...
    "getObjectsInModel",model);

13 番目のモデル要素のブロック名とブロック タイプを取得します。

modelElement = blockHandles(13);
[blockName,blockType] = rmi("getObjLabel",modelElement)
blockName = 
'CruiseControlMode'
blockType = 
'SubSystem'

CruiseRequirementsExample プロジェクトを開きます。crs_controller モデルを読み込みます。

openProject("CruiseRequirementsExample");
model = "crs_controller";
load_system(model);

crs_controller モデルのトレーサビリティ レポートを生成します。

rmi("report",model)
    Beginning report
    Looping on model "crs_controller"
    Looping on system "CruiseControlMode"
    Looping on system "DriverSwRequest"
    Looping on system "TargetSpeedThrottle"
    Looping on system "disableCaseDetection"
    Looping on system "opMode"
    Looping on system "outOfRange"
    Looping on system "decrement"
    Looping on system "doNot Repeat"
    Looping on system "increment"
    Looping on system "activated"
    Looping on system "disabled"
    Looping on system "enabled"
    Looping on system "targetSpeed"
    Looping on system "IsKeyPositionOn"
    Looping on system "IsShiftDrive"
    Looping on system "isbrake"
    Looping on system "IncrementDecrement"
    Looping on system "activateCondition"
    Looping on system "disableCondition"
    Looping on system "enableCondition"
    Looping on system "resumeCondition"
    Looping on system "counter"
    Looping on system "getNewTargetSpeed"
    Looping on system "getThrottleValue"
    Looping on system "PI controller"
  "chapter" contains no content and will not be inserted into document
    Converting report
    Report complete

プロジェクトのトレーサビリティ レポートを生成します。

rmi projectReport
    Beginning report
    Converting report
    Report complete
C:\Users\jdoe\CruiseRequirementsExample\data\crs_controllerdic.sldd done.
    Beginning report
    Looping on model "crs_controller"
    Looping on system "CruiseControlMode"
CPPMICROSERVICE WARNING: Empty mw.installpath for bundle: com_mathworks_dastudio_test_blocks
    Looping on system "DriverSwRequest"
    Looping on system "TargetSpeedThrottle"
    Looping on system "disableCaseDetection"
    Looping on system "opMode"
    Looping on system "outOfRange"
    Looping on system "decrement"
    Looping on system "doNot Repeat"
    Looping on system "increment"
    Looping on system "activated"
    Looping on system "disabled"
    Looping on system "enabled"
    Looping on system "targetSpeed"
    Looping on system "IsKeyPositionOn"
    Looping on system "IsShiftDrive"
    Looping on system "isbrake"
    Looping on system "IncrementDecrement"
    Looping on system "activateCondition"
    Looping on system "disableCondition"
    Looping on system "enableCondition"
    Looping on system "resumeCondition"
    Looping on system "counter"
    Looping on system "getNewTargetSpeed"
    Looping on system "getThrottleValue"
    Looping on system "PI controller"
  "chapter" contains no content and will not be inserted into document
    Converting report
    Report complete
C:\Users\jdoe\CruiseRequirementsExample\models\crs_controller.slx done.
    Beginning report
    Looping on model "crs_plant"
    Looping on system "crs_plant"
    Looping on system "Vehicle1"
    Looping on chart "shift_logic"
    Looping on and state "gear_state"
    Looping on and state "selection_state"
    Looping on or state "fourth"
    Looping on or state "third"
    Looping on or state "second"
    Looping on or state "first"
    Looping on or state "steady_state"
    Looping on or state "upshifting"
    Looping on or state "downshifting"
  "chapter" contains no content and will not be inserted into document
    Converting report
    Report complete
C:\Users\jdoe\CruiseRequirementsExample\models\crs_plant.slx done.
    Beginning report
    Running FOR loop, RPTGEN_LOOP = 1
    Converting report
    Report complete
C:\Users\jdoe\CruiseRequirementsExample\tests\DriverSwRequest_Tests.mldatx done.
    Beginning report
  "chapter" contains no content and will not be inserted into document
    Converting report
    Report complete

Microsoft® PowerPoint® プレゼンテーション内の要件への直接リンクを有効にするカスタム ドキュメント インターフェイスを登録します。

rmi register customPowerPointInterface

インターフェイスの登録を解除します。

rmi unregister customPowerPointInterface

内部 HTTP サーバーのステータスを取得します。

status = rmi("httpLink","status")
status = struct with fields:
     httpPort: 0
    httpsPort: 31515

内部 HTTP サーバーをアクティブにします。

rmi httpLink

内部 HTTP サーバーのステータスを取得します。

status = rmi("httpLink","status")
status = struct with fields:
     httpPort: 31415
    httpsPort: 31515

Microsoft Office および IBM DOORS と相互作用するように Requirements Toolbox を構成します。

rmi setup
Ensuring required Active-X controls ..
Verifying MATLAB automation server path ..

Register this MATLAB installation as ActiveX Automation Server? (Y/N):_y
Registering this MATLAB executable as an automation server ..
 
Welcome to the DOORS-MATLAB Interface setup utility.
This will perform all the steps necessary so that you
can start using Simulink and Stateflow with IBM DOORS.
 
NOTE: You should close IBM DOORS before continuing with
this installation.
 
Checking Windows Registry to locate IBM DOORS installation(s)...
 
Please select IBM DOORS installation to configure for MATLAB:
    [1]  9.6  C:\Program Files\IBM\Rational\DOORS\9.6\
 
If your target IBM DOORS Client installation is not listed above,
select one of the following options:
    [2]  Manually enter IBM DOORS installation directory
    [3]  Exit, making no changes
    [4]  Make no changes in IBM DOORS directory but ensure IBM DOORS integration is enabled in MATLAB
 
Selection: 1
 
C:\Program Files\IBM\Rational\DOORS\9.6\lib\dxl\addins\dmi\dmi.inc is up to date.

次のコードを実行して、IBM DOORS と相互作用するように Requirements Toolbox™ を構成します。

rmi setup doors

DOORS プロジェクトを開く

この例では、フォールトトレラント制御システムを記述する要件モジュールを含む IBM DOORS の faultTolerantControlSystem.dpa ファイルを使用します。

IBM DOORS で、次のように新規のプロジェクトを作成します。

  1. [ファイル][新規][プロジェクト] を選択します。

  2. [新規プロジェクト] ダイアログで、[名前]faultTolerantControlSystem に設定します。

  3. [説明] フィールドに「Fault-tolerant control system project」と入力します。

  4. [Use a project archive] を選択します。

  5. [参照] をクリックし、faultTolerantControlSystem.dpa を選択します。

  6. [OK] をクリックしてプロジェクトを作成します。

The New Project dialog box in DOORS. The Use a project archive button is selected and the file path specifies the faultTolerantControlSystem.dpa archive file.

同期設定の取得

faultTolerantControlSystem モデルを開きます。

model = "faultTolerantControlSystem";

モデルの現在の同期設定を取得します。

currentSettings = rmi("doorsSync",model,"settings")
currentSettings = struct with fields:
    surrogatePath: '/faultTolerantControlSystem/faultTolerantControlSystem'
      detailLevel: 4
        doorsToSl: 0
        slToDoors: 1
    purgeSimulink: 0
       purgeDoors: 1
        saveModel: 1
    saveSurrogate: 1

detailLevel フィールドの値を 4 に設定します。

currentSettings.detailLevel = 4;

サロゲート モジュールの作成

サロゲート モジュールを作成します。

rmi("doorsSync",model,currentSettings)
Verifying MATLAB automation server path ..
Registering this MATLAB executable as an automation server ..

モデルにスクリーンショットを追加します。

numScreenshots = rmi("surrogateUpdateScreenshots",model)
    Beginning report
    Looping on system "faultTolerantControlSystem"
    Looping on system "engine gas dynamics"
    Looping on system "Mixing & Combustion"
    Looping on system "system lag"
    Looping on system "Throttle & Manifold"
    Looping on system "Intake Manifold"
    Looping on system "Throttle"
    Looping on system "fuel rate controller"
    Looping on system "Airflow calculation"
    Looping on system "Fuel  Calculation"
    Looping on system "Switchable Compensation"
    Looping on system "LOW Mode"
    Looping on system "RICH Mode"
    Looping on system "Sensor correction and Fault Redundancy"
    Looping on system "MAP Estimate"
    Looping on system "Speed Estimate"
    Looping on system "Throttle Estimate"
    Looping on chart "control logic"
    Converting report
    Report complete
Using ./snapshots_html_files/image-001-sl.png for faultTolerantControlSystem

Missing screenshot for faultTolerantControlSystem/Test inputs

Using ./snapshots_html_files/image-003-sl.png for faultTolerantControlSystem/engine
gas
dynamics

Using ./snapshots_html_files/image-005-sl.png for faultTolerantControlSystem/engine
gas
dynamics/Mixing & Combustion

Using ./snapshots_html_files/image-007-sl.png for faultTolerantControlSystem/engine
gas
dynamics/Mixing & Combustion/system lag

Using ./snapshots_html_files/image-009-sl.png for faultTolerantControlSystem/engine
gas
dynamics/Throttle & Manifold

Using ./snapshots_html_files/image-011-sl.png for faultTolerantControlSystem/engine
gas
dynamics/Throttle & Manifold/Intake Manifold

Using ./snapshots_html_files/image-013-sl.png for faultTolerantControlSystem/engine
gas
dynamics/Throttle & Manifold/Throttle

Using ./snapshots_html_files/image-015-sl.png for faultTolerantControlSystem/fuel rate
controller

Using ./snapshots_html_files/image-017-sl.png for faultTolerantControlSystem/fuel rate
controller/Airflow calculation

Using ./snapshots_html_files/image-019-sl.png for faultTolerantControlSystem/fuel rate
controller/Fuel  Calculation

Using ./snapshots_html_files/image-021-sl.png for faultTolerantControlSystem/fuel rate
controller/Fuel  Calculation/Switchable
Compensation

Using ./snapshots_html_files/image-023-sl.png for faultTolerantControlSystem/fuel rate
controller/Fuel  Calculation/Switchable
Compensation/LOW Mode

Using ./snapshots_html_files/image-025-sl.png for faultTolerantControlSystem/fuel rate
controller/Fuel  Calculation/Switchable
Compensation/RICH Mode

Using ./snapshots_html_files/image-027-sl.png for faultTolerantControlSystem/fuel rate
controller/Sensor correction and
Fault Redundancy

Using ./snapshots_html_files/image-029-sl.png for faultTolerantControlSystem/fuel rate
controller/Sensor correction and
Fault Redundancy/MAP Estimate

Using ./snapshots_html_files/image-031-sl.png for faultTolerantControlSystem/fuel rate
controller/Sensor correction and
Fault Redundancy/Speed Estimate

Using ./snapshots_html_files/image-033-sl.png for faultTolerantControlSystem/fuel rate
controller/Sensor correction and
Fault Redundancy/Throttle Estimate

Using ./snapshots_html_files/image-035-sf.png for faultTolerantControlSystem/fuel rate
controller/control logic

Processed 19 subsystems, 0 items added in module 0000010e
numScreenshots = 19

faultTolerantControlSystem モデルを読み込みます。

model = "faultTolerantControlSystem";
load_system(model)

モデルの IBM DOORS 同期設定ダイアログ ボックスを開きます。

rmi("doorsSync",model)

次のコードを実行して、IBM® DOORS® と相互作用するように Requirements Toolbox™ を構成します。

rmi setup doors

slvnvdemo_fuelsys_doorsreq モデルを読み込みます。モデルのリンク セットのハンドルを取得します。

model = "slvnvdemo_fuelsys_doorsreq";
load_system(model);
myLinkSet = slreq.load(model);

DOORS プロジェクトを開く

この例では、フォールトトレラント制御システムを記述する要件モジュールを含む IBM DOORS の faultTolerantControlSystem.dpa ファイルを使用します。

IBM DOORS で、次のように新規のプロジェクトを作成します。

  1. [ファイル][新規][プロジェクト] を選択します。

  2. [新規プロジェクト] ダイアログで、[名前]faultTolerantControlSystem に設定します。

  3. [説明] フィールドに「Fault-tolerant control system project」と入力します。

  4. [Use a project archive] を選択します。

  5. [参照] をクリックし、faultTolerantControlSystem.dpa を選択します。

  6. [OK] をクリックしてプロジェクトを作成します。

The New Project dialog in DOORS. The Use a project archive button is selected and the file path specifies the faultTolerantControlSystem.dpa archive file.

DOORS プロジェクトのリンクのリダイレクト

新しいプロジェクト内の IBM DOORS モジュール ID を指すようにリンクをリダイレクトします。

IBM DOORS で faultTolerantControlSystem プロジェクトを開きます。

The DOORS Database window shows the faultTolerantControlSystem project.

faultTolerantControlSystem モジュールを開き、要件を選択します。要件のモジュール ID を取得します。新しいプロジェクト内の faultTolerantControlSystem モジュールを指すようにリンク先を更新します。

newModuleID = rmidoors.getCurrentObj;
oldModuleID = "00000160";
count = updateDocUri(myLinkSet,oldModuleID,newModuleID)
count = 235

FuelSys Design Description モジュールを開き、要件を選択します。要件のモジュール ID を取得します。新しいプロジェクト内の FuelSys Design Description モジュールを指すようにリンク先を更新します。

newModuleID = rmidoors.getCurrentObj;
oldModuleID = "00000161";
count = updateDocUri(myLinkSet,oldModuleID,newModuleID)
count = 6

FuelSys Requirements Specification モジュールを開き、要件を選択します。要件のモジュール ID を取得します。新しいプロジェクト内の FuelSys Requirements Specification モジュールを指すようにリンク先を更新します。

newModuleID = rmidoors.getCurrentObj;
oldModuleID = "00000141";
count = updateDocUri(myLinkSet,oldModuleID,newModuleID)
count = 1

リンク ラベル テンプレートの取得と設定

IBM DOORS の要件へのリンクの現在のラベル テンプレートを取得します。

currentTemplate = rmi("getDoorsLabelTemplate")
currentTemplate = 
'%M:%h'

モジュール名とオブジェクト見出しをコロンで区切って表示するようにテンプレートを設定します。

customTemplate = "%M:%h";
tf = rmi("setDoorsLabelTemplate",customTemplate)
tf = logical
   0

リンク ラベル テンプレートが更新されたことを確認します。

currentTemplate = rmi("getDoorsLabelTemplate")
currentTemplate = 
'%M:%h'

リンク ラベルの更新

FuelSys Requirements Specification モジュール内の要件番号 27 について、現在のテンプレートに基づくリンク ラベルを取得します。

doorsReqID = "27";
newModuleID = "00000101";
label = rmi("doorsLabel",newModuleID,doorsReqID)
label = 
'FuelSys Requirements Specification:Normal Mode of Operation'

slvnvdemo_fuelsys_doorsreq モデルを読み込み、モデルから IBM DOORS の要件への外向きリンクに対するリンク ラベルを更新します。

model = "slvnvdemo_fuelsys_doorsreq";
load_system(model);
numUpdatedLinks = rmi("updateDoorsLabels",model)
slvnvdemo_fuelsys_doorsreq/fuel rate controller/throttle  (Inport):
    changing "1.1.1.1  Throttle Sensor" to "FuelSys Design Description:Throttle Sensor"

slvnvdemo_fuelsys_doorsreq/fuel rate controller/MAP  (Inport):
    changing "1.1.1.2  Manifold Absolute Pressure Sensor " to "FuelSys Design Description:Manifold Absolute Pressure Sensor"

slvnvdemo_fuelsys_doorsreq/fuel rate controller/Airflow calculation  (SubSystem):
    changing "1.2.1  Mass airflow estimation " to "FuelSys Design Description:Mass airflow estimation"

slvnvdemo_fuelsys_doorsreq/.../Sensor correction and Fault Redundancy/MAP Estimate  (SubSystem):
    changing "1.3.1.3  Manifold pressure failure mode " to "FuelSys Design Description:Manifold pressure failure mode"

slvnvdemo_fuelsys_doorsreq/.../Sensor correction and Fault Redundancy/Speed Estimate  (SubSystem):
    changing "2.2.6 	Speed Sensor Failure" to "FuelSys Requirements Specification:Speed Sensor Failure"

slvnvdemo_fuelsys_doorsreq/.../control logic/Rich_Mixture (State):
    changing "1.3.1.2  Enriched mixture usage " to "FuelSys Design Description:Enriched mixture usage"

slvnvdemo_fuelsys_doorsreq/.../control logic/[speed==0 & press < zero_thresh]/ Fail.INC (Transition):
    changing "1.3.1.4  Speed sensor failure detection " to "FuelSys Design Description:Speed sensor failure detection"
numUpdatedLinks = 7

この例では、リンクの有効性を対話形式でチェックする方法を示します。

メモ

この例は Windows® プラットフォームでのみ実行できます。

Simulink ブロックから Excel の要件へのリンクと移動の例を開きます。

openExample(['slrequirements/' ...
    'LinkRequirementsInExcelToSimulinkBlocksExample'])

slvnvdemo_FuelSys_TestScenarios Microsoft Excel ドキュメントを開きます。

doc = which("slvnvdemo_FuelSys_TestScenarios.xlsx");
winopen(doc);

ドキュメントへのリンクの有効性をチェックします。コマンド ウィンドウのプロンプトに従います。

validationProblems = rmi("checkDoc")
Please choose target document type:
1 - Microsoft Word document
2 - Microsoft Excel document
3 - DOORS module
[1,2,3]? 2
Microsoft Excel document to check: (current)
Checking 'C:/Users/jdoe/MATLAB/slrequirements-ex78700367/slvnvdemo_FuelSys_TestScenarios.xlsx' (Y/n) ? y
Reading "C:/Users/jdoe/MATLAB/slrequirements-ex78700367/slvnvdemo_FuelSys_TestScenarios.xlsx" ...
found 2 links

validationProblems =

     1

slvnvdemo_FuelSys_TestScenarios Microsoft® Excel® ドキュメントを開きます。

doc = which("slvnvdemo_FuelSys_TestScenarios.xlsx");
winopen(doc);

リンクの有効性をチェックします。

validationProblems = rmi("checkDoc",doc)
Reading "C:/Users/jdoe/MATLAB/slrequirements-ex78700367/slvnvdemo_FuelSys_TestScenarios.xlsx" ...
found 2 links
validationProblems = 1

ShortestPath の例を開きます。

openProject("ShortestPath");

shortest_path MATLAB® コード ファイルからのリンクの整合性をチェックします。

artifactToCheck = "shortest_path.m";
consistencyProblems = rmi("check",artifactToCheck)
consistencyProblems = 4×1

     0
     0
    11
     0

入力引数

すべて折りたたむ

リンクの整合性をチェックするアーティファクト。アーティファクトの名前を含む string スカラーまたは文字ベクトルとして指定します。アーティファクトは Simulink データ ディクショナリ ファイルまたは MATLAB コード ファイルにすることができます。

例: "shortest_path.m"

トレーサビリティ レポートを生成するアーティファクト。アーティファクトの名前を含む string スカラーまたは文字ベクトルとして指定します。アーティファクトは MATLAB コード ファイル、Simulink モデル、Simulink データ ディクショナリ ファイル、または Simulink Test™ テスト ファイルにすることができます。Simulink モデルを指定する場合、SLX 拡張子は含めません。

例: "crs_controller"

例: "shortest_path.m"

IBM DOORS 要件へのリンクのラベル テンプレート。string スカラーまたは文字ベクトルとして指定します。

次の書式指定子を使用してリンク ラベル テンプレートを定義します。

テンプレートの書式指定子

IBM DOORS からの情報

%hオブジェクト見出し
%tオブジェクト テキスト
%pモジュール接頭辞
%nオブジェクト絶対番号
%mモジュール ID
%Pプロジェクト名
%Mモデル名
%UDOORS URL
%<ATTRIBUTE_NAME>指定したその他の DOORS 属性

例: "%h:%t"

サードパーティの要件ドキュメントの名前。Microsoft Word または Microsoft Excel のドキュメントの名前か IBM DOORS モジュール ID を定義する string スカラーまたは文字ベクトルとして指定します。

IBM DOORS 要件 ID。string スカラーまたは文字ベクトルとして指定します。

例: "27"

モデルまたはモデル要素のグローバル一意識別子。string スカラーまたは文字ベクトルとして指定します。グローバル一意識別子は REQ ファイルでのみ使用されます。

例: "GIDa_56a78985_b045_4313_a3f6_10be3c4f06df"

データ型: char

Simulink モデル名。モデル名を定義する string スカラーまたは文字ベクトルか、モデル ハンドルを定義する double として指定します。モデル名を指定する場合、SLX ファイル拡張子は含めません。

例: "crs_controller"

IBM DOORS モジュール ID。string スカラーまたは文字ベクトルとして指定します。

例: "00000081"

Simulink または Stateflow のモデルまたはモデル要素。モデル名またはブロック パスを定義する string スカラーまたは文字ベクトルか、モデルまたはブロックのハンドルを定義する double として指定します。

例: "crs_controller/enbl"

例: 164.0762

データ型: double | char | string

Requirements Toolbox で組み込みサポートが提供されていないサードパーティ製アプリケーションの要件への直接リンクのためのカスタム ドキュメント インターフェイス。カスタム ドキュメント インターフェイスを定義する関数の名前として指定します。詳細については、Define Custom Document Interface for Direct Linking to Requirementsを参照してください。

例: rmi register customInterface

IBM DOORS 同期設定。次のフィールドをもつ構造体として指定します。

  • surrogatePath — DOORS プロジェクト内のサロゲート モジュールへのパス。文字ベクトルとして指定します。

  • detailLevel — サロゲート モジュールに含める Simulink モデル要素を指定する設定。double として指定します。

  • doorsToSl — 不一致のリンクを IBM DOORS サロゲート モジュールから Simulink モデルにコピーする設定。double として指定します。

  • slToDoors — 不一致のリンクを Simulink モデルから IBM DOORS サロゲート モジュールにコピーする設定。double として指定します。

  • purgeSimulink — Simulink モデル内の不一致のリンクを削除する設定。double として指定します。

  • purgeDoors — IBM DOORS サロゲート モジュール内の不一致のリンクを削除する設定。double として指定します。

  • saveModel — 同期後に Simulink モデルを保存する設定。double として指定します。

  • saveSurrogate — 同期後に IBM DOORS サロゲート モジュールを保存する設定。double として指定します。

次のコードを実行すると現在の同期設定を返すことができます。

syncSettings = rmi("doorsSync",model,"settings")

出力引数

すべて折りたたむ

ブロックの数値ハンドル。double 配列として返されます。

モデルまたはモデル要素からのリンクされた要件のコード コメント。文字ベクトルとして返されます。

アーティファクトからのリンクに関する整合性の問題の数。double 配列として返されます。double 配列の行に次の状態のリンクの数が格納されます。

  1. リンク先アーティファクトがない

  2. リンク先がない

  3. リンクされた要件のテキストと説明が一致しない

  4. ユーザーのパス基本設定と一致しないパス形式を使用している

現在の IBM DOORS 同期設定。次のフィールドをもつ構造体として返されます。

  • surrogatePath — DOORS プロジェクト内のサロゲート モジュールへのパス。文字ベクトルとして返されます。

  • detailLevel — サロゲート モジュールに含める Simulink モデル要素を指定する設定。double として返されます。

  • doorsToSl — 不一致のリンクを IBM DOORS サロゲート モジュールから Simulink モデルにコピーする設定。double として返されます。

  • slToDoors — 不一致のリンクを Simulink モデルから IBM DOORS サロゲート モジュールにコピーする設定。double として返されます。

  • purgeSimulink — Simulink モデル内の不一致のリンクを削除する設定。double として返されます。

  • purgeDoors — IBM DOORS サロゲート モジュール内の不一致のリンクを削除する設定。double として返されます。

  • saveModel — 同期後に Simulink モデルを保存する設定。double として返されます。

  • saveSurrogate — 同期後に IBM DOORS サロゲート モジュールを保存する設定。double として返されます。

IBM DOORS の要件へのリンクの現在のリンク ラベル テンプレート。文字ベクトルとして返されます。

例: '%h'

リンク先の説明。文字ベクトルの cell 配列として返されます。

例: {'#68: Maximum Target Speed'}

モデルまたはモデル要素のグローバル一意識別子。文字ベクトルとして返されます。グローバル一意識別子は REQ ファイルでのみ使用されます。

例: 'GIDa_56a78985_b045_4313_a3f6_10be3c4f06df'

ブロックまたはモデルの数値ハンドル。double として返されます。

モデル要素が Stateflow チャートに属するかどうか。logical 配列として返されます。

IBM DOORS の要件へのリンクのラベル。文字ベクトルとして返されます。ラベルはリンク先の構造体の description フィールドに対応します。

モデルまたはブロックのリンク先。次のフィールドを含む構造体または構造体配列として返されます。

  • doc — リンク先が含まれているドキュメントへのパス。文字ベクトルとして返されます。

  • id — リンク先の ID。文字ベクトルとして返されます。リンク先が外部ドキュメント内の要件の場合は、特殊文字とテキストまたは数値の組み合わせを含む文字ベクトルで要件を識別します。

    最初の文字識別子の説明

    ?

    検索テキストを指定することで要件を識別します。ドキュメント内のテキストの最初の出現箇所で要件が特定されます。

    '?Requirement 1'

    @

    Microsoft Word のブックマークなどの名前付き項目を指定することで要件を識別します。

    '@my_req'

    #

    ページ番号または項目番号を指定することで要件を識別します。

    '#21'

    >

    項目番号または行番号を指定することで要件を識別します。

    '>3156'

    $

    Microsoft Excel スプレッドシートのセル アドレスを指定することで要件を識別します。

    '$A2:C5'

  • linked — リンクがトレーサビリティ レポートに含まれているかどうかを示すインジケーター。logical として返されます。linked1 の場合、リンクはトレーサビリティ レポートに含まれています。

  • description — リンクの説明。文字配列として返されます。

  • keywords — リンクのキーワード。文字配列として返されます。

  • reqsys — ドキュメント インターフェイスの名前。文字配列として返されます。ドキュメント インターフェイスの名前は、リンク先が含まれているアーティファクトのタイプに対応します。

モデルの階層構造のインデックス。double 配列として返されます。

Simulink または Stateflow のモデルまたはモデル要素の名前。文字ベクトルとして返されます。

例: 'enbl'

Simulink または Stateflow のモデルまたはモデル要素のタイプ。文字ベクトルとして返されます。

例: 'Inport'

モデル要素の外向きリンクの数。double として返されます。

サロゲート モジュールで追加または更新されたスクリーンショットの数。double として返されます。

Simulink 識別子。cell 配列として返されます。

内部 HTTP サーバーおよび HTTPS サーバーのステータス。次のフィールドをもつ構造体として返されます。

  • httpPort — HTTP ポート番号。double として返されます。HTTP ポート番号が 0 の場合、サービスがアクティブになっていません。

  • httpsPort — HTTPS ポート番号。double として返されます。

外部ドキュメントからのリンクに関する検証の問題の数。double として返されます。

代替方法

  • getSimulinkBlockHandle (Simulink) 関数はブロックの数値ハンドルを返します。この関数は、次の構文で必要になるグローバル一意識別子を必要としません。

    handle = rmi("guidLookup",model,guid)

  • 要件セットのレポートの生成には slreq.generateReport 関数を使用できます。詳細については、要件情報のレポートを参照してください。このレポートは、rmi("report",artifactToReport) および rmi projectReport で生成されるトレーサビリティ レポートの代わりになります。

バージョン履歴

R2006b で導入

すべて展開する