• 
    

    
    

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

      支持多串口同時抄表的智能儀表程序設計*

      2014-08-27 08:34:30同曉榮
      關鍵詞:智能儀表任務調(diào)度應用層

      同曉榮

      (渭南師范學院數(shù)學與信息科學學院,渭南714000)

      引 言

      隨著計算機技術、通信技術、電子技術的發(fā)展,推動了儀表行業(yè)快速發(fā)展;同時,隨著人力成本的增加,人工抄表將會逐漸被淘汰;智能儀表將成為儀表行業(yè)發(fā)展的方向[1-3]??梢灶A見,在未來20年儀表行業(yè)將經(jīng)歷一次革命,我國將由目前的人工抄表方式逐漸轉(zhuǎn)變?yōu)檫h程抄表,各級水、氣和電力管理部門可以根據(jù)不同的權限對同一塊儀表進行遠程抄讀。為了支持多用戶同時抄表,本文設計了一種支持多串口同時抄讀的智能儀表程序,對程序設計流程做了詳細的闡述[4-5]。

      1 支持多串口智能儀表軟件構架

      支持多串口智能儀表軟件構架如圖1所示,支持多串口智能儀表的軟件構架分為4層:驅(qū)動層、基于任務調(diào)度的操作系統(tǒng)、通信協(xié)議層和應用層。驅(qū)動層主要提供智能儀表的各種硬件驅(qū)動。其中,串口驅(qū)動程序?qū)崿F(xiàn)的功能包括:串口的配置、提供通信協(xié)議在串口發(fā)送列表和串口接收列表中注冊的接口函數(shù)、為通信協(xié)議層提供數(shù)據(jù)服務?;谌蝿照{(diào)度的操作系統(tǒng)的設計可以提高程序的通用性和擴展性;通信協(xié)議層和應用層根據(jù)需要在操作系統(tǒng)中注冊任務,如果以后需要增加一個功能,則可以直接增加一個任務而不需要對以前的代碼進行改動[6-9]。

      通信協(xié)議層主要對從物理層接收的數(shù)據(jù)幀和命令幀,按照通信協(xié)議的幀格式進行解析和對從應用層接收到的數(shù)據(jù)和命令按照通信協(xié)議的幀格式進行組幀。應用層主要實現(xiàn)智能電表和抄表客戶端應用對象之間的通信[10]。支持多協(xié)議的智能儀表軟件構架如圖1所示。

      圖1 支持多協(xié)議的智能儀表軟件構架

      2 驅(qū)動層串口程序設計

      通信協(xié)議層系統(tǒng)初始化時,通信協(xié)議需要在每個串口的發(fā)送列表和接收列表中注冊。其中,串口發(fā)送協(xié)議列表和串口接收協(xié)議列表如下所示:

      其中UartTxNode的結構體如下所示:

      3 協(xié)議層和應用層程序設計

      在通信協(xié)議層定義一個類型為PROTOCOL 的數(shù)組ProtocolPortList,ProtocolPortList數(shù)組的主要作用是:存放對應串口接收的數(shù)據(jù)和要發(fā)送的數(shù)據(jù)、表征該串口目前的狀態(tài)。代碼如下:

      RxBuff是用來存放從串口接收的數(shù)據(jù),TxBuff為要發(fā)送的數(shù)據(jù),如果接收到一幀合法數(shù)據(jù)將ReceiveSuccess-Flag置0xFF,該標志的作用是為操作系統(tǒng)提供一個處理RxBuff中數(shù)據(jù)的標志,防止已經(jīng)接收的幀被后續(xù)幀覆蓋。RxLen為RxBuff接收字節(jié)的長度,TxLen為TxBuff要發(fā)送數(shù)據(jù)的長度。

      3.1 接收回調(diào)函數(shù)程序設計

      當串口接收到一個字節(jié)后調(diào)用接收回調(diào)函數(shù),接收數(shù)據(jù)回調(diào)函數(shù)數(shù)據(jù)處理流程圖如圖2所示。首先判斷返回的channel是否為物理通道1、物理通道2或物理通道3。如果不是則將此數(shù)據(jù)拋棄,如果是則判斷ProtocolList[channel].ReceiveSuccesFlag是否為0xFF。如果是,說明該串口已經(jīng)接收到一幀數(shù)據(jù)但還沒有被處理,不能接收數(shù)據(jù)。如果不是,則判斷接收字節(jié)是否符合通信協(xié)議的幀格式,如果不符合則將接收字節(jié)拋棄,如果符合將接收字節(jié)Data存入接收緩沖區(qū)ProtocolList[channel].RxBuff中,并且將接收長度ProtocolList[channel].RxLen加1,最后判斷是否一幀數(shù)據(jù)接收完畢,如果接收完成則將ProtocolList[channel].ReceiveSuccesFlag置為0xFF。

      圖2 接收回調(diào)函數(shù)數(shù)據(jù)處理流程圖

      3.2 消息格式

      在應用層和通信協(xié)議層中都有一個消息列表,分別來收集協(xié)議棧發(fā)送給它的消息和應用層發(fā)送給通信協(xié)議層的消息。

      Message MessageList[MAX_MESSAGE_NUM];

      其中Message的結構如下所示:

      通道號為協(xié)議棧接收數(shù)據(jù)的串口號,STaskID 為源任務號(協(xié)議棧的任務號或應用層的任務號),DTaskID為目的任務ID(協(xié)議棧的任務號或應用層的任務號),MessageType代表什么類型的消息(讀數(shù)據(jù)請求、寫數(shù)據(jù)請求),Data為所要寫入數(shù)據(jù)的指針。

      3.3 基于任務調(diào)度的操作系統(tǒng)對接收幀的處理

      當基于任務調(diào)度的操作系統(tǒng)執(zhí)行通信協(xié)議層任務時會搜索ProtocolList 數(shù)組中哪個元素的ProtocolList[channel].ReceiveSuccesFlag為0xFF,然后對其Protocol-List[channel].RxBuff中的數(shù)據(jù)進行處理,處理過程是:

      ①首先按照通信協(xié)議層的幀格式對接收數(shù)據(jù)進行解析。

      ②解析出需要發(fā)往應用層的數(shù)據(jù),按一定的消息格式(包含發(fā)送數(shù)據(jù)和通道號)組成一條消息,然后將其發(fā)送給應用層,應用層收到這個消息后將其存入AMessage-List應用層消息列表中。

      當處理完成后將ProtocolList[channel].RxLen置0,將ProtocolList[channel].ReceiveSuccessFlag置0,以便于該channel串口通道可以接收下一幀數(shù)據(jù)。

      基于任務調(diào)度的操作系統(tǒng)會按一定的調(diào)度時間來搜索ProtocolList中各個串口通道是否接收到一個完整的幀并進行處理,這樣就能夠?qū)崿F(xiàn)協(xié)議棧對多個串口接收到的數(shù)據(jù)幀進行及時處理,多串口同時進行通信。

      基于任務調(diào)度的操作系統(tǒng)會按一定的調(diào)度時間來搜索AMessageList是否為空,如果不為空則對相應的消息進行處理,這樣就能夠?qū)崿F(xiàn)應用層對收到的多個消息進行及時處理,實現(xiàn)并行通信。

      3.4 協(xié)議層對從應用層接收到的消息處理

      智能儀表需要向客戶機返回抄讀數(shù)據(jù)時,首先智能儀表應用層將抄讀數(shù)據(jù)按照一定的消息格式組成一條消息,然后將該消息發(fā)送給通信協(xié)議層。通信協(xié)議層收到該消息后將其存入PMessageList協(xié)議層消息列表中。

      基于任務調(diào)度的操作系統(tǒng)會按一定的調(diào)度時間來搜索PMessageList是否為空,如果不為空則對相應的消息進行處理。

      通信協(xié)議層對消息的處理過程如下:

      ①通信協(xié)議層將消息進行解析,解析出發(fā)送的Data和發(fā)送通道channel。

      ②將需要發(fā)送的數(shù)據(jù)按照通信協(xié)議的幀格式進行組幀,并存儲于ProtocolList[channel].TxBuff中。ProtocolList[channel].TxLen為需要發(fā)送的長度。

      ③調(diào)用串口發(fā)送函數(shù),將該幀數(shù)據(jù)通過串口channel發(fā)送出去。

      3.5 發(fā)送回調(diào)函數(shù)程序設計

      當channel的串口將協(xié)議層數(shù)據(jù)幀發(fā)送出去后會調(diào)用發(fā)送回調(diào)函數(shù)將ProtocolList[channel].TxLen置為0。

      結 語

      本文根據(jù)智能儀表的發(fā)展方向和多用戶同時抄表的需求,闡述了設計支持多串口同時抄表的智能儀表程序的必要性。給出了支持多串口同時抄表的智能儀表軟件構架、驅(qū)動層程序設計、通信協(xié)議層程序設計和應用層程序設計。它可以使多個抄表部門根據(jù)各自的權限同時對同一塊儀表進行抄讀和設置。該設計可以廣泛地應用于智能儀表行業(yè),從而推動我國儀表行業(yè)的發(fā)展和國際化。

      [1]趙凱.基于ARM 的智能儀表設計與開發(fā)[D].北京:中國石油大學,2010.

      [2]翟勇.基于AT89S52的多軟串口通信系統(tǒng)[D].天津:天津大學,2007.

      [3]牛昱光,崔正文.多現(xiàn)場總線接口智能儀表設計[J].電子技術應用,2011,37(8):131-134.

      [4]黃琦,王文海.基于MSP430F149的智能儀表的設計[J].自動化儀表,2006,27(8):26-28.

      [5]高新聞.智能儀表軟件開發(fā)的自動化技術研究[D].上海:上海大學,2007.

      [6]孫啟富,孫運強,姚愛琴.基于STM32的通用智能儀表設計與應用[J].儀表技術與傳感器,2010(10):34-36.

      [7]劉迪,李云昭,馬凱.智能儀表的構成要素[J].科海故事博覽[J].科技論壇,2011(8):26-27.

      [8]周海燕,王羨欠.工業(yè)控制中通用智能儀表系統(tǒng)設計[J].微計算機信息,2008,24(31):148-149.

      [9]艾紅,鄧大偉,唐斌.基于DSP 的智能儀表串行通信與抗干擾實現(xiàn)[J].自動化與儀器儀表,2011(6):125-127.

      [10]蔣建春,曾素華.應用于智能儀表的嵌入式OS的設計與實現(xiàn)[J].微計算機信息,2008,24(12):98-100.

      猜你喜歡
      智能儀表任務調(diào)度應用層
      智能儀表的抗干擾和故障診斷研究
      基于改進NSGA-Ⅱ算法的協(xié)同制造任務調(diào)度研究
      智能儀表技術及工業(yè)自動化應用發(fā)展分析
      基于時間負載均衡蟻群算法的云任務調(diào)度優(yōu)化
      測控技術(2018年7期)2018-12-09 08:58:00
      智能儀表在動態(tài)稱重系統(tǒng)中的應用
      智能儀表在工業(yè)自動化控制中的運用研究
      電子制作(2017年14期)2017-12-18 07:08:00
      基于分級保護的OA系統(tǒng)應用層訪問控制研究
      新一代雙向互動電力線通信技術的應用層協(xié)議研究
      云計算環(huán)境中任務調(diào)度策略
      云計算中基于進化算法的任務調(diào)度策略
      利津县| 介休市| 绿春县| 寻乌县| 怀远县| 婺源县| 望奎县| 镇巴县| 扎囊县| 高邑县| 丹巴县| 宜君县| 昆明市| 霍山县| 长寿区| 寿阳县| 平江县| 临安市| 新河县| 灌南县| 电白县| 深泽县| 奎屯市| 宁夏| 卢龙县| 柳河县| 辉南县| 新营市| 平罗县| 左权县| 美姑县| 得荣县| 托克托县| 启东市| 集安市| 阜阳市| 凉城县| 定结县| 万安县| 勃利县| 信阳市|