實 驗 五 : MATLAB 即 時 控 制 介 面 應 用 -數 位 信 號 產 生 器 及 數 位 示 波 器
一 、 實 驗 目 的 :
學習使用 MATLAB 即時控制介面程式,透過 AD/DA 轉換介面卡產生任意 波形及攫取信號。
二 、 系 統 方 塊
Signal Generator
Scope Analog Output D/A Converter
A/D Converter Analog
Input
Mux
圖 5.1 數位信號產生器及數位示波器 SIMULINK 接線圖
三 、 相 關 原 理 :
MATLAB/SIMULINK 軟體是目前控制工程領域中使用最廣泛的電腦 輔助設計軟體,它的優點有:1、具開放性架構容易與現有設備連接。2、
附有許多功能強大的工具箱(Toolbox)可供使用。3、SIMULINK 圖形式的模 擬介面可供動態系統模擬,使用簡易。這些優點使得這套軟體在工業界及 學術界已佔有一席重要地位。
MATLAB 即時(Real-Time)控制介面之主要功能為連結 SIMULINK 與硬 体輸出入介面卡,使得在 SIMULINK 能直接與硬体 AD/DA 轉換介面卡即 時溝通。如此吾人可利用 SIMULINK 的任何具輸出能力之方塊透過 D/A 轉 換器輸出信號至外界,如產生步級命令,正弦波形,控制命令等,而系統 響應則可透過 A/D 轉換器將信號傳給 SIMULINK 以供回授、信號分析處理
或由 SCOPE 方塊觀測等,故可免去撰寫低階程式語言之困擾。
圖 5.1 為利用 MATLAB 即時控制介面所建構之數位信號產生器與示波 器。將 Signal Generator 方塊之信號輸出饋入 MATLAB 即時控制介面所提 供之 SIMULINK D/A 轉換器方塊(D/A Converter or Analog Output),即構成 一數位信號產生器。將 A/D 轉換器方塊(A/D Converter or Analog Input)之輸 出饋入 Scope 方塊構成一數位示波器,接線十分簡單。所能輸出或攫取波 形的頻率上限由 A/D 及 D/A 之轉換時間來決定。假設 A/D 及 D/A 每通道 (channel)之轉換時間分別為 10s 與 5s,加上電腦程式處理的時間,故圖 5.1 之 SIMULINK 方塊圖能容許之取樣頻率上限約為 10kHz(週期 0.0001 秒)。在其他實際應用上,系統所能達到之最低取樣時間將視電腦性能及 SIMULINK Model 檔的複雜度決定。
除了建構信號產生器與示波器外,更可作為控制器之發展系統。以直 流馬達 PID 速度控制為例,在 MATLAB 即時控制環境下,軟體模擬與硬體 實作皆可在 WINDOWS 的 MATLAB/SIMULINK 環境下完成。程序為先建 構如圖 5.2a 之 SIMULINK 方塊圖作軟体模擬,若響應符合要求,則可將受 控体部份去除,再將控制器之輸出 u 與速度迴授分別透過 D/A Converter 及 A/D Converter 與硬体連接即可實現控制器(如圖 5.2b),對應之硬體接線 圖將變得十分簡單(如圖 5.3)。由以上之說明,藉由 MATLAB 即時控制介 面,可快速驗證控制器性能並將使自動控制之實驗與模擬一貫化。
u
(a)
u
(b)
圖 5.2 直流馬達 PID 速度控制模擬與硬體實作 SIMULINK 方塊圖
D/A,CH1
A/D, CH1
PC PC PC
AD/DA卡AD/DA卡
M
馬達驅動器
u
直流馬達驅動模組
圖 5.3 直流馬達 PID 速度控制硬體實作接線圖 搭配 MATLAB 即時控制介面的實驗教學設備具有下列特色:
1. 控制器的設計由 MATLAB 輔助完成,模擬是使用 SIMULINK 的圖形式 介面構築系統方塊圖的方式完成。
2. 硬體實作部份可在 SIMULINK 環境下直接建構方塊圖透過 AD/DA 輸出 入介面卡完成受控体之開、閉回路控制。此一方式可快速驗證控制器性 能。缺點為利用數位式控制器近似類比控制器,其效果受限於 AD/DA 及電腦的運算速度。由於個人電腦的運算能力近年來不斷呈倍數成長,
因此預期以數位式的控制器模擬的方式所產生的差異將隨個人電腦運 算速度的提升而減小。
3. 在即時控制過程中,可即時改變系統參數(如 PID 控制器參數)不需重新 組譯 SIMULINK Model 檔:即具有所謂的 Tuning on the fly 功能。
4. 將馬達驅動器之輸入端、速度及位置回授信號端開放,可自行製作類比 控制電路以驗證控制器之設計。
5. 在 硬 體 實 驗 過 程 中 , 信 號 的 觀 察 、 分 析 與 記 錄 均 在 MATLAB/
SIMULINK 環境下進行,十分便利。
6. 除可供自動控制實驗(以直流馬達控制為主)外,與 MATLAB 其他工具 箱(如數位信號處理、非線性控制、模糊及類神經等)構成一套容易使用 具親和性介面的多功能設計、分析及實作之發展平台,適用於即時控 制、即時信號處理、快速原型產品發展及硬品迴路測試等。
本實驗藉由建構如圖 5.1 之簡單系統,練習在 SIMULINK 環境下,如 何利用 MATLAB 即時控制介面所提供之 D/A Converter (D/A) 及 A/D Converter (A/D) 方塊與外界溝通。在後續的實驗項目中,將以此為基礎,
進行直流馬達之參數判別、轉速及位置控制等實驗。使用 MATLAB 即時控 制環境的控制器設計流程如圖 5.4。
規格製定
模型建立
MATLAB 輔助控制器
設計
MATLAB 即 時控制介面實
現控制器 SIMULINK 軟體模擬系
統響應
規格滿足
?
規格滿足
?
完成 No
Yes
No
Yes
圖 5.4 MATLAB 即時控制環境的控制器設計流程
由於即時控制介面需將 SIMULINK Model 檔透過一連串之轉換、翻譯 與連結系統函式後,成為可執行檔再載入記憶體執行。故在 SIMULINK Model 檔內的設定與一般作純模擬時不同。
玆將使用即時控制介面的方法及相關設定介紹於後。
A. SIMULINK Model 檔內 Configuration Parameter 選單的設定
當使用即時控制介面程式時,SIMULINK Model 檔內各選單的設定與 模 擬 時 不 同 , 已 完 成 設 定 之 空 殼 檔 mrtc_shell.slx 可 供 使 用 或 自 c:\Aclab_Examples 目錄下,將 adda_test.slx 檔 copy 至 D:\Work 目錄 , 選單的說明如下:
1. SIMULINK Model 檔,應選取 External(如圖 5.5)。
即時控制設定值 設定停止時間
圖 5.5 即時控制的設定選項
2. Configuration Parameter 選單下的 Solver 選項應設定如圖 5.6,應注意取 樣時間(Fixed step size﹚設定值應視電腦性能及 SIMULINK Model 檔的 複雜度決定,對具較佳性能的電腦或執行較簡單的 SIMULINK Model 檔時,可取較低的數值,反之則應提高。Stop time 亦可於 SIMULINK Model 檔右上方之欄位設定(如圖 5.5),注意應輸入有效之數值,否則將 於編譯成執行檔時產生錯誤訊息。
註 1:若取樣時間太短(或執行時間太短),系統可能當機或出現下列錯 誤訊息
??? RTTOOL: Too fast for this hardware
系統在可容許之最小取樣時間設定下可以正常工作而不顯示上 述錯誤訊息,但是 Scope 方塊的顯示波形會有不完整或受到延遲
的情況,這是由於程式執行較資料顯示有較高優先權。
圖 5.6 Solver 選單的設定
3. Configuration Parameter 選單下的 Code Generation 選單之設定(圖 5.7)
圖 5.7 Code Generation 選單的設定
B. 即時控制介面程式的啟動與停止
1. 按下啟動(Run)按鈕(如圖 5.8),將 SIMULINK 檔編譯成執行檔。
啟 動( R u n )按 鈕 停 止( S t o p )按 鈕
圖 5.8 SIMULINK 即時控制程式的啟動與停止
2. 按啟動(Run)按鈕系統會自動翻譯並執行程式。若在 Diagnostic Viewer 視窗產生如圖 5.9 之警告訊息,表示 Scope 方塊之即時顯示功能未啟動,
應參考第 C 節之說明將 Scope 之即時顯示功能啟動。
圖 5.9 Scope 方塊之即時顯示功能未啟動之警告畫面
3. 執行即時控制程式時,原三角形圖示會變灰色,而停止(Stop)按鈕變成 黑色(如圖 5.8)。此時,按下此鈕可停止執行程式。
4. 程式執行中,可即時更改非輸出入方塊(如信號產生器、控制器等)之參 數,更改完畢即刻生效。
5. 當時間到達 Stop time 之設定值時,程式將自動結束。欲中途停止程式,
按一下停止(Stop)按鈕(如圖 5.8)。
C. 資料攫取設定
即時控制介面程式在攫取信號時,需如同一般示波器之設定:如觸發 源,觸發模式及觸發位準等,其設定方式分述於後。
1. 在 Tools 選單下按一下 External Mode Control Panel,出現如圖 5.10 之話 盒各按鈕之功能說明如下
圖 5.10 External Mode Control Panel
Connect 選項的功能與 Simulation 選單下 Connect to target 的功能相同
Arm trigger 選項的功能與 Signal & triggering 選單下 Arm when connect to target 的功能相同。
2. 選項 Signal & triggering 之設定:觸發源,觸發模式及觸發位準等之選擇
左下角’Trigger’選項 Source 設為 manual(手動﹚時之畫面及其設定 說明如圖 5.11 所示。
若波形顯示時間不足,應將儲存緩衝區加大。
打X表示此示波器已啟動 顯示所選定示波器之狀態
啟動或關閉所有示波器
儲存緩衝區大小(設定值×step size=波形顯示時間)
觸發模式選擇(normal 或one shot)
‘‘自動觸發模式’’選項
圖 5.11 “Trigger”選項 Source 設為 manual 時之畫面
左下角’Trigger’選項 Source 設為 signal 時之畫面其設定說明如圖 5.12 所示。
符號T表示已選取為觸發信號
觸發緣設定(rising, fall 或either)
觸發信號選擇
觸發位準設定
延遲觸發點數
觸發信號源 觸發信號埠
回到SIMULINK
圖 5.12 “Trigger’’選項 Source 設為 signal 時之畫面
一般使用狀況下, Data archiving(資料存檔設定﹚不必更動。若需
設定須參考相關使用手冊。
若 Configuration Parameter 選單下之 Solver 選項內 Stop time 之設定 值除以 Step size 之設定值(即相當於資料點數)低於 1000 時,將無法 顯示波形並出現如圖 5.13 之錯誤訊息。此時應降低 Step size 或增加 Stop time。
圖 5.13 資料點數太低時所產生之錯誤訊息
我們提供範例檔案 adda_test.slx 可作為建立即時控制 SIMULINK Model 檔之參考。
3. 儲存顯示波形
開啟"Scope" 方塊對話盒點選”Data history”選單將 Save data to work space 打勾,Variable name 改為欲儲存之變數名稱 (假設名稱為 data),Format 選擇”Array”
圖 5.14 "Scope" 方塊對話盒”Data history”選單
如此在模擬或實作完成後,結果將存於 MATLAB 變數 data (注 意大小寫)中供後續分析,比較及圖形列印之用。時間軸的資料存於
變數 data 的第一行,而 Scope 方塊的輸入信號則存於第二行以後,
故在 MATLAB Command 視窗下輸入
plot(data(:,1),data(:,2))
將 Scope 方塊之波形繪出並開啟 Figure 圖形視窗(如下圖)。
圖 5.15 圖形(Fig)視窗
此外,我們提供範例檔案 adda_test.slx 及空殼檔 mrtc_shell.slx 可作為建 立即時控制 SIMULINK Model 檔之參考。
四 、 實 驗 步 驟 :
A. A/D 及 D/A 轉 換 器 校 正
(1) 依照硬體接線圖(圖 5.16)連接。
A/D Ch. 1 D/A Ch. 1
PC AD/D
A 卡
PC PC
PC AD/D
A 卡 AD/D A 卡
短路 (紅線)
A/D Ch. 1 (藍線) D/A Ch. 1
PC PC
PC AD/D
A 卡 AD/D A 卡
PC PC PC
PC AD/D
A 卡 AD/D A 卡
短路 (紅線)
(藍線)
圖 5.16 硬體接線圖
(2) 將 C:\Aclab_Examples\adda_test.slx 檔案複製到目錄 D:\Work 。 (3) 啟動 MATLAB 及 SIMULINK。
(4) 開啟 adda_test.slx 檔依照圖 5.1 接線,硬體接線如圖 5.16。
(5) 將 Signal Generator 方塊設定輸出 5Vpp,10Hz 正弦。
(6) Simulation 選單中 Solver 的選項設定如下:
Start time=0, Stop time=inf (無窮大), Fixed step size(取樣時間)設為 0.001
(7) 參考相關原理中第 C 節,“Trigger”選項 Source 設為 manual,啟動示 波器 Scope。
(8) 參考相關原理中第 B 節步驟 13,啟動即時控制介面程式。
(9) 打開 A/D Converter 及 D/A Converter 方塊選取輸出選項 10V。
(10) 按 Build 編譯程式,再按 Connect 載入程式。
(11) 開啟馬達驅動器電源(提供緩衝卡電源)。
(12) 按啟動按鈕(如圖 5.8)啟動即時控制程式。
(13) 點選 adda_test.slx 檔之 Scope 方塊,應可觀察到 Signal Generator 方塊輸出之 10Hz 正弦波。
(14) 利用資料游標計算 Scope 方塊所顯示波形的峰值及頻率是否符合預 期。如果 A/D 與 D/A 信號相差達到二倍時請向老師反應(須重設開關) (15) 若 A/D 與 D/A 之波形大小不一致須在 A/D Converter 讀入資料處後加
入 constant 或 Gain 使其大小一致。
(16) 適當調整 Fixed step size (取樣時間)及”Signal & triggering”之選項,觀 察其功能及所造成之影響。
(17) 飽和點校正,將正弦波振幅增加直到讀入波形發生飽和截斷現象,記 錄正負飽和電壓(約正負 9.5~10V 之間)。
(18) 零電位校正:拆開 D/A(紅線)及 A/D(藍線)連接,將藍線(A/D)與黑線(接 地)連接觀察 Scope 讀入是否為零,若非零電位記錄其偏移量(DC OffSet)
(19) 準位及倍率校正,將 Signal Generator 改成方波 8V,10Hz,觀察 Scope 若輸出入信號大小及準位不同,則於 A/D 方塊後方串聯調整倍率(gain)
及加上偏移(constant)使輸出入盡可能一樣大。
(20) 改變 Fixed step size(取樣時間)為 0.01;Signal Generator 為正弦 波 1Hz,記錄輸出(D/A)與輸入(A/D)波形之轉換落後時間。
B. 馬達及量測元件測試
Scope1 Signal
Generator
Scope Analog Output D/A Converter
A/D Converter Analog
Input
Mux
Speed Pos
Sim_Encoder
圖 5.17 馬達量測元件測試方塊圖
註: 虛線部份已接妥
Motor Driver
ARM
編碼器 紅
黑 GND TG+
*
Ia
D/A Ch. 1
GND
A/D Ch. 1
PC
AD/DA卡
圖 5.18 馬達量測元件測試
(1) 於 MATLAB COMMAND 視窗下鍵入 addalib 找出 Sim_Enoder 方塊並 修改系統方塊如圖 5.17 所示。
(2) 連接硬體電路如圖 5.18 所示。(紅色線接到Ia藍色線接 TG+黑色 線接 GND)
(3) 設定 Signal generator 為正弦波 5V,1Hz,觀察 A/D 信號與馬達 轉動方向與快慢之關係(此信號為馬達轉速發電機之輸出信號,正 半週時馬達正轉其轉速發電機輸出與轉速成正比之正電壓,反之 亦然)(注意:示波器觀察時間須同步改變 2 秒以上。)
(4) 觀察 Sim_Encoder 信號與正弦波關係。
(5) 改變正弦波振幅觀察馬達響應。
(6) 增加正弦波頻率(20Hz 以下)觀察馬達響應。
(7) 將 Signal generator 設定為方波並重做(3)~(6) 。
五 、 記 錄
(1) 記 錄 A/D 飽 和 電 壓 及 校 正 結 果 , 列 印 校 正 後 方 波 輸 出 結 果 。
(2) 記 錄 方 波 輸 入 馬 達 轉 速 信 號 極 性 及 振 幅 。 (3) 記 錄 方 波 輸 入 馬 達 位 置 信 號 振 幅 及 斜 率 。
(4) 已 知 轉 速 發 電 機 規 格 為 : 7V/1000rpm 轉 換 A/D 電 壓 信 號 為 正 負 電 壓 求 每 伏 特 電 壓 表 示 之 轉 速 為 何 ? (rpm/1V) (5) 已 知 增 量 型 編 碼 器 (Encoder)規 格 為 2000Pulse/轉 經 4 倍
頻 後 為 8000Pulse/轉 , 即 每 360 度 產 生 8000 個 脈 衝 。 脈 衝 經 16 bit(0~65535)上 下 數 計 數 器 轉 成 正 或 負 10V,求 轉 換 倍 率 單 位 為 何 ? (度 /1V)。
(6) 求 出 上 述 的 Encoder 轉 換 在 不 使 計 數 器 溢 位 情 況 下 , 最 大 可 以 量 測 的 角 度 ?
五 、 討 論
1. A/D 轉 換 有 幾 種 方 式 ?
2. 以 本 實 驗 室 規 格 為 將 正 負 10V 轉 成 12bit 之 數 值,請 問 其 解 析 度 為 何 ? (V/bit)