Beckhoff製品ファミリーのPLCまたはシミュレーターに接続する
概要
このエミュレーションモジュールを使用すると、FlexSimをBeckhoffファミリーのPLCまたはPLCシミュレーターに接続できるようになります。
完全に機能する例を構築するには、次のようにいくつかのステップが必要です。
- Beckhoffプロジェクトを作成します。
- PLCコードを作成し、コンパイルした後、実際のPLCまたはシミュレーション対象のPLCにダウンロードします。
- FlexSimモデルを準備し、PLCに接続します。
- モデルをテストします。
ステップ1 TwinCATプロジェクトを作成する
このチュートリアルでは、TwinCATを使用します。
TwinCATを開き、[Create a new project]コマンドを選択します。
新しいプロジェクトを作成し、「tutorial」という名前を指定した後、プロジェクトビューを開きます。
TwinCATから新しいアイテムを要求されます。[Standard PLC Project]を選択して追加します。
ステップ2 PLCコードを作成する
PLCコードを作成し、コンパイルした後、実際のPLCまたはシミュレーション対象のPLCにダウンロードします。このチュートリアルでは、デジタル入力の1秒後に出力を行う単純な遅延器を作成します。
プロジェクトが作成されたら、[PLC]セクションの下にあるプロジェクト名を右クリックし、関連するアイテムを開きます。
[GLVs]アイテムに移動して[GLV]アイテムをクリックし、ブール型の2つのグローバル変数を追加します。それぞれ名前を「input」、「output」にします。
次に[POUs]セクションに移動し、既存の[MAIN]アイテムを削除します(ある場合)。新しいPOUを作成します([POUs]アイテムを右クリックして作成)。[Type]では[Program]を選択し、[Method Implementation language]では[Ladder Logic Diagram (LD)]を選択します。
ブロックを作成した後、ブロック内で次のラダー回路を実装します。
このプログラムブロックでは、「input」変数が1になると、「output」変数も1秒の遅延の後に1に設定されます。
使用しないinput/output接続をTONブロックから忘れずに削除してください。そうしない場合、プログラムはコンパイルされません。
この時点でターゲットのコンボボックスに移動し、[Choose Target System...]アイテムをクリックします。
新規インストールの場合、[<Local>]接続が表示されるはずです。NetID(この例では、192.168.1.199.1.1)をコピーします。
これでTwinCATプロジェクトが完成しました。[Activate Configuration]ボタンでプロジェクトを有効化できます。
ステップ3 FlexSimモデルを準備する
このデバイスに接続できるようにFlexSimモデルを準備します。このチュートリアルに使用するモデルは、ボックスアイテムをトートにパッケージングするという、実にシンプルな生産システムです。
モデルを構築するために、2つのソース(1つはボックス用、もう1つはトート用)、トート用の1つのキュー、ボックスとトートを結合する1つのコンバイナを使用します。
上の図に示すように、これらの要素をコンベヤでつなげます。コンベヤの速度は0.5 m/秒に設定します。
ソース名を「Boxes」(ボックス)と「Totes」(トート)に変更します。ソースTotesは時間0の時点で100個のトートを生産するように設定し、ソースBoxesは10秒ごとにボックスを1個生産するように設定します。
フォトアイをボックスのコンベヤに配置します。配置場所は、トートのコンベヤが始まる約1メートル前です。
コンバイナはボックスを5秒でトートに入れます。
最後に、キューのリセット時とトートがキューから出るたびにキューの出力を閉じるように、キューを設定します。
ステップ4 モデルをテストする
まず、TwinCATでホストされ、すでに実行中のシミュレーションインスタンスにモデルを直接接続するために、Beckhoff接続を作成します。
FlexSimで新しいBeckhoff接続を作成するには、ツールメニューから新しいエミュレーションまたは接続を追加します。
先ほどコピーしたNetIDを[アドレス]フィールドに挿入し、[接続テスト]ボタンを押します。すべてが適切な場合、詳細メッセージが表示されます。
接続に成功した場合、[PLCタグをインポート]ボタンを押して変数をインポートできます。
タグのテーブルが表示されます。
TwinCATの変数をFlexSimオブジェクトに変換するために、「GLV.input」タグを「S」(センサー)とマークし、[Synchronize]列の該当フィールドを「true」に設定します。
GLV.output変数についても同様に操作しますが、ここでは「C」(コントロール)とマークします。
次に、[接続]パネルの[変数を同期]ボタンを押して、選択したタグをFlexSimのセンサーおよびコントロールとしてインポートします。
エミュレーションパネルの[変数]タブに、インポートしたアイテムが表示されます。
ここで、FlexSimモデルでPLCのinputをどのように駆動し、PLCのoutputをFlexSimでどのように管理するかを定義する必要があります。
このモデルで行いたいのは、ボックスがフォトアイをカバーするときにPLCのinputを1に設定し、PLCのoutputが1に設定されたときにトートをキューからリリースすることです。
フォトアイがクリアになったときには、PLCのinputを0にリセットする必要があります。
そのためには、input変数を選択してフォトアイに関連付け、フォトアイがカバーされたときには値1を書き込むように、フォトアイがクリアになったときには値0を書き込むように変数を設定します。
さらに、モデルのリセット時にPLCのinputをリセットするために、初期値を0に設定します。
次にoutput変数を選択し、トートのキューに関連付けます。
次に新しいアクションを追加し、PLCの値が0(oldValue)から1(newValue)に変わったときにキューが出力を開くように設定します。
これで、モデルの設定が完了しました。モデルをリセットし、実行できます。
FlexSimの実行速度を1に設定して、PLCのタイミングと一致させることを忘れないでください。
ボックスがフォトアイをカバーしてから1秒後にトートがキューから出るはずです。