Posted Fri, 20 Jan 2023 15:31:01 GMT by Sotnikov, Stanislav
DMM7510 does not react to the external trigger event caused by receiving "*trg" via SCPI interface over LAN.  Consider the following trigger model to reproduce the issue:

```lua
trigger.model.setblock(1, trigger.BLOCK_BUFFER_CLEAR, measure_buffer)
trigger.model.setblock(2, trigger.BLOCK_MEASURE_DIGITIZE, measure_buffer, trigger.COUNT_INFINITE)
trigger.model.setblock(3, trigger.BLOCK_WAIT, trigger.EVENT_COMMAND)
trigger.model.setblock(4, trigger.BLOCK_MEASURE_DIGITIZE, measure_buffer, trigger.COUNT_STOP)
```

Where `measure_buffer` is a buffer initialized prior loading the trigger model as
```lua
measure_buffer = buffer.make(12)
measure_buffer.fillmode = buffer.FILL_CONTINUOUS
```

During step 3 of the trigger model presented above, the host computer sends a "*trg" command, which is ignored by the instrument, that is the instrument does not transition to step 4, which contradicts the behavior described on page 13-337 of the reference manual (DMM7510-901-01 Rev. C / September 2019).

Despite ignoring the trigger event, the instrument stays responsive to the host queries. This way we can verify the the instrument is indeed stuck at step 3 of the trigger model by polling the active state.

```lua
print(trigger.model.state())
```

When the trigger event is ignored, the instrument does not display any warning messages (on the front panel screen). Furthermore, the instrument continues providing valid measurements, which can be extracted with

```lua
printbuffer(1, measure_buffer.n, measure_buffer.readings, measure_buffer.relativetimestamps)
```

Note, that the relative timestamps polled form the instrument, even after multiple consecutively ignored trigger events, keep increasing.


Also note that this issue is not present when running the same script on DMM6500, in which case the instrument properly reacts to the trigger event.

Both DMM6500 and DMM7510 discussed above are running v1.7.7b firmware versions.
Posted Fri, 20 Jan 2023 16:23:35 GMT by A, Jake
Hello,

Due to the complexity of this request, please submit a support case and one of our engineers will be able to address your question more thoroughly.
https://www.tek.com/en/support/contact-technical-support

Thank you
Posted Fri, 20 Jan 2023 16:27:33 GMT by Sotnikov, Stanislav

I have submitted two tickets with technical support and received no response (not even a confirmation email).

Posted Tue, 24 Jan 2023 15:47:01 GMT by Sotnikov, Stanislav

Just submitted another ticket after being reached out by email and received confirmation. Thanks for investigating this.

Posted Tue, 07 Feb 2023 19:40:21 GMT by C, Andrea
Closing the loop on this one.

Suggest updating firmware to latest (1.7.12b) ;  you are at 1.7.7b.

Even so, when using the integrating A/D, we are able to duplicate the issue with DMM7510 but not with DMM6500.
A bug has been logged for DMM7510 behavior.

Workarounds if using DMM7510:

First:  your trigger model operation is essentially sampling until told to stop;  You could get to essentially same outcome by making use of abort() command to stop an infinite count acquisition into a recycled finite sized buffer.

Second:  your trigger model operation will work and *TRG can be detected/used to stop it if the digitizing A/D is used instead of the integrating A/D.

Here is a code sample:
my_instr.write("reset()")
my_instr.write("errorqueue.clear()")

#comment out the use of integrating A/D
#my_instr.write("dmm.measure.func = dmm.FUNC_DC_VOLTAGE")
#my_instr.write("dmm.measure.range = 0.1")

​​​​​​​#use the digitizing A/D
my_instr.write("dmm.digitize.func = dmm.FUNC_DIGITIZE_VOLTAGE")  
my_instr.write("dmm.digitize.range = 0.1")
my_instr.write("dmm.digitize.samplerate = 10e3")
my_instr.write("dmm.digitize.aperture = dmm.APERTURE_AUTO")

my_instr.write("measure_buffer = buffer.make(12)")
my_instr.write("measure_buffer.fillmode = buffer.FILL_CONTINUOUS")

my_instr.write("trigger.model.setblock(1, trigger.BLOCK_BUFFER_CLEAR, measure_buffer)")
my_instr.write("trigger.model.setblock(2, trigger.BLOCK_MEASURE_DIGITIZE, measure_buffer, trigger.COUNT_INFINITE)")
my_instr.write("trigger.model.setblock(3, trigger.BLOCK_WAIT, trigger.EVENT_COMMAND, \
                                              trigger.CLEAR_ENTER, \
                                              trigger.WAIT_OR, \
                                              trigger.EVENT_DISPLAY)")
my_instr.write("trigger.model.setblock(4, trigger.BLOCK_MEASURE_DIGITIZE, measure_buffer, trigger.COUNT_STOP)")

You must be signed in to post in this forum.