FL-netのアクセスライブラリ「Binarix FL-net Library for Windows」の利用について

シーケンサとの通信を行う「FL-net」を使用する機会が数ヶ月前にありました。
この「FL-net」を使うことで、シーケンサとのプロトコルを意識せずメモリの読み書きで通信ができるものです。
私は知らなかったのですが、シーケンサ(PLC)とパソコン等とを接続し、その間でのデータの授受を行うために「FL-net」はよく用いられているそうです。

「FL-net」の特徴を以下に記します。
■パソコン側のインターフェイスはEthernetがそのまま利用できる。
■FL-netのネットワーク上には、最大254台の機器(ノード)を接続可能。
■各ノードはマスターレス方式で管理され、トークンバス方式でデータを交換する。
■全てのノードが共通認識しているメモリブロックであるコモンメモリが在る。
■コモンメモリは、ビット単位での扱いに適した「領域1(8192ビット分)」と、
 ワード単位(16ビット単位)での扱いに適した「領域2(8192ワード分)」の2ブロックがある。
■コモンメモリの自分のノードのデータ領域の公開と、他のノードのデータ領域の参照が可能。

定期的に他のノードのデータを参照することで、それに対応する処理を行ったり、 自分のノードに他のノードへ伝えることを書き込んだりできることになります。

この「FL-net」を.NETから扱えるようにしたライブラリが「Binarix」から発売されています。 「Binarix FL-net Library for Windows」という製品で開発ライセンスフリーで動作させるパソコンには USBキーを装着することになります。(このUSBキーは60,000円)

http://www.binarix.co.jp/ja/products/flnet/



以下にコモンメモリの領域2を読み書きする簡単なテストプログラムを示します。
「Binarix」のサンプルプログラムで行っているように、FL-netをオープンした後でFL-netの 状態変化イベントでFL-netへの参加を検知する様にしています。
この組み方でほぼ動作すると思うのですが、実際にこの様にして数本のプログラムを組み1個のPC上で 同時に走らせた時に問題が発生しました。
実際のプログラムは5本同時に走らせたのですが、各プログラムでオープンした後で、 必ずしも全てのプログラムでオープン後の参加イベントが返ってくるわけではありませんでした。
「Binarix」の方に伺ったところ、イベントで見るのではなく、自ノードの状態を監視するのみでOKとのことでした。
結局ステータスイベントを用いてのネットへの参加監視を使わずにオープン後のDo...WhileループをGetNodeInfo関数で監視すればよいことになりました。

■「FL-net Library」の使用テストソース


■「FL-net参加を待つ」部分を改良したソース(抜粋)


楽天市場

コメント(0)