完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我正在用VISA编程,使用E3631的RS232端口进行仪器控制。
当我向电源发送查询时,有时我会收到“查询中断”错误,这种情况大约发生在50%的时间。 以下是我对错误队列的查询示例:char buf [256] = {0}; / *错误状态* / ViStatus errstat; / *初始化VISA系统* / viOpenDefaultRM(& defaultRM); / * open DC Power 在RS-232端口上提供会话* / viOpen(defaultRM,“ASRLInstrument”,VI_NULL,VI_NULL和& vi_pwr); viPrintf(vi_pwr,“SYST:REMOTE n”); //设置远程模式//检查错误队列是否为clearederrstat = viPrintf(vi_pwr,“SYST:ERR? n”); if(errstat!= VI_SUCCESS)printf(“send SYST:ERR?error:%x n” ,errstat); errstat = viScanf(vi_pwr,“%t n”,& buf); if(errstat!= VI_SUCCESS)printf(“接收SYST:ERR?错误:%x n”,errstat); printf( “SYST:ERR?=%s n”,buf);任何建议都将受到赞赏。 SCPI描述并没有真正帮助我,它说明在查询之前缓冲区中可能有数据,但我没有请求任何数据。 以上来自于谷歌翻译 以下为原文 Hello All, I'm programming in VISA using the RS232 port of the E3631 for instrument control. When i send a query to the power supply sometimes i get the "Query INTERRUPTED" error, this happens about 50% of the time. Here is a sample of my query of the error queue: char buf [256] = {0}; /* error status */ ViStatus errstat; /* Initialize VISA system */ viOpenDefaultRM (&defaultRM); /* open DC Power Supply session on RS-232 port */ viOpen (defaultRM, "ASRLInstrument", VI_NULL,VI_NULL, &vi_pwr); viPrintf(vi_pwr, "SYST:REMOTEn"); //set remote mode // Check that error queue is cleared errstat = viPrintf (vi_pwr, "SYST:ERR?n"); if (errstat != VI_SUCCESS) printf ("send SYST:ERR? error: %xn", errstat); errstat = viScanf (vi_pwr, "%tn", &buf); if (errstat != VI_SUCCESS) printf ("receive SYST:ERR? error: %xn", errstat); printf ("SYST:ERR? = %sn", buf); Any suggestion will be appreciated. The SCPI description did not really help me out, it states that there might be data previously in the buffer before the query but i have not requested any data. |
|
相关推荐
6个回答
|
|
尝试没有 n的viScanf。另外,为了安全起见,你应该将读取的数据限制为bufviScanf(vi_pwr,“%255t”,& buf)的大小
以上来自于谷歌翻译 以下为原文 Try viScanf without the n. Also, to be safe you should limit the data read to the size of buf viScanf (vi_pwr, "%255t", &buf) |
|
|
|
你好丹尼尔,谢谢你的快速反应。
我尝试了你推荐的更改,它仍然没有解决问题,我也尝试在每次scanf后添加一个viFlush但我仍然得到Query INTERRUPTED错误。 这个错误也阻止我使用* OPC? 查询命令以检查编程指令是否完成,它强制我使用盲循环将我的应用程序与仪器同步,这不是非常有效。 你认为它与使用串口与仪器通信有什么关系吗? 谢谢。 以上来自于谷歌翻译 以下为原文 Hello Daniel, Thanks for the quick response. I tried the changes you recommended and it still did not solve the problem, i also tried adding a viFlush after every scanf but i still get the Query INTERRUPTED error. This error also prevents me from using the *OPC? query command to check for the completion of a programming instruction and it forces me to use a blind loop to synchronize my application with the instrument which is not very efficient. Do you think it has anything to do with using the serial port to communicate with the instrument?. Thanks. |
|
|
|
嘿dgun,谢谢你查一下。
我怀疑可能是因为使用RS232,因为我在USB端口上有一个34411A数字万用表,我没有遇到过这个问题。 知道这个问题是否有E3631固件路径? 我正在努力从安捷伦购买USB-to-GPIB模块,但在那之前我需要使用RS232开发我的应用程序。另一个问题:如果我使用的话,你推荐的是将我的应用程序与仪器同步的最佳方法 * OPC? 查询命令。 例如,当我编程电压并希望确保在使用DMM执行测量之前设置电压。谢谢 以上来自于谷歌翻译 以下为原文 Hey dgun, Thanks for checking this out. I had suspected that maybe it was due to using the RS232 because i have a 34411A DMM on the USB port and i have not experienced this problem with it. Any idea if there is a E3631 firmware path for this issue? I'm working on purchasing a USB-to-GPIB module from Agilent but until then i need to develop my application using the RS232. Another question: What do you recommend is the best way to synchronize my application with the instrument, should i use the *OPC? query command. For example when i program a voltage and want to make sure it is set before performing a measurement with the DMM. Thanks |
|
|
|
“另一个问题:如果我使用* OPC?查询命令,你建议将我的应用程序与仪器同步的最佳方法。例如,当我编程电压并希望确保在执行测量之前设置电压
DMM。“是的。 使用* OPC? 如果要将控制程序执行与仪器同步。 如果您只是希望仪器在转到下一个命令之前等待完成,请使用* OPC(不带?)。 希望有道理。 以上来自于谷歌翻译 以下为原文 " Yes. Use *OPC? if you want to synchronize controlling program execution with the instrument. Use *OPC (without ?) if you just want the instrument to wait for completion before going to the next command. Hope that makes sense. |
|
|
|
在SYST:REM命令后添加轻微延迟(~50ms)将解决问题。
与其他较新的接口不同,RS232不是一个明确定义的接口和延迟,可能在这里和那里需要(例如在重置或预置仪器之后)以防止仪器超时。 如果在GPIB接口上尝试了相同的代码集,没有延迟,则不会观察到超时。希望这有帮助。 以上来自于谷歌翻译 以下为原文 Adding slight delay (~50ms) after SYST:REM command will solve the problem. Different with other newer interfaces, RS232 not a well defined interface and delay may be needed here and there (e.g. after resetting or presetting the instrument) to prevent the instrument from time out. If the same set of code is tried out on GPIB interface, without the delay, time out is not observed. Hope this helps. |
|
|
|
“在SYST:REM命令后添加轻微延迟(~50ms)将解决问题。与其他较新的接口不同,RS232不是一个明确定义的接口和延迟可能需要在这里和那里(例如在重置或预置仪器后)以防止
如果在GPIB接口上尝试相同的代码集,没有延迟,则不会观察到超时。希望这会有所帮助。“我遇到了同样的问题,这种延迟方法确实有效。 谢谢chunhlow! 以上来自于谷歌翻译 以下为原文 " I got the same problem, and this delay method really works. thanks chunhlow! |
|
|
|
只有小组成员才能发言,加入小组>>
1229 浏览 0 评论
2350 浏览 1 评论
2160 浏览 1 评论
2026 浏览 5 评论
2908 浏览 3 评论
974浏览 1评论
关于Keysight x1149 Boundary Scan Analyzer
707浏览 0评论
N5230C用“CALC:MARK:BWID?”获取Bwid,Cent,Q,Loss失败,请问大佬们怎么解决呀
808浏览 0评论
1230浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 02:17 , Processed in 2.085406 second(s), Total 88, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号