NI產品與技術 討論區

取消
顯示結果 
搜尋替代 
您的意思是: 

如何使用PCI6602的硬體時脈計數‏

您好:

 

我的問題PCI-DAQ卡最高可以到80MHZ下去當作計數頻率,可是我寫的labview不能拿硬體時脈(PCI-6602的時脈)當作計數頻率,只能拿軟體時脈(labview的時脈)下去計數 一直無法解決這個問題

 

 我的程式目前狀況: 使用軟體時脈的labview.vi 第一個檔案是我用軟體時脈每2ms計數一次 我所需要到數十個ns(PCI-6602的DAQ卡最高可以到80MHZ) 所以需要用到硬體時脈才可以達到此需求

 

 第2個檔案使用硬體時脈的labview 這個使用DAQmx來使用硬體時脈可是一直寫得怪怪的

 

不知道該如何解決用硬體時脈計數的問題?想請各位高手替我解惑

謝謝

0 積分
1 條訊息(共 14 條)
7,504 檢視

關於你寫的硬體時脈的vi


想請問你期望做到怎樣的功能


而這個VI又是哪裡不符合你的期望?


能否再描述得更清楚一點?

0 積分
2 條訊息(共 14 條)
7,495 檢視

另外補充

 

除非您要的時間精準度很高,否則透過軟體時脈已經足夠

 

另外,在 Windows OS 執行您的程式VI,要時間很準也有他的困難處,除非在 Real-Time 或 FPGA 上面

 

建議您說明您的應用以及為何需要如此高的精準度

0 積分
3 條訊息(共 14 條)
7,490 檢視

hschen 已寫:

關於你寫的硬體時脈的vi

 

想請問你期望做到怎樣的功能

 

而這個VI又是哪裡不符合你的期望?

 

能否再描述得更清楚一點?


 hschen您好

我期望的目標是以PCI-6602 count Frequency 80MHZ的頻率來當作計數頻率,也就是每12.5ns計數一次

而我寫的labview 程式是以每2ms計數一次,對於我的系統架構來說太慢了

我想達到更快的計數頻率

謝謝

 


Billingsley 已寫:

另外補充

 

除非您要的時間精準度很高,否則透過軟體時脈已經足夠

 

另外,在 Windows OS 執行您的程式VI,要時間很準也有他的困難處,除非在 Real-Time 或 FPGA 上面

 

建議您說明您的應用以及為何需要如此高的精準度


Billingsley 您好:

我需要的時間精準度必須要很精準,因為我想寫的程式是單光子計數器,每12.5ns計數有多少個光子

目前我知道只有labview程式中Time物件都只有ms等級

不知道要如何使用PCI-6602這張卡的頻率來已達到我所需要更快的計數頻率

謝謝

 

0 積分
4 條訊息(共 14 條)
7,399 檢視

請問你這邊的 source 接甚麼?

0 積分
5 條訊息(共 14 條)
7,396 檢視

hschen 已寫:

請問你這邊的 source 接甚麼?


這裡source是使用BNC-2121的PFI9連接到Pulse端

再選擇80MHZ作為計數頻率

 

可是很奇怪的一點是我還未送入

一個Pulse訊號

Labview已經有訊號產生了

而且訊號出現的第一個值是隨機的

第一個計數點跟第2個計數點相差了80個點往後一樣有規律性

如:6,86,166

    31,111,191

謝謝

下載全部
0 積分
6 條訊息(共 14 條)
7,379 檢視

聽起來很正常

 

你貼的程式就是這樣的功能

 

首先你要求DAQ做Edge Counting,計數 Counter 自己的 80MHz clock

 

因此程式一開始執行以後,Counter 內部的計數就會開始不斷的往上 counting (每秒8M個count)

 

另外你又指定做有限點截取,用 DAQmx 的 Timing 設定開啟一塊 buffer 

 

每當你 DAQ 在 source 偵測到 Rising Edge 的瞬間 ,DAQ就會把當下計數的數字抓起來,存到 buffer

 

若你的 buffer 開1000點,當source 偵測到1000個 pulse 後,buffer 會剛剛好被填滿

 

程式就結束了

 

由於您是用 Quadrature Encoder Knob 來產生 pulse,pulse產生時間並不固定

 

讀到的值也不可能會是固定的

 

至於Quadrature Encoder Knob 轉一格會出來幾個 pulse,

 

建議你勾示波器自己看一下。

 

0 積分
7 條訊息(共 14 條)
7,371 檢視

hschen 已寫:

聽起來很正常

 

你貼的程式就是這樣的功能

 

首先你要求DAQ做Edge Counting,計數 Counter 自己的 80MHz clock

 

因此程式一開始執行以後,Counter 內部的計數就會開始不斷的往上 counting (每秒8M個count)

 

另外你又指定做有限點截取,用 DAQmx 的 Timing 設定開啟一塊 buffer 

 

每當你 DAQ 在 source 偵測到 Rising Edge 的瞬間 ,DAQ就會把當下計數的數字抓起來,存到 buffer

 

若你的 buffer 開1000點,當source 偵測到1000個 pulse 後,buffer 會剛剛好被填滿

 

程式就結束了

 

由於您是用 Quadrature Encoder Knob 來產生 pulse,pulse產生時間並不固定

 

讀到的值也不可能會是固定的

 

至於Quadrature Encoder Knob 轉一格會出來幾個 pulse,

 

建議你勾示波器自己看一下。

 

不好意思剛接觸Labview還是有點不懂的地方:

 

Timing 設定開啟一塊 buffer 

是設定一個暫存區,是需要使用一個for loop來讓計數的資料一直丟進去一個暫存器裡面嗎?

 

Quadrature Encoder Knob 來產生 pulse,pulse產生時間並不固定

這個是什麼意思不太清楚? 

 

現在的程式我理解是DAQ卡自己產生一個80MHZ頻率的Pulse訊號輸入讓Labview count而計數的頻率是我們設定的DAQmx Timing(Sample Clock)的rate決定,是這樣嗎?

 

而我的目標是希望我外加輸入一個Pulse訊號(不是DAQ自己產生的),然後使用80MHZ的頻率計數,那我計數的頻率只要調整DAQmx Timing(Sample Clock)的rate設定為80.000.000就好了嗎?還是需要程式哪裡做調整

 

問題有點多,不好意思

謝謝

 

 


 

0 積分
8 條訊息(共 14 條)
7,359 檢視

當DAQmx Timing的source 有接的時候(你的程式接了PFI9),Rate 是沒有 function的,你輸入0他也不會有任何改變,所有的timing 都由PFI9決定

 

請你先勾示波器看一下你給 PFI9 的訊號長甚麼樣子

 

貼圖出來

0 積分
9 條訊息(共 14 條)
7,353 檢視

hschen 已寫:

當DAQmx Timing的source 有接的時候(你的程式接了PFI9),Rate 是沒有 function的,你輸入0他也不會有任何改變,所有的timing 都由PFI9決定

 

請你先勾示波器看一下你給 PFI9 的訊號長甚麼樣子

 

貼圖出來


我不會用Labview把PFI9訊號讀出來,所以我用示波器直接連接PFI9

訊號圖如附檔

 

謝謝

0 積分
10 條訊息(共 14 條)
7,340 檢視