|
| 1 | +--- |
| 2 | +layout: default |
| 3 | +title: BNC 505 |
| 4 | +parent: Supported Devices |
| 5 | +nav_order: 5 |
| 6 | +--- |
| 7 | + |
| 8 | +# Berkeley Nucleonics 505 |
| 9 | +{: .no_toc} |
| 10 | + |
| 11 | +## Table of contents |
| 12 | +{: .no_toc .text-delta} |
| 13 | + |
| 14 | +- TOC |
| 15 | +{:toc} |
| 16 | + |
| 17 | +## Description |
| 18 | + |
| 19 | +The Berkeley Nucleonics 505 is a multi-channel pulse/delay generator. |
| 20 | +The delaygen module provides support using StreamDevice with a |
| 21 | +protocol file. No custom driver initialization is needed beyond |
| 22 | +configuring the asyn serial port. |
| 23 | + |
| 24 | +## Communication |
| 25 | + |
| 26 | +| Setting | Value | |
| 27 | +| - | - | |
| 28 | +| Input EOS | `\r\n` | |
| 29 | +| Output EOS | `\r\n` | |
| 30 | + |
| 31 | +``` |
| 32 | +drvAsynSerialPortConfigure("serial1", "/dev/ttyS0", 0, 0, 0) |
| 33 | +asynOctetSetInputEos("serial1", -1, "\r\n") |
| 34 | +asynOctetSetOutputEos("serial1", -1, "\r\n") |
| 35 | +``` |
| 36 | + |
| 37 | +## Setup |
| 38 | + |
| 39 | +The BNC 505 uses StreamDevice, so the protocol search path must be |
| 40 | +set before loading the databases: |
| 41 | + |
| 42 | +``` |
| 43 | +epicsEnvSet("STREAM_PROTOCOL_PATH", "$(DELAYGEN)/db") |
| 44 | +``` |
| 45 | + |
| 46 | +No driver initialization command is needed. The databases reference |
| 47 | +the asyn port name directly. |
| 48 | + |
| 49 | +## Databases |
| 50 | + |
| 51 | +The BNC 505 uses two database files: one for global instrument |
| 52 | +settings and one loaded per pulse channel. |
| 53 | + |
| 54 | +### BNC_505.db |
| 55 | + |
| 56 | +Global instrument controls. Load once per instrument. |
| 57 | + |
| 58 | +| Macro | Description | |
| 59 | +| - | - | |
| 60 | +| P | PV name prefix | |
| 61 | +| R | PV name infix | |
| 62 | +| PORT | Asyn port name (e.g., "serial1") | |
| 63 | + |
| 64 | +``` |
| 65 | +dbLoadRecords("$(DELAYGEN)/db/BNC_505.db", "P=delaygen:,R=BNC:,PORT=serial1") |
| 66 | +``` |
| 67 | + |
| 68 | +### BNC_505_Pn.db |
| 69 | + |
| 70 | +Per-pulse-channel controls. Load once for each pulse channel, setting |
| 71 | +the `N` macro to the channel number. |
| 72 | + |
| 73 | +| Macro | Description | |
| 74 | +| - | - | |
| 75 | +| P | PV name prefix | |
| 76 | +| R | PV name infix | |
| 77 | +| N | Pulse channel number (e.g., 1, 2, 3, ...) | |
| 78 | +| PORT | Asyn port name (e.g., "serial1") | |
| 79 | + |
| 80 | +``` |
| 81 | +dbLoadRecords("$(DELAYGEN)/db/BNC_505_Pn.db", "P=delaygen:,R=BNC:,N=1,PORT=serial1") |
| 82 | +dbLoadRecords("$(DELAYGEN)/db/BNC_505_Pn.db", "P=delaygen:,R=BNC:,N=2,PORT=serial1") |
| 83 | +``` |
| 84 | + |
| 85 | +## Features |
| 86 | + |
| 87 | +The global database (`BNC_505.db`) provides: |
| 88 | + |
| 89 | +- **Run/Stop** -- Start and stop pulse generation, with running |
| 90 | + status feedback. |
| 91 | +- **Period** -- Set the pulse period with tweak controls. |
| 92 | +- **Mode** -- Normal, single, burst, or duty cycle operation. |
| 93 | +- **External input** -- Mode, level, edge, and polarity settings for |
| 94 | + the external trigger input. |
| 95 | + |
| 96 | +The per-pulse database (`BNC_505_Pn.db`) provides for each channel: |
| 97 | + |
| 98 | +- **State** -- Enable or disable the pulse channel. |
| 99 | +- **Width and Delay** -- Set pulse width and delay, each with tweak |
| 100 | + controls. |
| 101 | +- **Sync** -- Select the synchronization source (T0-T8). |
| 102 | +- **Polarity and Amplitude** -- Output signal configuration. |
| 103 | +- **Mode** -- Channel-specific operating mode. |
| 104 | +- **Gating** -- Gate control for the pulse channel. |
0 commit comments