An alternating-exposure sequence — one long frame for signal, one short frame for motion — rejects triggers or drops frames even though each exposure runs clean on its own. The failing transition is nearly always the short exposure after the long one: it ends while the previous frame's readout is still in the sensor, and the camera refuses the readout request. This procedure isolates that collision from trigger wiring, sequence advancement and host transfer loss, computes the minimum trigger interval with the arithmetic shown, and closes with a 10,000-frame acceptance test.
The mechanism: one readout path, two exposures
A sensor reads out one frame at a time. Overlap acquisition lets the next exposure integrate during that readout, which makes trigger spacing look free — until an exposure ends inside an active readout and its own readout has to wait. Cameras report the blocked request three ways: an overtrigger event on the trigger input, a discarded frame, or a silently delayed exposure start. The mechanism is identical in each case: readout n+1 cannot begin before readout n finishes.
The long-to-short transition fails first. A long exposure hides its readout behind integration time; a short exposure presents its readout immediately. GenICam standardizes the settings involved — TriggerMode On, TriggerSource Line0, TriggerActivation RisingEdge, ExposureTime in microseconds — so the same checks run on any camera whose feature set follows the standard. Your control code issues a trigger call and the sensor starts exposure at its own moment; trigger call versus exposure time separates the two events, and the arithmetic below needs the actual exposure start.
Compute the minimum trigger interval
Take three values from the camera's timing table at the region, pixel format and sensor mode you will ship:
-
E_longandE_short— the two exposure times, in ms. -
R— readout time at that region. Readout scales with row count: a 2000-row crop of a 3000-row, 5 ms readout takes 5 × 2000 / 3000 = 3.3 ms. Treat that scaling as an estimate until the timing table prints the number. -
G— margin, 0.2 ms for a 12.5 ms-class schedule, about 2% of the period.
where S_i is the actual exposure start of frame i, E_i its exposure time, R the readout time and G the margin.
Apply the second line to every adjacent pair in the repeating cycle, including the last state back to the first. The largest result is your trigger period; a negative result marks a pair that cannot collide under this model. If the trigger-to-exposure delay differs between states, equal trigger periods stop producing equal exposure-start intervals — recompute from measured starts. This block model is a first-order screen; when the timing table prints a value, the timing table wins.
Worked example: 8 ms long, 1 ms short, 5 ms readout
| Quantity | Value | Basis |
|---|---|---|
| Long exposure E_long | 8 ms | inspection setting for the well-exposed frame |
| Short exposure E_short | 1 ms | inspection setting that freezes motion |
| Readout R | 5 ms | timing table at the full 12 MP region |
| Margin G | 0.2 ms | 2% of the 12.5 ms schedule |
The long-to-short pair sets the schedule at 12.2 ms. Set a uniform trigger period of 12.5 ms, 0.3 ms above the bound. The long exposure then runs 0 to 8 ms with readout 8 to 13 ms; the short exposure starts at 12.5 ms, ends at 13.5 ms, with readout 13.5 to 18.5 ms; the next long exposure starts at 25 ms and ends at 33 ms, clear of the 18.5 ms readout end. That cadence requests 1000 / 12.5 = 80 frames per second, or 40 long-short pairs per second — the rate your PLC must emit and your link must carry.
State-dependent spacing buys the same sequence more throughput. Trigger 12.5 ms before every short frame but only 8.0 ms before every long frame: the pair period drops from 25 ms to 20.5 ms and the sequence rate rises from 40 to 1000 / 20.5 = 48.8 pairs per second.
Diagnose in order of probability
1. Count rejected triggers with GenICam counters
GenICam's counter and timer control sources counters from I/O lines and from internal events such as FrameStart. Point Counter0 at the trigger line, rising edge, so it counts incoming trigger signals; source a second counter from FrameStart to count acquired frames. After 1,000 triggers, Counter0 at 1,000 with 992 frames means eight triggers died at the sensor — spacing too tight. Both counters at 992 means the loss is downstream of acquisition.
Trigger polarity fails the same way. Trigger source and line configuration covers the two settings — TriggerSource and TriggerActivation — that decide whether the edge registers at all.
2. Confirm the sequence advanced and the exposure applied
Sequence state advances on the trigger edge, on frame start or on frame end — three schedules from one trigger train. Log ExposureTime metadata and sequencer state with every image, then check the delivered pattern is long, short, long, short. An exposure write issued mid-acquisition applies at the frame boundary the camera defines, not at the write; for deterministic per-frame values use the camera's sequencer, or pace exposures from the host. Applying camera settings while streaming gives the write-order rules.
3. Separate sensor rejection from transfer loss
A frame complete in the camera but missing at the host is transport or buffering, not trigger timing — the two counters above make that split in one read. For host-side waits that time out, software trigger timeout diagnosis lists the checks; a longer host timeout never revives a trigger the sensor rejected.
4. Slow the trigger train
Run each exposure alone at the shipping region and pixel format, then run the alternating sequence at 20 ms — comfortably above the 12.2 ms bound. Fault gone at 20 ms and back at 12 ms confirms spacing. Fault still present at 20 ms clears exposure timing: move to wiring, sequence advance or host buffers.
Pick the correction that costs least
| Correction | Use when | Cost or gain |
|---|---|---|
| Widen spacing to the worst pair | Throughput has headroom | 12.5 ms period, 80 fps, no pixel changes |
| State-dependent spacing | The easy pairs waste time | 20.5 ms pair period, 48.8 pairs/s |
| Lengthen the short exposure | Blur budget allows | 1 ms to 5 ms cuts the bound to 8.2 ms |
| Crop rows | Coverage allows | 2000 of 3000 rows: readout 3.3 ms, bound 10.5 ms |
Lengthening the short exposure is the last resort, not the first: at 0.5 m/s part speed, 1 ms smears 0.5 mm and 5 ms smears 2.5 mm. A smaller transmitted pixel format cuts link load but leaves sensor readout untouched — the collision sits upstream of the interface. And pace from the computed bound, not from a nominal frame-rate figure: a 30 fps rating describes single-exposure streaming, not the 12.2 ms long-to-short requirement.
Cameras and controller for the station
Narrow interface and sensor in the area scan cameras category or the camera finder; the schedule math then picks the model.
For a host-paced sequence on a GigE line, the LS-CMR-0053 is a 12 MP camera, 1/1.7" rolling shutter, 9 fps, GigE:
- Sensor format
- 1/1.7"
- Lens mount
- C-mount
- Interface
- GigE
- Resolution
- 12 MP
Full region on 9 fps gives a 111 ms frame period (1000 / 9) and a ceiling of 4.5 pairs per second (9 / 2); crop rows to run a faster alternation.
For faster pairs, the LS-CMR-0166 is a 12 MP USB3 camera, 1/1.7" rolling shutter, 30 fps, 4000 × 3000 resolution:
- Sensor format
- 1/1.7"
- Interface
- USB3
- Resolution
- 12 MP
- Shutter
- Rolling
At the full 4000 × 3000 region, 30 fps caps any schedule at one frame per 33.3 ms (1000 / 30), so the 12.5 ms cadence needs a cropped region. Row scaling cuts a 2000-row crop of the 3000-row sensor to about 3.3 ms readout and the long-to-short bound to about 10.5 ms; read R for that region from the timing table before committing.
When the light must pulse with each exposure, the LS-CTL-0070 is a digital light controller with a strobe operating mode:
- Output
- Constant voltage 24 V
- Channels
- 4 channels
- Control
- Digital
- Feature
- Strobe
A strobe lighting both exposures of the example pair runs at a duty cycle of 9 / 25 = 36%:
Check 36% against the light's overdrive limit in strobe duty cycle and timing, and confirm the optical rise time with LED strobe rise time measurement — an electrical pulse does not guarantee light across the exposure. Compare the light controllers category or the controller finder for the pulse widths your exposures need.
Acceptance test: 10,000 frames
- Lock ExposureTime and gain, auto algorithms off, so a brightness change cannot mask a timing fault.
- Request 10,000 alternating frames — 5,000 long-short pairs — at the production period, 12.5 ms in this example.
- Read both counters at the end: 10,000 triggers in, 10,000 frames out, 10,000 images at the host.
- Check exposure metadata on every image for the long-short pattern; one swapped pair points at sequence advance, not spacing.
- Stop and restart acquisition once mid-test; sequencers that reload to state 1 shift the pattern at the restart.
- Repeat under full processing load — host buffer starvation appears only then.
Pass is zero rejected triggers, zero missing images and the correct pattern end to end, including after the restart. Leave the counters enabled in production: a later drift then raises an alarm instead of a mystery. If the first frame after a restart comes back dark while the counters show capture, the cause is exposure settling or light timing, not readout overlap — first frame dark diagnosis covers both.
When the readout explanation is wrong
- Fault persists at 20 ms spacing: re-check polarity, line function and host buffers; exposure spacing is cleared.
- Only the first frame after an idle period fails: startup ordering — light warm-up, exposure settling, one-frame pipeline fill.
- Every image arrives but exposures do not alternate: sequence advance or write timing, step 2 above.
- Overtrigger events cluster at a fixed count interval: the trigger input is double-edge sensitive — set TriggerActivation to RisingEdge explicitly.
Keep a one-page schedule sheet with the source of every value: E and R per region, G, the computed bound, the production period and the counter readings from the acceptance test. Recompute R whenever the region, pixel format or sensor mode changes; readout moves with row count, and nothing else on the sheet warns you.
Start the camera configuration workflow with the computed schedule, or send the timing table and the pair rate you need through application support and we will check the arithmetic against the camera's timing data.
Questions
Why do alternating 8 ms and 1 ms exposures fail when each works alone?
The short exposure that follows the long one finishes 1 ms after it starts, but the long frame's readout runs 5 ms past its own exposure end. The sensor cannot start a second readout until the first finishes, so the trigger lands inside the blocked window and the camera rejects it. The minimum exposure-start interval for that pair is 8 ms + 5 ms + 0.2 ms margin - 1 ms = 12.2 ms. Trigger at or below that interval and the fault appears at every long-to-short step.
How do I count rejected triggers without a scope?
Use the GenICam counter features. Set Counter0's event source to the trigger line on the rising edge, so it counts incoming trigger signals; source a second counter from FrameStart to count acquired frames. After 1,000 triggers, Counter0 at 1,000 with 992 frames means eight triggers were rejected at the sensor, not lost in transfer. Both counters run at full trigger rate and cost no wiring.
Does overlap mode remove the readout limit?
No. Overlap lets the next exposure integrate while the previous frame reads out; it does not let two readouts share the readout path at the same time. With a 5 ms readout, an exposure shorter than the readout that ends inside the active window still collides. Overlap caps throughput near one frame per readout period; it never grants two frames per readout. Keep the exposure-start interval at or above the worst computed transition.
Should I lengthen the short exposure to clear the error?
Only when the inspection tolerates the extra integration time. Raising the short exposure from 1 ms to 5 ms cuts the long-to-short bound from 12.2 ms to 8.2 ms (8 + 5 + 0.2 - 5), but a part moving at 0.5 m/s then smears 2.5 mm during exposure instead of 0.5 mm. Widen the trigger spacing first: it changes no pixel value.
What acceptance test proves the fix?
Request 10,000 alternating frames (5,000 long-short pairs) at the production trigger interval with exposure and gain locked. Record rejected triggers, delivered frames and each image's exposure metadata. Pass requires zero rejected triggers, 10,000 delivered images and the long-short pattern on every pair, including after one stop and restart of acquisition and under full processing load. Any miss sends you back to the spacing calculation with the measured readout time.
Corrections
- Rewritten for usefulness: specific values with their basis, the named standards, a worked example, no hedging.


