王 芃,高 震,董景新
(清華大學精密儀器系,北京 100084)
一種物美價廉的基于LabVIEW的PID控制實驗裝置設計
王 芃,高 震,董景新
(清華大學精密儀器系,北京 100084)
為了使學生掌握用LabVIEW實現計算機控制,用STC12單片機設計了一塊接口卡,該卡將電機的位置數據反饋給上位機的LabVIEW程序,并接收LabVIEW程序發來的命令以控制電機轉動,學生可任意、隨時改變PID參數和采樣時間,觀察對應的現象,從而深入理解計算機控制原理。
PID控制實驗;LabVIEW;物美價廉
接口卡在位置控制系統中的作用是采集電機的位置數據,然后將其發送給上位計算機(以后簡稱上位機),上位機通過運行LabVIEW,計算出控制量,然后向接口卡輸出,控制量經接口卡轉換為PWM信號,再經功放控制電機的轉動[1]。
接口卡實物圖見圖1,接口卡的原理框圖見圖2。
1.1 CPLD內部的功能模塊的設計
CPLD內部有3個功能模塊:碼盤計數器、地址鎖存器和地址譯碼器。它們的設計全部用VHDL語言實現,以下分別簡要說明。

圖1 接口卡實物圖
(1)碼盤計數器:電機每轉動一圈,光電編碼器輸出相位相差90°的兩路脈沖信號A和B,各500個脈沖,計數器先根據A上跳沿時的B的電平判斷電機是正轉還是反轉,然后據此對脈沖進行可逆計數,并將計數結果放在位置存儲器中。為不出現負數(以方便處理)規定:零點時,位置計數器的初值是80000H(20位)[2],并且規定好位置計數器的地址。
(2)地址鎖存器:STC單片機是一種8051單片機,因此其P0口分時復用地址總線的低8位是A0—A7和數據總線D0—D7。在其讀寫外部存儲器時先發出A0—A7,同時使ALE跳到低電平以通知外部設備:現在P0口是A0—A7。據此可設計在ALE下跳觸發的鎖存器使它鎖存A0—A7[2]。

圖2 接口卡原理框圖
(3)地址譯碼器:單片機P0口在發送完A0—A7后,開始收/發D0—D7,同時單片機還發出存儲器讀寫信號RD/WR和P2口的地址總線的高8位(A8—A15)。因此,設計了一個有如下功能的地址譯碼器:當單片機輸出已規定好的位置計數器的地址(A0—A15),并且RD(讀)信號有效時,就將位置計數器的內容送到D0—D7總線上,則單片機將自動將此值讀入,并按單片機中的程序作相應的處理[3-4]。
1.2 單片機的程序設計
單片機有2種工作方式:
第1種是單片機讀取位置計數器中的數據,并將其發送給上位機顯示,同時接收上位機發來的PID參數和指定位置參數;單片機求出指定位置與現在位置間的偏差和偏差的積分,以及現在的速度;然后用PID參數與偏差、偏差的積分、速度相乘,得到控制數據后再送到單片機的PWM的數據存儲器中,產生相應占空比的PWM波。
第2種也是單片機將位置數據發送給上位機顯示,但由上位機計算位置的偏差、偏差的積分和速度,并由PID參數和前述數據結合產生控制數據;然后將控制數據傳給單片機,單片機再將其送給單片機的PWM 的數據存儲器,并產生相應占空比的PWM波[5-6]。
經實踐檢驗:第1種方式中單片機計算浮點數略慢,不如第2種方式效果好,因此本系統采用第2種方式。
1.3 單片機與上位機間的通信
本系統采用USB轉串口線實現單片機與上位機間的通信。USB轉串口的傳輸速率取決于串口的速率,而近距離內串口的傳輸速度波特率可以達到10 Mbit/s以上(距離15m)[3],若將位置采樣數據通過串口傳輸給上位機處理,每個位置數據是3個字節,則串口可支持的采樣頻率高達300kHz,因為學生實驗用的電機的機電時間常數都是10ms級的,加了控制機構的整個系統的機電時間常數也不小于3ms,即其本身的頻率最高為350Hz[7-9]。因此為穩定可靠,本系統采用了115.2Kbit/s的串口波特率,則本系統的采樣頻率可達3.5kHz,足以滿足奈奎斯特采樣定理的采樣頻率應大于被采樣信號頻率的2倍的要求。
LabVIEW程序主要包含2部分:第1部分從串口讀取位置數據、計算位置偏差、速度及偏差的積分,程序如圖3所示。

圖3 讀取位置數據、計算位置偏差、速度、偏差的積分
LabVIEW程序依次讀取20位計數器的最低8位、中間8位和最高的4位,它們都是U8(無符號8位數),然后把它們分別轉換為U32(無符號32位數),并分別乘以其對應的權值,最后合成為一個U32數字。由于需要把它減去原點(0x80 000)才可得到相對原點的位置,結果是有符號數,所以應把它先轉換為I32(有符號32位整數)再減去原點,即可得到現在的位置;現在的位置減去上次的位置就可得到速度;指定位置減去現在的位置即得到偏差,對偏差作累加可得到偏差的積分[10-12]。
LabVIEW程序的第2部分是用PID參數和第1部分得到的偏差等計算出控制數據,然后通過串口發給單片機,以P控制為例(如圖4所示)。
P一般是帶小數點的單精度浮點數(SGL),所以應將位置誤差e(I32)轉換為SGL,然后才可以與P相乘,由于單片機的PWM數據存儲器只能接收16位整數,所以將P×e的值限幅在(-32767,32767)范圍內,然后將其轉換為I16。由于計算機中的數都是用補碼表示的,而PWM存儲器(包括所有16位DA)需要用原碼減去8000H表示的數據,所以應將計算機中的數異或8000H才能得到此數;然后將得到的16位數據右移后只取低8位就得到了原數據的高8位,將原數據直接只取低8位就得到了原數據的低8位,再將它們送入數組,通過數組轉換成字符串才能通過串口發出[11-12]。本系統運行時電機的位置、速度的波形如圖5所示。

圖4 計算控制數據并從串口輸出

圖5 電機的位置、速度波形界面圖
本卡的單片機僅4元,CPLD僅40元,USB轉串口電纜僅10元,總成本不超過100元,所以便于在實驗室中大量使用。本實驗室就用它教授計算機控制課程,學生一致反映通過設置不同的PID參數和采樣時間觀察相應的實驗現象,加深了對原理的理解。
綜上所述,本卡在本計算機控制實驗系統中的應用是成功的。
(References)
[1]董景新,趙長德,熊沈蜀,等.控制工程基礎[M].北京:清華大學出版社,2003.
[2]趙長德,董景新,王芃.控制工程基礎實驗教材[M].北京:清華大學出版社,2007.
[3]李江全,劉恩博.LabVIEW與串口通信測控應用[M].北京:人民郵電出版社,2010.
[4]劉剛.LabVIEW 8.20編程及應用[M].北京:電子工業出版社,2008.
[5]劉書智.VC串口通信與工程應用實踐[M].北京:中國鐵道出版社,2011.
[6]楊恒.CPLD/FPGA快速入門[M].北京:北京航空航天大學出版社,2002.
[7]陳桂友.增強型8051單片機實用開發技術[M].北京:北京航空航天大學出版社,2009.
[8]周功業.現代微機系統與接口技術 [M].北京:高等教育出版社,2004.
[9]裘雪紅.微型計算機原理與接口技術[M].西安:西安電子科技大學出版社,2007.
[10]洪志全.現代微機原理與接口技術 [M].北京:機械工業出版社,2008.
[11]徐曉東.LabVIEW 8.5常用功能與編程[M].北京:電子工業出版社,2009.
[12]林靜.LabVIEW虛擬儀器程序設計從入門到精通[M].北京:人民郵電出版社,2010.
Design of a cheaper and price low experimental device for PID contol experiment based on LabVIEW
Wang Peng,Gao Zhen,Dong Jingxin
(Department of Precision Instrument,Tsinghua University,Beijing100084,China)
For the purpose of making students handle the technology of computer controlling with LabVIEW,an interface card is designed with STC12.The card can feed the motor’s position back to a computer which is running LabVIEW,and the card can also receive the order from LabVIEW to control the motor.Students can change the parameters and observe the phenomena so as to understand the theory deeply.
PID control experiment;LabVIEW;nice matter and low price
TP391;G434
A
1002-4956(2014)1-0107-03
2013-05-09
王芃(1970—),男,北京,碩士,工程師,研究方向為機電控制系統設計.