通信技術(shù)在三坐標測量系統(tǒng)中的應用
?、跧2C接收模塊[7]的FPGA實現(xiàn)
接收模塊接收到總線監(jiān)視模塊發(fā)送來的起始位信號后,準備接收總線上的數(shù)據(jù),接收到的地址后,判斷接收到的地址和電路板地址是否一致;當兩者一致時,向總線置應答信號ACK,繼續(xù)接收下面的數(shù)據(jù),收到的數(shù)據(jù)置于接收FIFO中;如果地址不一致,則放棄總線。使用Modelsim對I2C接收模塊進行仿真如圖4。
I2CbusIsBusy:總線狀態(tài);I2C_start:起始信號
myAddr:電路板的地址; rxBuf:接收寄存器
rxFIFO_wr:接收FIFO的寫信號
3、通訊協(xié)議
上位機和橋接板之間采用RS232總線進行數(shù)據(jù)傳輸,橋接卡和控制卡以及各個控制卡之間采用I2C總線進行數(shù)據(jù)的傳輸,通訊采用主叫和應答方式,數(shù)據(jù)傳輸中使用單片機進行解碼[8]。
主叫方發(fā)出指令后,等待對方響應,如果主叫方寫指令到被叫方,則被叫方收到指令執(zhí)行操作后返回確認信號;如果從主叫方讀指令,則被叫方在下一時刻占用總線后發(fā)送數(shù)據(jù)到主叫方,主叫方在0.5s內(nèi)沒有收到響應包,表明傳輸失敗。若連續(xù)3次沒有響應,則與對方通信連接失敗。
為了實現(xiàn)數(shù)據(jù)的一致性,RS-232和I2C總線采用相同的通信協(xié)議。
數(shù)據(jù)傳輸時以“包”進行封裝,中間加入長度位和奇偶校驗位。封裝格式:起始字符+長度字符 +序列號+源地址+目的地址包類型+傳輸數(shù)據(jù)+包校驗+結(jié)束字符;數(shù)據(jù)傳輸均采用ASCII碼。
包的定義:起始位定義為‘#’,占用一個字節(jié),接收方接收到‘#’時,表明數(shù)據(jù)開始傳輸;長度字符定義為除起始字符、結(jié)束字符和校驗字符的所有原始字符的長度,占用一個字節(jié);源地址:發(fā)送方地址,占用一個字節(jié);目的地址:接收方地址,占用一個字節(jié),當為‘00’時,定義為廣播地址;包類型:占用一個字節(jié),表明數(shù)據(jù)的類型,接收方根據(jù)包類型執(zhí)行對應操作;傳輸數(shù)據(jù):控制量的大?。话r灒憾x為長度字符,源地址,目的地址,包類型和數(shù)據(jù)之和,占用兩個字節(jié);結(jié)束位:定義為‘~’,當接收方接收到結(jié)束字符時,表明本包傳輸結(jié)束,對數(shù)據(jù)包進行處理,長度位和校驗位正確時執(zhí)行指令,否則,放棄改數(shù)據(jù)包。
4、實驗結(jié)果
使用該通訊系統(tǒng)實現(xiàn)和四控制卡之間的通訊控制,使用串口助手進行數(shù)據(jù)收發(fā),在發(fā)送數(shù)據(jù)間隔為5us的情況下對該通訊系統(tǒng)進行測試,在進行8小時的測試中,系統(tǒng)沒有出現(xiàn)數(shù)據(jù)丟失、錯誤、死機現(xiàn)象;使用廣播地址進行數(shù)據(jù)發(fā)送,返回信號正確,沒出現(xiàn)死機現(xiàn)象。
使用該通訊系統(tǒng)對四個電機進行控制,電機實際輸出情況如表1:
本實驗數(shù)據(jù)證明了該通訊系統(tǒng)的可用性及數(shù)據(jù)傳輸?shù)臏蚀_性。
使用該系統(tǒng)采用廣播地址實現(xiàn)四個電機同步聯(lián)動,各個軸的運動情況如表2:
本實驗數(shù)據(jù)證明了各個電機實現(xiàn)了指定的轉(zhuǎn)動角度;各個軸運動期間,電機的狀態(tài)經(jīng)過I2C總線[9]及RS-232總線通訊系統(tǒng)成功的發(fā)送到了上位機,通訊系統(tǒng)沒有出現(xiàn)死機和數(shù)據(jù)丟失,經(jīng)過該實驗,證明了數(shù)據(jù)傳輸?shù)恼_性。
4、結(jié)論
本系統(tǒng)采用FPGA進行通訊系統(tǒng)的設計,提高了數(shù)據(jù)的傳輸率和準確性,實現(xiàn)了對控制機構(gòu)及時、快速的控制,有效防止突發(fā)事件的處理,經(jīng)實驗證明,本系統(tǒng)快速、準確的實現(xiàn)了數(shù)據(jù)的傳輸,可以有效快速的實現(xiàn)對電機的速度、位置控制、準確的讀取電機的編碼器信號。
評論