伺服電機廣泛用于各類工業傳動裝置中,對伺服電機運行參數進行監控檢測是控制系統中必要的環節中,特別是在多臺電機協同工作的系統中。本文以三軸交流伺服傳動系統為例,闡述如何用VC++設計伺服驅動系統上位機監控軟件,并通過串行通信口與交流伺服驅動器進行數據交換。
1 系統基本組成
交流伺服電機驅動器由于其應用簡便和性能可靠,已廣泛的應用在工業位置傳動裝置中。市場上新型的交流伺服電機驅動器都具有符合RS485協議的串行通信接口,計算機可利用這一接口電路與驅動器之間實現串行通信,向驅動器發出相應的位置運行指令和速度運行指令,控制伺服電機的運行,并及時反饋電機的運行數據,供計算機分析。由于這種方法控制的穩定性好、精度高、傳輸距離遠、可雙向交流控制信息、線路簡單、很有發展前景。采用計算機與多臺交流伺服電機驅動器構成串行控制網絡圖1所示。
網絡中計算機是主機,而各驅動器為分支從機。在電機驅動器上各有一個旋轉開關。如圖1中分別為ID1,ID2,ID3。每個開關一般有01H~0FH共16個位置,用以確定唯一的驅動器識編碼。計算機以廣播方式發出控制指令,由于識別碼唯一,每次只有一臺驅動器可以有效地收到計算機發出的指令。相反,當各驅動器信息反饋給計算機時,識別碼是唯一的,因此計算機不會出現誤判。
三維運動系統工作原理為:伺服電機驅動器在計算機控制下,通過絲杠帶動三維工作臺X,Y,Z軸作三軸聯動運行,將工件固定在X,Y軸上,雕刻工具(激光)固定在Z軸上。從而形成空間軌跡曲線,從而雕刻出設計好的模型。
2 系統上位機的人機界面設計
在軟件編程過程中,人機界面(HMI)的設計非常重要,它將直接與操作員產生信息交流,友好的人機界面要求真實再現控制設備的狀態以及準確地采集所需參數的數據,這主要依靠VC++的控件組合及原代碼完成。整個人機界面包括主畫面、參數設置畫面、歷史曲線畫面、狀態測試畫面、報警畫面,各畫面間可以相互切換。當然也可根據用戶習慣編輯不同的人機界面。
主畫面主要有三軸聯動圖像雕刻控件、參數設置控件、歷史曲線控件、狀態測試控件、報警控件、圖像重復雕刻控件、圖像雕刻暫??丶D像雕刻停止控件、程序進程退出控件及客戶區實時圖像雕刻顯示曲線。主畫面為監控系統的窗口,基本上所有操作員需要了解的數據都集中在這里,其畫面的友好程度及功能完整性直接影響人機界面成功與否。
參數設置畫面集中了所有需要修改的參數,它包括導程設置、運行速度、雕刻范圍、分解步長、最小點距、坐標原點、位置控制PID參數、正反轉間隙誤差補償、步序、分步時間、滾珠絲杠螺距長度誤差補償、出光延時等。該畫面功能多,操作較為復雜。為了限制操作員的訪問權限,設置了模態口令對話框,主要是確保工藝的保密性,防止不必要的誤操作,口令可以在輸入正確口令后修改。
為方便操作者記錄原始數據,每天雕刻的圖像都存放在當天的數據庫里,要查看哪天的雕刻記錄,只要打開當天的數據庫就可以畫出當天的歷史曲線畫面。
[IMG=圖1 三維交流伺服驅動串口網絡監控檢測系統結構圖]/uploadpic/THESIS/2007/11/2007111609003578911J.jpg[/IMG]
圖1 三維交流伺服驅動串口網絡監控檢測系統結構圖
[IMG=表1 通信功能一覽表]/uploadpic/THESIS/2007/11/20071116090325955347.jpg[/IMG]
表1 通信功能一覽表
報警畫面顯示機電設備的報警信息,一旦出現異常情況,報警畫面中顯示報警文字和指示燈信息,同時連接在上位機的音箱發出聲音或將報警信息傳遞給報警鈴。提醒操作員及時采取措施處理故障。
狀態測試畫面能顯示出三運動軸的運動狀態,可觀察到三運動軸的是否回到坐標原點的信息以及單軸正反轉運動狀態。通過該畫面,可以檢測X,Y,Z軸到位開關是否處于正常的工作狀態,每軸的旋轉方向是否與規定一致,確保在雕刻圖像時電機按正確的指令運行,達到要求的空間運行軌跡。
3 上位機與伺服驅動器間的通信設計
現在工業用伺服驅動器通常都配置了RS485通信接口,利用該接口通過編制相應的驅動程序即可以實現上位機與伺服驅動器的信息交互。
3.1 RS485串行通信
工業RS485通信采用2線雙絞傳輸方式,即數據D+和數據D-,這種數據差動傳輸方式可以有效地消除干擾的影響。另外,RS485通信為1:N方式,1臺主控機(上位機)可級連多達16臺被控機(伺服驅動器)。
3.2 RS485通信規則
采用選擇/查詢方式,被控機常處于等待主機選擇或查詢狀態。伺服驅動器在待機狀態時,符合編號的被控機接收到主機的要求幀,判斷為正常接收信號后,對要求幀處理,并返回肯定應達幀,否則返回否定應達幀。
3.3 通信功能
上位機與伺服驅動器之間進行通信主要完成如表1所示的功能。
3.4 通信連接
主控機側:RS232/RS485轉換接口。
被控機側:RS485通信口。
在主控機和被控機之間用2不著線雙絞屏蔽電纜連接,末端被控機加終端電阻。
3.5 通信軟件的開發
①初始化串行通信口。通過計算機串口進行通信之前,必須根據監控設備的有關通信參數,約定雙方的通信方式,包括波特率的設置、奇偶位校驗及停止位的設立。確定數據傳輸幀格式,確定UART操作方式,逐個對線路控制寄存器和MODEM寄存器寫入操作。
②查詢發送流程。只需CPU檢測到UART發送器保持寄存器為空,即向UART輸出一個字符,發送方首先輸出RTS和DTR有效,檢測MODEM寄存器,只有收到DEC輸入的CTS、DSR有效,CPU才向UART輸出一發送字符。
③查詢接收流程。只需CPU檢測到UART接收器數據準備就緒,既可從接收器數據寄存器中讀取一字符,接收方首先輸出終端就緒有效(DTR=1),然后檢測MODEM狀態寄存器,只有DSR=1,CPU才接收一字符。
下面一段程序是采用VC++編程實現在Win98環境下讀取規定數目的全部數據代碼:
......
COMMTIMEOUTS timeOver;
memset (&timeOver, 0, sizeof (timeOver));
DWORD timeMultiplier, timeConstant;
timeOver.ReadTotalTimeoutMultiplier=
timeMultiplier;
timeOver.ReadTotalTimeoutConstant=
timeConstant;
SetCommTimeouts (hComport, &timeOver);
......
ReadFile (hComport, inbuffer, nWantRead, &nRealRead, NULL)
......
COMMTIMEOUTS結構用于設置超時,指定讀寫函數的等待時間。
在ReadFile( )函數中hComport為待讀串口句柄;inBuffer為輸入緩沖區大??;nWantRead為每次調用ReadFile( )時,函數試圖讀出的字節數;nRealRead為實際讀出的字節數;最后一個參數值NULL代表ReadFile( )將采用同步文件讀寫方式。
通過這段代碼,應用程序中的某一線程定時地查詢串口的接收緩沖區,如果緩沖區有數據,就讀取數據;若緩沖區中沒有數據,該線程繼續執行。
3.6 通信實驗
將上位計算機和伺服驅動器通過RS485連接,并設置好伺服驅動器內01H~0FH的單元定義,啟動應用程序運行,在屬性設置窗口中輸入通信口的參數,實驗驗證如下:
頻率設定:在送入框中設置頻率,通過對比伺服驅動器顯示面板的讀數,證明送入正確性。
頻率讀出:置伺服驅動器為鍵盤操作模式,通過上下鍵選定頻率,在窗口的讀出框中顯示頻率與設定一致,證明讀出正確。
4 結論
本例已成功地應用于三維激光內雕機伺服控制系統中,控制精度高,操作方便,可靠性高,具有良好的性能價格比,對用不同的交流伺服電機位置驅動的三維控制系統的檢測可參考本設計進行。
第二屆伺服與運動控制論壇論文集
第三屆伺服與運動控制論壇論文集