關於PXI-6602 PWM即時輸出的問題

最近在下正在測試PXI-6602的PWM輸出,做為即時控制使用,但是程式一直有些問題出現,不知有經驗的各位先進,請不吝指導

在下即時控制的取樣時間有Ts=10ms 50ms 100ms 200ms等,PWM的週期為10~30ms,Duty Cycle為將來做為運算數值後即時動態控制輸出使用

整個架構迴圈到達我設定的時間時就送出PWM,這個部份是以time loop做,目前的程式中有兩個的問題是:

1.當while loop中的等待時間若為不設或是更低,輸出的PWM訊號就像被截斷般,無法送出完全的Duty cycle,

   當等待時間設得過長時,訊號雖正常但會造成整個time loop的delay,即無法發揮real time的效用

2.另外此程式因為Idle State的關係,當Idle State為Low時,Duty cycle>=80%,會無法送出更高的訊號,

  反之,Idle State設為High,Duty cycle<=20%時,當低於20%時,訊號無法在更低了,

  用判斷式來判斷雖可解決,但在非輸出的時間設定High時會使其值一直在High time,

  對於實際控制時怕造成不好的影響,不知道有否方法解決

上述兩個問題煩請了解的各位先進幫忙指導,謝謝

附上程式PWM_output.vi

Hayato:

     你好!!我做PXI-6602的PWM訊號輸出測試,PWM全週期:frequency=46.72897=>Period=21.4ms,因為在下是針對伺服馬達的pulse改變來驅動,而我這程式可以改變寬度。也接到示波器看過顯示的寬度變化。

但是我有不清楚的地方,如:DAQmx Create Virtual Channel 的duty Cycle我這設定是0.5,但是實際上改變寬度是在DAQmx Write 的duty Cycle,調整範圍在0~1之間,在這duty Cycle是不加百分比%。

希望可以跟你討論研究這問題,或是其他前輩可以給予指教。謝謝

附上程式textPXI_6602_410.vi