基于STR-30的數(shù)控機床狀態(tài)實時監(jiān)控系統(tǒng)設計
摘 要:本文設計了基于無線數(shù)據(jù)傳輸模塊STR-30型的數(shù)控機床狀態(tài)實時監(jiān)控系統(tǒng)的硬件結構,介紹了數(shù)據(jù)傳輸所采用的時分多址通信協(xié)議和實時接收、處理數(shù)據(jù)的方法,完成了基于多線程技術的無線數(shù)據(jù)傳輸模塊軟件設計。
關鍵詞:數(shù)控機床;無線通信;時分多址;多線程
在傳統(tǒng)的CIMS(計算機集成制造系統(tǒng))中,數(shù)據(jù)流的采集、傳輸涉及大量的電纜鋪設等問題,限制了分布式工業(yè)制造系統(tǒng)整體控制性能的提高?;赟TR-30型的無線傳輸模塊能滿足對于數(shù)控機床實時監(jiān)控數(shù)據(jù)的穩(wěn)定高效的傳輸要求。本文介紹了在此基礎上設計的數(shù)控機床無線傳輸?shù)挠布Y構和軟件設計,并對所采用的通信協(xié)議進行了詳細分析。
系統(tǒng)結構和通信原理
通信模塊特點
上海桑博科技有限公司開發(fā)的STR-30型微功率無線傳輸模塊提供了標準RS-232、RS-485和RART/TTL電平這3種接口方式,可直接與計算機COM1(或COM2)相連,利用計算機的USB接口供電。STR-30的通信信道是半雙工的(或者直接用STR-30USB),最適合點對多點的通信方式,用戶無需編制多余的程序,只要完成從接口收發(fā)數(shù)據(jù)即可,其它如空中收/發(fā)轉換、控制操作等,STR-30無線通信模塊能夠自動完成。
系統(tǒng)硬件結構
系統(tǒng)的結構圖如圖1所示,整個系統(tǒng)由若干臺高性能PC組成,分別為遠程監(jiān)控端(主機)、現(xiàn)場監(jiān)控中心(從機)和現(xiàn)場監(jiān)控單元,其中現(xiàn)場監(jiān)控中心和遠程監(jiān)控端分別配置了STR-30無線通信模塊。主機和從機通過RS-232串口與STR-30無線通信模塊相連,兩個STR-30無線通信模塊(配置天線為30×7×1mm)之間進行通信。上行鏈路發(fā)送指令用于主機對從機以及現(xiàn)場監(jiān)控單元進行控制,下行鏈路發(fā)送狀態(tài)數(shù)據(jù)用于向主機傳遞數(shù)控機床當前的運行參數(shù),如主軸轉動和切削力等。STR-30無線通信模塊提供0~7個信道(最多可以提供256個信道,完全可以滿足客戶的需要了),如果需要增加系統(tǒng)容量,可以設置多個頻點,每個頻點供多臺數(shù)控機床使用,這樣,通過增加系統(tǒng)頻段資源的方法,可使系統(tǒng)容量成倍的增加。
圖1 數(shù)控機床狀態(tài)監(jiān)控系統(tǒng)硬件結構
時分多址通信協(xié)議
本系統(tǒng)采用TDMA時分多址通信協(xié)議。把時間軸劃分成一定長的時元(EPOCH),每個時元又劃分為若干個幀,每一個幀內部又劃分為若干個時隙。幀的重復周期為幀周期, 在每個幀中給主機/從機分配一定數(shù)量的時隙以發(fā)射信號,而在不發(fā)射信號的時隙中則接收從機/主機所發(fā)射的信號。主機以準確的時鐘為基準,從機時鐘則與之同步,形成統(tǒng)一的系統(tǒng)時鐘。 網(wǎng)內各個成員的發(fā)射時隙是彼此不同的,不存在相互干擾問題,但必須有準確的時隙同步,使每一次發(fā)射都以統(tǒng)一的時隙起點作定時基準。本系統(tǒng)測控容量為30臺數(shù)傳機床,數(shù)傳模塊的無線傳輸速率設置為9600bps,每個時隙的基本信息傳輸量為225bit,所以,設計為每個時隙35ms,每個時幀為3.5s,共有100個 時隙,每個時元35s,共10個幀。
通信模塊的軟件實現(xiàn)
程序的整體框架
無線傳輸模塊作為實時監(jiān)控系統(tǒng)的一部分,在設計時就考慮要把它設計成一個獨立的模塊,使對它的應用類似函數(shù)的應用,本文采用Visual C + + 語言進行設計,在終端的無線通信模塊程序中包括時戳類、編碼類、網(wǎng)絡通信類(或傳輸類) 。時戳類主要完成整個系統(tǒng)的同步,編碼類主要實現(xiàn)數(shù)據(jù)的R-S編碼功能。 網(wǎng)絡通信類主要是負責編碼后數(shù)據(jù)流的發(fā)送和接收。數(shù)據(jù)鏈終端模塊主要包含如下線程:
1 主線程
主線程的主要任務是對系統(tǒng)進行初始化,創(chuàng)建子線程和結束子線程,并響應菜單和鼠標操作。
2 編解碼線程
從主機/從機獲得數(shù)據(jù),進行編碼,并將編碼后的數(shù)據(jù)送入發(fā)送緩沖等待發(fā)送;從接收緩沖取得數(shù)據(jù)進行解碼,得到有效信息。
3 傳輸線程
負責把發(fā)送緩沖的數(shù)據(jù)送入數(shù)傳模塊調制解調器;從調制解調器讀入數(shù)據(jù)流,并存入接收緩沖區(qū)。
Windows下精確定時的實現(xiàn)
TDMA網(wǎng)絡是一種同步網(wǎng)絡,要求整個網(wǎng)絡的所有用戶都采用統(tǒng)一的時基,并且各自能維持一個高精度的時鐘。眾所周知,Windows是基于消息機制的系統(tǒng),任何事件的執(zhí)行都是通過發(fā)送和接收消息來完成的。 這樣就帶來了一些問題,如一旦計算機的CPU被某個進程占用,或系統(tǒng)資源緊張時,發(fā)送到消息隊列中的消息就暫時被掛起,得不到實時處理。因此,不能簡單地通過Windows消息引發(fā)一個對定時要求嚴格的事件。由于在Windows中已封裝了計算機底層硬件的訪問,所以,要想通過直接訪問硬件來完成精確定時也比較困難?;诒鞠到y(tǒng)定時到毫秒級的要求,采用QueryPerformanceFrequency()和 QueryPerformanceCounter()函數(shù)。在進行定時之前,先調用QueryPerformanceFrequency()函數(shù)獲得機器內部定時器的時鐘頻率, 然后在需要嚴格定時的事件發(fā)生之前和發(fā)生之后分別調用QueryPerformanceCounter()函數(shù),利用兩次獲得的計數(shù)之差及時鐘頻率,計算出事件經歷的精確時間。
傳輸線程的實現(xiàn)
STR-30與PC之間采用串口連接,在Microsoft Visual C++ 6.0環(huán)境下通過對Active X控件的編程來實現(xiàn)串口的通信簡單方便,可以節(jié)省很多時間。首先實例化控件類MSComm,然后通過調用MSComm的函數(shù)對串口進行初始化操作,設置其串口號、波特率、奇偶校驗、數(shù)據(jù)位數(shù)、停止位數(shù)以及接收觸發(fā)方式等。MSComm類的讀寫通過調用函數(shù)GetInput()和SetOutput()實現(xiàn)。主機周期性地發(fā)送入網(wǎng)消息,從機偵聽鏈路35s,以便獲取整個網(wǎng)絡的時隙分配使用情況,接收到入網(wǎng)消息后,立刻進行精同步過程,發(fā)送同步申請消息給主機,主機接收到同步申請消息則發(fā)送同步應答消息。精同步后網(wǎng)絡進入連續(xù)運行階段,在發(fā)送時隙發(fā)送消息,接收時隙接收有用消息。因為時鐘的漂移性,所以精同步過程要周期性地進行。從機用戶程序流程如圖2所示,主機用戶程序流程圖與之相似,所以不再贅述。
圖2 從機成員流程圖
編解碼線程和傳輸線程的同步
當編解碼線程工作的時候,要把數(shù)據(jù)送入發(fā)送緩沖區(qū)并從緩沖讀出數(shù)據(jù)進行解碼,而傳輸線程要從發(fā)送緩沖區(qū)提取數(shù)據(jù)發(fā)送出去、從調制解調器接收數(shù)據(jù)存入緩沖區(qū),需要設置精確的同步來保證它們之間不發(fā)生沖突。以編碼線程和發(fā)送線程的同步為例進行說明,首先在傳輸類里定義2個大小相同的發(fā)送緩沖區(qū)E1、E2,并定義4個事件,分別對應緩沖區(qū)E1空事件、緩沖區(qū)E1滿事件、緩沖區(qū)E2空事件、緩沖區(qū)E2滿事件。在主線程中首先對這4個事件進行初始化,由于開始時刻2個緩沖區(qū)應是空的,所以在初始化時緩沖區(qū)E1、E2的空事件為信號狀態(tài),而緩沖區(qū)E1、E2滿為非信號狀態(tài),這時啟動編碼線程和發(fā)送線程。由于用2個發(fā)送緩沖進行工作,所以在線程啟動之前必須有一個為當前發(fā)送緩沖區(qū)和當前編碼緩沖區(qū),把E1初始化作為它們的初值。當程序開始工作時,緩沖區(qū)空事件處于信號狀態(tài),所以編碼線程進行編碼工作,把壓縮數(shù)據(jù)流存入當前緩沖區(qū),而發(fā)送緩沖監(jiān)測不到緩沖區(qū)滿事件處于信號狀態(tài),所以等待。當前編碼緩沖區(qū)變滿時,編碼線程置該緩沖滿為信號狀態(tài),置該緩沖空為非信號狀態(tài),并交換當前編碼緩沖區(qū),同時,該線程進入等待狀態(tài);此時處于等待狀態(tài)的發(fā)送線程監(jiān)聽到緩沖區(qū)滿事件處于信號狀態(tài),便開始工作,發(fā)送當前緩沖的數(shù)據(jù)到調制解調器或局域網(wǎng)直至完畢。 然后該線程置當前發(fā)送緩沖空為信號狀態(tài),而當前緩沖滿為非信號狀態(tài),并交換當前發(fā)送緩沖區(qū),這樣,等待緩沖區(qū)空的編碼線程又可以占據(jù)該緩沖區(qū),如此反復直至編碼線程結束。
結語
實驗表明,利用STR-30通信模塊設計的無線數(shù)據(jù)傳輸模塊,數(shù)據(jù)傳送及時、安全可靠、誤碼率很低,而且體積小、功耗低,距離遠,可以方便地嵌入到數(shù)控機床監(jiān)測系統(tǒng)中,降低了監(jiān)控系統(tǒng)的開發(fā)成本和開發(fā)周期,提高了設備應用的靈活性。
本系統(tǒng)也存在一定的局限性,它的開發(fā)基于Windows操作平臺,尚不具備跨平臺的兼容性。如擴展其應用,還需進一步的工作
對于STR-30可以提供多種借口,如RS232,RS485,TTL,USB等接口。