日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

嵌入式現(xiàn)場總線通信網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)(二)

出處:電子愛好者博客 發(fā)布于:2013-05-28 15:09:50

  軟件設(shè)計(jì)

  的應(yīng)用層定義

  本文設(shè)計(jì)的現(xiàn)場總線通信網(wǎng)關(guān)定義了CANBUS的應(yīng)用層協(xié)議.

  (1)規(guī)定網(wǎng)關(guān)收到的CAN數(shù)據(jù)幀中的第1個(gè)字節(jié)為CANBUS的功能碼,該功能碼為0x0F時(shí),與MODBUS進(jìn)行通信.

 ?。?)規(guī)定CAN數(shù)據(jù)幀中的第2個(gè)字節(jié)的高4位為該幀的標(biāo)號位,低4位為該幀中包含的數(shù)據(jù)字節(jié)數(shù),該字節(jié)數(shù)為MODBUS協(xié)議中數(shù)據(jù)域的字節(jié)數(shù).

 ?。?)規(guī)定CAN 數(shù)據(jù)幀中的第3,第4 個(gè)字節(jié)分別為MODBUS的地址碼和功能碼.

 ?。?)規(guī)定從CAN 數(shù)據(jù)幀的第5個(gè)字節(jié)開始為

  的數(shù)據(jù)域,由于MODBUS 的數(shù)據(jù)域一般為4 個(gè)字節(jié),此時(shí)CAN數(shù)據(jù)幀的數(shù)據(jù)段恰好為8個(gè)字節(jié).

 ?。?)當(dāng)MODBUS 數(shù)據(jù)長度大于4 字節(jié)時(shí),需要從2 個(gè)或者多個(gè)連續(xù)發(fā)送的標(biāo)號相同的CAN 數(shù)據(jù)幀中獲得完整的MODBUS數(shù)據(jù).當(dāng)獲得的數(shù)據(jù)位數(shù)與幀中給出的位數(shù)不同時(shí)丟棄該幀.

  定義一個(gè)數(shù)據(jù)緩沖區(qū)A,一個(gè)數(shù)據(jù)緩沖區(qū)B,分別用于臨時(shí)存放CANBUS到MODBUS的數(shù)據(jù)和MODBUS到CANBUS的數(shù)據(jù).

  的收發(fā)程序設(shè)計(jì)

  該部分包括CAN初始化,CAN發(fā)送程序,CAN接收程序.CAN 的初始化包括以下內(nèi)容:配置嵌套向量中斷控制器(NVIC),設(shè)置CAN的RX0和TX中斷的響應(yīng)優(yōu)先級和搶占優(yōu)先級,RX0和TX 中斷使能.根據(jù)硬件連接配置GPIO,本文中RX 使用GPIOD0,TX 使用GPI-BOD2.設(shè)置波特率及過濾器配置.

  數(shù)據(jù)的接收是通過接收郵箱(FIFO)中斷進(jìn)行處理的,當(dāng)FIFO接收到一個(gè)新的報(bào)文時(shí),過濾器根據(jù)預(yù)設(shè)的值判斷報(bào)文的標(biāo)示符是否匹配,若不匹配,直接丟棄該報(bào)文;若該報(bào)文的標(biāo)示符與預(yù)設(shè)值匹配則中斷處理程序?qū)⒔邮锗]箱中的數(shù)據(jù)拷貝到數(shù)據(jù)緩沖區(qū)A,該數(shù)據(jù)將作為MODBUS 主站發(fā)往MODBUS 從站的數(shù)據(jù).

  數(shù)據(jù)接收程序流程如圖5所示.

  的數(shù)據(jù)發(fā)送同樣使用郵箱機(jī)制,網(wǎng)關(guān)從數(shù)據(jù)緩沖區(qū)B中獲得從MODBUS接收的數(shù)據(jù),設(shè)置標(biāo)示符和數(shù)據(jù)長度,選擇一個(gè)發(fā)送郵箱,使能發(fā)送郵箱空中斷.因此當(dāng)該郵箱為空時(shí)產(chǎn)生一個(gè)中斷,中斷處理程序?qū)?shù)據(jù)從緩沖區(qū)拷貝到發(fā)送郵箱,該郵箱狀態(tài)變?yōu)轭A(yù)定發(fā)送狀態(tài).

  當(dāng)CAN 總線進(jìn)入空閑狀態(tài),預(yù)定發(fā)送郵箱中的報(bào)文就馬上被發(fā)送,進(jìn)入發(fā)送狀態(tài).郵箱中的報(bào)文被成功發(fā)送后,它馬上變?yōu)榭锗]箱.CANBUS數(shù)據(jù)發(fā)送程序如圖6所示.

  主站.從站的收發(fā)程序設(shè)計(jì)

  網(wǎng)關(guān)作為MODBUS從站時(shí)的主要工作是初始化串口,初始化定時(shí)器,配置嵌套向量中斷控制器(NVIC),分別對串口接收數(shù)據(jù)中斷和定時(shí)器中斷設(shè)置響應(yīng)優(yōu)先級和搶占優(yōu)先級.從數(shù)據(jù)緩沖區(qū)A中獲得數(shù)據(jù),對獲得的數(shù)據(jù)生成CRC 校驗(yàn)碼,組成MODBUS 幀從串口按照時(shí)序發(fā)送這一幀數(shù)據(jù).

  串口初始化如下:

  設(shè)置波特率為

  數(shù)據(jù)長度為8位

  位停止位

  無奇偶校驗(yàn)

  無硬件流控制

  使能串口發(fā)送和接收

  協(xié)議規(guī)定了2 種傳輸模式:ASCII 模式和RTU 模式.本文設(shè)計(jì)的網(wǎng)關(guān)使用RTU模式傳輸,在此模式下報(bào)文中每個(gè)8位字節(jié)含有2個(gè)4位16進(jìn)制字符它的優(yōu)點(diǎn)是較高的數(shù)據(jù)密度,在相同的波特率下比ASCII 模式有更高的吞吐率.命令幀由地址碼.功能碼.數(shù)據(jù)語和CRC校驗(yàn)碼構(gòu)成.在RTU模式下,幀與幀之間必須由時(shí)長至少為3.5 個(gè)字符時(shí)間的空閑間隔區(qū)分.整個(gè)幀必須以連續(xù)的字符流發(fā)送,如果兩個(gè)字符之間的空閑間隔大于1.5 個(gè)字符時(shí)間,則該幀被認(rèn)為不完整的幀而被丟棄,接收設(shè)備假定下一字節(jié)是一個(gè)新消息的地址域.

  主站程序需要使用3個(gè)定時(shí)器,其中TIM2用于控制發(fā)送的3.5 個(gè)字符的幀間隔.TIM3 用于控制接收MODBUS 從站的回應(yīng)幀的3.5 個(gè)字符的幀間隔.

  用于接收時(shí)確保字符間的間隔小于1.5 個(gè)字符時(shí)間.初始化TIM2 與TIM3,定時(shí)時(shí)間為定時(shí)3.645 8 ms(波特率為9 600 b/s時(shí)的3.5字符時(shí)間):

  設(shè)置定時(shí)周期

  設(shè)置預(yù)分頻值

  設(shè)置時(shí)鐘分頻

  ×

  設(shè)置計(jì)數(shù)器增長方式

  網(wǎng)關(guān)作MODBUS主站的工作流程如圖7所示.

  網(wǎng)關(guān)工作在MODBUS主站模式時(shí)對從站響應(yīng)幀的接收使用中斷處理的方式.在個(gè)字節(jié)傳輸結(jié)束后啟動TIM4定時(shí)器,定時(shí)時(shí)間為1.5個(gè)字符時(shí)間,在后續(xù)的字節(jié)傳輸結(jié)束時(shí)清零計(jì)數(shù)器,保證一個(gè)幀中的字符間隔不超過1.5 個(gè)字符時(shí)間.接收完成后啟動定時(shí)器TIM3,定時(shí)3.5 個(gè)字符時(shí)間,在此時(shí)間內(nèi)的接收的任何數(shù)據(jù)都將丟棄.

  網(wǎng)關(guān)作為MODBUS從站時(shí)對化串口和定時(shí)器的初始化與MODBUS主站相同,將數(shù)據(jù)組成CAN的幀,發(fā)送該幀,并向MODBUS主站發(fā)送響應(yīng)幀.網(wǎng)關(guān)作為

  從站的工作流程如圖8所示.

  主程序

  主程序中初始化FSMC,初始化LCD,初始化觸摸屏,校正觸摸屏,顯示工作模式選擇界面.參數(shù)配置界面及當(dāng)前工作模式界面.根據(jù)選擇進(jìn)入相應(yīng)工作模式.

  測試結(jié)果

  在PC 機(jī)上使用串口助手和USB-BCAN 軟件模擬CANBUS與MODBUS的收發(fā).MODBUS到CANBUS的通信模擬:由PC機(jī)向網(wǎng)關(guān)發(fā)送一幀數(shù)據(jù)00 01 02 03 0405 06 07,網(wǎng)關(guān)設(shè)置幀ID為0×321并發(fā)出數(shù)據(jù),通過CAN-USB軟件接收該數(shù)據(jù)為00 01 02 03 04 05 06 07.如圖9所示.CANBUS到MODBUS的通信模擬:使用CAN-USB軟件發(fā)送一幀0f 14 0f 05 00 01 02 03,網(wǎng)關(guān)解析其中數(shù)據(jù)00 01 02 03,并作為MODBUS主站發(fā)送數(shù)據(jù),將數(shù)據(jù)輸出到串口助手為00 01 02 03.如圖10所示.

  結(jié)語

  本文設(shè)計(jì)實(shí)現(xiàn)了一種在CANBUS和MODBUS間進(jìn)行透明的數(shù)據(jù)傳輸?shù)那度胧浆F(xiàn)場總線通信網(wǎng)關(guān),軟硬件設(shè)計(jì)簡單,通信參數(shù)可現(xiàn)場配置,能夠很好地實(shí)現(xiàn)CAN-BUS與MODBUS間的通信.該網(wǎng)關(guān)解決了異類現(xiàn)場總線間通信的問題,使系統(tǒng)的兼容性.互聯(lián)性.可擴(kuò)充性都得到了極大的提高,具有良好的應(yīng)用前景.

關(guān)鍵詞:嵌入式現(xiàn)場總線通信網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)(二)嵌入式現(xiàn)場總線通信網(wǎng)關(guān)

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

2023全國大學(xué)生嵌入式芯片與系統(tǒng)設(shè)計(jì)競賽,海思賽道,工程機(jī)械遠(yuǎn)程管理與安全檢測系統(tǒng)
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!