外部からFlexSimを制御
概要
FlexSimモデルを構築して正しく設定すると、このモデルを自動的な方法で活用したくなるかもしれません。完全に機能するデジタルツインにモデルを導入して、管理チームの意思決定を支援したり、自動化された工場での実際の判断に使用したいと考えるかもしれません。あるいは、手動で実行できるスクリプトを作成して、分析タスクをバッチで行うことを考えることもあるでしょう。FlexSimには、FlexSimを外部から制御できるいくつかのソリューションが用意されています。
コマンドラインを使用する
FlexSimをコマンドプロンプトまたはバッチファイルから起動し、特定のモデルを開くには、次のような行を実行します。
"C:\Program Files\FlexSim 2022\program\flexsim.exe" "C:\Users\username\Documents\Flexsim 2022 Projects\test.fsm" /maintenance nogui_disablemsg
このコマンドを実行すると、FlexSimが起動し、指定されたパスのモデルが開きます。さらに、FlexSimのインターフェイスを非表示にするフラグと、msg()コマンドのポップアップを抑止するフラグが設定されます。
「maintenance」の機能はオプションです。たとえば、noguiフラグを削除すると、FlexSimは通常のインターフェイスで起動します。
FlexScriptをファイルから実行する
FlexSimモデルを開くとき、ファイル内に格納されているFlexScriptを実行することもできます。
"C:\Program Files\FlexSim 2022\program\flexsim.exe" "C:\Users\username\Documents\Flexsim 2022 Projects\test.fsm" /maintenance nogui_disablemsg_runscript /scriptpath C:\myscript.txt
このコマンドを実行すると、モデルが開くとき、ファイルC:\myscript.txtに格納されているFlexScriptコードが実行されます。
この方法では、別ファイルに格納されているスクリプトを実行できるため、スクリプトを個別に編集でき、モデルファイル内を変更する必要はありません。
FlexScriptをモデル内で実行する
スクリプトをモデル内で実行するもう1つの方法は、OnModelOpenトリガーにスクリプトを追加することです。commandlineparam()コマンドを使用すると、コマンドラインパラメータを取得できます。このシナリオでのコマンドラインのコマンドは次のようになります。
"C:\Program Files\FlexSim 2022\program\flexsim.exe" "C:\Users\username\Documents\Flexsim 2022 Projects\test.fsm" /maintenance nogui_disablemsg /automated true
次に、OnModelOpenトリガーに次のスクリプトを追加します。
if (commandlineparam("automated") == "true") {
...
}
これで、モデル内の他のトリガー(シンクのエントリトリガーなど)を使用して出力ファイルに書き込んだり(fileopen()、fpt()、fpr()、fpf()、fileclose()など)、データベースに書き込んだり(Database.Connection API)した後、FlexSimを終了(cmdexit())できます。
Pythonを使用する
PythonでFlexSimを制御することもできます。FlexSimは、FlexSimPyというGitHubプロジェクトを作成しました。このリポジトリには、Pythonに接続するためのFlexSimメカニズムをカスタマイズできるソースコードだけでなく、Pythonモジュールを構築するDLLプロジェクトや、FlexSimを制御するインターフェイスも含まれています。このリポジトリはgithub.com/flexsim/FlexSimPyにあります。2022年現在、このPythonモジュールはまだお客様自身で構築する必要がありますが、pipを使用してインストールできるコンパイル済みパッケージを近日中に提供する予定です。詳細については、リポジトリのwikiページを参照してください。