加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2017-01-09 12:07:27)
标签:

picoscope

pc示波器

电脑示波器

labview

sdk二次开发包

分类: Scope

1.     需求

使PicoScope PC示波器的SDK开发包在labview平台进行二次开发,要求如下:

1)使用块模式采样

2)采样率在2MHz及其以上

3)样本点数在100K及其以上

4)通道数在两通道及其以上

5)分辨率8-bit及其以上

同时,程序还应具备监测PicoScope PC示波器采样开始时刻至传输结束时刻的时间

2.     硬件

(1)  PicoScope 5242B示波器及其附件

主要附件有高速USB 2.0 type-B、探棒。

(2)  计算机

为了确保PicoScope 5242B示波器正确运行,必须拥有一台至少符合最低系

统要求的计算机(如下表所示)。计算机的配置越高(包括采用多核处理器),示波器的性能也越好。

http://s14/bmiddle/003EYhPUzy77QA07Y8lbd&690

除了上述的操作系统之外,SDK开发包可与Windows XP SP3Vista SP2

容。

为获得最佳性能,建议使用Windows 7 或更高版本。

实例使用的是Windows 10 64-bit

3.     软件

(1)  Labview软件

软件处理数据的速度影响着程序的运行,为获得最佳性能,建议使用最新专业版labview软件。

实例使用的是Labview 2015专业版 32-bit

Labview载链接http://pan.baidu.com/s/1bJRmCu

(2)  SDK开发包

根据labview软件位数的不同选择相应的SDK开发包进行安装。注意牢记安装路径,不建议使用默认路径。

SDK开发包下载链接https://www.picotech.com/downloads

实例使用的是32-bit SDK开发包,安装路径为D:\PicoSDK32bit

3PicoScope 驱动

安装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.dllps5000a.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, 示波器设备句柄
noOfPreTriggerSamples, 触发事件发生时刻前需要采集的样本数。如果没有设置触发,此参数与noOfPostTriggerSamples
相加构成需要采集的最大样本数。

noOfPostTriggerSamples, 触发事件发生时刻后需要采集的样本数。如果没有设置触发,此参数与noOfPreTriggerSamples
相加构成需要采集的最大样本数。采集的总样本数:
noOfPreTriggerSamples + noOfPostTriggerSamples
timebase,
数值范围为 0 ~ (2^321)此参数与采样率的设置有关。
* timeIndisposedMs, 输出参数,单位为ms 精度为1ms,示波器采样花费的时间,不包括自动触发超时的时间。

segmentIndex, 0为初始值, 指定哪个储存段别使用。
lpReady, ps5000aBlockReady 回调函数的指针,使用ps5000aIsReady 函数时, 设此参数置NULL
* pParameter, 一个空指针传递给ps5000aBlockReady回调函数,回调函数使用这个指针返回任意数据到应用程序。

如需获取更多函数信息,请访问

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为初始值的索引地址,指示需传输的数据在示波器缓存中的索引地址。
* noOfSamples, 作为输入参数,表示需要传输的样本数。作为输出参数,表示从索引位置startIndex开始计数的实际传输的样本数,实际值不会大于需要值。
downSampleRatio, 降采样因素。

downSampleRatioMode, 将采样模式。
* overflow, 作为输出参数,指示是否有通道发生过电压,16位整型。将其转换成二进制,从低位到高位分别代表A通道、B通道….过压状态,0表示无过压,1表示已过压。

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与节点等,如减法、乘法节点、PicoStatusvi的运行花费的时间是几微妙甚至纳秒,基本可以忽略。

6.3传输时间的获取

ps5000aGetValues API函数控制数据从示波器缓存中传输到应用程序(labview)中。这段传输时间以通过检测ps5000aGetValues API函数执行前后的时间差获取,如图6

http://s9/bmiddle/003EYhPUzy77QAmpV5mc8&690

6

6.4采样+传输时间的获取

当不使用触发功能时:

http://s9/bmiddle/003EYhPUzy77QAn80Gs78&690

7

当使用触发功能时:

http://s6/bmiddle/003EYhPUzy77QAofaNT45&690

8

 

6.5实例

     SDK开发包中块模式Demo,路径D:\PicoSDK32bit\PS5000A\Labview,块模式程序为PicoScope5000aExampleBlock.vi

Demo进行改写,将ps5000aGetBlock.vivi内的四个ps5000aSetDataB

Buffers的部分代码段移至ps5000aRunBlock代码段前,并重新连线;当不使用触发功能时,将ps5000aRunBlockps5000aIsReadyps5000aGetValues代码段按图7进行连线编写,注意错误簇与handle的连接。

设置:12-bit分辨率,AB两通道(DC耦合、量程3v、偏置0),无触发,时基为31(采样间隔0.448us),无降采样,preTriggerSamples0,探棒为×1档,测量对象为人体。

分别在样本点数为100K200K500K时,使用while循环结构是示波器连续采1250100200250次(连续采样次数是指使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. 总结

    综上所述,PicoScope 5242B示波器在labview平台通过使用SDK可以实现监测示波器开始采样时刻至传输结束时刻的时间,对于PicoScope 其他型号示波器、采样模式及其它开发平台(CC++MatlabVB等)也可以实现此功能。

 

 

 

 


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有