接続処理と値の読み込み

<< Click to Display Table of Contents >>

マニュアル > 機能解説 >

接続処理と値の読み込み

接続処理

PLCとの接続処理はConnectメソッドによって行います。ReadVal/WriteValなどによるPLCとの通信は、Connectメソッドの呼び出し以降に行うことができます。尚、「FA-Engine」のプロパティの起動時設定で、「自動的に接続処理を行う」にチェックを入れておく事で、自動的にConnectメソッドが呼び出されるようになります。

 

オープン処理の注意事項
Connectメソッドでは、通信のための初期処理が行われます。例えばRS-232C接続であればCOMポートをオープンし、Ethernet接続であればソケットのオープン処理を行います。これらはユニットごとに処理されますので、例えば重複したRS-232Cポートが各ユニットから設定されていた場合には、有効になるのは1つのユニットだけです。この動作は、複数の「FA-Engine」コントロールを貼り付けて同様の構成で設定を行った場合にも同様の現象になります。

 

 

値の読み込み方法

データの読み込みには以下の3つの方法があります。

 

1.イベントを利用
ValueChangedイベントなど

2.キャッシュを利用
GetValメソッド

3.直接通信
ReadValメソッド

 

「FA-Engine」にはタグの値を一時的に保存するためのキャッシュが存在します。キャッシュの自動更新④はStartUpdateメソッドにより開始します。キャッシュには自動更新によって定期的に最新の値が書き込まれ、値が変化した時に①のようにValueChangedイベントなどが発生します。また、キャッシュの値は②GetValメソッドで取得できます。この自動更新のための周期通信(ポーリング)は別タスクで行われるため、VisualBasicの動作を妨げず、モニタリング処理の実装などに最適です。なお、自動更新の周期はフォルダのプロパティで設定します。

 

また、③のReadValメソッドはキャッシュを参照せず、メソッドが呼び出される度にPLCとのダイレクトな通信によってデバイス値を取得します。従って、応答速度はGetValに比べ遅くなりますが、最新のデータを取得することが可能です。この方法は同期を伴う制御の実装や、バッチ的な書き込み処理の実装に向いています。

 

faeng_0065

 

 

以下は各読込み方法の条件と特徴です。

通信方法

特徴

StartUpdate

イベント

(モニタリング時、推奨)

イベントでの値の取得は、モニタリングに適しています。自動更新のための通信は、VisualBasicとは異なるタスクで実行されるため、VisualBasicの動作を妨げません。但し、常にサーバから定周期で値の取得が行われるため、タグの点数が多くなると通信負荷が高くなる可能性があります。そのような場合は更新周期を遅くする方向で調整を行って下さい。

必須

GetVal

(通常時、推奨)

GetValによるキャッシュからの値所得は、処理速度が最も速いのが特徴です。VisualBasic上で、迅速に値を所得したい場合は、この方法をお奨めします。

必須

ReadVal

(制御、バッチ処理時推奨)

この方法は、最も処理時間がかかる値の取得方法です。強制的にPLCとの通信を要求するため、他の通信に影響を与える可能性があります。

但し、要求の都度、実際にPLCと通信が行われた結果が返ってくるため、最も新しいデバイス値を取得することができます。また、タグ数が大量かつ通信頻度が低いような場合には、サーバ・PLC間の通信負荷を下げる効果を得ることができます。従って、この方法はPLCとの同期が必要な制御の場合や、バッチ的な通信に最適です。

必要なし

 

これら3つの通信方法をシステム要件にあわせ選択し、時には組み合わせることにより、通信パフォーマンスを高めることができます。反対に、組み合わせ次第ではパフォーマンスの低下をまねくことがある点に注意してください。

 

例えば、あるタグをStartUpdateにより定期的に読み込みを行いながらReadValでさらに通信を行うという組み合わせは、最もパフォーマンスが低下する例です。周期通信+ダイレクト通信になってしまい、必要のない周期通信の分、通信負荷を無駄に上げてしまいます。また、より高いパフォーマンスを得るためには、定周期通信が必要なタグとその他のタグのフォルダを分けて登録します。そして、周期通信が必要のないフォルダは「指定した周期で値を更新する」のチェックを外します。

 

faeng_0036

 

これらの通信方法を特に意識しない場合は、すべてのタグにおいてStartUpdateメソッドにより自動更新を行い、GetValメソッド+ValueChangedイベントの組み合わせで値を取得することをお奨めします。