摘要:本文針對摩擦學試驗研究的特點,采用廣泛使用的LabVIEW編程語言,開發用于東元7200MA變頻器運行頻率的控制串口通訊程序。由于摩擦學試驗機和摩擦學測試的特殊性,摩擦學試驗中的
變頻器調速有著不同于一般工業變頻控制的特點。文章針對上述問題,一一作出解答。
1、引言
本文針對摩擦學試驗研究的特點,采用廣泛使用的LabVIEW編程語言,開發用于東元7200MA變頻器運行頻率的控制串口通訊程序。
由于摩擦學試驗機和摩擦學測試的特殊性,摩擦學試驗中的變頻器調速有著不同于一般工業變頻控制的特點。一方面,要求變頻器調速能夠在較大范圍內滿足摩擦學測試的要求,使得試驗結果具有可比性;另一方面,摩擦磨損試驗過程中,對控制有一些特殊的要求,例如需要特殊的速度、運動的非周期性以及設備的快速啟動和停止等。在一些疲勞試驗中,甚至要求電機進行寸動或者往復運動以檢測材料的性能,有的試驗現場對人體的損害比較大,需要遠距離進行控制和檢測電機的運轉情況。所以,必須利用計算機程序控制變頻器實現一些特殊控制功能。這就要求計算機與變頻器之間存在有效的通訊功能。
2、通訊系統總體設計
串行通信是一種常用的數據傳輸方法,占用的通信線路少、成本低,在工程通信方式上占有重要地位。本文以內置RS485通訊接口的東元7200MA變頻器為研究對象,設計基于LabVIEW的控制變頻器串口的通訊系統。圖1所示為系統總體結構框圖。
計算機通過RS485通信口與變頻器相連,對變頻器進行控制。RS485串行總線采用平衡發送和差分接收的方式傳輸信號,具有傳輸距離遠(約1219m)、抗*力強等特點。而且總線收發器具有高靈敏度,能檢測低至200mV的電壓,故傳輸信號能在千米以外得到恢復。由于目前PC機普遍只配有RS232串口,所以在計算機上連接一個RS232/485轉換器,然后再與變頻器的串口相連。將各種動作按照通訊協議編寫成命令,發送給變頻器,就達到了通過PC機來控制變頻器的目的。同樣,PC機讀取數據也必須由變頻器根據RS485通訊協議進行識別和響應才能完成。
3、軟件實現方案
目前,串口通信程序的開發在Windows操作系統下一般用VB,VC,Delphi等編寫。當采用VB,VC開發程序時,操作者不得不面對非常繁瑣的API函數編程;而Delphi沒有自帶的串口通信控件,在它的幫助文檔里也沒有提及串口通信,給編程人員帶來許多不便。
LabVIEW是美國NI公司開發的一種基于圖形化的編程語言,它內置數據采集、儀器控制、過程監控和自動測試功能,包括VISA,GPIB,RS232,DAQ等模塊和基本分析庫;提供強大的數據分析、處理、顯示功能的同時還保證系統靈活性;LabVIEW具有開放的系統互連性及廣泛的硬件支撐,具有DDL和CIN接口,可以與多種設備直接連接;流程圖式的開發環境大大簡化了程序開發的復雜程度,縮短開發周期;界面良好、易于理解,方便調試和維護,用它來實現PC機與變頻器的串口通信是zui為簡捷的方法之一,已經具有較廣大的用戶群。
設置東元7200MA系列變頻器所涉及的主要參數有端口號、波特率、數據位等,具體說明如表1所示。
本程序采用中文版LabVIEW8.2進行通訊編程,在編寫程序之前,安裝的NIVISA驅動必須和LabVIEW程序版本匹配,避免編程出錯。從變頻器設置轉數到啟動再到停止有一個順序和時間過程,因此本程序主要采用順序結構和層疊式結構實現。具體步驟如下:
?。?)初始化串口,利用VISAConfigureSerialPort.VI設置PC與變頻器通信的基本參數:端口號、波特率、奇偶校驗、數據位、停止位、緩沖區大??;
?。?)利用VISAWrite.VI寫端口,根據變頻器的通訊協議把設定轉數的動作參數變成命令符,然后把整個命令幀以ASCII碼字符串的形式發送到串口;
?。?)利用Wait(ms).VI延時等待,主機發送命令到變頻器,變頻器判斷命令正確后將數據返回給主機需要一定時間,故這一步需要設置延時等待。等待時間可根據變頻器的響應時間確定,也可以通過LabVIEW的中的工具確定出程序運行時間來設置等待時間;
(4)再利用VISAWrite.VI寫端口,把啟動的動作參數寫成命令幀并以字符串形式寫入VISAWrite.VI的緩沖區。
以上4步即可完成變頻器以一定的轉數轉動。寫命令到串口的過程在While循環里進行,變頻器啟動后不需要停止,可以直接連續地設置變頻器的轉數來更改電機轉動速度,While循環內采用延時等待處理,延時500ms;
同理,停止命令以一個層疊式順序結構和上面(2),(3)兩步命令層疊進行,同樣先需要設定變頻器轉數為零,然后延時等待,zui后把停止命令以字符串形式發給串口,完成變頻器的停止動作;
zui后,利用VISAClose.VI關閉串口;串口不再使用時需要關閉,使其處于空閑狀態,便于下一次打開串口。整個串口通信完畢后用ExitLabVIEW.VI退出此程序。程序的主要代碼框圖如圖2所示。
程序的一個很大的優點在于,將變頻器速度控制與變頻器的啟停控制整合到一起,使得程序操作簡單,更加優化合理。程序中采用了調用子VI的方法,大大簡化了流程圖的復雜程度,提高可讀性,方便查看代碼和調試程序。
由于變頻器接受的數據格式為ASCII碼字符串,所以在命令寫入串口之前必須*行數據格式的轉換,這里子VI的作用就是將各種參數值轉換成ASCII碼字符串,然后寫入串口。以變頻器的啟動為例,根據東元變頻器的啟動數據格式,以十六進制形式發送0110000000010200016790,利用反饋節點將此字符串拆分成字符串數組,再轉換為數值數組,然后利用字ByteArrayToString.VI模塊,將字節數組轉換成ASCII碼字符串。變頻器接受ASCII碼后經過算法還原,然后去執行相應的操作。就可以啟動變頻器,程序代碼框圖如圖3所示。
程序中局部變量的使用也大大簡化了程序開發的復雜程度,和VisualC++等基于文本的編程語言不同,LabVIEW中的各個對象之間是靠連線來傳遞數據的,但是在需要兩個程序之間交換數據時,靠連線的方式是不行的;即便是在同一個程序中的對象之間交換數據,有時也會遇到麻煩。在這種情況下,就需要使用局部變量。
串口通信操作前面板如圖4所示,直接在面板上設置參數,簡潔明了,易于操作。在試驗過程中可以隨意連續的更改轉數,實現無級調速。
4、結果驗證
這里主要是檢查電機的運行狀態是否與設定狀態吻合,變頻器根據PC機發送的指令控制電機,然后又將電機的當前工作狀態讀取上來。讀取變頻器的狀態指令,可利用VISARead.VI模塊,程序具體實現方法與上述寫入指令相同。
針對不同情況進行錯誤處理:首先在前面板中發送指令給變頻器,然后去讀取此時變頻器運行指令,將讀取上來的數據進行指令校驗和的驗證,做條件判斷:
?。?)如果校驗正確就說明數據指令執行成功;
?。?)如果很長時間都沒有將變頻器上的轉數讀上來,或者變頻器根本就沒有動作,出現超時錯誤,說明變頻器通訊故障。
(3)讀取的值與設定轉數值不同,那么指令發送錯誤,將重新發送指令。可以在前面板顯示出變頻器的電壓狀態表,方便直觀地查看電機工作狀態。
通過環一塊摩擦磨損試驗機的試驗運用證明,所開發的變頻器控制軟件設計合理,使用方便,響應速度快,盡管電機存在慣性作用,也能在較短的時間內達到要求的速度,能夠保證當摩擦學試驗參數變化時,電機仍保持很好的剛性,很好地解決了試驗過程中電機速度控制問題。
本文的創新點在于根據摩擦學試驗機的具體試驗要求,利用LabVIEW技術實現計算機與變頻器的通信,利用串行端口來控制變頻器的運行,操作簡單,響應速度快,能夠連續、動態地改變電機轉速,為環一塊摩擦磨損試驗機的試驗系統提供了強大的。該設計方法已應用在筆者實驗室的實際工作中,獲得很好的試驗效果。同時,該通信方式簡單、穩定、可靠,具有很好的實時性和可移植性,可供其他串口通信系統參考。