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