| Version 4 (modified by , 14 months ago) ( diff ) |
|---|
channel filter
EPICS 3.15.1以降に正式実装された機能で、JSON フィールド修飾子を使用してフィルターとパラメーターを選択して、各レコードに分割することができる機能です。
中でも特に有用だと思われるのがArray filterです。
今までwaveformやaaiのようなレコードから一部のデータを切り出して別レコード化するには、SNCsequencerやasubレコード等で分割するのが常でしたが、array filterを使うことで同様の処理が簡単にできるようになり、処理内容も見やすくなります。
使い方は、Channel Filtersの例題を見ればすぐにわかると思いますので、活用してみてください。
(注意) 但し、recordのINP fieldでDB Linkされるのは、EPICS base R7.0.5以降です。それ以前のEPICS baseでは caget では機能しますが、INP fieldでは "CP"を付けないと正常に動作しません。
EPICS Base の違いによる動作
テスト用database fileをsoftIOCで実行。
record(waveform, "TEST:wf") {
field(FTVL, "DOUBLE")
field(NELM, "10")
field(FLNK, "TEST:d1")
}
record(ai, "TEST:d1") {
field(INP, "TEST:wf.[0:0]")
field(FLNK, "TEST:d2")
}
record(ai, "TEST:d2") {
field(INP, "TEST:wf.[5:5]")
field(FLNK, "TEST:d3")
}
record(aai, "TEST:d3") {
field(INP, "TEST:wf.[1:4]")
field(FTVL, "DOUBLE")
field(NELM, "4")
field(FLNK, "TEST:d4")
}
record(aai, "TEST:d4") {
field(INP, "TEST:wf.[1:2:10]")
field(FTVL, "DOUBLE")
field(NELM, "4")
}
EPICS Base R7.0.5以降
R7.0.7でテスト
$ caput -a TEST:wf 10 1 2 3 4 5 6 7 8 9 10 Old : TEST:wf 10 0 0 0 0 0 0 0 0 0 0 New : TEST:wf 10 1 2 3 4 5 6 7 8 9 10 $ caget TEST:d1 TEST:d1 1 $ caget TEST:d2 TEST:d2 6 $ caget TEST:d3 TEST:d3 4 2 3 4 5 $ caget TEST:d4 TEST:d4 4 2 4 6 8
EPICS Base R7.0.5より前
R7.0.3でテスト
$ caput -a TEST:wf 10 1 2 3 4 5 6 7 8 9 10 Old : TEST:wf 10 2.50321e-308 0 0 0 0 0 0 0 0 0 New : TEST:wf 10 1 2 3 4 5 6 7 8 9 10 $ caget TEST:d1 TEST:d1 1 $ caget TEST:d2 TEST:d2 1 $ caget TEST:d3 TEST:d3 4 1 2 3 4 $ caget TEST:d4 TEST:d4 4 1 2 3 4
Note:
See TracWiki
for help on using the wiki.
