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