Search code examples
visa

Writing multiple lists in SCPI


I'm not really sure how to ask this, so I hope the title is descriptive enough.

I would like to send many voltage values to a Keystone B2902A SMU, enough values that a single list could not hold them all.

My method is using C# with the VisaCom library, version 5.2

How I send the first list is by doing several procedural setups, then the lists, then arming and triggering them via external signals, before sending an INITiate for the channel(s).

I haven't had any luck so far with overwriting the stored list, and it's probably because I don't have a strong enough understanding of how SCPI works.

What would be a way to facilitate multiple lists?


Solution

  • I figured out my issue, which was indeed a lack of understanding on how SCPI works.

    The short answer: disable the triggering by using ABORt on the channels you want to change, then you can follow it up by writing a new list.

    Ex: :ABORt:ALL @(1:2), to turn off triggering for both channels.


    Part of my problem was that my external trigger was not logically triggering when I wanted it to trigger. A quick logic fix changed that issue.

    The other part I verified using Keysight's CommandExpert. When I originally wrote lists through the program, I didn't have any issues writing new lists and querying them back. But when I was running them via INIT, I was getting error -221 [settings conflict] when I tried to change the values.

    I had assumed that ARMing the system meant that they stored a read-only value (something I have seen in other contexts), but from what I understand, it locks up the settings entirely until the trigger is disabled.