|   | 1 | = 小ネタ:パルス出力を出したい = | 
          
          
            |   | 2 |  | 
          
          
            |   | 3 | 機器制御をするとき、ON/OFFのレベル出力を出すときにはbinary output レコードが便利ですが、 | 
          
          
            |   | 4 | 場合によってはパルス出力を出したいことがあります。 | 
          
          
            |   | 5 | 以前には、 | 
          
          
            |   | 6 | {{{ | 
          
          
            |   | 7 | bo (set 1) -> TaskDely record (watchdog record) ->bo (set 0) | 
          
          
            |   | 8 | }}} | 
          
          
            |   | 9 | みたいなレコードリンクを作ったこともありました。が、あるとき Record Reference Manual をみてみると、bo | 
          
          
            |   | 10 | レコードにはHIGHフィールドがあって、 | 
          
          
            |   | 11 | {{{ | 
          
          
            |   | 12 | HIGH    Seconds to Hold High  FLOAT | 
          
          
            |   | 13 | }}} | 
          
          
            |   | 14 | などと書いてあることに気づいた( https://wiki-ext.aps.anl.gov/epics/index.php/RRM_3-14_Binary_Output ) | 
          
          
            |   | 15 |  | 
          
          
            |   | 16 |  | 
          
          
            |   | 17 | テストレコードを作成 | 
          
          
            |   | 18 | {{{ | 
          
          
            |   | 19 | record(bo, "obina:pulse") { | 
          
          
            |   | 20 |   field("DESC", "binary output") | 
          
          
            |   | 21 |   field("ONAM", "ON") | 
          
          
            |   | 22 |   field("ZNAM", "OFF") | 
          
          
            |   | 23 |   field("HIGH", "0.2") | 
          
          
            |   | 24 | } | 
          
          
            |   | 25 | }}} | 
          
          
            |   | 26 |  | 
          
          
            |   | 27 |  | 
          
          
            |   | 28 | camonitorで測定しながら値を1にセットする、{{{caput obina:pulse 1 }}} | 
          
          
            |   | 29 |  | 
          
          
            |   | 30 | {{{ | 
          
          
            |   | 31 | obina:pulse                    2012-06-18 17:46:07.046824 ON | 
          
          
            |   | 32 | obina:pulse                    2012-06-18 17:46:07.244182 OFF | 
          
          
            |   | 33 | obina:pulse                    2012-06-18 17:46:22.543104 ON | 
          
          
            |   | 34 | obina:pulse                    2012-06-18 17:46:22.740631 OFF | 
          
          
            |   | 35 | }}} | 
          
          
            |   | 36 | ちゃんと設定通り0.2秒後にON→OFFになっている。 | 
          
          
            |   | 37 |  | 
          
          
            |   | 38 |  | 
          
          
            |   | 39 | ディレイ値はランタイムで変更可能なので、 | 
          
          
            |   | 40 | {{{caput obina:pulse.HIGH 10.0 }}}と設定してみる。 | 
          
          
            |   | 41 | {{{ | 
          
          
            |   | 42 | obina:pulse                    2012-06-18 17:46:47.725375 ON | 
          
          
            |   | 43 | obina:pulse                    2012-06-18 17:46:57.723736 OFF | 
          
          
            |   | 44 | }}} | 
          
          
            |   | 45 | 特に問題無し。ちゃんとAsyncで動いているので、10秒のあいだ他の制御をブロックすることもありません。 | 
          
          
            |   | 46 |  | 
          
          
            |   | 47 | レコードリンクを使わなくとも、これ1つでパルス出力が出せる、というお話しでした。 |