RaspberryPiとUbuntuでEPICSはじめました#4 EPICSのIOC制御をLANで接続したPCやMacからOPI制御
見出し画像

RaspberryPiとUbuntuでEPICSはじめました#4 EPICSのIOC制御をLANで接続したPCやMacからOPI制御

note_project

この記事は、EPICS(Experimental Physics and Industrial Control System)の初学用にまとめた記事です。

前回の記事までに、RaspberryPi上でepicsを動かしてGPIO制御ができる所まで確認しました。
今回は、EPICSのIOC制御をLANで接続したPCやMacをOPIとして利用して制御したいと思います。

準備

・IOC側
 Raspberry Pi 3 Model B Rev.2 + Ubuntu 20.04 LTS + EPICS7.0.4 がインストールされた環境
・OPI側
 Windows or Mac と RaspberryPiをLANで接続

Python3を用いた制御

Windows、Mac、Linux問わずPython3(Python2でも可能)がインストールされていればPyEpicsをインストールすることで制御してみましょう。

Pythonをインストールされていない場合、先にインストールしてください。
ここで説明するよりも日本語サイトがあるのでそちらをご覧ください。

次にPython用のEPICSモジュールのインストールです。

インストールした環境によって異なりますので一概に説明が難しいですが
sudo pip install pyepics
相当の操作でインストールします。

動かしてみよう!

RaspberryPIとPc,Macなどが同一セグメント内にあれば次のコマンドを実行するだけで制御可能です。

import epics
# GPIO2をON(HI)にする
epics.caput('GPIO:GPIO2:OUT', 1)
 #GPIO2をOFF (LO)にする
epics.caput('GPIO:GPIO2:OUT', 0)

EPICSで動作しているだけでIPアドレスを設定することもなく、何も変更しなくてもLAN越しにRasberryPiのGPIO制御できるなんて!
なんて素敵なことではないでしょうか!

出力しか試さなかったのですが、入力も作ればできます。

動かない場合、Firewallが設定されているか、Centosの場合SELinuxの設定が必要になると考えていますので詳細はネットワーク管理者へ(^^;

なぜこのような簡単な制御が可能なのでしょうか?
これを理解するにはCAProtocol(Channel Access Protocol Specification)の仕組みを理解する必要があります。

CAの仕組みはどうなっているのかは上記リファレンスに書かれています。

Normally in a local area network (LAN) environment CA discovers the address of the host for an EPICS process variable by broadcasting frames containing a list of channel names (CA search messages) and waiting for responses from the servers that host the channels identified. Likewise CA clients efficiently discover that CA servers have recently joined the LAN or disconnected from the LAN by monitoring periodically broadcasted beacons sent out by the servers. Since hardware broadcasting requires special hardware capabilities, we are required to provide additional configuration information when EPICS is extended to operate over a wide area network (WAN).

通常、LAN環境では、CAはチャンネル名のリスト(CA検索メッセージ)を含むフレームをブロードキャストすることでEPICSプロセス変数のホスト側アドレスを検出し、そして識別されたチャネルをホストするサーバーからの応答を待ちます。

IOC側のサーバー側がブロードキャストするからOPIはそれをもとにIOCと通信を確立するみたいですね。細かなことはリファレンスに任せて前に進みます。

Python以外に試してみましょう。

CS-Stidio

CS-Studio(Control System Studio)は、 研究所や大学で使うためにEclipseベースで作成された大規模な制御アプリケーションです。せっかくEPICSを設定したとことなので使ってみましょう。

Macで試してみます。WinodwsもLinuxも同じように使える所がメリットです。
http://download.controlsystemstudio.org/release/4.6/
から cs-studio-4.6.3-macosx.cocoa.x86_64.zipをダウンロードしてインストールします。

画像2

OKを押します。Ask againはまた後から考えましょう。

画像2

CS-Studio - Diagnostic Tools - Probe を選択
何も変わりませんが、画面左側のアイコンでRestoreボタンを押すと

画像3

と出るのでPV Formula:へ GPIO:GPIO2:OUT と入力してEnter(return)キーを押下すると、現状のValueが表示されます。

画像4

New Value: のOFFをONに変更してEnter(return)キーを押下すると値を書き換えることができます。

画像5

なんて簡単なんでしょう。クライアント側はレコード名が分かっていれば使う側は非常に簡単にアクセスが可能です。

実際の制御は難しいでしょうが、その間の通信設定とかは考えなくても利用できる点がどのシステムよりも優れている点ではないでしょうか。もっと利用されるべきシステムと考えています、

他、順次追加していくかも。


この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
note_project
開発歴=物心ついた時のIT土方です。 初心に戻って色々試していきますのでお付き合いください。