| | 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つでパルス出力が出せる、というお話しでした。 |