Volume 24, No.3 Pages 269 - 278
2. ビームライン/BEAMLINES
DARUMAによるデータ収集・計測システムの現状
Current Status of Measurement and Data Collection System for Experimental Stations using DARUMA
(公財)高輝度光科学研究センター 情報処理推進室 Information-technology Promotion Division, JASRI
- Abstract
- 我々は、DARUMA(Data collection And control system for X-Ray stations Using MADOCA)と呼ばれるビームライン(BL)向けのデータ収集・実験計測システムのパッケージ開発をしている。このパッケージは、SPring-8加速器制御で活用されている分散制御フレームワークMADOCA[1][1] T. Matsumoto et al.: Proc. ICALEPCS2013, Proc. ICALEPCS2015, Proc. ICALEPCS2017.を基盤としており、SPring-8で標準的に使われる可読性が高いテキスト(SVOC文型)によるメッセージ通信を用いている。DARUMAを活用することで、得られるメリットとしては、1)機器制御のプログラムとユーザインタフェースのプログラムを分離して開発できるようになる、2)SVOCによる機器制御の抽象化によるプログラムの可搬性の向上、3)画像処理など機器制御以外のプログラムもSVOCの枠組みで部品化できる、4)実験計測時に測定条件などの付加情報(メタ情報)の収集が使える、など様々な特徴が挙げられる。これらの機能のため、実験セットアップ時の装置の組み替えにも柔軟に対応でき、既存のspec[2][2] spec (https://certif.com/spec.html)やLabVIEW[3,4][3] LabVIEW (http://www.ni.com//labview)
[4] T. Matsushita el al.: SPring-8/SACLA Info. 20 (2015) 116-119. (https://user.spring8.or.jp/sp8info/?p=32203)、Visual BASICなどを用いた制御系に容易に組み込むことが可能となる。DARUMAは、BL向けに整備されたフレームワークの提供のみならず、開発のための様々な支援ツールやプログラムも提供している。さらに、実際にBLで使われている多くの汎用の機器制御プログラムの提供から、これらと連携するビューアなどの汎用的なインタフェース、様々な画像処理機能を持ったプログラム群なども提供している。現在、常設でないものを含めれば、BL01B1、BL02B1、BL03XU、BL04B2、BL08W、BL10XU、BL13XU、BL14B2、BL19B2、BL35XU、BL36XU、BL37XU、BL40B2、BL46XUにおいて実験計測に活用されている。
1. はじめに
SPring-8におけるBLでの実験は、数多くの機器の制御を組み合わせることで成り立っている。ステージやスリット、多軸回折系を動かすモーター制御から、電圧値の測定、温調の制御、二次元検出器など、多種多様な機器の制御と計測の組み合わせから構成されている。そして、制御するプログラムはそれぞれのBLや実験に応じて独自に作成されていることが多く、基本、これらの実験のプログラムは、ほぼ全てモノリシックに設計されている。ここでいうモノリシックの意味は、図1に示すように、一つのアプリケーションに、インタフェース、実験手順、データ管理、機器制御を書いていることを意味している。たとえば、モーターの制御と一つの検出器の制御などの小規模な利用であれば、一つのモノリシックなプログラムは十分に実用的であるとも言える。むしろ開発者が1人であり、小規模であれば、きめの細かいシステムの開発が可能であるとさえ言える。だが、問題は、制御する機器が増加した時、制御するプログラムを別の実験や別のBLに持って行く時、プログラムの開発当初に想定していなかった機器の制御をプログラムに組み込む時などである。設計が不十分であれば、プログラムのほとんどを書き直す必要があり、ごく一部のハードウェア部分の変更が、計測プログラム全体に影響を与えることは想像に難くない。そして多くのBLでのユーザ実験の場合、全てのケースを事前に想定してモノリシックに設計するのは困難である。モノリシックであることは、プログラム開発においては利点と欠点の両方を含む。
図1 モノリシックな制御プログラムのモデル図
一般的には、モノリシック構造であれば、同時に他の部品の相関関係を考慮して関連部品のアプリケーションを更新する必要がある。特に複数の機器をSocketで直接制御する場合には通信に関しての細心の注意が必要となる。そのため、測定システムを再構成することは容易ではなくなる。当然、プログラムのコーディングスタイルはそのプログラムを作成した人によってそれぞれ異なり、開発言語も異なることが多い。同じ機器を制御するからといって、隣のBLで開発されたプログラムを持ってきても、ほとんどの場合は再開発が必要となる。開発したプログラムを共有化・水平展開しにくい理由の一つは、それぞれの開発者の情報共有の問題よりもむしろアプリケーションの開発モデルに理由の一つがある。これらを解決する方法として、分散型の制御が加速器などの大規模なシステムでは古くから採用されている。
DARUMAでは加速器などの大規模なシステムで用いられている一般的な開発スタイルである「分散型の制御フレームワーク」を用いることでこれらの問題に対処している。制御フレームワークとは、制御システムのソフトウェアを構築するためのライブラリ、分散のアーキテクチャを支えるための通信ミドルウェア及びそれらを管理するためのツール類からなるソフトウェア群である。放射光関係の制御フレームワークとして代表的なものは、EPICS[5][5] EPICS (http://www.aps.anl.gov/epics/)やTANGO[6][6] TANGO (http://www.tango-controls.org/)などがよく知られている。MADOCAを含むこれらの制御フレームワークに共通する特徴は、ネットワークを介した分散制御系という点にある。DARUMAでは通信の基本となる部分にMADOCA IIフレームワークを用いている。MADOCAとはMessage And Database Oriented Control Architectureの略で、SPring-8の加速器制御とBLの分光器系の制御などに用いられている。本稿では、DARUMAソフトウェアのフレームワークを報告し、DARUMAが実験ステーションでの実験計測にどのように役立つかを示す。実装におけるDARUMAの詳細な側面は、後に詳しく説明を行う。
2. DARUMAフレームワーク
DARUMAは前節で説明した要求を満たすために開発された。DARUMAはData collection And control system for X-Ray stations Using MADOCAの略であり、BL向けのデータ収集・実験計測システムのパッケージである。DARUMAの基本ポリシーは以下となる。
・BL用機器の分散制御にMADOCAを採用
・BL向けにMADOCAを使いやすくするためのライブラリ/ミドルウェア/ツール群を用意
・データ収集や画像処理などの一般的なソフトウェアツールも用意
SPring-8ではMADOCAが加速器とBLの分光器系の制御のために実装されているので、我々は特に苦労することなく、コストをかけずに、既存のシステムを用いるだけで、高い信頼性と高い安定性を持った分散制御を実験ステーションで行うことができる。これにより、加速器や分光器などで用いられているMADOCAとの協調制御ができるメリットも生まれる。さらに、我々自身の手でMADOCA IIフレームワークのメンテナンスを行っているため、BL制御用に必要な機能を取り込むことが容易であるという利点もある。そのため、我々は分散制御の基本プログラムとしてMADOCA IIを選択している。これらの詳細は後の節にて説明する。MADOCA IIでは、Windowsのサポート、LabVIEW[7][7] Y. Furukawa et al.: Proc. ICALEPCS2013.やPythonとのインタフェース、.NET Framework(C#、Visual BASIC)とのインタフェース、画像データなどの可変長データにも対応しており、これらMADOCA IIのいくつかの新機能はBLでの計測に役立つものであると言える。
3. DARUMAを用いた実験ステーション制御
まず始めに、SPring-8加速器制御で用いているMADOCAを用いた制御と、DARUMAを用いた制御の運用面における大きな違いについて述べる。DARUMAでは、SPring-8の加速器制御のように中央制御室にBLの制御を束ねるわけではない点に注意して欲しい。DARUMAは、あくまで、それぞれのBL毎に、それぞれの機器毎に閉じたネットワークでの運用となる。つまり、従来通りに、個別のBL内での個別の機器の制御となる。そのため、BLの判断で自由に、実験毎に、DARUMA機器の接続・追加・削除などを行える。DARUMAによる開発・運用とは分散型の制御・開発モデルをBLに持ち込むことにある。DARUMAで採用されている分散型のモデルを図2に示す。DARUMAでは、従来型のモノリシックなアプリケーション内の各機能を、異なるそれぞれ別の制御プログラム(ソフトウェアコンポーネント)に分離してある。誤解しないで欲しいのは、一つの単一のプログラム(ソースコード内)で、ライブラリなどで機能を分離しているわけではない点である。それぞれの機能は完全に独立したアプリケーションであり、単独の実行プログラムである。そのため個別のプログラムで機能は完結している。この点がライブラリの提供よりも動作安定性や再利用性が高くなる理由である。DARUMAのソフトウェアコンポーネントは、検出器などの機器制御のコンポーネントのみならず、データ収集のためのコンポーネント、画像処理のためのコンポーネント、画像ビューアもこれらのコンポーネントに含まれる。これらのコンポーネントのうち機器制御を行うコンポーネントを特に機器マネージャ(EM)と呼ぶ。これらのソフトウェアコンポーネントは、ネットワークを介してMADOCAのメッセージングから制御することが可能となる。ここで言うメッセージングはSVOC文型を用いたテキストメッセージによる制御のことであり、次節にて詳しく説明する。当然、MADOCAを使用して分光器系の制御と組み合わせることも可能である。それぞれの機能を分散したソフトウェアモデルを持つDARUMAを採用することは、以下のようないくつかのメリットを生み出す。
・ユーザインタフェースと実験手順に集中してアプリケーションを作成できるため、測定アプリケーションの準備にかかる時間とコストが削減される
・他のBLで作成した機器制御コンポーネントをそのまま持って来ることができる
・様々な画像処理やファイル処理などを制御系と組み合わせることが非常に容易になる
・既存の制御系に、DARUMAのソフトウェアコンポーネントを組み込むことが容易である
図2 分散型の制御プログラムのモデル図
DARUMAをBLにおける実験計測用に用いるには、DARUMAのソフトウェアコンポーネントを充実させることが重要となる。表1にDARUMA化がなされた機器リストの例を示す。我々は、BLのスタッフからの要求に基づいて、様々なBLのためにこれらのEM開発を進めている。これらのEMは可搬性が高く、一度作成すればどのBLでも利用可能となる。また、我々との共同開発により、BL14B2のスタッフなどが作成したEM群も別途ある(表2)。これらは、基本的には、他のBLでもそのまま使うことが可能である。特に、BLにおけるDARUMAの開発では、機器制御以外の画像処理などのソフトウェアコンポーネントの整備も行っているのも特徴となる(表3)。
種 別 | 装 置 | コメント |
二次元検出器 | PILATUS | 100K, 300K(CdTe), 1M, 2M |
PerkinElmer XRD | (Opt-I/F) XRD1611 XRD1621 (Ethernet-I/F) XRD0822 |
|
Andor Zyla | SDK3 | |
Andor iKonL | SDK2 | |
浜松ホトニクスHiPic | CCD/FPD | |
Rigaku HyPix | HyPix 3000 HyPix 4000 HyPix 9000 |
|
ADC | PXI-NI-4492 | DAQmx C-I/F |
PXI-NI-6612 | ||
NI-USB6000/6003 | ||
Motor | tuji-PM16C-04XDL/16 | |
tuji-PM2C-01 | USB-serial | |
SIGMA TECH FC-111 | ||
IMS MDRIVE Motor | for scatter less slit (開発中) | |
Counter | tuji-NCT0801B | |
tuji-CT0801E | ||
MITUTOYO KA12, 200 | リニアスケール用 | |
DMM | Keithley 2701 | |
ADC7352A | ||
温調 | Cryo-con Model 24C | |
FPGA | NI-9269 | (Socket-base) |
NI-9239 | ||
NI-9403 | ||
NI-9260 |
種 別 | 装 置 |
イオンチャンバーガス混合器 | アイデン M37-4209-01 |
カレントアンプ | Keithley 428 |
19SSD用DSP | テクノエーピー APN504 |
カメラシステム | キーエンス CV5500 |
DIO | コンテック DIO 1616In-fit |
高温セル用温調器 | チノー KP1000C |
四重極型質量分析計 | PFEIFFER GSD301 |
モノクロエンコーダーボード | Heidenhain IK220 |
汎用EM | 機 能 |
画像積算 | ROIによる領域積算 最大値および座標取得 ある座標のピクセル値取得 連続積算(for QXAFS) |
円環積分 | 円環積分を行う |
画像結合 | 複数の画像を結合し、PILATUSなどのモジュール間ギャップを補完する |
画像ヘッダ処理 | TIFFヘッダに好きなメタ情報を書き込み、読み込みする |
画像転送 | 画像を転送し、対応ビューアで表示する |
二次元画像対応の指数演算 | a, b, c, α, β, γが既知の時にHKLマップを計算(ビューアと組み合わせ撮像画像と重ねるなど) |
無論、現時点で開発されているEMは、様々なBLにおける多種多様な機器を網羅するには至っていない。しかし、EMを構築するためのLabVIEWやPython、及びC言語などの様々な言語のインタフェースがある。要求に応じて、サポートされるEMの数を柔軟に増やすことが可能である。必要とあれば我々の開発ツールを用いて、BLのスタッフ自身が機器制御のデバイスをDARUMAのソフトウェアコンポーネントの形に整備することは容易である。DARUMA化を行えば、自身のBL以外でも作成したプログラムの水平展開が簡単になるメリットがある。
4. MADOCAによるメッセージングの詳細
DARUMAでは測定のメッセージ管理にMADOCAを採用している。ここでは、実験計測システムにおけるMADOCAメッセージングコントロールの利点について説明する。MADOCAでは、コントロールのメッセージは、主語/動詞/目的語/補語(S/V/O/C)構文のテキストメッセージで構成されている。「S」は、フレームワークによって自動的に定義され、主にメッセージを送信するプログラムの情報を含む。「V」は、コマンドのアクションを表現する。「put」または「get」が主に用いられる。「O」は、メッセージのターゲットを識別するオブジェクト名となる。「C」は、アクションパラメータである。たとえば、V/O/Cとして「put/bl_03in_st1_detector_1/start」というメッセージを送信し(Sは上記のように省略される)、メッセージが「O」が登録されているEMに送信され、応答が返される。S/V/O/Cフォーマットのメッセージングでは、メッセージコマンドは抽象化されている。人間がコントロールの内容についてメッセージコマンドを容易に理解できるように設計するため、特定のデバイス情報は含まれないようにデザインするのが一般的である。
このようなメッセージコマンドの抽象化はEM毎に行われる。これには様々な利点がある。たとえば、ある機器が故障をした時、その機器を新しい装置に入れ替えた例を考えてみる。この時、最新の機器を制御するEMが、以前の古い機器と同じメッセージコマンドで応答するようにEMを準備すれば、クライアントアプリケーションを更新する必要はない。MADOCAの抽象化されたメッセージコマンドにおけるこのような方針のために、実験に用いる機器の再構成を柔軟に実行することができる。
5. BL03XUへの適用
我々は、まず始めに、ソフトマター向けの小角散乱用BLであるBL03XUにDARUMAを適用した。BL03XU用のDARUMAを使用した測定システムの概略図を図3に示す。実験には、イオンチェンバー内の電流とフォトダイオード内の電圧の監視、ステージのモーター制御、slitの制御、タイミング信号、PILATUS検出器、浜松ホトニクスのCCDとFFDなどの各機器を制御する必要がある。測定システムには約10台のコンピュータが使用されている。DARUMAを実装するために、各機器向けにそれぞれの機器のEMを作成した。浜松ホトニクスのCCD、FPDは、HiPicを制御するEMを実装することで実現した。
図3 BL03XUにおけるDARUMA対応(赤はDARUMAのソフトウェアコンポーネント)
それらDARUMAソフトウェアコンポーネントにより、MADOCAのメッセージコマンド(SVOC)を用いて、各機器の制御から計測まで行える。SVOCの手順には、保存データの場所、カメラとトリガーの設定、測定の操作などの初期化が含まれる。これらのSVOC命令系は、汎用的なカメラの操作SVOC体系、モーター用のSVOC体系などとして規定し、他のBLでも用いることができるように一般化している。たとえば、二次元検出器の制御EMでは、Perkin Elmer検出器やRigaku HyPix検出器、Andor CMOS、CCD検出器用のものを作成しているが、基本的には同じSVOC命令体系で検出器の操作ができるように設計している。そのため、PILATUS向けに作成した実験制御系アプリケーションは、DARUMAのほとんどのコンポーネントでわずかな修正のみで動作する。このように、開発したコマンド手順は他のBLでの測定にも柔軟に適用可能となる。
BL03XUにおける1回の測定では、二次元検出器を用いて、およそ数千枚程度の画像が撮像される。PILATUS-1Mにおいては、典型的なデータ収集レートは約10 Hzである。複数の検出器があるため、測定はトリガーのタイミングと同期して実行される。測定データはファイルとして保存サーバに保存され、二次元検出器の場合では1測定1ファイルのTIFF画像として出力される。二次元検出器以外の各計測データについても、トリガーで同期され、複数の計測機器の個別データが、それぞれのストレージにファイルの形で分散保存される。そのため解析を行う場合は、個別にデータを探す必要がある。その際、検索の手助けとなるのは、フォルダ名に含められた測定条件などの情報とファイルの生成時間だけである。このため、特定のトリガーにおける撮像データと、それと同期している他の機器の計測データをリンクして参照するにはそれなりに手間がかかる。それらに対して、検索の柔軟性を向上させるために、DARUMAは測定のメタ情報をNoSQLデータベース、Elasticsearch[8][8] Elasticsearch (https://www.elastic.co/products/elasticsearch/)に保存する機能を有している。測定に紐付けられた測定条件などの付加情報はその測定のメタ情報と呼ばれる。Elasticsearchには、REST APIインタフェースを備えたLuceneに基づく検索エンジンがある。ElasticsearchはスキーマフリーのJSONドキュメントを使用してデータを管理できるため、実験計測における様々なメタ情報を管理することが可能である。このメタ情報に対して、我々は、tornado[9][9] tornado (https://www.tornadoweb.org)と呼ばれるWebフレームワークを用いて、簡便なWebインタフェースを開発した。これにより、検索、閲覧、計測ファイルのダウンロードを一元的に行うことを可能としている。このようにDARUMAではメタ情報収集機能をEMとして実装可能な枠組みを用意しており、比較的容易にデータ収集機能を実現できる。
画像処理用のソフトウェアツールも開発を行った。DARUMAでは、画像データを管理するためにEMを用いることができる。MADOCA IIはSVOCのテキストメッセージ以外にも、画像などのバイナリデータ(可変長データ)の送受信も行うことができる。そのため、画像データの転送にもEMを利用することができる。EMによる画像処理を分離することで、図3の例のように、リモートコンピュータ上に自由に画像を表示することができる。画像データのデータフォーマットはMessagePack[10][10] MsgPack (http://msgpack.org/)で一般化されているため、LabVIEWなどの言語でBLスタッフが自身の測定系に組み込むこともできる。無論、DARUMAが提供するソフトウェアコンポーネントであるビューアを用いてもよい。ビューアの各機能は、BLスタッフの意見で随時アップデートされている。このビューアはPyQt[11][11] PyQt (https://riverbankcomputing.com/)で作成されており、Windows/Linuxのどちらでも動作する。当然、画像転送EMを用いないシステムでも最低限動作するように完全に単独でも動作するビューアとしても使える。
これら一連のシステムを作り上げ、BL03XUでの実験測定でDARUMAを使った動作テストは行われた。実際のユーザ実験で用いられる測定アプリケーション用に約20のGUIがあり、これらをDARUMAに置き換えることはまだ進行中である。
6. 産業利用BL(BL14B2、BL19B2、BL46XU)への適用
DARUMAは、既存の計測系システムにそのまま追加できる柔軟性を持っている。通常のMADOCA IIのメッセージング以外にも、Socketを介したSVOC通信ができる機能を提供している。そのため、Socket通信ができる制御系からは自由にDARUMAのソフトウェアコンポーネントを用いることができる。この機能は、Windowsマシン上でも動作するため、BLにおける既存のシステムへのビルドインが非常に容易にできる。
たとえば、DARUMAでは画像処理などのソフトウェアコンポーネントを提供している(表3)。BL19B2/BL46XUおいては、X線回折の実験ではspecが主な制御系として用いられている。ここでは、既存のspecを用いた計測システムの変更をほぼせずに、DARUMAによる画像処理を追加し、システム全体の高機能化・高速化を行った例を紹介する。DARUMAのソフトウェアコンポーネントには、PILATUSの撮像画像からモジュール間ギャップを補完する機能、画像ファイルに自由にメタ情報を読み書き・追記する機能、関心領域の積算、最大のピクセル値、最大値を持つ座標、指定座標のピクセル値などを取り出す機能、様々な画像処理機能がある。既存の測定系に対して、これらの画像処理に係わるソフトウェアコンポーネントの追加は、わずか数行のspecのマクロ変更で実現される(図4)。これらは機器制御を行わないDARUMAのソフトウェアコンポーネント利用の活用例である。
図4 BL19B2、BL46XUにおけるDARUMA(青はDARUMAの提供する画像処理に係わるソフトウェアコンポーネントを示す)
また、産業利用推進室のXAFSビームラインであるBL14B2では遠隔実験対応のためにBLの制御系の多くをDARUMAに置き換えてある。そのため、ほとんどの測定機能がSVOCで制御可能であり、DARUMAのコンポーネントの連携性が非常に高い。たとえば最近我々は、BL14B2へのユーザ持ち込み機器とBL14B2のQXAFS測定系を容易に結合できるような簡便なシステムを提供した(図5)。これは、NI-DAQ機器制御をDARUMAのコンポーネント化することで実現した。たとえば、TTL信号を受信してSVOC命令を発する機能や、SVOC信号を受信して、TTL信号を発する機能などである。このコンポーネントによりTTL信号とSVOCを相互に結びつけることができる。ユーザ持ち込み装置側でDARUMAによるソフトウェア開発をせずに、DARUMA機器と連携した測定が可能になる。たとえば、ユーザ持ち込み装置からのTTL送信をトリガーとしてSVOCを発することでQXAFS測定をスタートすることができる。そして、測定終了後のSVOCを受けることでユーザ持ち込み装置側にTTL送信し、持ち込み装置側でQXAFS後の処理をスタートすることができる。これにより、ユーザ持ち込み装置での前処理・後処理とQXAFSの測定が無駄なくリンクし、自動化も可能となった。ユーザ側にMADOCAのSVOC送受信を行うプログラムを作成する必要はなく、汎用的なTTLでSVOCが制御できるメリットは、ユーザ持ち込み装置とBL側との連携向上に大きな役割を果たす。NI-DAQによるTTLとSVOCの連携は、BL36XUにおけるユーザ実験にも利用された。DARUMAでは、このように簡便かつ柔軟にユーザの持ち込み装置を、BLの測定系に結合できるスキームを提供している。
図5 BL14B2におけるDARUMAの利用例
7. BL04B2、BL08W(BL01B1、BL36XU、BL37XU)におけるDARUMAの適用
前述までの説明の通り、DARUMAによる機器の制御は、1)機器制御プログラムを独立したソフトウェアコンポーネントに押し込んでいる、2)コンポーネントへの通信はSVOC命令で抽象化されている、という特徴を持つ。そのため、実験毎のシステムの変更が容易である。特に、検出器メーカーからC言語でのみ制御が提供されているPerkinElmer検出器のような機器のDARUMA化は、迅速かつ柔軟なBLへの対応には有益である。通常ならば、C言語で作成した制御プログラムを、それぞれのBLで制御に用いている様々なプログラム言語から読み出せるようにする必要がある。それは、制御プログラムの実装を複雑にする。当然BLの測定系毎にこれらは作る必要がある。しかし、一度DARUMA化を行えば、LabVIEWやVisual BASICからSVOCテキストのわずか数行の追加・変更のみで、機器の変更から組み合わせまで変更できる。それぞれのBL毎や実験固有のセットアップ毎の変更はわずか数行の改変で終了する。
BL04B2で用いられている二次元検出器を用いた非晶質PDF解析用の測定システムは、実験の度にBL08Wを始め様々なBLへ運ばれ、様々なセットアップで実験されることが多い。PerkinElmer、PILATUSなどの二次元検出器、Keithley 2701などのDMMから、カウンター、PM16Cを用いたステージの制御、19軸多軸回折系の制御、カウンターからのTTLによる時分割測定などの様々なセットアップが必要となる。これを実験毎に組み直して、それぞれのBLに移動し、必要に応じてそれぞれのBLの制御系と連携させる。DARUMA化することにより、これらの制御系の開発が容易になることは実証されている[12][12] K. Ohara et al.: J. Synchrotron Rad. 25 (2018) 1627-1633.(現時点では、TTL同期による時分割の実験はまだ行われていない)。実際の開発では、BLスタッフ及びテクニカルスタッフなどによって比較的短時間で、SVOCの送受信による制御プログラムの構築が行われた(図6はセットアップの一例を示す)。これは、DARUMAによるソフトウェアコンポーネント化とSVOCの抽象化の成果であるが、我々のコンポーネント開発と、BL側の開発の連携がうまく機能した例でもある。
図6 BL01B1、BL04B2、BL08W、BL36XU、BL37XUで用いられたDARUMAの構成例
8. BL13XUにおけるDARUMAの実装
DARUMAは、SVOC命令により機器の制御が抽象化されている。異なる機器でも同じSVOC命令で操作が可能となるため、実験制御を行うクライアントアプリケーションの変更なしに、装置を操作することが可能である。特に、BL13XUでは、PILATUSとRigaku HyPixなどの検出器の入れ替えが多く、機器変更を行っても、同じspecのマクロ体系での制御が望まれていた。DARUMAは、異なる二次元検出器であってもSVOCの操作体系はほぼ一般化されており、概ね同じspecのマクロで制御可能である。我々は、BL13XUの既存の制御系を変更することなく、機器の入れ替えが柔軟にできるシステムとして、DARUMAを適用した。さらに、BL13XUでは、DARUMAの画像処理コンポーネントの組み合わせをspecから制御し、検出器制御などと合わせて有機的に連携するように構築している(図7)。画像ビューア、画像転送機能、関心領域での画像の積算機能、画像中の最大ピクセル値の座標取得、指数付け計算などである。特に、指数付け計算を行い、その結果を二次元検出器による撮像画像と共に表示する機能は、SESとの共同開発で進めた(現時点では、ユーザ実験投入のための最終調整中である)。また、RigakuのHyPixの検出器側が提供するプリミティブな制御はSocketであるが、データSocketとコントロールSocketの2本のSocketを協調して制御する必要がある。そのため、機器の制御プログラムそれ自体が非常に煩雑になる。これらを実験制御系プログラムに簡便に組み込むには、DARUMAによる抽象化されたSVOC体系で制御できるソフトウェアコンポーネント化は有益である。ここで開発したHyPixの制御のDARUMAのソフトウェアコンポーネントは、BL08B2への導入を行う予定である。
図7 BL13XUにおけるDARUMAの活用例
9. BL10XUにおけるDARUMAの実装
DARUMAを用いた、Andor検出器とPerkinElmer検出器を用いた実験計測システムを構築した(図8)。どちらも、メーカーからはC/C++言語による制御のみ提供が行われており、前述のように、DARUMAによるコンポーネント化が特に有効な例である。その他、BL10XUでは、SIGMATECHのフィードバック型ステージコントローラの制御や、ツジ電子のUSB接続型のモーターコントローラPM2C-01、ミツトヨのリニアスケール用カウンター、DMMのADC7352Aなど様々な機器のDARUMA化を進めた。これらの装置を用い、モーターコントローラのパルスに連動するTTL信号同期のfly by撮像システムなどが構築されている。このDARUMA化により、BLのスタッフがLabVIEWなどで、短時間で、その場で、ユーザの要望に合うような測定システムをビルドできるようになったと言える。また、PerkinElmer検出器などのコンポーネントの多くはBL04B2での開発から水平展開をすることで最小の労力で開発を進めることができている。
図8 BL10XUにおけるDARUMAの活用例
10. BL01B1、BL02B1、BL02B2、BL08W、BL09XU、BL10XU、BL35XU及びBL39XUにおける冷凍機制御のDARUMA化
冷凍機(Cryon-24 Model)をユーザ実験毎にBL01B1、BL02B1、BL02B2、BL08W、BL09XU、BL10XU、BL35XU、BL39XUなどの各BLへ持ち込み、それぞれのBL独自の制御系(LabVIEW、Visual BASIC、spec)に組み込むためのシステムの構築にDARUMAを用いた。様々な言語を用いた独自のシステムと短時間で連携させるのは、DARUMAの利用が適切である。このシステムでは冷凍機のDARUMA制御コンポーネントをまるごと持ち運びしやすいように、専用のマイクロサーバを用いたシステムを構築した(図9)。これにより、BL側ではDARUMAのサーバなどの用意は一切必要なくなり、さらに可搬性が上がることになった。サーバには冷凍機とペアで持ち運びしやすいこと、計測の邪魔にならないファンレスであること、2つのEthernet I/Fがあり冷凍機との中継器になること、など様々な理由から、DARUMAのソフトウェアコンポーネントを載せるサーバとして、「サバ太郎」[13][13] サバ太郎(http://www.pinon-pc.co.jp/)をチョイスした。同様のサバ太郎を用いたDARUMAのサーバ運用は、BL19B2での運用実績がある。冷凍機と共にこれらの機器を持ち運ぶことで、BL担当者は、定型のSVOCをSocketで送るだけで冷凍機の制御を行うことができる。このシステムは最初から多くのBLでの運用が前提であるが、まだ投入したばかりであるため、現時点ではBL08Wのみの実績である。
図9 冷凍機の制御におけるDARUMAの活用
11. その他のBLにおけるDARUMAの適用
BL02B1において、PerkinElmer検出器と多軸回折系を連携させる実験のために、DARUMAのコンポーネントを用いた。BL02B1の主制御系であるspecと、PerkinElmer検出器対応のDARUMAコンポーネント、DARUMA対応の画像ビューア及びいくつかの画像処理支援ツールを連携させた。使用されたPerkinElmer検出器はXRD0822及びXRD1621であり、それぞれEthernet-I/F及び、Opt-I/F+グラバーボードを用いた構成となる。そのため、XRD0822とXRD1621は通信のハードウェアレイヤーは大きく異なる。しかし、DARUMAのコンポーネントを用いることでまったく同じSVOCで制御できるようにしている。
BL40B2においては、機器制御としてのDARUMAコンポーネントではなく、画像の自動解析としてDARUMAが用いられている。円環積分のDARUMAコンポーネントを、検出器による撮像がある度に(ファイルの更新がある度に)バックグラウンドで自動的に動かしている。これにより、自動的に円環積分を行い、結果を出力し続ける仕組みを実装している。他にも、DARUMA関連のソフトウェアとして、様々な画像変換ツールも用意しており、HDF5からTIFFなどの変換など、多種多様の画像周りのツールを充実させている。これらは、ユーザ実験やBLの要望に合わせて随時追加更新を進めている。
12. まとめ
BLにおけるデータ収集と制御のためにDARUMAの開発を行っている。DARUMAは、SPring-8の実験計測に分散制御、及び開発スキームを持ち込むことに成功している。メッセージングにはMADOCA IIを用いている。BLにおける実験計測のそれぞれの機能は、機器制御マネージャ(EM)、データ収集、画像処理などのソフトウェアコンポーネントに分けられ、これらはMADOCAのメッセージングコマンドで制御することが可能となる。DARUMAを用いると、測定アプリケーションの迅速な準備とソフトウェアの再利用、BL間でプログラムの水平展開を容易に促進できる。現時点では、常設でないものを含めれば、BL01B1、BL02B1、BL03XU、BL04B2、BL08W、BL10XU、BL13XU、BL14B2、BL19B2、BL35XU、BL36XU、BL37XU、BL40B2、BL46XUでは運用実績が積まれている。DARUMAのドキュメント化及びソースコードの公開体制、共同開発体制は随時進められており(http://daruma.spring8.or.jp/)、画像処理の様々なソフトウェアコンポーネントや各種ツールの改善、文書やインストーラーの充実などはBLスタッフやユーザの声と共に進められている。
参考文献
[1] T. Matsumoto et al.: Proc. ICALEPCS2013, Proc. ICALEPCS2015, Proc. ICALEPCS2017.
[2] spec (https://certif.com/spec.html)
[3] LabVIEW (http://www.ni.com/labview)
[4] T. Matsushita el al.: SPring-8/SACLA Info. 20 (2015) 116-119. (https://user.spring8.or.jp/sp8info/?p=32203)
[5] EPICS (http://www.aps.anl.gov/epics/)
[6] TANGO (http://www.tango-controls.org/)
[7] Y. Furukawa et al.: Proc. ICALEPCS2013.
[8] Elasticsearch (https://www.elastic.co/products/elasticsearch/)
[9] tornado (https://www.tornadoweb.org)
[10] MsgPack (http://msgpack.org/)
[11] PyQt (https://riverbankcomputing.com/)
[12] K. Ohara et al.: J. Synchrotron Rad. 25 (2018) 1627-1633.
[13] サバ太郎(http://www.pinon-pc.co.jp/)
(公財)高輝度光科学研究センター 情報処理推進室
〒679-5198 兵庫県佐用郡佐用町光都1-1-1
TEL : 0791-58-0980 ext 3536
e-mail : kengo.nakada@spring8.or.jp
(公財)高輝度光科学研究センター 情報処理推進室
〒679-5198 兵庫県佐用郡佐用町光都1-1-1
TEL : 0791-58-0980 ext 3270
e-mail : matumot@spring8.or.jp
(公財)高輝度光科学研究センター 情報処理推進室
〒679-5198 兵庫県佐用郡佐用町光都1-1-1
TEL : 0791-58-1026
e-mail : furukawa@spring8.or.jp
(公財)高輝度光科学研究センター 情報処理推進室
〒679-5198 兵庫県佐用郡佐用町光都1-1-1
TEL : 0791-58-0980 ext 3758
e-mail : hiraokay@spring8.or.jp
(公財)高輝度光科学研究センター 情報処理推進室
〒679-5198 兵庫県佐用郡佐用町光都1-1-1
TEL : 0791-58-0930
e-mail : matusita@spring8.or.jp