= 小ネタ:パルス出力を出したい = 機器制御をするとき、ON/OFFのレベル出力を出すときにはbinary output レコードが便利ですが、 場合によってはパルス出力を出したいことがあります。 以前には、 {{{ bo (set 1) -> TaskDely record (watchdog record) ->bo (set 0) }}} みたいなレコードリンクを作ったこともありました。が、あるとき Record Reference Manual をみてみると、bo レコードにはHIGHフィールドがあって、 {{{ HIGH Seconds to Hold High FLOAT }}} などと書いてあることに気づいた( https://wiki-ext.aps.anl.gov/epics/index.php/RRM_3-14_Binary_Output ) テストレコードを作成 {{{ record(bo, "obina:pulse") { field("DESC", "binary output") field("ONAM", "ON") field("ZNAM", "OFF") field("HIGH", "0.2") } }}} camonitorで測定しながら値を1にセットする、{{{caput obina:pulse 1 }}} {{{ obina:pulse 2012-06-18 17:46:07.046824 ON obina:pulse 2012-06-18 17:46:07.244182 OFF obina:pulse 2012-06-18 17:46:22.543104 ON obina:pulse 2012-06-18 17:46:22.740631 OFF }}} ちゃんと設定通り0.2秒後にON→OFFになっている。 (普通のLinuxなのでリアルタイムの正確性はない。Tickの分だけ遅れるのも当然。) 目的によっては十分だろう。 ディレイ値はランタイムで変更可能なので、 {{{caput obina:pulse.HIGH 10.0 }}}と設定してみる。 {{{ obina:pulse 2012-06-18 17:46:47.725375 ON obina:pulse 2012-06-18 17:46:57.723736 OFF }}} 特に問題無し。ちゃんとAsyncで動いているので、10秒のあいだ他の制御をブロックすることもありません。 レコードリンクを使わなくとも、これ1つでパルス出力が出せる、というお話しでした。