RaspberryPiとUbuntuでEPICSはじめました#4 EPICSのIOC制御をLANで接続したPCやMacからOPI制御
この記事は、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をダウンロードしてインストールします。
OKを押します。Ask againはまた後から考えましょう。
CS-Studio - Diagnostic Tools - Probe を選択
何も変わりませんが、画面左側のアイコンでRestoreボタンを押すと
と出るのでPV Formula:へ GPIO:GPIO2:OUT と入力してEnter(return)キーを押下すると、現状のValueが表示されます。
New Value: のOFFをONに変更してEnter(return)キーを押下すると値を書き換えることができます。
なんて簡単なんでしょう。クライアント側はレコード名が分かっていれば使う側は非常に簡単にアクセスが可能です。
実際の制御は難しいでしょうが、その間の通信設定とかは考えなくても利用できる点がどのシステムよりも優れている点ではないでしょうか。もっと利用されるべきシステムと考えています、
他、順次追加していくかも。