在线观看av毛片亚洲_伊人久久大香线蕉成人综合网_一级片黄色视频播放_日韩免费86av网址_亚洲av理论在线电影网_一区二区国产免费高清在线观看视频_亚洲国产精品久久99人人更爽_精品少妇人妻久久免费

首頁 > 文章中心 > 正文

VxWorks高速通信的具體實現(xiàn)

前言:本站為你精心整理了VxWorks高速通信的具體實現(xiàn)范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

VxWorks高速通信的具體實現(xiàn)

基本概述

為保證工件臺上步進(jìn)電機(jī)在運動過程中速度和加速度沒有突變,減小沖擊,提高步進(jìn)電機(jī)運動的穩(wěn)定性,本文采用兩種常用的測試曲線——S-曲線和正弦曲線來測試工件臺步進(jìn)電機(jī)加減速控制[3]。正弦以及S-曲線的生成參數(shù)需通過上位機(jī)傳給下位機(jī)進(jìn)而傳遞給運動控制卡,而數(shù)據(jù)采集卡通過激光干涉儀采集的數(shù)據(jù)也要通過下位機(jī)傳遞給上位機(jī)。下位機(jī)內(nèi)嵌的vxworks是嵌入式實時操作系統(tǒng),Windows是一般用戶操作系統(tǒng),要實現(xiàn)兩者之間的高速、高可靠性網(wǎng)絡(luò)通信,一方面需要有好的硬件條件作保證,另一方面需要制定良好的通信規(guī)則。為了達(dá)到以上目的,本論文首先討論了如何制定通信協(xié)議,再進(jìn)一步討論如何加強(qiáng)傳輸?shù)姆€(wěn)定性。下位機(jī)VxWorks中采用了輔助時鐘中斷,實現(xiàn)了在0.2ms周期內(nèi)完成一次數(shù)據(jù)采集,并將數(shù)據(jù)封裝,使其符合上下位機(jī)同一的通信規(guī)則,發(fā)送給上位機(jī)。

高速通信的具體實現(xiàn)

1通信規(guī)則的制定

VxWorks支持流式套接字(streamsocket)、數(shù)據(jù)報套接字(datagramsocket)和zbuf套接字[4]。為了保證可靠性,與上位機(jī)通信時使用的是流式套接字,針對于TCP/IP協(xié)議。為了使通信雙方可以互相理解對方傳遞過來的字符串,必須實現(xiàn)建立通信協(xié)議。規(guī)定特定位置上字符所表示的含義,以保證下傳命令和返回信息能夠得到正確的接收和解釋。通信過程中存在數(shù)據(jù)和命令的傳送,但都是用同一個通信規(guī)則。通信的具體規(guī)則如下幀頭:標(biāo)志著一幀數(shù)據(jù)的到來,作為判斷標(biāo)志,由此開始接收一幀數(shù)據(jù)??梢韵蓴_,消除亂碼,保證傳輸數(shù)據(jù)的準(zhǔn)確性。幀類型:一個8位數(shù)據(jù),范圍為:00-FF,用來區(qū)分?jǐn)?shù)據(jù)和指令的標(biāo)志。規(guī)定:若此位為01,則表示傳遞的為數(shù)據(jù);若此為為02-FF之間的任一個數(shù),則表示傳遞的為指令,不同的數(shù)字表示不同的指令。這樣,就可以通過這一位判斷出傳遞的信息類型。幀數(shù)據(jù)的長度:分兩種情況:(1)若傳遞的為數(shù)據(jù),則此位為要傳遞的數(shù)據(jù)的長度加1(其中1代表幀類型傳遞時也要占用1位);(2)若傳遞的為指令,如果指令中不包含數(shù)據(jù),則此位為1,若指令中包含數(shù)據(jù),則此位為數(shù)據(jù)的長度加1。數(shù)據(jù):要傳遞的數(shù)據(jù)。要注意在傳遞過程中,要以字符的形式進(jìn)行發(fā)送。幀尾:表示一幀數(shù)據(jù)的結(jié)束,作為判斷標(biāo)志。由于下位機(jī)為嵌入式CPU板,資源比較緊張,為保證高速、可靠地傳輸,這里把上位機(jī)為服務(wù)器端,減少網(wǎng)絡(luò)通信對于下位機(jī)資源的占有量。

2通信方案的實現(xiàn)

2.1下位機(jī)的數(shù)據(jù)接收上位機(jī)向下位機(jī)發(fā)送的不僅有數(shù)據(jù),還有各種各樣的命令。由前面的通信協(xié)議可以看出,通過幀類型可以進(jìn)行區(qū)分然后由下位機(jī)進(jìn)行相應(yīng)的處理。具體各任務(wù)執(zhí)行流程為:首先系統(tǒng)進(jìn)行網(wǎng)絡(luò)、變量和激光干涉儀以及板卡的初始化,啟動根任務(wù),生成(taskSpawn)網(wǎng)絡(luò)接收任務(wù)(tNetRecv)、網(wǎng)絡(luò)監(jiān)視任務(wù)(tNetCheckLink),優(yōu)先級前者大于后者,下位機(jī)一直等待接收數(shù)據(jù),當(dāng)接收到命令寫入緩沖隊列[5]后,根據(jù)表3-1,表3-2,表3-3提供的通信協(xié)議來解析接收到信息的具體類型,將解析后參數(shù)以消息隊列方式傳送給數(shù)據(jù)表生成任務(wù)(tDataCreat)調(diào)用正弦、S-曲線函數(shù)生成數(shù)據(jù)表,同時啟動輔助時鐘調(diào)用數(shù)據(jù)處理函數(shù)rdisrl,即發(fā)送數(shù)據(jù)給上位機(jī)和各個運動控制卡。同時在整個流程中都有網(wǎng)絡(luò)監(jiān)視任務(wù)運行,當(dāng)接收、發(fā)送或者硬件出現(xiàn)強(qiáng)制結(jié)束等信號時都會強(qiáng)制執(zhí)行關(guān)閉套接字(close),釋放(free)緩沖隊列等操作使整個流程強(qiáng)制結(jié)束,以達(dá)到預(yù)防突發(fā)事件的目的。

2.2下位機(jī)數(shù)據(jù)發(fā)送下位機(jī)得到上位機(jī)的曲線生成命令生成的S-曲線、正弦曲線數(shù)據(jù)表以及從各運動控制卡、數(shù)據(jù)采集卡上讀取的數(shù)據(jù)都要傳遞給上位機(jī)。與接收不同,下位機(jī)向上位機(jī)發(fā)送的主要是數(shù)據(jù)??梢园巡煌蹇ㄉ系臄?shù)據(jù),以及求出的S-曲線、正弦曲線的數(shù)據(jù)綁定在一起進(jìn)行發(fā)送。通過該結(jié)構(gòu)體綁定將數(shù)據(jù)發(fā)送給上位機(jī),上位機(jī)按位接收,逐個處理。另外,本課題要求以0.2ms為周期發(fā)送一次數(shù)據(jù),從高實時、高精度角度考慮,可以利用另外一種獲得更高分辨率時鐘的機(jī)制——輔助時鐘[6],它可以啟動一個與系統(tǒng)時鐘不同的硬件定時器,掛接用戶自己的中斷處理函數(shù),獲得更高的時鐘精度。

2.3上位機(jī)數(shù)據(jù)的接收在TServerSocket組件的OnRead事件中調(diào)用ReceiveBuf()函數(shù),此函數(shù)的原型如下:int__fastcallReceiveBuf(void*Buf,intBufSize,intFlags=0);此函數(shù)共有三個參數(shù):第一個是要將數(shù)存入的數(shù)組,第二個是要讀取的字節(jié)數(shù),第三個一般省略。函數(shù)返回實際讀取到的字節(jié)數(shù)。當(dāng)讀取到數(shù)據(jù)后經(jīng)過進(jìn)一步的處理將下位機(jī)發(fā)過來的數(shù)據(jù)最后解析完成后存入MsgList容器中。數(shù)據(jù)保存:實際上在基類中已經(jīng)將收到的原始消息保存。為了能更清楚的看到解析完成后的數(shù)據(jù),可以在應(yīng)用程序中創(chuàng)建txt文件對數(shù)據(jù)進(jìn)行保存。步驟如下:首先將數(shù)據(jù)取出保存到intDataFromBoard[4];//板卡上的數(shù)據(jù);unsignedcharSin[4],SCurve[4];//sin()和SCurve()四個數(shù)組。其次,定義文件指針fp,通過fopen()創(chuàng)建文件并打開,然后即可將讀取的數(shù)據(jù)保存。曲線顯示:這里主要利用TChart組件,首先將解析完成的消息取出,保存的各自的數(shù)組中,然后調(diào)用DrawCurve(TChart*ChartMid,doubleX,floatY,doubleWindowWidth)函數(shù)在TChart組件中進(jìn)行顯示,基本流程圖如下:

2.4上位機(jī)數(shù)據(jù)的發(fā)送利用TBaseSocket中的方法int__fastcallSendBuf(void*Buf,intBufSize,intFlags=0);此函數(shù)共有三個參數(shù):第一個是要將數(shù)發(fā)送到的數(shù)組,第二個是要發(fā)送的字節(jié)數(shù),第三個一般省略。函數(shù)返回實際發(fā)送的字節(jié)數(shù),當(dāng)數(shù)據(jù)發(fā)出后再由下位機(jī)接收解析。

實驗結(jié)果

上位機(jī)發(fā)送的曲線參數(shù)分別為:正弦曲線:預(yù)定的正弦參數(shù)為頻率20Hz,初始相角為0,幅值為10.5;S-曲線:最大加速度:0.8m/s^2,最大加速度比為2,行程為30.0(參數(shù)精度可達(dá)到18~19為有效數(shù)字)。下位機(jī)接收到參數(shù)后生成數(shù)據(jù)表然后發(fā)給上位機(jī),然后上位機(jī)采用MATLAB仿真得出實際輸出曲線和仿真輸出曲線。如下圖所示:正弦曲線采樣5000個點,每0.2ms發(fā)送一次;S-曲線采樣28648個點,每0.2ms發(fā)送一次。由仿真圖可看出:實際輸出與仿真結(jié)果完全吻合、數(shù)據(jù)無丟失。

結(jié)束語

通過本論文的闡述,得到了一種保證數(shù)據(jù)傳輸準(zhǔn)確高速的通信規(guī)則,體現(xiàn)VxWorks所具有的實時性和靈活的任務(wù)間通信等優(yōu)點,為接下來本課題中工件臺做正弦、S-曲線和精確定位運動提供了保證,具有很高的工程實踐意義。

作者:王公峰徐仁新李聰李星陳興林單位:哈爾濱工業(yè)大學(xué)控制科學(xué)與工程系華北電力大學(xué)(北京)控制與計算機(jī)工程學(xué)院

文檔上傳者
大姚县| 镇远县| 长宁区| 安西县| 阳城县| 霍山县| 金湖县| 彩票| 巢湖市| 洛阳市| 台山市| 溧阳市| 蛟河市| 朔州市| 常德市| 射洪县| 鹤山市| 个旧市| 突泉县| 宜章县| 临洮县| 朝阳区| 郯城县| 中西区| 鄂尔多斯市| 乳源| 聊城市| 赫章县| 壶关县| 依安县| 秭归县| 普安县| 鄄城县| 长沙县| 资兴市| 迁西县| 女性| 新疆| 荆门市| 定边县| 苏州市|