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