タスク3.1 - ベーシックなPLCラダーロジックを構築する
タスクの概要
このチュートリアルでは、エミュレーションによるシミュレーションプロジェクトを構築するための基礎を学習します。エミュレーションとは、シミュレートされたプログラマブルロジックコントローラー(PLC)ロジックを作成する機能を指す用語です。PLCを最終的に使用するシステムをシミュレートする場合は、エミュレーションを使用してFlexSim内のPLCロジックを開発およびテストできます。その際に、他のソフトウェアでラダーロジックを作成する必要はありません。詳細については、「エミュレーションについての主要な概念」を参照してください。
このチュートリアルでは、コンベヤを制御するPLCロジックをシミュレートします。コンベヤのロジックは、処理フローのエミュレーション共有アセットによってすべて処理されます。このモデルのコンベヤロジックはかなりシンプルです。コンベヤ上のフローアイテムがフォトアイに到達した後、5秒間遅延するシステムを設計します。
作業が完了すると、シミュレーションモデルは次の画像のように実行します。
このチュートリアルでは、エミュレーションプロジェクトの目標を覚えておくことが重要です。一般的に、この目標とは、後で実際のシステムでラダーロジックのプログラミング方法を簡単に説明できるようにシミュレーションモデルを設計することです。エミュレーションを使用すると、システム内のPLCが使用する理想的なロジックを設計できます。さらに、FlexSimを使用して、実際の製造システムにPLCをプログラムする従業員にロジックの仕組みを説明できます。このチュートリアルでは、この目標を念頭に置いてエミュレーションにアプローチします。
ステップ1 3Dモデルを構築する
このステップでは、このチュートリアルの基本的な3Dモデルを構築します。この特定のモデルでは、いくつかのコンベヤオブジェクトを追加します。作業が終了すると、モデルは次の画像のようになります。
このモデルを構築するには:
- 3Dモデルウィンドウが開いていてアクティブであることを確認します。ライブラリから、次の3Dオブジェクトをモデルにドラッグします。
- [ソース]
- [直線コンベヤ]([コンベヤ]の下)
- [プロセッサ]
- [シンク]
- [モーター]([コンベヤ]の下)
- [フォトアイ]([コンベヤ]の下)を追加し、Conveyor1に沿って約3分の1の場所に配置します。
- 次のオブジェクト間でポート接続(A接続)を作成します。
- Motor1からConveyor1
- Source1からConveyor1
- Conveyor1からProcessor1
- Processor1からSink1
- [Source1]をクリックして、右側でそのプロパティを開きます。[プロパティ]の[ソース]セクションで、[時刻0に到着]ボックスをオンにします。
- [到着時間間隔]ボックスで、現在のテキストを削除し、「
10
」と入力します。
モデルがこのステップの冒頭に表示した画像のようになっていることを確認します。
ステップ2 変数と接続を追加する
このステップでは、いくつかの処理フロー共有アセットを一般的な処理フローに追加します。これらの共有アセットは、エミュレーションプロジェクトを構築する際に使用する主要なオブジェクトになります。
変数は、PLCで受信または送信される任意の入力または出力です。このモデルでは、センサー(入力)、コントロール(出力)、接続(サーバーを表す)の3種類の変数を使用します。まず、コンベヤのフォトアイ(センサー)用とコンベヤのモーター(コントロール)用の2つの変数を追加します。このステップの最後に、これら2つの変数を3Dモデルで表すオブジェクトにリンクします。
このステップでは、サーバー接続用の変数も作成します。現時点では、このサーバー接続は非アクティブになります。つまり、サーバー接続はFlexSimの内部に限られます。FlexSimは、シミュレーションモデルを実行する際にサーバーとして機能します。FlexSimでは、すべての値を内部的に読み取りおよび書き込みします。この接続は、実際のPLCロジックのテストと検証を開始する、モデル構築プロジェクトの後半にアクティブにすることをお勧めします。
作業が完了すると、処理フローは次の画像のようになります。
これらのエミュレーション共有アセットを追加して接続するには:
- メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。[一般的な処理フローを追加]を選択します。
- 3つの[コンテナ]形状([表示]の下)を処理フローにドラッグします。
- 形状の名前を次のように変更します。
- 2つの[変数]共有アセット([共有アセット]の下)を追加します(1つは[センサー(入力)]形状、もう1つは[コントロール(出力)]形状に配置)。
- 変数の名前を次のように変更します。
- [フォトアイ]変数をクリックして選択します。[プロパティ]で、[変数または値]ボックスの横にある矢印をクリックしてメニューを開きます。[内部エミュレーション変数]をポイントしてから、[OPC DAセンサータグ]を選択します。
- [接続]ボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
- [サーバー接続]形状内の空白スペースをクリックしてメニューを開きます。[内部接続]をポイントしてから、[内部OPC DA接続の作成]を選択します。
- それ以外をクリックした場合は、[フォトアイ]変数をクリックして選択します。[プロパティ]で、[関連オブジェクト]ボックスの横にある[サンプラー]ボタンをクリックして、サンプリングモードに入ります。
- 3Dモデルで、[PE1](フォトアイ)をクリックしてサンプリングします。
- [モーター]変数をクリックして選択します。[プロパティ]で、[変数または値]ボックスの横にある矢印をクリックしてメニューを開きます。[内部エミュレーション変数]をポイントしてから、[OPC DAセンサータグ]を選択します。
- [接続]ボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
- [OPC DA接続]変数をクリックしてサンプリングします。
- それ以外をクリックした場合は、[モーター]変数をクリックして選択します。[プロパティ]で、[関連オブジェクト]ボックスの横にある[サンプラー]ボタンをクリックして、サンプリングモードに入ります。
- 3Dモデルで、[Motor1](コンベヤモーター)をクリックしてサンプリングします。
- 必要に応じて、このステップの冒頭の画像と一致するように共有アセットと形状のサイズを変更できます。[センサー(入力)]形状では、アクティビティを追加できるようにスペースを空けてください。
形状 | 新しい名前 |
---|---|
最初の形状 | センサー(入力) |
2つ目の形状 | サーバー接続 |
3つ目の形状 | コントロール(出力) |
変数 | 新しい名前 |
---|---|
変数: [センサー]形状 |
変数:フォトアイ |
変数: [コントロール]形状内 |
変数:モーター |
この時点でシミュレーションモデルを保存することをおすすめします。
ステップ3 変数にアクションとイベントを設定する
このステップでは、前のステップで作成した2つの変数にアクションとイベントを設定します。モーターはコントロールです。つまり、サーバーからの出力値を読み取り、その出力に基づいて3Dモデルで特定のアクションを実行します。この場合、サーバーから0の値を受け取ると、コンベヤのモーターが停止し、1の値を受け取ると、再開するように設定します。
フォトアイ変数はセンサーです。つまり、3Dモデルで特定のイベントが発生すると、サーバーに入力値を書き込みます。フォトアイがカバーされると、サーバーに1の値が書き込まれます。フォトアイがアンカバーされると、サーバーに0の値が書き込まれます。
変数にアクションとイベントを設定するには:
- [変数:モーター]をクリックして選択します。[プロパティ]の[アクション]グループで、[追加]ボタンをクリックして新しいアクションを追加します。
- [値]ボックスで、現在のテキストを削除し、「
0
」と入力します。 - [アクション]ボックスの横にある[追加]ボタン をクリックして、メニューを開きます。[コントロール]をポイントし、[オブジェクトを停止]を選択してピックリストウィンドウを開きます。このピックリストオプションにはデフォルト設定を使用します。
- [アクション]グループで、[追加]ボタン を再度クリックして別のアクションを追加します。
- [値]ボックスで、現在のテキストを削除し、「
1
」と入力します。 - [アクション]ボックスの横にある[追加]ボタン をクリックして、メニューを開きます。[コントロール]をポイントし、[オブジェクトを再開]を選択してピックリストウィンドウを開きます。このピックリストオプションにはデフォルト設定を使用します。
- [変数:フォトアイ]をクリックして選択します。[プロパティ]の[イベントを書き込む]グループで、[追加]ボタンをクリックしてメニューを開きます。[カバー時]を選択します。この書き込みイベントにはデフォルト設定を使用します。
- [追加]ボタン をクリックして、メニューを開きます。[アンカバー時]を選択します。
- [書き込み値]ボックスで、現在のテキストを削除し、「
0
」と入力します。
この時点でシミュレーションモデルを保存することをおすすめします。
ステップ4 処理フローにラダーロジックを追加する
このステップでは、コンベヤのラダーロジックを作成するアクティビティを一般的な処理フローに追加します。
作業が完了すると、処理フローは次の画像のようになります。
各アクティビティと共有アセットの機能の概要を次に示します。
アクティビティ | 説明 |
---|---|
ソース:フォトアイのアイテム | [イベントトリガーソース]は、フォトアイ変数でイベントをリッスンするイベントリスニングアクティビティです。変更時イベントをリッスンします。つまり、PE1(フォトアイ)がフローアイテムでカバーされるタイミングをリッスンします。前のチュートリアルのステップで、フォトアイがカバーされると、サーバーに1の値が書き込まれることを説明しました。ソースは、フォトアイ変数の変更をリッスンします。サーバーに1の値が書き込まれると、ソースは次の下流アクティビティにトークンをリリースします。 |
変数を設定:モーターを0 | このアクティビティでは、モーター変数が0に設定され、3Dモデルのコンベヤモーターが停止します。 |
遅延:5秒 | このアクティビティでは、トークンが5秒間遅延し、実質的にコンベヤが5秒間停止します。 |
変数を設定:モーターを1 | このアクティビティでは、モーター変数が1に戻され、コンベヤモデルの実行が再開します。 |
シンク:リリースされたアイテム | このアクティビティでは、処理フローからトークンが削除され、フローアイテムはコンベヤに沿って継続します。このアクティビティにはデフォルト設定を使用します。 |
これらのアクティビティを追加して編集するには:
- [センサー(入力)]形状で、以下のアクティビティを追加してスタックブロックを作成します。
- 1つの[イベントトリガーソース]([トークンの作成]の下)
- [変数を設定]([共有アセット]の下)
- [遅延]([ベーシック]の下)
- [変数を設定]([共有アセット]の下)
- 1つの[シンク]([ベーシック]の下)
- アクティビティの名前を次のように変更します。
- [ソース:フォトアイのアイテム]アクティビティをクリックして選択します。このアクティビティの横にある[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
- [変数:フォトアイ]共有アセットをクリックしてメニューを開きます。[変数:フォトアイ:変更時]を選択します。
- [プロパティ]の[ラベルの割り当て/値に一致]テーブルで、[ラベル名または値]列の[新しい値]行にあるセルをクリックします。「1」を入力します。
- [オペレーション]列の[新しい値]行にあるセルをクリックして、メニューを開きます。[値を一致]を選択します。
- [変数を設定:モーターを0]アクティビティをクリックして選択します。[プロパティ]で、[変数参照]ボックスの横にある[サンプラー]ボタンをクリックして、サンプリングモードに入ります。
- [変数:モーター]をクリックしてサンプリングします。
- [遅延:5秒間]アクティビティをクリックして選択します。[プロパティ]の[遅延]ボックスで、現在のテキストを削除し、「
5.00
」と入力します。 - [変数を設定:モーターを1]アクティビティをクリックして選択します。[プロパティ]で、[変数参照]ボックスの横にある[サンプラー]ボタンをクリックして、サンプリングモードに入ります。
- [変数:モーター]をクリックしてサンプリングします。
- [値]ボックスで、現在のテキストを削除し、「
1.00
」と入力します。
アクティビティ | 新しい名前 |
---|---|
ソース | ソース:フォトアイのアイテム |
変数を設定(1つ目) | 変数を設定:モーターを0 |
遅延 | 遅延:5秒 |
変数を設定(2つ目) | 変数を設定:モーターを1 |
シンク | シンク:リリースされたアイテム |
モデルをリセットして実行します。
シミュレーションモデルを実行すると、フローアイテムは、動作中にコンベヤのモーターをオフにするロジックが設定されているフォトアイに到達します。5秒後、コンベヤモーターは再びオンになり、フローアイテムは引き続きコンベヤの下流に移動します。
結論
これで、FlexSimで基本的なPLCロジックをエミュレートする方法を学びました。次のチュートリアルタスクでは、エリア制限をコンベヤに追加する方法について学習し、[変数を取得]アクティビティが処理フローでどのように機能するかを確認します。「チュートリアルタスク3.2 - エリア制限PLCロジックを追加する」に進みます。