EPICS内蔵小型デバイスサーバの開発
帯名 崇 / KEK
路川 徹也 / (株)東日本技術研究所

2014/08/11 加速器学会年会（青森）本日の内容1. 開発の動機
2. ハードウェア候補と選定
3. ハードウェア設計・製作
4. ソフトウェア
5. デバイスサーバとしての利用実績
6. その他
7. まとめと情報公開について１．動機• 加速器制御の一般論として– 遠隔地から多数の機器を制御することが必要：ネットワーク経由

制御プログラム開発者が少ない or 対象機器が少ないならば、単純な通信と制御のプログラムで十分。しかし加速器では事実上不可能

制御フレームワーク
複数の開発者・プログラム・装置が有機的に連携するには「制御フレームワーク」が必須: EPICS, MADOCA, TANGO等

EPICSの場合• 対象となるデバイスを入出力コントローラ(IOC,Input-Output Controller)が制御• IOCはPCだったり、VMEだったり、PLCだったり、色々なパターンがある• 制御対象デバイス依存部分

フィールドバス

制御対象PC
RS232C
GPIB等
DeviceADC
DACDIO
DIO

IOC

CPU

DeviceVME, cPCICAMAC等

DevicePLC

DeviceDeviceDeviceEPICS : 通信プロトコル
チャンネルアクセス(CA)プロトコルを通して状態変数(PV, Process Variable)のやりとりをする– 上位層との通信、IOC間の通信ともにCAを使用– デバイス非依存、ネットワーク透過、分散型
Presentation

ServerOperator
Operator
ConsoleOperator
ConsoleConsoleArchiveCA

Ethernet
CA

フィールドバス

制御対象

PC
RS232C
GPIB等
Device

ADC
DAC
DIO
DIO

IOC

CPU

DeviceVME, cPCICAMAC等

DevicePLC

DeviceDeviceDevice新しい装置（市販品）を買ってきたとき既存の制御フレームワークに合わせる必要あり

CA

CA

CA

しかし、現実には最初から加速器制御フレームワークに準拠している製品など、市販品にはほとんど存在しない：何らかの形で対処が必要

CA
CA

CA

CA

CA

EPICSの場合：１つの理想形
デバイスにEPICS IOC を内蔵しているCA
Ethernet

EPICS IOC内蔵Device

買ってきたものにEthernet付き
EPICS IOC が動き、CAで通信できる電源いれてEthernetつないだらおしまい！

しかしそんな製品は(ほぼ)市販していない

現状：RS232C機器を例にしてEthernet変換器（メディアコンバータ）を使用– IOCと対象デバイスとの距離が長くても良い– １つのIOCで複数デバイス制御も楽

SocketCAIOC
Ethernet

Ethernet

Media
Converter

DeviceUSB
RS232, RS422, RS485, etc

PCにポートを増設して… とか、RS485の専用線を引っ張って … とか苦労していた時代にくらべるとかなり楽になった

製品例• RS232C をイーサネット変換する
Socket

RS232
M.C.
Device
RS485
M.C.
DevicePC/IOC

M.C.
Ethernet

DeviceDeviceDeviceDeviceDeviceSerial-Ether メディアコンバータ
各社から出ている: 値段も機能も多種多様
1ポートのほか、多ポート（4, 8, 16 port）の製品もある

http://www.lantronix.jp/products/xport.shtml

http://japan.moxa.com/

EPICS + メディアコンバータで制御する例• サーバ計算機で Soft IOC を動かして制御する
論理構成

物理構成
Linux Server
Software IOC

CA Client
CAEthernet

Channel Access
DB Access
IOC Database
Stream Device
Socket I/O
SocketEthernet

SoftIOC

Channel Access
DB Access
IOC Database
Stream Device
Socket I/O

CA Client
CASocket
Ethernet

Serial-Ether変換

Serial-Ether変換

RS232C Device

RS232C Device

Soft IOC + メディアコンバータ構成の欠点• トラフィック増加につながる• Socket通信の初期化や障害後の再接続など、セッション管理を自分でおこなう必要がある（CAでは規定済み）
Linux Server
Software IOC
Channel Access
DB Access
IOC Database
Stream Device
Socket I/O

Socketセッション管理
MC製品に依存する場合があり、多種多数の変換器を使うと管理がたいへん。
(対象デバイス数が少なければ大した負荷ではない)

CA ClientCA
Ethernet

Serial-Ether変換

RS232C Device

ネットワークトラフィックのムダ

低速シリアル通信では問題になることは無い

すこしでも理想に近づきたい
外付けの小型デバイスサーバがあれば良い
SocketCAIOC
Ethernet

Media
Converter

Ethernet

CA
Ethernet

DeviceUSB
RS232, RS422, RS485, etc

DeviceServerDevice
USB
RS232, RS422, RS485, etc

EPICS IOC 内蔵の小型デバイスサーバを用意する(PoEかUSB給電の方が理想)
対象機器の近くに設置。そこから先はCAによって通信EPICS内蔵デバイスサーバの場合• 理想的な構成に少し近づく
論理構成

物理構成
CA Client

CA Client
Ethernet
CACA

Device Server
Ethernet

Channel Access
DB Access
IOC Database
Stream Device/dev/ttyS0

Serial
RS232C Device

IOCIOCDevice Server

Channel Access
DB Access
IOC Database
Stream Device/dev/ttyS0
Serial
RS232C Device

デバイスサーバの利点• デバイス制御用の通信と、CAネットワークの分離– トラフィック軽減：必要なデータのみCAで通信– Socket通信部分のセッション管理不要：安定した制御実現• 管理が容易• 安価に製作可能• 小型、低消費電力

EPICS内蔵小型デバイスサーバを製作する

本日の内容1. 開発の動機
2. ハードウェア候補と選定
3. ハードウェア設計・製作
4. ソフトウェア
5. デバイスサーバとしての利用実績
6. その他
7. まとめと情報公開について小型デバイスサーバの設計方針• イメージ概略
拡張ボード

I/O

Ethernet

Linux OS
ベースボードOS(EPICS IOC)はベースボード側にもたせる拡張ボードを交換することで目的に応じたI/Oに交換できるように（RS232C, USB, A/D, D/A, DIO など）

自作 or 市販品？
開発にかかるコスト（お金と時間の両方）を節約• ベース部分は市販品を利用• 必要に応じて、拡張部分のみ自作する• ハード・ソフトともに多くの情報が得られるベース製品を選定するという方針を決定した

ベースとなるハードウェア候補
名刺サイズ小型ボード

ArduinoRaspberry Pi (model B)

BeagleBone BlackRaspberry Pi (model B+)

候補、比較１
BeagleBone
Black(Rev.C)

Raspberry Pi(ModelB)

Arduino Uno

CPU

TI AM3359(ARM Cortex-A8)

Broadcom BCM2835(ARM11)

Atmel ATMega 328

Speed

1 GHz

700 MHz

16 MHzRAM

512MB DDR3L@400MHz

512MB SDRAM@400MHz

2 KB

StorageOnboard eMMC 4GB
microSD slot

SD slot

32 KB Flash

I/O(GPIO)

65820ADC

7n/a8

Ethernet

10/100 x1

10/100 x1

n/aOS

Debian(default)
Angstrom Linux
Fedora etc

Raspbian(Debian)Pidora(Fedora)
ARCH linux etc

n/aSize [mm]86.4 x 53.3

85.6 x 54

75 x 53.3

Price¥ 6,500¥ 3,940¥ 3,024

候補、比較２
Armadillo 840

SuzakuGalileoCPU

Renesas R-Mobile A1(ARM Cortex-A9)

Xilinx Vertex-4(PowerPC405)

Intel Quark Soc X1000

Speed

792 MHz

350 MHz

400 MHzRAM

512MB DDR3@800MHz

64MB DDR2

256MB
DDR3@800MHz

StorageOnboard 128MB

Onboard 8MB

Onboard 8MB
microSD Slot

I/O(GPIO)

112

8620ADCn/an/a8Ethernet

10/100 x1

10/100 x1

10/100 x 1

OS

Debian(ATDE5)

Linux(ATDE5)Linux

Size[mm]

98 x 60

72 x 47

106.8 x 72

Price

¥ 32,400¥ 42,000¥ 7,693

(参考資料)CPU速度比較
CPU

Dhrystone MIPS値DMIPS/MHzVAX-11/780

1MIPS @ 5MHz

0.2

ARM2

4 MIPS @ 8 MHz

0.5

Motorola 68030

11 MIPS @ 33 MHz

0.3Intel 386DX

11.4 MIPS @ 33 MHz

0.3

Motorola 68060

88 MIPS @ 66 MHz

1.33

ARM Cortex M3

125 MIPS @ 100MHz

1.25

Intel Pentium

188 MIPS @ 100 MHz

1.88

PowerPC 750

525 MIPS @ 233 MHz

2.3

PowerPC 405

608 MIPS @ 400 MHz

1.52

Virtex４

ARM11 v6KZ

875MIPS @ 700MHz

1.25

RasPi

ARM Cortex A8

2,000 MIPS @ 1.0 GHz

2.0

BBB

Intel Atom N270 (Single core)

3,846 MIPS @ 1.6 GHz

2.4

ARM Cortex A15 (Quad core)

35,000 MIPS @ 2.5 GHz

14.0Intel Core i7 Extreme Edition 990x

159,000 MIPS @ 3.46 GHz

46.0

ベースとなるモジュール候補比較• 用途と傾向（主観含む）
デスクトップ系(高スペックCPU)

μTCA
ATCA
cPCI

デスクトップPC + PCI
工業用PC + PCI
Galileo
ホビー用途

VME
業務用途
（I/O数、価格）

BeagleBone
Black
RaspberryPi

Armadillo
ZynQ組み込み系
SuzakuArduinoXPort
組み込み系（低消費電力、小型）
注：厳密な性能比較図ではありません。大凡の傾向として見てください最初のApplication：RS232C機器のデータ取得
cERLシールド壁４か所に設置したエリアモニタ12台の監視→ 4-Port RS232C用 Device Server を４台 製作する
詳細後述
これに適したボードは何か？
BeagleBone
BlackRaspberry Pi

ArduinoRS232C
4port以上○
HWで最大5.5×
HWで最大2△
HWで１、SWで４Ethernet○○△
Shieldあり

OS & Epics○Linux○Linux×n/a

今後の拡張性も考慮ハードウェア選定基準• CPUパワー• I/Oの数• OS– EPICS環境構築が容易（Linux）• 価格• 入手が容易• RS232C ホスト機能必須– USB ホスト機能があればより良いベースとなる製品としてBeagleBone Black (BBB) を選定した

疑問

これ、大丈夫なの？

信頼性とか、サポートとか、色々と（当面の）結論

まず、やってみよう
安い:「市販品」の威力絶大
壊れたら交換する方針で。
Criticalな所に使わなければ良い。
自分で一から製作したからといって信頼性があるとは言えない。

本日の内容1. 開発の動機
2. ハードウェア候補と選定
3. ハードウェア設計・製作
4. ソフトウェア
5. デバイスサーバとしての利用実績
6. その他
7. まとめと情報公開について

BeagleBone Black を選定したその他の理由• 開発者コミュニティがある• オープンソースハードウェア：情報が全て公開されている• “Cape”という拡張ボードの規格が整備されている• Cape開発者が多数存在し、情報も公開されている• OSは Linux Angstrom Debian• 各種I/Oコネクタ配置が組み込みに適しているCapeとは？
• BBB拡張ボードの規格で、ボード上のEEPROMに対応するdriverが自動的に読み込まれる仕組み• EEPROMをI2Cの特定アドレスに接続• “Cape”を変えることで簡単に機能を追加、変更できる

起動なし

EEPROMあり

driver名取得

なし

driverあり

PIN設定変更

Cape用BBB“BeagleBone Black System Reference Manual”
http://elinux.org/Beagleboard:BeagleBoneBlack

通常BBB

BBB拡張ボード Header Mode
• “Cape”でHeaderのモードを設定• 拡張Header Modeは０～7まで• モードの変更はEEPROMかdriverで行う• 各PIN毎に別のモードを設定可能

Mode 0Mode 6
引用元: http://elinux.org/Beagleboard:Cape_Expansion_Headers市販品Cape• 国内外で色々なCapeが市販されている• 今回は必要な機能をもったCapeがなかったので、新規に設計・作成することにした。（単純な回路のみ）
引用元: http://elinux.org/Beagleboard:BeagleBone_Capes

Serial x4 Cape製作• Eagle CAD Free版で基板を設計• 2層基板で実装部品はDIPで設計• 基板はプリント基板メーカーに外注(約6,000円/枚)• 部品実装は自前(実装部品代は約1,500円/枚)• 次回作成時はSMT（表面実装）化予定

ケース製作• タカチ kc5-13-10をベースにして作成• 穴位置、スペーサ等のデータを作成して追加工• CADソフトはAR-CAD一般版を使用

ハードウェア完成写真

BBB

Cape

コネクタ(Dsub-9pin)
4個のサイズが大きい本日の内容1. 開発の動機
2. ハードウェア候補と選定
3. ハードウェア設計・製作
4. ソフトウェア
5. デバイスサーバとしての利用実績
6. その他
7. まとめと情報公開について

OSについて• 手軽に使える選択肢として– AngstromLinux （Rev A,B でのデフォルト）– Debian （Rev C でのデフォルト）• その他には

通常OS– Fedora– Android– VxWorks– OpenRTM-aist– RT-PREEMPT– Xenomai

RTOS

通常Linux
RTパッチ

ソフトウェア開発• RTOSが必要？

→ 今回は不要• デフォルトのAngstrom Linuxで作成した– 情報は多い– よく使われるLinux（RedHat, Debian等）と設定方法が少し違うので、最初は手間取った• 開発環境– セルフコンパイル環境。BBBにログインして開発– ApplicationはNFSマウントしたディスクに配置– X環境は使わない（遅いし、メモリの無駄）

EPICS 関連• EPICS Base
– EPICS base 3.14.12.4以降ではターゲット環境としてLinux-ARMが最初から用意されており、初期設定は楽– インストール方法の詳細はwiki を参照
http://cerldev.kek.jp/trac/EpicsUsersJP/wiki/epics/bbb/epics– コンパイル時に追加Perlモジュールが必要なので、個別にインストールしていく• EPICS Extensions– よく使う Asyn, StreamDevice, Sequencer 等は全て問題なくコンパイル、実行可能• Rev. C デフォルトOSのDebianではもっと楽– 開発環境を入れて、CONFIG_SITE編集、make一発

本日の内容1. 開発の動機
2. ハードウェア候補と選定
3. ハードウェア設計・製作
4. ソフトウェア
5. デバイスサーバとしての利用実績
6. その他
7. まとめと情報公開について

ALOKA社製エリアモニタ： cERL 配置図• センサーは加速器室内に設置し、壁外に計測・表示器を取り付け• インターロックは別系統でリレー接続。RS232Cは数値取得のみ• 合計12台（橙色表示）
Box

Box

Box

Box

設置写真
製作したボックスを固定（すこし強引に仮設置…のはずがそのまま）

ソフトウェア：EPICS IOC• Asyn+StreamDeviceで作成– 放射線測定値を1秒毎に読み出す– SerialPort毎に Soft IOC を作成• IOCプログラム本体はNFSサーバに置いた• 電源ONで自動的にEPICSが動作するように設定

結果：データ取得例• リアルタイム数値表示と時系列プロット（CSSで作成）• 半年以上再起動なしで連続稼働。特に問題なし。

本日の内容1. 開発の動機
2. ハードウェア候補と選定
3. ハードウェア設計・製作
4. ソフトウェア
5. デバイスサーバとしての利用実績
6. その他
7. まとめと情報公開について

６．その他：問題点、雑感など• Onboard eMMC (Flash) からOSが立ち上がらない– 今回作成したCapeを使用したときの話– UARTで使用するGPIOのpinがeMMCと被っていた– microSDカードからは立ち上がるのでとりあえずOK– 回避策はあるが … 次回製作時に検討する予定• ケース加工が基板に比べて高い– ケース自体は1,000円、加工費が10,000円– CNCや3Dプリンタ等で安く作れないか、要検討– ケース無しでよければ安価• 「入手性が良いこと」を条件にスタートしたのに、人気のため(!?)入手困難に。今は多少改善された。

応用：多機能バージョンの製作• NIMケース版を製作した– 60 bit 3.3 V TTL Digital I/O– 6 Channel Analog IN (±10V)– 1 port RS232C (D-Sub 9pin)• 基本動作は問題無し
あとは実運用単体でも動かせるように
DC5V入力と切り替えSWLANコネクタも背面

背面

BBB

７．まとめ• 市販の名刺サイズ小型ボード BeagleBone Blackを使用した小型デバイスサーバを製作した• 思い立ってから設計・製作・運用まで短期間に実現できた• 4ポートのシリアルデバイスサーバとしてcERLの運転で使用し、半年以上問題なく連続稼働中• NIM版なども製作• BBBは Quick Prototype ベースとして非常に良い製作費用
今回(試作)

量産

4,500

6,500

microSD(4GB)

500

500

Cape基板 製造

6,000

200

部品

1,500

2,000

実装

-

1,000

11,0003,000

23,50013,200BeagleBone Black本体

ケース
合計

今回は４台製作した。表は１台あたりの値段

試作時のBBB本体価格は ¥4,500 であったが現在のRevisionで価格UPしたフラッシュメモリ容量増加 2 GB → 4 GB

参考：BeagleBone Black購入先•国内
秋月電子通商RS
マルツ
若松電商
共立エレショップ

http://akizukidenshi.com/catalog/g/gM-06867/
http://jp.rs-online.com/web/p/processor-microcontroller-development-kits/7753805/
http://www.marutsu.co.jp/shohin_238963/
http://www.wakamatsu-net.com/cgibin/biz/pageshousai.cgi?code=38330030&CATE=3833
http://eleshop.jp/shop/g/gE2P361/––

Adafruit
Digi-key

https://www.adafruit.com/products/1876
http://www.digikey.jp/product-detail/ja/BB-BBLK-000/BB-BBLK-000-REVC-ND/4842211––

Special Computing http://specialcomp.com/beaglebone/
Spark funhttps://www.sparkfun.com/products/12857

–
–
–
––

•海外

情報共有、今後の予定• 製作した基板(Cape)の情報やケース図面など、全て公開している– EPICS Users JP wiki を参照• 誰かすでに作っている例があれば情報を共有し、活発な開発につなげたい• 興味がある方は、連絡をお願いします• 今後の予定– シリアル 1 portモデル製作、4 port タイプ量産– USBホスト（既に実績あり）– PoE対応– 様々な I/O に使用 (Digital/Analog)– 単純な表示端末や入退室の表示用PCの置き換え…その他、色々とアイディアあり

Thank you !