999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于IOCP模型的多儀器數據采集與控制系統

2015-06-23 16:27:39蔡晨曦秦會斌
無線電通信技術 2015年5期
關鍵詞:網絡通信單片機系統

蔡晨曦,秦會斌

(杭州電子科技大學,浙江 杭州 310000)

基于IOCP模型的多儀器數據采集與控制系統

蔡晨曦,秦會斌

(杭州電子科技大學,浙江 杭州 310000)

為滿足工業現場中對多種不同類型的儀器進行集中監控的要求,并且針對儀器連接數量大、數據通信頻繁和實時性要求高等特點,提出了以IOCP(I/O完成端口)網絡模型為核心結合了Windows多線程,數據庫編程等技術實現的局域網多智能儀表控制系統。首先介紹了控制系統的總體結構以及IOCP模型工作原理,描述并分析了該系統在設計和實現過程遇到的關鍵問題和解決方案,最后通過移植LwIP輕量級網絡協議棧的STM32單片機作為下位機進行網絡通信測試,驗證了該方案的可行性。

完成端口;重疊IO;TCP/IP;多線程;控制系統

0 引言

工業現場中通常需要很多不同類型的儀表對現場的溫度、濕度、電流和電壓等進行數據采集與控制。在傳統模式下,每類儀器會用獨立的系統進行數據采集與控制,儀器將采集到的數據通過串口發送到獨立的計算機進行顯示和處理。這種模式既不利于宏觀反應整個工業生產過程,也不便與計算機進行集中監控,同時又增加了生產成本。本文研究的系統沒有將上位機和儀器直接連接,而是采用STM32單片機作為下位機中轉通過工業以太網組網動態接入上位機,實現對所有儀器的統一監控。

Winsock2.0引入的內核級高效處理機制IOCP是迄今為止最高效的Windows下處理并發網絡事件的I/O模型,IOCP全稱為I/O完成端口,利用該機制可提高網絡通信性能[1]。基于IOCP機制的上位機網絡通信方案能同時并發連接大量下位機,進行高效的網絡數據交互。極大提高系統的儀器承載量、可擴展性和穩定性。

1 系統硬件設計

多儀器數據采集與控制系統利用工業以太網進行組網,采用服務器/客戶端結構進行設計。本系統創新之處在于沒有將上位機作為網絡服務端,而是利用具有以太網10/100 M接口的STM32單片機作為下位機中介服務器,上位機軟件和儀器均作為客戶端根據設定的IP地址及端口號主動連接到下位機其網絡拓撲結構如圖1所示[2]。在實際工作過程中每個上位機軟件根據設定的IP地址范圍主動掃描連接系統內所有處于工作狀態的下位機,建立連接后每個下位機將與其連接的儀器資源信息、工作模式、測試數據按照規定的通信協議封裝后打包發送到建立連接的上位機軟件。下位機同時接收上位機返回的測試方案對儀器進行控制。

圖1 網絡結構拓撲圖

該網絡拓撲結構可以支持多個上位機和系統中的下位機建立網絡連接,通過交換機或路由器工作人員不僅可以在工業現場還可以在辦公室里直接監控儀器發送的測試數據。本系統還具有較強的靈活性和可擴展性,當系統需要接入更多的儀器時只需增加作為中介服務器的下位機數量,將儀器和下位機接到同一交換機下配置為同一網段,建立網絡連接后下位機即可同作為客戶端的多個儀器進行網絡數據收發,同時上位機軟件會通過掃描連接找到新接入的下位機進行數據交互[3]。

采用上述設計模式少量的上位機可對工業現場所有儀器進行集中監控,提高了上位機的承載量和利用率,大大降低了生產成本。

2 基于IOCP的上位機軟件設計與實現

2.1 IOCP模型原理

IOCP是一種用于同志應用程序異步I/O操作完成的內核對象。要使用IOCP,首先需要創建一個IOCP內核對象,然后將該內核對象與應該監控的設備(套接字)相關聯。當設備完成了一個異步I/O操作之后,系統會把這個I/O操作的完成通知掛到該IOCP的完成通知隊列上去。當IOCP的完成通知隊列上出現一個完成通知時,IOCP將喚醒一個等待線程,讓該線程去處理這個完成通知。每個IOCP對象會關聯2倍于系統CPU數目的線程,這些線程不是在處理完成通知,就是在等待處理完成通知,構成了和該IOCP相關聯的線程池[4]。

一個IOCP內核對象可同時監控多個設備的異步I/O操作。由于任何時候都可能會有多個異步I/O操作的完成通知,因此IOCP內核對象會維護三個線程隊列,即當前所有完成通知的隊列,處于運行狀態線程隊列,以及等待線程隊列,如圖2所示。

圖2 IOCP線程隊列圖

根據圖中顯示的IOCP線程隊列的工作方式,當某個設備的一個異步I/O操作完成時,系統會把一個完成通知添加到完成通知隊列,然后再從等待線程隊列中喚醒一個線程,讓該線程處理完成通知,同時把該線程從等待線程隊列移到運行線程隊列[5]。

2.2 數據結構

在通過IOCP模型進行網絡編程過程中,會用到2個重要的IOContex和OverLappedPlus結構體。IOContex結構體主要存放連接下位機套接字的相關信息,包括該套接字所對應的IP地址和端口號以及數據緩沖區。

OVERLAPPED結構體參數是用于向完成端口投遞IO請求時傳遞給完成端口的。由于OVERLAPPED結構體本身只存儲了一些簡單的信息,應用程序不能確定完成的是哪個操作。因此需要設計一個擴展OVERLAPPED結構體,使它包含一些其他信息并將OVERLAPPED結構作為擴展結構體變量的第一個成員。具體的定義如下所示[6]:

2.3 程序的實現流程

上位機軟件網絡通信程序基于IOCP模型進行實現,其功能主要由3類線程來完成:分別是1個主線程,1個負責網絡連接掃描線程和4個IOCP工作者線程。線程之間的調度和切換由Windows系統自動處理。IOCP模型的網絡通信程序流程圖如圖3所示。

圖3 IOCP通信程序流程圖

具體工作流程如下[7]:

①主線程調用CreateIoCompletionPort函數創建一個完成端口對象;

②根據設置網絡掃描IP地址范圍依次調用WSASocket函數創建重疊套接字并調配置IP地址及端口號;

③調用CreateIoCompletionPort函數把重疊套接字關聯到完成端口對象,調用AfxBeginThread函數創建系統內核數乘以2數量的IOCP工作者線程;

④創建一個掃描連接線程,調用ConnectEx函數投遞連接套接字對嵌入式終端主動發起TCP連接請求;

⑤在線程中等待完成通知,當套接字成功建立連接或者讀寫操作完成,會喚醒IOCP工作者線程由工作者線程進行處理;

⑥如果程序退出或者主線程接收到斷開網絡命令則按順序依次退出連接掃描線程和工作者線程并清理套接字資源[8]。

主線程和工作者線程通過調用WSARecv和WSASend發起異步I/O請求,即執行讀、寫操作后立即返回,由IOCP工作者線程函數ThreadPoolFunc負責等待并處理IOCP對象的I/O完成通知[6]。ThreadPoolFunc函數建立了一個while循環,在循環中調用GetQueuedCompletionStatus函數,然后線程就進入等待狀態。當函數返回值為FALSE且錯誤代碼為WSA_IO_PENDING表明I/O操作還未正式完成繼續循環等待,當函數成功返回且擴展重疊結構指針不為NULL時說明完成一個成功的I/O操作,則一個工作者線程被喚醒并處理I/O完成隊列中的I/O完成通知。工作者線程根據m_NetWorkE-nents變量的值來判斷哪一類I/O操作完成。如果是套接字讀寫操作完成,調用OnRecvRead或On-SendWrite函數處理,OnRecvRead函數先對收到的數據進行解析,如果數據未發生丟失并且符合格式則調用ReceiveMessageProcess函數對數據進行分析處理,否則要求下位重新發送數據。如果m_Net-WorkEnents變量值表示接到IOCP線程退出通知,則關閉相對應的套接字并清理資源,然后退出線程[9]。

3 系統測試

基于以上設計思路設計上位機軟件,根據負載要求設計20塊帶RJ45網絡接口的STM32F103ZET6單片機作為下位機,搭建測試平臺對系統網絡通信功能進行測試[10]。

3.1 測試環境

硬件環境:上位機電腦采用Inter Core(Tm) 2CPU 6300 2.1 GHz內存2 GB。下位機使用STM32F103單片機。上下位機之間通過10/100 M交換機進行數據交換。

網絡環境:10/100 M局域網絡。

系統環境:上位機軟件在Microsoft Windows7 32位操作系統下運行,下位機STM32單片機移植μC/OS-II嵌入式實時操作系統加LwIP嵌入式網絡協議棧[11]。

3.2 測試方法

(1)網絡掃描連接測試:STM32單片機在上位機軟件打開前或打開后開啟,上位機軟件均能掃描連接STM32單片機進行并發網絡通信。

(2)網絡通信測試:每個下位機每隔200 ms向上位機發送數據量為2 048 B的儀器測試數據。在程序中對上位機接收的數據量進行統計,和所有下位機發送的總數據量比較驗證測試數據接收是否完整性和實時性[12]。

3.3 測試結果

按照上述測試方法對本系統進行多次測試,測試結果如表1和表2所示。其中表1中每項測試次數為30次,全部下位機成功接入次數為30次。

表1 網絡掃描連接測試結果

表2 網絡通信測試結果

多次測試結果表明上位機軟件實現對所有處于工作狀態下位機的主動掃描連接,連接成功后上位機軟件能準確地接收下位機發送的測試數據,實時更新顯示在主界面上不會阻塞Winodws消息循環導致界面假死現象。

4 結束語

利用IOCP機制實現的上位機網絡通信程序能夠最大限度的利用線程對大量I/O讀寫請求進行高效的處理,提供了最好的網絡伸縮性和負載均衡,保證了上位機軟件對多下位機大數據量并發通信的實時性和高效性,達到了系統設計的預期目標。其良好的可擴展性和兼容性則有利于系統的升級改造,減少開發成本。該系統已在生產過程通過測試,系統運行穩定,符合工業現場數據采集控制的要求。

[1]孫海明.精通Windows Sockets網絡開發:基于Visual C++實現[M].北京:人民郵電出版社,2008:40-100.

[2]彭剛,秦志強.基于ARM Cortex-M3的STM32系列嵌入式微控制器應用實踐[M].北京:電子工業出版社,2011:100-165.

[3]湯莉莉,黃偉,王春波,等.基于Cortex-M3單片機的WiFi物聯網小車的設計[J].無線電工程,2014,44 (4):58-61.

[4]Kevin R,Fall W.Richard Stevens.TCP/IP詳解[M].北京:機械工業出版社,2012:579-591.

[5]張會勇.Winsock網絡編程經絡[M].北京:電子工業出版社,2012:233-235.

[6]汪慶蓮.網絡掃描系統設計與實現[J].湖北第二師范學院學報,2010,27(8):110-119.

[7]廖宏建,楊玉寶,唐連章.完成端口實現高性能服務端通信層的關鍵問題[J].計算機應用,2012,32(3): 812-815.

[8]李健,李麗霞.基于以太網的數字話音傳輸系統設計[J].無線電工程,2014,44(5):68-70,74.

[9]吳鑫,俞建定,汪沁,等.基于W5100的RS485-Ethernet數據轉換器設計[J].無線電通信技術,2014,40(5):93-96.

[10]韓松,李奎,王麗麗,等.基于Modbus/TCP協議的遠程控制網關[J].儀表技術與傳感器,2014(10): 102-104,107.

[11]陸旭.基于μC/OS-II和LwIP的嵌入式設備監控平臺研究[D].重慶:重慶大學,2013.

[12]王景忠,王俊芳,于立佳.一種實現RS232接口一對多通信的方法[J].無線電工程,2012,42(12):1-3,29.

Multi-instrument Data Collection and Control System Based on IOCP Model

CAI Chen-xi,QIN Hui-bin
(Hangzhou Dianzi University,Hangzhou Zhejiang 310000,China)

To meet the requirement of different types of instruments for centralized monitoring,and considering the great amount of instrument connections,frequent data communication and high demands on real-time,a design method,which takes the IOCP network model as the core and combines Windows multi-thread and database programming technology,is proposed in this paper to realize a multi-instrument control system.The principle of IOCP and the control system structure are presented first,then the key problems encountered during system design and implementation and their solutions are described and discussed.Finally the validity of the method is verified by network communication test by using embedded system based on STM32 with Low Weight Internet Protocol(LwIP).

IOCP;overlapped I/O;TCP/IP protocol;multi-thread;control system

TP273

A

1003-3114(2015)05-71-3

10.3969/j.issn.1003-3114.2015.05.19

蔡晨曦,秦會斌.基于IOCP模型的多儀器數據采集與控制系統[J].無線電通信技術,2015,41(5):71-73,85.

2015-03-03

蔡晨曦(1988—),男,碩士研究生,主要研究方向:計算機網絡編程。秦會斌(1972—),博士生導師,主要研究方向:新型電子器件及ASIC設計、現代傳感器設計及應用。

猜你喜歡
網絡通信單片機系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
海上軍用網絡通信的安全控制技術
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于網絡通信的智能照明系統設計
電子制作(2019年15期)2019-08-27 01:11:48
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
網絡通信中信息隱藏技術的應用
談計算機網絡通信常見問題及技術發展
電子制作(2017年17期)2017-12-18 06:41:06
主站蜘蛛池模板: AV不卡国产在线观看| 欧美日韩另类在线| 亚洲天堂成人在线观看| 中文字幕日韩丝袜一区| 这里只有精品在线播放| 丰满的熟女一区二区三区l| 欧美激情视频在线观看一区| 欧美性色综合网| 精品无码人妻一区二区| 亚洲一级毛片| 波多野结衣中文字幕一区| 欧美国产中文| 亚洲精品综合一二三区在线| 欧美一区二区三区欧美日韩亚洲 | 亚洲,国产,日韩,综合一区 | 熟妇人妻无乱码中文字幕真矢织江| 老司机午夜精品网站在线观看 | 中文字幕免费视频| 午夜色综合| 免费毛片视频| 婷婷午夜影院| 亚洲天堂成人在线观看| 小蝌蚪亚洲精品国产| 嫩草在线视频| av尤物免费在线观看| 色综合a怡红院怡红院首页| 免费AV在线播放观看18禁强制| 黄片在线永久| 尤物视频一区| 国产欧美日韩视频一区二区三区| 成人免费视频一区| 亚洲欧美激情小说另类| 真实国产精品vr专区| 亚洲区视频在线观看| 国产精品太粉嫩高中在线观看| 亚洲国产成人在线| 99re在线免费视频| 无码一区二区波多野结衣播放搜索| 亚洲国内精品自在自线官| 国产免费观看av大片的网站| 99久久性生片| 亚洲最大福利视频网| 国产鲁鲁视频在线观看| 国产一在线| 999福利激情视频| 日韩免费无码人妻系列| 欧美成人午夜影院| 国产清纯在线一区二区WWW| 久久久久人妻一区精品| 五月激情综合网| 久久久精品无码一区二区三区| 欧美成人综合视频| 波多野结衣中文字幕一区二区| 欧美精品亚洲精品日韩专区| 亚洲国产成人久久77| 久草中文网| 97se综合| 久热中文字幕在线观看| 伊人婷婷色香五月综合缴缴情| 日本一本正道综合久久dvd | 青青国产成人免费精品视频| 老司机久久99久久精品播放| 美女毛片在线| 日韩欧美91| 亚洲天堂免费| 亚洲综合极品香蕉久久网| 国内精品免费| 亚洲色图另类| 99在线视频免费| 1024国产在线| 中国一级特黄大片在线观看| 久久国产高清视频| 国产成人AV大片大片在线播放 | 亚洲日韩AV无码一区二区三区人| 亚洲人成影院午夜网站| 91一级片| 亚洲日韩精品无码专区97| 狼友av永久网站免费观看| 国产sm重味一区二区三区| 91无码人妻精品一区| 91精品日韩人妻无码久久| 国产精品久久国产精麻豆99网站|