SCPI 34970A连接异常

本文关键字:异常 连接 34970A SCPI | 更新日期: 2023-09-27 18:15:09

我试着在Keysights社区页面上写这个问题,但显然他们缺乏社区。但是,我希望这里有人能帮助我。

无论如何,我写了一个程序,大约每分钟与安捷伦34970A交谈(取决于输入值的变量,也取决于输入值的随机),并扫描近20个通道。然后解析所有数据并确保一切正常。我遇到了几个问题,我已经解决了大部分问题,然而,我现在被一个问题卡住了。

有时候,当我第一次尝试连接到仪器时,我得到一个异常。该异常的简短版本是:

Keysight.CommandExpert.InstrumentAbstraction.CommunicationTimeoutException was unhandled
HResult=-2146233088
Message=Timed out while trying to query instrument errors
Source=Keysight.CommandExpert.Scpi
Timeout=10000

我用c#写了我的代码,就像我说的,当我试图连接到仪器时,它就会发生。这行代码是:Ag3497x v34970A = new Ag3497x("ASRL1::INSTR");如何处理这个异常?最初我使用的是IVI-COM驱动程序,但发现它们既笨重又不可靠。我在这里读到一个人喜欢SCPI命令,所以我切换到这些。但是,当我使用IVI驱动程序时,有一个关闭连接的命令。我用SCPI命令找不到。这是问题的一部分吗?

我用来与34970A交谈和读取数据的完整代码如下:字符串读数= null;

Ag3497x v34970A = new Ag3497x("ASRL1::INSTR");
v34970A.SCPI.RST.Command();
v34970A.SCPI.DISPlay.TEXT.Command("CYCLE TESTER");
v34970A.Transport.DefaultTimeout.Set(-1);
v34970A.SCPI.CONFigure.VOLTage.AC.Command(100, "MAX", "@101:116");
v34970A.SCPI.SENSe.VOLTage.AC.BANDwidth.Command(1000, "@101:117");
v34970A.SCPI.CONFigure.VOLTage.AC.Command(10, "MAX", "@117");
v34970A.SCPI.SENSe.VOLTage.AC.BANDwidth.Command(1000, "@117");
v34970A.SCPI.CONFigure.VOLTage.AC.Command(300, "MAX", "@119");
v34970A.SCPI.SENSe.VOLTage.AC.BANDwidth.Command(60, "@119");
v34970A.SCPI.CONFigure.TEMPerature.Command("TCouple", "K", 1, "MAX", "@118");
v34970A.SCPI.ROUTe.SCAN.Command("@101:119");
v34970A.SCPI.TRIGger.COUNt.Command(1);
v34970A.SCPI.READ.QueryAllData(null, out readings);

根据编写程序的测试要求,我将此代码运行多达10,000次。我是通过SERIAL连接的,正如你在代码中看到的。

无论如何,任何帮助都会非常感激。我相信您可以理解,当一个程序在10000次循环中的8000次失败时,它可能会非常沮丧,特别是当10000次循环需要10天以上才能完成时。真的,也许我会很幸运,有人会知道我如何防止这种情况,但我真的在寻找一种方法来处理这个异常,当它确实发生时,假设它不能被阻止。所以说真的,这篇长文是在问如何处理异常。我已经搜索过了,但是这个答案暗示了我。如果您想知道任何其他细节,请告诉我,我会及时提供给你。

再次感谢,

Josh

SCPI 34970A连接异常

几点建议:

  • 为什么每次迭代都要调用Ag3497x构造函数?只构建一次设备并重复使用。
  • 波特率是多少?电缆长度?考虑更短的电缆和更小的波特率。
  • 考虑使用像这样的串行端口嗅探器嗅探出在此异常发生时端口中究竟发生了什么。
  • 如果其他一切都很好,似乎是Visa驱动程序中的一些问题,如果您没有Keysights的一些响应,请考虑使用不同的签证驱动程序或使用SerialPort实现自己的。