如何在labview平台中监测PicoScopePC示波器采样开始时刻至传输结束时刻的时间

标签:
picoscopepc示波器电脑示波器labviewsdk二次开发包 |
分类: Scope |
1.
需求
使用PicoScope PC示波器的SDK开发包在labview平台进行二次开发,要求如下:
(1)使用块模式采样
(2)采样率在2MHz及其以上
(3)样本点数在100K及其以上
(4)通道数在两通道及其以上
(5)分辨率8-bit及其以上
同时,程序还应具备监测PicoScope PC示波器采样开始时刻至传输结束时刻的时间
2.
硬件
(1)
主要附件有高速USB 2.0 type-B、探棒。
(2)
为了确保PicoScope 5242B示波器正确运行,必须拥有一台至少符合最低系
统要求的计算机(如下表所示)。计算机的配置越高(包括采用多核处理器),示波器的性能也越好。
http://s14/bmiddle/003EYhPUzy77QA07Y8lbd&690
除了上述的操作系统之外,SDK开发包可与Windows XP SP3和Vista SP2 兼
容。
为获得最佳性能,建议使用Windows 7 或更高版本。
实例使用的是Windows 10 64-bit。
3.
软件
软件处理数据的速度影响着程序的运行,为获得最佳性能,建议使用最新专业版labview软件。
实例使用的是Labview 2015专业版 32-bit
Labview下载链接http://pan.baidu.com/s/1bJRmCu
(2)
根据labview软件位数的不同选择相应的SDK开发包进行安装。注意牢记安装路径,不建议使用默认路径。
SDK开发包下载链接https://www.picotech.com/downloads。
实例使用的是32-bit SDK开发包,安装路径为D:\PicoSDK32bit。
(3)PicoScope 驱动
安装SDK开发包时,驱动会自动安装,也可以安装PicoScope 6软件,驱动
也会自动安装。
驱动名称为Picopp.sys,驱动路径为C:\Windows\SysWOW64\drivers。
PicoScope 6软件下载链接https://www.picotech.com/downloads。
4.
文件配置
将C:\Program Files (x86)\Pico Technology\SDK\lib内的ps5000a.dll与ps5000a.dll复制到labview的安装路径下的resource文件夹下。
不同型号示波器使用的.dll库函数是不同的,不同位数的SDK的默认安装路径也是不同的。
5.
主要函数的说明
5.1 ps5000aRunBlock API函数的说明
此函数此函数控制应用程序与示波器的通讯,主要对采样率和样本点数进行
设置,控制示波器开始采样并获取示波器状态。
PICO_STATUS
ps5000aRunBlock
(
int16_t handle,
int32_t noOfPreTriggerSamples,
int32_t noOfPostTriggerSamples,
uint32_t timebase,
int32_t * timeIndisposedMs,
uint32_t segmentIndex,
ps5000aBlockReady lpReady,
void * pParameter
)
handle,
示波器设备句柄。
noOfPostTriggerSamples,
触发事件发生时刻后需要采集的样本数。如果没有设置触发,此参数与noOfPreTriggerSamples
segmentIndex,
以0为初始值,
指定哪个储存段别使用。 |
https://www.picotech.com/download/manuals/picoscope-5000-series-a-api-programmers-guide.pdf。
5.2 ps5000aIsReady API函数的说明
此函数此函数控制应用程序与示波器的通讯,获取示波器采样状态。
PICO_STATUS
ps5000aIsReady
(
int16_t handle,
int16_t * ready
)
函数参数说明:
handle, 示波器设备句柄。 * ready: 输出参数指示采样状态,如果为0示波器表示正在采样,如果为1表示示波器已经完成采样,并且函数 ps5000aGetValues可以使用。 |
5.3 ps5000aGetValues API函数的说明
此函数控制应用程序与示波器的通讯,将示波器缓存中的样本点传输到应用
程序(labview)。
PICO_STATUS
ps5000aGetValues
(
int16_t handle,
uint32_t startIndex,
uint32_t * noOfSamples,
uint32_t downSampleRatio,
PS5000A_RATIO_MODE downSampleRatioMode,
uint32_t segmentIndex,
int16_t * overflow
)
函数参数说明:
handle, 示波器设备句柄。
startIndex,
以0为初始值的索引地址,指示需传输的数据在示波器缓存中的索引地址。
downSampleRatioMode,
将采样模式。 |
6. 监测时间原理
6.1检测时间代码
图1中使用了“获取时间/日期(秒)”函数与“时间计数器”函数进行计时,代码中还使用了“平铺式顺序结构顺序”与“等待(ms)”函数。图2与图3为仿真结果,更根据计时精度要求选取计时函数。
实例中选取精度高的“获取时间/日期(秒)”函数。
http://s3/bmiddle/003EYhPUzy77QA35T6q72&690
图1
http://s11/bmiddle/003EYhPUzy77QAh6bKa3a&690
图2
http://s14/bmiddle/003EYhPUzy77QAia1A18d&690
图3
6.2采样时间的获取
采样时间定义为触发事件发生时刻至最后一个样本点采样结束时刻,理论值为采样间隔与样本数的乘积。
ps5000aRunBlock API函数中的输出参数timeIndisposedMs主要有两部分组成,一为采样时间,二为在ps5000aRunBlock API函数“写入设置”并与示波器通讯的时间。ps5000aRunBlock API函数成功运行后函数返回代码PICO_OK,此时刻示波器开始等待触发时事件,触发事件发生则开始采样。传输时间是指采样结束后,样本数据从示波器缓存中传输到应用程序(labview)中的时间。图4位函数与采样、传输时间示意图。
http://s1/bmiddle/003EYhPUzy77QAkcHrW50&690
图4
注意:当使用触发功能时,且触发设置为无期限等待触发或等待n秒,实际等待触发时间是无法通过检测或者计算获得的,顾图4中时间3与时间4是无法精确监测的。建议不使用触发功能。
当不使用触发功能时,图4中时间3只包括采样时间,这段采样时间可以通过检测ps5000aRunBlock API函数执行后与ps5000aIsReady API函数的执行后的时间差获取,如图5。
http://s10/bmiddle/003EYhPUzy77QAlcVdv19&690
图5
程序运行时,实测时间值会略大于或小于采样时间理论值,大约为几百微妙至两毫秒,这并不是误差,因为实测值是示波器、计算机与应用程序这一系统实际采样花费的时间,更具有实际意义。实测值偏离理论值这属于正常现象,因为labview是多线程应用程序,其用户界面线程需要刷新显示与输入控件,这增加了系统开销;并且计时与采样属于并行结构,这也增加了系统开销;示波器与应用程序进行串口通讯也会增加系统开销;获取时间/日期(秒)”函数的精度也受计算机总体性能的影响。程序内其他函数、子vi与节点等,如减法、乘法节点、PicoStatus子vi的运行花费的时间是几微妙甚至纳秒,基本可以忽略。
6.3传输时间的获取
ps5000aGetValues API函数控制数据从示波器缓存中传输到应用程序(labview)中。这段传输时间可以通过检测ps5000aGetValues API函数执行前后的时间差获取,如图6。
http://s9/bmiddle/003EYhPUzy77QAmpV5mc8&690
图6
6.4采样+传输时间的获取
当不使用触发功能时:
http://s9/bmiddle/003EYhPUzy77QAn80Gs78&690
当使用触发功能时:
http://s6/bmiddle/003EYhPUzy77QAofaNT45&690
图8
6.5实例
对Demo进行改写,将ps5000aGetBlock.vi子vi内的四个ps5000aSetDataB
Buffers的部分代码段移至ps5000aRunBlock代码段前,并重新连线;当不使用触发功能时,将ps5000aRunBlock、ps5000aIsReady与ps5000aGetValues代码段按图7进行连线编写,注意错误簇与handle的连接。
设置:12-bit分辨率,A、B两通道(DC耦合、量程3v、偏置0),无触发,时基为31(采样间隔0.448us),无降采样,preTriggerSamples为0,探棒为×1档,测量对象为人体。
分别在样本点数为100K、200K、500K时,使用while循环结构是示波器连续采样1、2、50、100、200、250次(连续采样次数是指使PicoScope5000aExample
Block.vi内的while循环结构进行指定次数的循环,试验数据记录如下:
快模式 连续 运行次数 |
|
1 |
2 |
50 |
100 |
200 |
250 |
样本点数(K个) |
理论 采样时间 (ms) |
|
44.8 |
100 |
|||||
89.6 |
200 |
|||||||
224 |
500 |
|||||||
timeIndisposedMs (ms) |
|
45 |
100 |
|||||
90 |
200 |
|||||||
224 |
500 |
|||||||
实测 采样 时间 (ms) |
最大 |
46.1210 |
46.1230 |
46.1283 |
48.1291 |
65.1746 |
47.1244 |
100 |
90.2390 |
90.2390 |
91.2433 |
93.5163 |
92.2461 |
91.2560 |
200 |
||
225.600 |
225.598 |
227.606 |
225.603 |
227.607 |
227.605 |
500 |
||
最小 |
同 上 |
46.1210 |
45.1169 |
45.1155 |
45.1159 |
45.1117 |
100 |
|
90.2381 |
89.2367 |
90.2367 |
90.2314 |
90.2267 |
200 |
|||
224.583 |
224.520 |
224.566 |
223.594 |
223.593 |
500 |
|||
实测 采样+传输时间 (ms) |
最大 |
58.1565 |
57.1523 |
58.1541 |
63.1680 |
71.1942 |
94.2507 |
100 |
111.297 |
111.296 |
114.305 |
124.336 |
121.322 |
114.305 |
200 |
||
273.727 |
272.726 |
227.739 |
277.741 |
276.759 |
297.791 |
500 |
||
最小 |
同 上 |
57.1504 |
56.1490 |
56.1490 |
56.1438 |
56.1490 |
100 |
|
111.281 |
110.293 |
110.293 |
110.293 |
110.293 |
200 |
|||
272.724 |
272.725 |
272.725 |
272.724 |
272.723 |
500 |
由表中数据可以看出,需采样的样本点数越多,传输时间越长;连续运行次数越多,越容易出现最慢采样,但是一般实际情况,只要求快模式间歇性运行或者只运行1次,所以不用担心由于连续运行导致的采样时间可能会较长的问题。
7. 总结