10-07-2019 08:08 PM
I've run into an interesting problem on the ni-4140 4-channel smu, particularly when using the nidcpower python wrapper to set up handshaking with a switch matrix
When the sequence_iteration_complete_event_output_terminal is set to a trigger line(from the default empty value of "") and the state is then committed, the 4140 will reserve that trigger line.
If you gracefully exit by recommitting the attribute to the default empty value "" and commit it again before shutting down, everything works fine.
However, if the program is interrupted in any way, as is happening frequently during my programming, it is not possible to unreserve the trigger line. Reinitializing the nidcpower session and trying to set the same channel attribute with sequence_iteration_complete_event_output_terminal report a "-1073807294 specified trigger line is currently in use" error. The simple fix is to reset the chassis (well documented), as well as to programmatically unreserve the trigger line using visa commands (also well documented). According to what I've read, NIMAX can't be used.
My issue, is that, despite the well documented fix, I cannot seem to use any kinds of visa commands to unreserve the trigger line. I am able to map and unmap triggers fine, as well as call any attribute I want from the backplane, using both labview vi's and pyvisa commands, however using visa commands to unreserve the trigger line or to unmap it does not work and always produced the "specified trigger is currently in use" error.
I am somewhat convinced it may be due to the more complicated triggering of the 4140, which has independently settable triggers for all of the engines/SMUs.
10-08-2019 10:03 AM
This was first posted in nimi-python as issue 1059 . I've closed the issue since support has moved here and this doesn't appear to be a nimi-python bug.
10-08-2019 10:11 AM
From NI-DCPower's point of view, closing the session should destroy the routes and release the PXI Trigger line resources.
This can be done in many ways:
* explicitly by calling nidcpower.Session.close()
* when the nidcpower.Session object goes out of scope
* By clearing the property and committing, as you did
* Because the session is destroyed when the process (the Python interpreter) exits.
I'm very suprised you get this error. It indicates there is a bug in the routing subsystem or PXI software.
I will let our Techincal Support Engineers do more digging, but one thing that I found interesting is that you are using NI-DCPower 17.0.0. The latest version is 19.1. Can you upgrade the system so we at least aren't debugging outdated software? Maybe this bug has already been fixed.
10-08-2019 10:19 AM
Please post a short example that reproduces the problem, and the corresponding I/O Trace log.
10-09-2019 08:47 PM
I can confirm that the problem is in fact an outdated driver issue and this bug has already been resolved. I did a blanket update of most of my system drivers and the problem has gone away.
With regards to the updates, I used the NI Package Manager, which was helpful, but it didn't default to updating my instrument drivers (such as nidcpower and niswitch), but I was able to do it by specifically specifying it be updated.
10-10-2019 10:02 AM
Great to hear! Good luck.