• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Modbus/TCP協(xié)議實(shí)現(xiàn)人機(jī)界面與下位機(jī)通信

      2014-08-12 08:46:11譚亞鄧忠華
      關(guān)鍵詞:堆棧應(yīng)用層人機(jī)界面

      譚亞,鄧忠華

      (華中科技大學(xué)自動化學(xué)院,武漢 430074)

      基于Modbus/TCP協(xié)議實(shí)現(xiàn)人機(jī)界面與下位機(jī)通信

      譚亞,鄧忠華

      (華中科技大學(xué)自動化學(xué)院,武漢 430074)

      在以通用伺服電機(jī)控制系統(tǒng)為下位機(jī)的基礎(chǔ)上,開發(fā)了以實(shí)時(shí)內(nèi)核μC/OS-II、DSP、CPLD控制模塊為核心的軟硬件平臺。通過移植uIP協(xié)議棧到DSP,在通信應(yīng)用層上將Modbus幀嵌入到TCP幀中,簡單可靠地實(shí)現(xiàn)了Modbus/TCP協(xié)議。同時(shí)將Modbus/TCP協(xié)議與μC/OS-II實(shí)時(shí)內(nèi)核進(jìn)行整合,更好地保證了系統(tǒng)調(diào)度的實(shí)時(shí)性。

      Modbus/TCP;工業(yè)以太網(wǎng);uIP;μC/OS-II;TMS320F28335

      引 言

      隨著工業(yè)以太網(wǎng)技術(shù)的快速發(fā)展,利用工業(yè)以太網(wǎng)與Internet連接可實(shí)現(xiàn)無縫集成的優(yōu)勢,嵌入式Internet技術(shù)已經(jīng)在工控領(lǐng)域得到了廣泛應(yīng)用。工業(yè)以太網(wǎng)是基于IEEE802.3 (Ethernet)的強(qiáng)大的區(qū)域和單元網(wǎng)絡(luò)。其具有價(jià)格低廉、穩(wěn)定可靠、通信速率高、軟硬件產(chǎn)品豐富、應(yīng)用廣泛以及支持技術(shù)成熟等優(yōu)點(diǎn),并且支持幾乎所有流行的網(wǎng)絡(luò)協(xié)議。目前,工業(yè)以太網(wǎng)技術(shù)在網(wǎng)絡(luò)的視頻傳輸、人機(jī)界面(HMI),以及觸摸屏通信等方面都得到了及時(shí)的應(yīng)用。

      以太網(wǎng)技術(shù)應(yīng)用于工業(yè)控制時(shí),體現(xiàn)在應(yīng)用層的是實(shí)時(shí)通信、用于系統(tǒng)組態(tài)的對象,以及工程模型的應(yīng)用協(xié)議。目前,還沒有統(tǒng)一的應(yīng)用層協(xié)議,但受到廣泛支持并已經(jīng)開發(fā)出相應(yīng)產(chǎn)品的主要有4種協(xié)議:HSE、Modbus TCP/IP、ProfINet、Ethernet/IP。

      1 系統(tǒng)的硬件架構(gòu)設(shè)計(jì)

      通用伺服電機(jī)控制系統(tǒng)的硬件架構(gòu)如圖1所示。

      圖1 系統(tǒng)硬件架構(gòu)圖

      系統(tǒng)由DSP控制模塊、CPLD輔助控制模塊、CAN通信模塊、網(wǎng)絡(luò)通信模塊、碼盤信號處理模塊、電源模塊、電平轉(zhuǎn)換模塊、D/A轉(zhuǎn)換模塊、I/O擴(kuò)展模塊、通道號顯示模塊等組成。其中,網(wǎng)絡(luò)通信模塊的硬件設(shè)計(jì)如圖2所示。

      圖2 網(wǎng)絡(luò)模塊硬件設(shè)計(jì)原理圖

      采用TI公司工業(yè)控制領(lǐng)域先進(jìn)的32位浮點(diǎn)DSP芯片TMS320F28335為主控芯片,網(wǎng)卡芯片采用臺灣DAVICOM公司的DM9000A芯片,人機(jī)界面采用威綸通觸摸屏。DSP主要完成對網(wǎng)卡芯片的收發(fā)控制、應(yīng)用層數(shù)據(jù)處理、控制算法的實(shí)現(xiàn)等功能;網(wǎng)卡芯片實(shí)現(xiàn)下位機(jī)與人機(jī)界面之間數(shù)據(jù)的網(wǎng)絡(luò)收發(fā);威倫通觸摸屏完成數(shù)據(jù)顯示、參數(shù)設(shè)定,以及報(bào)警功能。

      2 系統(tǒng)的軟件設(shè)計(jì)

      2.1 Modbus/TCP協(xié)議簡介

      Modbus/TCP協(xié)議由施耐德電氣定義,并由Modbus-IDA支持,它是在TCP/IP網(wǎng)絡(luò)上應(yīng)用Modbus協(xié)議。Modbus/TCP協(xié)議是Modbus的派生產(chǎn)品,在OSI模型中,它位于第7層應(yīng)用層,已成為工業(yè)自動化領(lǐng)域中網(wǎng)絡(luò)信息傳輸?shù)耐ㄓ脴?biāo)準(zhǔn)。Modbus TCP/IP通信設(shè)備連接在以太網(wǎng)上,默認(rèn)使用TCP502端口。其數(shù)據(jù)幀格式如圖3所示,由MBAP報(bào)文頭、功能碼和數(shù)據(jù)三部分組成,舍去了Modbus協(xié)議中的差錯校驗(yàn)域,由TCP/IP協(xié)議來保證報(bào)文的正確性[6]。

      圖3 Modbus/TCP的消息幀結(jié)構(gòu)

      其中,MBAP報(bào)文頭為7個字節(jié),包括事務(wù)處理標(biāo)識符、協(xié)議標(biāo)識符、長度和單元標(biāo)識符。由于Modbus/TCP的消息幀用于與人機(jī)界面之間的通信,其所需功能碼主要包括:01(讀單個或多個線圈)、03(讀保持寄存器)、05(寫單個線圈)、06(寫單個寄存器)、16(寫多個寄存器)等。

      2.2 網(wǎng)卡驅(qū)動的編寫

      在DM9000A中,只有兩個可以直接被處理器訪問的寄存器,這里命名為INDEX端口和DATA端口。事實(shí)上,DM9000A中有許多控制和狀態(tài)寄存器,但它們都不能直接被處理器訪問,訪問這些控制、狀態(tài)寄存器的方法是:

      ① 將寄存器的地址寫到INDEX端口;

      ② 從DATA端口讀寫寄存器中的數(shù)據(jù)。

      其實(shí),INDEX端口和DATA端口是由芯片上的CMD引腳來區(qū)分的,低電平時(shí)為INDEX端口,高電平時(shí)為DATA端口。芯片CMD引腳與DSP地址總線上的A2引腳相連,其16根數(shù)據(jù)線與DSP的數(shù)據(jù)總線相連,通過DSP總線接口來配置DM9000A的讀寫時(shí)序的方法,可以省去通過I/O口模擬總線時(shí)序來實(shí)現(xiàn)寄存器讀寫的麻煩。

      #define DM9000_INDEX (*(volatile unsigned int *)0x200000)

      #define DM9000_DATA(*(volatile unsigned int *)0x200004)

      void iow(unsigned char reg, unsigned char data){

      //向DM9000寄存器寫數(shù)據(jù)(字節(jié)為單位)

      DM9000_INDEX=reg;

      //將寄存器地址寫到INDEX端口

      DELAY_US(1); //延時(shí)1 μs

      DM9000_DATA=data;

      //將數(shù)據(jù)寫到DATA端口,寄存器

      }

      unsigned char ior(unsigned char reg){

      //從DM9000寄存器讀數(shù)據(jù)(字節(jié)為單位)

      DM9000_INDEX=reg;

      //將寄存器地址寫到INDEX端口

      DELAY_US(1);

      return DM9000_DATA;

      //將數(shù)據(jù)從寄存器中讀出

      }

      對于網(wǎng)卡驅(qū)動部分,只需實(shí)現(xiàn)三個函數(shù):dm9000x_inital()網(wǎng)卡初始化函數(shù),初始化網(wǎng)卡的工作模式;dm9000x_sendpacket()網(wǎng)卡發(fā)送數(shù)據(jù)包函數(shù),將網(wǎng)卡收到的數(shù)據(jù)放入全局緩存區(qū)uip_buf中,返回包的長度賦給uip_len;dm9000x_receivepacket()網(wǎng)卡接收數(shù)據(jù)包函數(shù),將全局緩存區(qū)uip_buf里的數(shù)據(jù)(長度放在uip_len中)發(fā)送出去。

      2.3 uIP協(xié)議棧的移植

      uIP由瑞典計(jì)算機(jī)科學(xué)學(xué)院(網(wǎng)絡(luò)嵌入式系統(tǒng)小組)的Adam Dunkels開發(fā)。其源代碼由C語言編寫,并完全公開。uIP協(xié)議棧去掉了完整的TCP/IP中不常用的功能,簡化了通信流程,但保留了網(wǎng)絡(luò)通信必須使用的協(xié)議,設(shè)計(jì)重點(diǎn)放在了IP/TCP/ICMP/UDP/ARP這些網(wǎng)絡(luò)層和傳輸層協(xié)議上,保證了其代碼的通用性和結(jié)構(gòu)的穩(wěn)定性。

      2.3.1 uIP架構(gòu)

      uIP相當(dāng)于一個代碼庫,通過一系列的函數(shù)實(shí)現(xiàn)與底層硬件和高層應(yīng)用程序的通信,對于整個系統(tǒng)來說它內(nèi)部的協(xié)議組是透明的,從而增強(qiáng)了協(xié)議的通用性[7]。uIP協(xié)議棧與系統(tǒng)底層和高層應(yīng)用之間的關(guān)系如圖4所示。

      圖4 uIP在系統(tǒng)中的位置

      2.3.2 uIP協(xié)議在DSP上的移植

      移植uIP時(shí),首先需要配置一些選項(xiàng),目的是適應(yīng)具體的硬件平臺。uipopt.h/uip-conf.h是配置文件,包括:本地的IP地址、網(wǎng)關(guān)地址、MAC地址、全局緩沖區(qū)的大小、支持的最大連接數(shù)、偵聽數(shù)、ARP表大小、基本數(shù)據(jù)類型定義等[2]。

      其次,將之前編寫好的網(wǎng)卡驅(qū)動函數(shù)與tapdev.c文件中相應(yīng)的函數(shù)關(guān)聯(lián)起來。

      接著,由于uIP協(xié)議棧需要使用時(shí)鐘,為TCP和ARP的定時(shí)器服務(wù)。因此使用DSP的通用定時(shí)器0作時(shí)鐘源,每10 ms讓系統(tǒng)嘀嗒數(shù)sys_ticks加1,這樣,50次計(jì)數(shù)(0.5 s)滿后可以調(diào)用TCP的定時(shí)處理程序,10 s后可以調(diào)用ARP老化程序。

      然后,根據(jù)實(shí)際所需的功能對源uIP協(xié)議進(jìn)行相應(yīng)的裁剪。關(guān)閉了IPV6、IP分片重裝、UDP、ICMP,以及統(tǒng)計(jì)信息和日志記錄等功能,以減少源代碼的總量。

      另外,針對C28xx系列DSP中char型數(shù)據(jù)為16位,與uIP源協(xié)議char型數(shù)據(jù)默認(rèn)為8位之間所存在的不兼容問題,進(jìn)行了改進(jìn)。

      2.4 μC/OS-II的移植

      對μC/OS-II實(shí)時(shí)操作系統(tǒng)的移植,只需要根據(jù)現(xiàn)有的硬件平臺修改其中與處理器相關(guān)的代碼,包括OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C三個文件[5]。

      (1) OS_CPU.H

      OS_CPU.H包括了用#define語句定義的與處理器相關(guān)的常數(shù)、宏,以及數(shù)據(jù)類型。其中,μC/OS-II內(nèi)核為了處理臨界段代碼或者訪問臨界資源,定義了2個宏OS_ENTER_CRITICAL()、OS_EXIT_CRITICAL()來分別關(guān)中斷和開中斷。

      這兩個宏的實(shí)現(xiàn)方法如下:

      #define OS_ENTER_CRITICAL() asm(" SETC INTM ")

      #define OS_EXIT_CRITICAL() asm(" CLRC INTM ")

      (2) OS_CPU_C.C

      OS_CPU_C.C文件中有10個函數(shù)要根據(jù)用戶的需要編寫,其中最為重要的是函數(shù)OSTaskStkInit()。函數(shù)OSTaskStkInit()被OSTaskCreate()和OSTaskCreateExt()所調(diào)用,用于初始化任務(wù)的堆棧結(jié)構(gòu)。初始化之后的堆棧,就像是剛剛發(fā)生過一次中斷,所有的寄存器值均保存在堆棧中。中斷發(fā)生時(shí),TMS320F28335保存相關(guān)寄存器入棧的順序?yàn)镾T0、T、AL、AH、PL、PH、AR0、AR1、DP、ST1、DBGSTAT、PC和IER,并且其堆棧是從低地址往高地址遞增的[3]。顯然,用戶在將寄存器壓入堆棧時(shí),必須嚴(yán)格依照同樣的順序。

      (3) OS_CPU_A.ASM

      μC/OS-II的移植要求用戶編寫4個簡單的匯編函數(shù),這也是移植過程的重點(diǎn)和難點(diǎn)。它們分別為:OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。

      其中,OSStartHighRdy()用來被OSStart()調(diào)用,使就緒態(tài)任務(wù)中優(yōu)先級最高的任務(wù)開始運(yùn)行。OSCtxSw()的作用是實(shí)現(xiàn)任務(wù)的任務(wù)級切換,其被OS_Sched()調(diào)用,主要完成的功能為:保存處理器寄存器,在當(dāng)前任務(wù)控制塊中保存當(dāng)前任務(wù)的堆棧指針,載入將要重新開始運(yùn)行的任務(wù)的堆棧指針,恢復(fù)新任務(wù)堆棧中處理器所有寄存器的值,返回中斷。OSIntCtxSw()為任務(wù)中斷級切換函數(shù),其被OSIntExit()調(diào)用,完成的功能與OSCtxSw()函數(shù)基本一致,只是不必重復(fù)保存處理器寄存器。OSTickISR()在系統(tǒng)中實(shí)現(xiàn)時(shí)間的延時(shí)和超時(shí)功能,對用戶要求提供一個周期性的時(shí)鐘源,通常在DSP中使用通用定時(shí)器來實(shí)現(xiàn)。

      2.5 軟件模塊的整合

      有了先前的準(zhǔn)備工作,現(xiàn)在把各個模塊整合起來,uIP模塊、網(wǎng)卡驅(qū)動模塊、μC/OS-II模塊、Modbus/TCP應(yīng)用層模塊均已移植進(jìn)來。現(xiàn)利用μC/OS-II創(chuàng)建三個任務(wù),即網(wǎng)絡(luò)主任務(wù)(NET_MAIN_TASK)、網(wǎng)卡數(shù)據(jù)包接收任務(wù)(ETH_RE_TASK),以及周期時(shí)鐘任務(wù)(PERIO_TASK)。通過這三個任務(wù)之間相互協(xié)調(diào),實(shí)現(xiàn)了數(shù)據(jù)從鏈路層到應(yīng)用層或從應(yīng)用層到鏈路層的傳遞[4]。程序中三個主要任務(wù)之間的關(guān)系和各自的功能如圖5所示。

      圖5 軟件模塊整合流程圖

      3 實(shí)驗(yàn)結(jié)果

      實(shí)驗(yàn)時(shí),選用基于TCP/IP協(xié)議的OnceModbus上位機(jī)調(diào)試軟件來模擬人機(jī)界面。下位機(jī)服務(wù)器的IP地址為192.168.101.16/502,圖6為PC客戶端對服務(wù)器ping通信的結(jié)果,結(jié)果顯示通信良好,丟包率為0。

      圖6 對服務(wù)器ping通信的結(jié)果

      圖7為OnceModbus上位機(jī)調(diào)試軟件與下位機(jī)服務(wù)器的通信結(jié)果,結(jié)果顯示調(diào)試軟件從服務(wù)器準(zhǔn)確無誤地讀取8個寄存器的值。

      圖7 OnceModbus與服務(wù)器通信的結(jié)果

      結(jié) 語

      [1] 張益南,王文海.嵌入式Modbus/TCP協(xié)議的研究與實(shí)現(xiàn)[J].組合機(jī)床與自動化加工技術(shù),2008(2):26-29.

      [2] 劉春鳳,張代遠(yuǎn). μC/OS-II下協(xié)議棧uIP的移植與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(9): 143-145.

      [3] 陳立強(qiáng),吳祖堂,劉瑜.嵌入式操作系統(tǒng)在TMS320F28335平臺上的移植[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(6):7-11.

      [4] 陳禾.基于μC_OSⅡ和TCP_IP協(xié)議的網(wǎng)絡(luò)測控平臺的研究與設(shè)計(jì)[D].重慶:重慶大學(xué),2005.

      [5] Jean J Labrosse.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II[M].2版.邵貝貝,等譯.北京:北京航空航天大學(xué)出版社,2003:280-332.

      [6] Modbus-IDA. MODBUS Messaging on TCP/IP Implementation Guide V1.0b [EB/OL].[2014-02-25].http://www.modbus.org.

      [7] W Richard Stevens.TCP/IP詳解卷1:協(xié)議[M].范建華,胥光輝,張濤,等譯.北京:機(jī)械工業(yè)出版社,2009.

      譚亞(碩士研究生),主要研究方向?yàn)橛?jì)算機(jī)集成與網(wǎng)絡(luò)技術(shù);鄧忠華(教授),主要研究方向?yàn)樘子≈悄芸刂?、電氣傳動系統(tǒng)數(shù)字化控制、復(fù)雜非線性系統(tǒng)建模與控制等。

      Implementation of Human-machine Interface Communication with PLC Based on Modbus/TCP Protocol

      Tan Ya,Deng Zhonghua

      (College of Automation, Huazhong University of Science and Technology, Wuhan 430074,China)

      Taking general servo motor control system as the lower computer, the software and hardware platform based on real-time kernel μC/OS-II,DSP and CPLD controller is developed.By transplanting uIP protocol stack to DSP, the Modbus frame is embedded to the TCP frame in the communication application layer,the Modbus/TCP protocol is simply and reliably realized.Meanwhile, the Modbus/TCP protocol and the real-time kernel μC/OS-II are integrated in order to ensure the real-time scheduling of system.

      Modbus/TCP; Industrial Ethernet; uIP; μC/OS-II; TMS320F28335

      TP273

      A

      2014-02-25)

      猜你喜歡
      堆棧應(yīng)用層人機(jī)界面
      嵌入式軟件堆棧溢出的動態(tài)檢測方案設(shè)計(jì)*
      基于堆棧自編碼降維的武器裝備體系效能預(yù)測
      基于分級保護(hù)的OA系統(tǒng)應(yīng)用層訪問控制研究
      CBTC系統(tǒng)車載人機(jī)界面的設(shè)計(jì)與實(shí)現(xiàn)
      基于PLC與人機(jī)界面的經(jīng)編機(jī)電子橫移控制系統(tǒng)研究
      新一代雙向互動電力線通信技術(shù)的應(yīng)用層協(xié)議研究
      物聯(lián)網(wǎng)技術(shù)在信息機(jī)房制冷系統(tǒng)中的應(yīng)用
      CTCS-3級列控車載人機(jī)界面的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
      達(dá)人機(jī)界面DOP-B10VS511
      Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
      岳池县| 永善县| 察哈| 白山市| 德令哈市| 石阡县| 丽水市| 宁南县| 富平县| 慈溪市| 惠州市| 河北区| 盖州市| 德令哈市| 三江| 咸丰县| 惠州市| 玉田县| 淮北市| 改则县| 休宁县| 太保市| 米易县| 巴林右旗| 潼关县| 宜城市| 阳曲县| 辽中县| 来安县| 永安市| 婺源县| 益阳市| 五指山市| 博客| 山东省| 福贡县| 双牌县| 昆明市| 准格尔旗| 鄂伦春自治旗| 兴国县|