docs: the E-1608 source kind, its probe readings and its unverified commands
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
2e9f9664cf
commit
3093568d11
5 files changed
+138
-5
No files matched your search
@@ -115,11 +115,40 @@ document describes everywhere else, and it is the default: `--server`, `--port`,
|
||||
`--help` lists the registered kinds. A second kind, `probe` (a synthetic sine with one panel), is registered
|
||||
only when `UDPSCOPE_PROBE_SOURCE_KINDS` is set, and exists only for the self-check.
|
||||
|
||||
The second built-in kind is the **MCC E-1608** Ethernet DAQ (8 single-ended or 4 differential 16-bit inputs, two
|
||||
analog outputs, eight digital lines and a 32-bit counter). Its connection form takes an address, or a MAC address
|
||||
to look up (optionally with the subnet to sweep), and groups the acquisition settings (scan rate, external clock,
|
||||
trigger, restart after an overrun, factory calibration, the digital poll rate), a range per analog input, and the
|
||||
direction and initial value of each digital line. The analog inputs are the plotted channels; each digital input
|
||||
and the counter is an extra channel only if you ask for it. Two side-stack tabs belong to it: **Analog out**
|
||||
(per DAC: a static level, or a sine, square, triangle or ramp from 0.1 to 10 Hz) and **Digital I/O** (a live LED per
|
||||
input bit, a switch per output bit, the counter with a reset); they are insensitive while no board is connected.
|
||||
Acquisition is hardware-paced only (the scan rate or an external clock), the channels times the rate must stay at
|
||||
or below 250 kS/s, and the form refuses more. With the command-line options, a run that names no `aiN` key gets
|
||||
`ai0=BIP10V`; naming any `aiN` key drops that default, so `ai1=BIP5V` alone is channel 1 alone.
|
||||
|
||||
**This kind has not been run against a board.** It is verified against `tools/mock_e1608.py`, a protocol mock written
|
||||
from two independent implementations of the wire protocol. The following rest on a single reference or the two
|
||||
disagree, and are the first thing to check when a board is attached (the mock's header lists the same items):
|
||||
the counter reset command (0x31, from one reference only); the pacer value (the source sends the *aggregate*
|
||||
rate, `round(80e6 / (scan_rate * channels) - 1)`, as one reference does; the other sends the per-channel
|
||||
frequency); the scan-start trigger option bits (none 0, rising 4, falling 8, high 12, low 16, one reference only);
|
||||
whether the handshake may answer status 2 ("code ignored"; one reference accepts it, the other refuses it, and the
|
||||
source accepts it); the first frame id; and the maximum frame size. Two further things
|
||||
are worth a look on a board even though the mock's header does not flag them: the calibration memory layout and
|
||||
its coefficient type, and the status word's bits, in particular whether the "scan running" bit stays set while the
|
||||
board waits for a trigger (the source restarts a scan that reads as stopped when auto-restart is on). The DIFF input
|
||||
numbering (channel + 8) and the filler byte after scan start are agreed by both references. The scan overrun count
|
||||
is approximate: the board does not say how many scans it dropped, so the frame after a restart reports one lost.
|
||||
Errors (no device, a rejected connection code, a timeout, the scan socket closing) are written to stderr as
|
||||
`[e1608] ...` once per distinct message; the window shows only that the source is disconnected (the status popover
|
||||
reads `waiting`, and the panels go insensitive), not why.
|
||||
|
||||
A session file written before kinds existed has no `source_kind`, and is read as UDPS; a UDPS file is
|
||||
written exactly as before. A kind's capability panels (for instance a source's own controls) appear as
|
||||
pages of the side stack, and are insensitive rather than hidden while no source is connected.
|
||||
|
||||
Planned, each as its own sub-project: a flat UDP kind, the MCC E-1608 and ABScope. ABScope has more than one
|
||||
Planned, each as its own sub-project: a flat UDP kind and ABScope. ABScope has more than one
|
||||
timebase, so it will change the frame and the data path together rather than fit the present single-timebase
|
||||
frame.
|
||||
|
||||
|
||||
Reference in new issue
Block a user