在本系列中,我們將討論如何使用 LabVIEW 和一個(gè)愛(ài)好直流伺服電機(jī)來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 PID 控制器。我們通過(guò)移除其內(nèi)部控制器并用 myRIO 接口替換它來(lái)定制伺服。
這是我們以定制伺服電機(jī)為基礎(chǔ)的第二篇文章,專(zhuān)門(mén)關(guān)注 PID 控制器的編程。您需要按照本系列的第一部分(討論項(xiàng)目的硬件)來(lái)實(shí)施下面顯示的步驟。
LabVIEW
LabVIEW 是由 National Instruments 開(kāi)發(fā)的圖形化編程語(yǔ)言。該語(yǔ)言的最大好處之一是可供它使用的大量工具包、模塊和庫(kù)。使用這些,您可以為眾多工程和研究項(xiàng)目快速開(kāi)發(fā)最復(fù)雜的應(yīng)用程序。
這個(gè)實(shí)驗(yàn)也不例外。我們將完全控制 NI LabVIEW PID 和模糊邏輯工具包,而不是完全從頭開(kāi)始編寫(xiě) PID 控制器。使用軟件包附帶的常規(guī)“PID.VI”,我們將能夠更快地解決繞過(guò)原始伺服控制器的挑戰(zhàn)。
本教程無(wú)意涵蓋 PID 的基本理論細(xì)節(jié)。相反,它將向您展示如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 PID 控制器。
要求
要遵循,您應(yīng)該有以下可用和/或安裝:
NI myRIO 嵌入式硬件設(shè)備
NI myRIO 擴(kuò)展端口 (MXP) 原型板附件(預(yù)裝 myRIO)
現(xiàn)在應(yīng)該連接到 Protoboard 附件的定制伺服電機(jī)
NI LabVIEW
NI LabVIEW PID 和模糊邏輯工具包
在本教程中,我使用 NI LabVIEW 2014 版對(duì)安裝了 NI LabVIEW PID 和 Fuzzy Logic Toolkit 的 NI myRIO 設(shè)備進(jìn)行編程。如果您仍然是學(xué)生,您應(yīng)該能夠從您的大學(xué)獲得所有軟件和相關(guān)許可證。
伺服控制——理論與實(shí)踐
之前,我們解釋了如何控制伺服以及我們?nèi)绾卫@過(guò)設(shè)備的內(nèi)部控制器來(lái)控制速度而不是位置。我們說(shuō)過(guò)這些設(shè)備接受脈寬調(diào)制 (PWM) 信號(hào)(圖 1)并遵循標(biāo)準(zhǔn) RC 愛(ài)好伺服協(xié)議。
圖 1:通過(guò) PWM 進(jìn)行簡(jiǎn)單的伺服控制
根據(jù)該標(biāo)準(zhǔn)協(xié)議,常規(guī)伺服系統(tǒng)將以 1000 μs 的脈沖長(zhǎng)度 (T ON ) 移動(dòng)到其最左側(cè)位置,以 2000 μs 移動(dòng)到最右側(cè)位置,并在 1500 μs 時(shí)停留在中間位置(表 1)。
表 1:標(biāo)準(zhǔn)伺服行為
定制后,它應(yīng)該以 1000 μs 向左移動(dòng)最快,以 2000 μs 向右移動(dòng),并在 1500 μs 時(shí)保持靜止(表 2)。請(qǐng)注意,這些假設(shè)假設(shè)刷新率為 50 Hz。
表 2:定制后的伺服行為
然而,在實(shí)踐中,這些值可能會(huì)有很大的變化,尤其是對(duì)于我們?cè)诒窘坛讨惺褂玫念A(yù)算伺服系統(tǒng)。
因此,我們將憑經(jīng)驗(yàn)確定中心位置,我們自己,然后為順時(shí)針和逆時(shí)針行程添加任意正負(fù)偏移。
軟件
創(chuàng)建 LabVIEW 項(xiàng)目
首先,讓我們創(chuàng)建一個(gè)LabVIEW項(xiàng)目。啟動(dòng)LabVIEW,在初始屏幕上,選擇“創(chuàng)建項(xiàng)目”(或者,您可以轉(zhuǎn)到文件》》創(chuàng)建項(xiàng)目)。
在新的彈出窗口中,選擇“myRIO Project”并單擊“Next”。
圖 2:創(chuàng)建 myRIO 項(xiàng)目——第 1 步
然后給項(xiàng)目起個(gè)名字。我把我的簡(jiǎn)稱(chēng)為“PID”。
最后,確保已插入并找到 myRIO,此時(shí)您可以單擊“完成”。
圖 3:創(chuàng)建 myRIO 項(xiàng)目——第 2 步
創(chuàng)建一個(gè)新VI
然后,在 myRIO 目標(biāo)下創(chuàng)建一個(gè)名為“PID Controller.VI”的新 VI,如圖 4 所示。您可以忽略甚至刪除“Main.VI”——它是默認(rèn)創(chuàng)建的,作為在下創(chuàng)建的每個(gè) myRIO 項(xiàng)目的示例這個(gè)模板。
圖 4:在 myRIO 上創(chuàng)建一個(gè)新 VI
打開(kāi)新 VI 并切換到程序框圖窗口。創(chuàng)建一個(gè)帶有相關(guān)停止按鈕的 while 循環(huán)。我們將在這里放置所有需要連續(xù)執(zhí)行的代碼。
圖 5:帶有停止按鈕的 While 循環(huán)
接下來(lái),使用 Quick Drop (CTRL+Space) 或從 myRIO 函數(shù)面板中選擇函數(shù),添加“Analog Input” express VI,如圖 6 所示。
在配置彈出窗口中,確保選擇的通道為“A/AI0 (Pin 3)”并為通道命名。我將其稱(chēng)為“反饋”,因?yàn)槭褂么斯δ軌K,我們將從內(nèi)部伺服電位器讀取我們的位置值。
然后單擊“確定”并將 express VI 放入 while 循環(huán)中。
圖 6:添加模擬輸入功能。
同樣,讓我們??創(chuàng)建一個(gè) PWM 輸出,以便我們可以控制伺服速度。同樣,使用 Quick Drop 或函數(shù)選板,添加一個(gè)名為“PWM”的快速 VI(圖 7)。
對(duì)于您的通道,選擇“A/PWM0(引腳 27)”。將頻率設(shè)置為 50 Hz(通過(guò)“設(shè)置常數(shù)”選項(xiàng))并在“占空比”下選擇“使用 Express VI 的輸入設(shè)置”。
圖 7:添加 PWM 功能
然后單擊“確定”并將塊放入while循環(huán)中。您應(yīng)該有一個(gè)類(lèi)似于圖 8 中所示的布局。
圖 8:向 while 循環(huán)添加模擬輸入和脈寬調(diào)制 (PWM) 功能。
確定伺服的中心位置
接下來(lái),我們的目標(biāo)是確定伺服的中心位置。為此,請(qǐng)為“占空比”輸入創(chuàng)建一個(gè)控件。
您也可以為“反饋”創(chuàng)建一個(gè)指標(biāo),這樣您就可以觀察電位計(jì)的值(范圍在 0 到 5 之間,但正如我們稍后將看到的,將這些值轉(zhuǎn)換為不同的范圍很簡(jiǎn)單)。我們還將使用“等待”功能添加一些時(shí)間。框圖如圖9所示;Wait 函數(shù)顯示為手表,附加的常數(shù) 10 表示我們有 10 ms 的延遲。
圖 9:添加控件、指示器和計(jì)時(shí)。
從理論上講,我們的占空比將介于 1 ms 和 2 ms 的脈沖寬度之間,其中 1.5 ms 是停止伺服的值(零速度)。我們的 50 Hz 信號(hào)的周期為 20 ms,因此這些脈沖寬度對(duì)應(yīng)于 0.05、0.10 和 0.075 的占空比。
在實(shí)踐中,產(chǎn)生零速度的實(shí)際脈沖寬度可能與理論值不同。要找到實(shí)際值,請(qǐng)?jiān)谡伎毡仍O(shè)置為 0.075 的情況下運(yùn)行 VI,然后對(duì)其進(jìn)行調(diào)整,直到伺服不旋轉(zhuǎn)。在我的例子中,實(shí)際值為 0.058(圖 10)。
圖 10: 中心查找代碼的前面板(前面板)。
添加任意偏移量
接下來(lái),我們將向該中心值添加任意速度控制偏移。
我選擇了 0.012 的偏移量。這意味著順時(shí)針?lè)较虻淖畲蠼撬俣葘?duì)應(yīng)于 0.046 (0.058 - 0.012) 的占空比,類(lèi)似地,逆時(shí)針?lè)较虻淖畲蠼撬俣葘?duì)應(yīng)于 0.070 (0.058 + 0.012)。這些映射如表 3 所示。
表 3:速度映射
任何中間值都代表給定方向上最大角速度的一小部分。例如,對(duì)于以最大速度的一半逆時(shí)針旋轉(zhuǎn),控制器需要將占空比設(shè)置為 0.058 + (0.012/2) = 0.064。
PID控制器實(shí)現(xiàn)
一旦我們確定了中間位置,我們就可以最終實(shí)現(xiàn) PID 控制器。使用 Quick Drop 或函數(shù)選板,從 LabVIEW PID 和 Fuzzy Logic 工具包中添加“PID.vi”。
為設(shè)定點(diǎn)輸入創(chuàng)建一個(gè)控件;設(shè)定點(diǎn)是我們希望輸出具有的值(在這個(gè)系統(tǒng)中,旋轉(zhuǎn)速度)。
我們還可以為 PID 增益和輸出范圍創(chuàng)建控制(暫時(shí)保持這些不變)。
您現(xiàn)在應(yīng)該有一個(gè)類(lèi)似于圖 11 所示的 VI。
圖 11:添加 PID 控制。
我們需要確保我們的設(shè)定點(diǎn)、輸出和反饋在適當(dāng)?shù)闹捣秶鷥?nèi)變化。
我們的輸出范圍設(shè)置為在 -100 和 100 之間變化(圖 11),因此讓我們將相同的范圍應(yīng)用于反饋。反饋?zhàn)畛踉?0 到 5 的范圍內(nèi),因此我們需要縮放這些值(表 4)。
表4:反饋映射表;0 應(yīng)該映射到 -100,而 5 應(yīng)該映射到 100。
通過(guò)對(duì)反饋值應(yīng)用斜率(用 A 表示)和偏移量(用 B 表示)來(lái)實(shí)現(xiàn)縮放。我們可以通過(guò)求解以下兩個(gè)聯(lián)立方程找到所需的斜率和偏移量:
圖 12:求解將反饋值縮放到 -100 到 100 范圍所需的斜率 (A) 和偏移量 (B)。
縮放反饋和輸出
下圖顯示了我們?nèi)绾螌⑿甭屎推屏亢喜⒌?VI 中。
圖 13:縮放反饋值。
根據(jù)我們之前確定的占空比值,我們還必須縮放在 -100 和 100 之間變化的輸出:
表 5:輸出(占空比)映射表。
圖 14:求解將輸出值縮放到 0.046 到 0.070 范圍所需的斜率 (A) 和偏移量 (B)。
下圖顯示了我們?nèi)绾螌⑤敵隹s放合并到 VI 中。
圖 15:該項(xiàng)目的最終 VI。
概括
如果您已逐步按照教程進(jìn)行操作,那么您已經(jīng)成功實(shí)現(xiàn)了伺服的 PID 控制器,繞過(guò)了原來(lái)的伺服控制電路。
如果您現(xiàn)在切換到 VI 的前面板,您可以獨(dú)立調(diào)整所有三個(gè) PID 增益并使用“Setpoint”控件控制伺服。更改增益允許您調(diào)整 PID 控制器,從而獲得更好的伺服性能。
另外,請(qǐng)注意,我已將界面更改為滑塊,如下圖 16 所示,以便以更自然的方式移動(dòng)伺服。
圖 16:該項(xiàng)目最終 VI 的前面板。
您也可以通過(guò)右鍵單擊數(shù)字控件并選擇“替換》》數(shù)字》》水平指針幻燈片”來(lái)執(zhí)行此操作。
恭喜您使用 LabVIEW 和 NI myRIO 實(shí)現(xiàn)了 PID 控制器!
-
LabVIEW
+關(guān)注
關(guān)注
1971文章
3654瀏覽量
323560 -
PID控制器
+關(guān)注
關(guān)注
2文章
173瀏覽量
18582 -
myRIO
+關(guān)注
關(guān)注
28文章
11瀏覽量
28096
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論