Frequently Asked Question
もし日本語字幕が自動で表示されない場合はブラウザのシークレットモードをお試しください。
キーワードの検索は "Ctrl + F" でブラウザの検索機能をご使用ください
ビデオのタイムスタンプに直接飛べるリンクが必要な場合 このガイドに従ってください
このビデオはお役に立てたでしょうか?HIL Academyの無料のHIL Specialistコースを受講してさらに理解を深めてみませんか?
もしこのビデオをあなたの母国語への翻訳するのに協力してくださる場合、我々までご連絡 ください
TRANSCRIPT
HIL SCADAのより高度な機能を紹介します
これらの機能はSCADA APIに関連するもので半自動でテストを行うことができます
このセッションでは相の断線とIGBT故障の2種類の故障をシミュレートします
これらの故障は両方ともあらかじめ設定された期間実行されます
またアクションを実行するためのSCADA APIコマンドを使用してこれらの過渡現象をキャプチャしてみましょう
これらのアクションはキャプチャハンドラーを使用して実行されますモジュール 2.3 で作成したモデルを引き続き使用します
まずHIL SCADAでPanel initializationを開きグローバル変数を定義しましょう
このグローバル変数はSCADAパネルのすべてのウィジェットから呼び出すことができます
故障の期間を秒単位で表す変数global t_faultを定義しましょう
また故障期間の初期値を0.1秒に設定しましょう
次にText Boxウィジェットを挿入します
Text Boxウィジェットを使用すると故障期間に任意の期間を定義することができます
Text Boxウィジェットのプロパティを開き名前を「Fault duration[s]」に 変更しましょう
またマクロコードに小さな変更を加えましょう
ここでは入力値を"global t_fault"変数に格納します
そのためには"global t_fault"変数を呼び出してからt_faultをinputValueと等しくなるように設定します
次にMacroウィジェットのプロパティを開いてMacroウィジェットを追加しましょう
マクロは特殊なアクションウィジェットで4つのイベントハンドラを持っています
On Startハンドルは シミュレーション開始時Panel初期化スクリプトが実行された直後に実行されるコードです
On Clickハンドルは アクションウィジェットボタンクリック時に実行されるコードです
On Timerハンドルは 定義された実行間隔に基づいてシミュレーション開始後に定期的に実行されるコードです
このコードの実行間隔は 250 500 または1000ミリ秒です
On Stopハンドルは シミュレーションの停止後に実行されるコード用です
特定のイベントハンドラの[Active handlers]チェックボックスをオンにすると
そのイベントハンドラのマクロコードが実行されるようになりますこの例ではOn Clickハンドラを使用します
On Clickダイアログに 簡単なコードを書いてみましょう
最初にできることはメッセージログに継続時間を表示することです
まずText Boxのときと同じようにグローバル変数t_faultを定義しますまたこのマクロの名前を "Fault action" に変更します
では t_faultに対してPythonの標準的なprintコマンドを実行しOKをクリックしましょう
時間を別の値 たとえば0.2秒に設定しEnterキーを押して確定してみましょう
Macro Buttonをクリックしてマクロを実行できます
Message LogにFault durationの値が正常に出力されたことがわかります
このようにしてSCADAパネルの2つのウィジェット間の相互関係を作成することに成功しました
これはHIL SCADAでの半自動テストに 非常に役立ちます
ウィジェット間で対話できるようになったので次のステップに進むことができます
では故障時にコンタクタが開くように動作を自動化しましょう
Fault Action Macroに戻りコードを書いてみましょう
まず必要なのはシミュレーション時間の取得です
早速HIL APIの ドキュメントにアクセスして探してみましょう
ドキュメントを探すには Typhoon HIL Control CenterのメインメニューでDocumentation Hubを開き
HIL APIフォルダを開きます
ここでは簡単な検索として「time」と書きます
最初の関数get_sim_timeは私たちが探している関数です
この関数をマクロコード内で呼び出し新しいローカル変数simulationTimeに代入してみましょう
コードエディタに記載されているコメントは様々なTyphoon HIL APIライブラリの呼び出し方法を示しています
シミュレーション時間が得られたのでこれを使って任意の実行時間にコンタクタの状態を設定できます
APIウィザードを使用してコンタクタの状態を設定するためのHIL API関数を挿入してみましょう
2行のコードを挿入しましょう
1つは開状態を定義し もう1つは コンタクタの閉状態を定義します
次にset contactor 機能のドキュメントを見てみましょう
まだ使っていない引数があることがわかります
それはexecuteAt引数です
この引数はシミュレーション・ステップと同じ時間分解能でHILデバイス上でタイムド・コマンドを実行します
例えばコンタクタの開閉に伴う過渡現象をキャプチャする場合など非常に正確なタイミングが必要な場合に使用します
この引数を追加しシミュレーション時間に基づいて実行時間を設定しましょう
引数のexecuteAtはシミュレーション時間プラス0.5秒としましょう
これはこのマクロを実行するとコンタクタの状態が0.5秒後に変化することを意味します
クローズ状態の場合も同じことを行いますが 故障期間も追加します
これで テストして何をしたか確認できます最初に故障期間を定義する必要があります
1秒にしましょう
速度を観測してみましょう
速度が低下し故障期間が完了した後にフルスピードに戻ることがわかります
Fault Action MacroからForce triggerを行うためのSCADA APIを含めてみましょう
まずSCADA APIのドキュメントを開きCapture/Scopeを使ったアクションの実行方法を確認しましょう
パネル内のすべてのウィジェットは独自のIDおよび完全修飾名(FQN)を持ちます
ドキュメントにあるGet widget by fully qualified name関数を探してみましょう
関数の名前はget widget by fqnです
Capture/Scopeからfqnを取得するには
Capture/Scopeを右クリックし[Copy fully qualified name]をクリックします
これを Fault Action Macroの新しいfqnウィジェット変数の値として貼り付けましょう
このfqn変数をget widget by fqn関数の引数として追加し
csという新しい変数に代入してみましょう
さて いよいよCaptureで強制的にトリガをかける方法を見ていきましょう
SCADA API の execute action 機能を使用します
ドキュメントに記載している通りウィジェットのハンドルとアクション名を追加する必要があります
ウィジェットハンドルには先程作成したcs変数を呼び出しアクションにはforce_triggerを使用します
コードを保存して[Capture scope]ウィンドウを開きます
[Fault action]ボタンをクリックすると故障を示すキャプチャが表示されます
次にIGBT故障をオプションとして含めましょう
まず三相インバータのドキュメントを開きましょう
ドキュメントを開くには[Help]ボタンをクリックしてみましょう
ここでは三相インバータの機能 制御およびトポロジーに関する重要な情報を見つけることができます
IGBT故障を発生させたい場合はインバータ内の6つのIGBTの1つを制御する必要があります
インバータのIGBTの1つの 故障をシミュレートするためにインバータのSa_top IGBTスイッチを閉じましょう
シミュレートする故障のタイプを通知する別のグローバル変数type_faultを追加しましょう
また半自動テストのこの部分ではCombo Boxを使ってみましょう
パネルにドラッグアンドドロップしてみましょう
Combo Box Widgetプロパティを開きましょうまず名前をFault typeに変更します
ここで追加のダイアログがあり そのダイアログはAvailable valuesでデフォルトではcase 1とcase 2があります
この2つのケースをphase loss(相の断線)とIGBT fault(IGBT故障)に改名しましょう
マクロコードではすでに自動生成されたif文があり
それを使って各ケースに対応するアクションを定義することができます
今回はケースに関係なく同じ動作をさせたいのでこれを削除します
これでグローバル変数type_faultを定義してCombo Boxから入力値の値を取得できます
前の例と同様にこのコンボボックスとfaultアクションマクロが相互に作用できるように
マクロコードにグローバル変数type_faultを定義する必要があります
変更を確認します 故障アクションに進みいくつかの小さな変更を行いましょう
ここで新しいif文を作成しどのような障害を実行したいかを尋ねることにしましょう
故障の種類が相の断線である場合 既存のテストを行います
そうでない場合はIGBTの故障となります この場合パワーエレクトロニクスのスイッチング・モードと値を設定する必要があります
そのためにはAPIウィザードの助けを借りますCode Editorを開きましょう
Switching Blocksの設定ダイアログを開き
Sa_topコンタクタのSW Controlをチェックを入れましょう
SW ControlがTrueの場合モデル制御が止められてしまうことは特筆すべき点です
つまりIGBTに故障が発生した場合 S1_topコンタクタに流れる電流は故障電流となります
挿入してみましょう
次に故障後のIGBTのモデル制御を再び有効にするためにSW Controlをfalseに戻すコードを挿入しましょう
次に4行すべてのコードにexecuteAt引数を追加しましょう
シミュレーション時間の0.5秒後を使用しさらに最後の2行にはt_faultを追加します
保存してCode editorを閉じます
コンボボックスをIGBT故障に設定しましょうこれでIGBTに故障が発生した場合のシミュレーションができます
SCADAでは定義された期間 Sa_top IGBTが閉じられることを意味します
キャプチャで波形を確認できます
Sa_topの状態をcloseに設定します
Fault actionのMacroのコードを開きFault actionの値を1に設定します
同じテストをしてみましょう
DTVフラグが立てられていることがわかります
フェーズAの両方のコンタクタが閉じているためソフトウェアはフラグを立てました
このフラグを右クリックすると簡単にリセットできます
要約すると このセッションではHIL SCADAをより高度な方法で使用する方法を紹介しました
また HIL APIとSCADA APIの使用 方法およびHILSCADAで半自動テストを実行する方法についても説明しました