在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

采用服務端完成端口通信技術對路燈監控系統軟件進行優化設計

電子設計 ? 來源:照明工程學報 ? 作者:劉暾東,黃祚,孫 ? 2020-05-26 08:05 ? 次閱讀

1、 引言

目前,全國很多城市的路燈監控系統受到區域限制,仍停留在小規模的監控模式上,使得各地區的監控標準不統一,管理混亂,同時也占用了大量的人力和物力資源。因此,將各區域的路燈監控系統進行統一的管理,形成一個大規模的統一的監控體系, 已成為將來路燈監控發展的趨勢。傳統的SOCKET 通信模型有著客戶端數量的限制,當實際的客戶端超過限制,將會出現數據阻塞和丟失,甚至是服務器軟件崩潰的情況,而引入了完成端口技術的通信模型沒有客戶端數量的限制,并且擁有著高效的數據處理能力,能夠在大規模路燈監控系統內發揮優勢,保障了數據傳輸的高效性和可靠性。

在Visual C++ 2008 編程環境下,通過完成端口技術的應用,將原有的基于C / S 模式的路燈監控系統軟件進行優化,使得整套系統可以應用于大數量客戶端的場合,并且仍能保持通信系統較高的穩定性。

2、 監控系統軟件的總體構架

路燈監控系統分為遠程終端設備和監控軟件兩個部分。遠程終端設備安裝在路燈控制現場,是實現監控功能的主要硬件設備。遠程終端通過GPRS無線通信網絡與服務器相連,根據用戶的設置參數,實現定時開關燈,采集數據和事故報警等功能。

根據不同地區的情況,其數量可能非常的龐大,傳輸到服務器的數據量也會非常龐大。監控軟件是一套在Visual C + + 2008 開發平臺下, 基于Client /Server 模式的網絡通信軟件,由服務端軟件和客戶端軟件兩個部分組成, 后臺數據庫選用MS SQLServer 2005。監控系統結構圖如圖1 所示。

采用服務端完成端口通信技術對路燈監控系統軟件進行優化設計

監控軟件的服務端安裝并工作于服務器上,負責接收監控終端設備傳輸而來的數據,對數據進行分析,并存入數據庫; 同時與軟件的客戶端進行通信,并且將軟件客戶端的指令數據,轉發到相應的監控終端設備,對被監控對象的進行管理與控制。

監控軟件的客戶端工作在用戶電腦上,通過網絡與服務端和數據庫相連,為少數特定的路燈監控管理員提供服務。客戶端為這些管理員用戶提供了一個功能齊全的圖形界面。用戶可以通過客戶端查詢數據,發送控制指令,也可以通過客戶端的電子地圖功能和柜體監控動畫實時的了解各個遠程終端的工作狀態。

3、 服務端完成端口通信模型的實現

3. 1 完成端口原理

3. 1. 1 完成端口簡介

網絡通信模塊是整個系統最核心的部分,由于要負責大規模的數據傳輸與處理,因此對軟件的性能的高效性提出了挑戰,而完成端口通信技術的應用解決了這一難題。

完成端口( I /O Completion Port ) 是一個Windows NT 執行子系統的核心對象。通過將完成端口與任意I /O 句柄( 文件或Socket 等) 關聯,使得用戶可以通過完成端口,異步的獲取并處理I /O 的結果。

完成端口是由系統直接提供并行優化支持的,在完成端口上建立幾個并行的服務線程,一般數量為CPU 數,它們為到達完成端口的服務請求提供服務。當有服務請求到達時,如果有可用的服務線程,則激活該線程,如果沒有可用服務線程,則將服務請求加入請求隊列,該隊列采用先進先出( FIFO)的策略,來保證這些請求得到公平的服務。服務線程的建立和請求隊列的FIFO 策略,減少了CPU 在不同線程間切換的次數,降低線程上下文切換所造成的開銷。

3. 1. 2 重疊I /O

完成端口的設計原理是讓應用程序使用重疊的數據結構,一次投遞一個或多個I /O 請求,當這些請求完成后,應用程序可以為他們提供服務。這就要求我們在使用完成端口時必須要使用重疊I /O。

重疊I /O,即當I /O 功能調用時,不論I /O 是否完成,函數馬上返回,由操作系統底層處理I /O 的實際工作,而應用程序( 進程) 可以繼續做其他事情。因而,完成端口是處理完成重疊I /O 的一種高效的機制。

3. 1. 3 工作線程

除了工作在完成端口上的服務線程外,在關聯套接字之前,還必須創建一個或多個工作線程,以便在I /O 請求投遞給完成端口對象后,為完成端口提供服務。工作線程的個數取決于應用程序的總體設計情況。創建的工作線程由完成端口管理。當有I /O 完成通知到來,則由完成端口喚醒一個工作線程接收I /O 完成通知,并對其進行處理。完成端口自動對工作線程進行調度,喚醒哪個工作線程則由完成端口決定。若無I /O 完成通知,則所有的工作線程都在等待。根據經驗,工作線程的數量一般為CPU 數量的兩倍再加上2。

3. 2 完成端口的程序實現

網絡通信模塊通過CreateIoCompletionPort 函數創建完成端口對象,并將接收到的SOCKET 對象與完成端口關聯, 啟動一定數量的工作線程, 通過GetQueuedCompletionStatus 函數獲取完成端口上SOCKET 的當前狀態,并將收到的數據從緩存出取出。完成端口的主要工作流程圖如圖2 所示。

主線程:

1) 程序啟動的時候,初始化網絡并且創建完成端口句柄:

CompletionPort = CreateIoCompletionPort ( INVALID_ HANDLE_ VALUE,NULL,0,0);

2) 啟動2* N + 2 個工作線程,N 為CPU 數量:

3) 進入一個*循環,開始*客戶端連接請求;

4) 將接收到的客戶端SOCKET 與完成端口對象綁定;

5) 發出一個異步的WSARecv 或是WSASend 操作,實際的接收和發送數據操作會由操作系統完成。

6) 重復以上3) 到5) 的操作。

工作線程:

1) 進入循環, 通過GetQueuedCompletionStatus函數, 從完成端口上取得WSASend /WSARecv 的操作結果:

2) 根據完成端口上I /O 狀態, 進行數據的處理;

3) 提交一個新的WSASend /WSARecv 操作請求;

4) 重復以上1) 到4) 的操作。

3. 3 通信規約設計

整個監控系統采用TCP ( Transmission ControlProtocol,傳輸控制協議) 進行數據傳輸,在此基礎上設計了一套監控系統規約,來完成服務端與遠程終端,服務端與客戶端的通信。根據路燈監控的實際需求,數據報文包括以下幾種形式。

1) 遠程終端主動向軟件服務端發送的連接認證數據報文,如表1 所示。

2) 遠程終端定時向軟件服務端發送的現場數據報文,主要包括路燈監控現場采集到的電流,電壓,溫度,開關狀態,報警信息等數據信息,如表2 所示。

3) 軟件客戶端發送給服務端, 并由服務端轉發到相應遠程終端的參數設置報文,根據不同的功能號,報文發送不同的參數信息,包括開關燈時間,報警閥值,數據采集周期等如表3 所示。

3. 4 完成端口通信的優化

3. 4. 1 內存池的設計

完成端口模型采用異步通信模式, 每次調用WSASend 和WSARecv 函數都需要在內存創建一個結構體空間,函數調用完畢后,再銷毀這個結構體空間。頻繁的創建和銷毀內存空間占用了大量的系統資源,因此,在設計完成端口程序時,根據需求創建一定數量的結構體空間,并將其放入一個統一的空閑隊列,當調用WSASend 和WSARecv 函數時,從隊列中取用一個結構體空間,使用完畢,再將其放回隊列。

3. 4. 2 連接池的設計

當用傳統的accept 函數接收客戶端時,accept函數會創建一個socket 作為返回值,分配給客戶端。

客戶端斷開連接時,創建的socket 會被銷毀。創建和銷毀socket 的過程會占用大量的系統資源,因此在接收客戶端時, 采用acceptEx 函數代替accept,該函數可以把一個事先創建好的socket 對象,分配給接收到的客戶端。首先, 創建好一定數量的socket 對象,形成一個連接池,當接收到客戶端的連接請求時,從連接池中取出空閑socket 對象,分配給該客戶端,斷開連接時,再將socket 放回連接池隊列。連接池的設計減少了客戶端SOCKET 的不斷創建與銷毀,節省了大量的系統資源。

3. 4. 3 線程池的設計

完成端口本身就應用了線程池技術,線程池中的線程不僅包括了工作者線程,還包括了工作上完成端口上的服務線程。有效的對這些線程進行管理,能夠減少CPU 在不同線程間的頻繁切換,降低了切換線程上下文所耗費的時間。

3. 4. 4 數據池的設計

完成端口模塊接收到的數據,要根據通信規約進行處理與分析,并將數據存儲到相應的數據庫中。

由于完成端口網絡通信的數據傳輸總是不平穩的,常常會出現短時間內接收到大量數據,而另一段時間內只接收到少量數據要的情況。為了防止服務器在短時間內超負荷工作,造成的數據意外丟失或是程序崩潰的情況,在進行數據處理時,預先建立了數據存儲隊列,形成一個數據池,將未處理的數據加入隊列, 并采用FIFO 的策略來分配CPU 時間,這就使得CPU 資源得到充分的利用,提高了數據處理的安全性和可靠性。

4 客戶端軟件設計

客戶端軟件通過一般的SOCKET 通信方式與服務器相連,主要是功能是為用戶提供一個簡潔,便利的用戶功能界面。地圖顯示模塊通過對GIS 電子地圖的繪制,將城市地圖及路燈系統的分布圖直觀的顯示給用戶,使得用戶能夠大體的了解到整個路燈系統的運行狀態。動畫顯示模塊通過FLASH 編程技術,將單個遠程終端所控制的配電柜示意圖展示給用戶,用戶可以了解到現場的實時數據并對具體的監控點進行設置,開關燈等操作。數據顯示模塊與數據庫相連,用戶可以查詢到各個監控點的歷史數據以及當前的設置參數,了解路燈系統的具體工作狀態。軟件客戶端主界面如圖3 所示。

5 、完成端口服務器軟件的性能測試

5. 1 測試對象

完成端口通信模型與傳統通信模型相比,擁有更大的數據吞吐量和客戶端數目,并且通過線程池、連接池、內存池的設計和應用,節省了系統資源,提高了服務器軟件的數據處理效率。在對傳統通信模型和完成端口通信模型的性能測試和比較中,選取饑餓的客戶端和每秒線程上下文切換次數兩個重要指標為測試對象。饑餓的客戶端定義為同一時間向服務器申請連接并發送數據的客戶端中,未被服務器影響的客戶端數。

5. 2 測試環境

選用兩臺Intel Core2 1. 9GHz 雙核CPU,2G 內存臺式機,一臺用作服務器電腦,一臺用作客戶端電腦。服務器電腦上分別安裝傳統通信模型的舊版路燈監控軟件和完成端口模型的新版路燈監控軟件,并且在軟件程序中加入測試代碼,用來計算饑餓客戶端數目和線程上下文的切換次數; 客戶端電腦上用測試軟件來模擬一定數量的終端設備的客戶端,并向服務器同時進行連接和發送數據的操作。

5. 3 測試結果及分析

不斷的改變模擬客戶端的數量,對兩種通信模型進行測試,分別記錄下兩種模型在不同數量的客戶端下,饑餓客戶端數量和線程上下文切換的次數,重復多次測試,取得多組數據,取其平均值。

如表4 所示,當模擬客戶端數目逐漸增加時,傳統通信模型的饑餓客戶端數量也不斷增加,這就使得大量的客戶端無法得到服務器響應,大量客戶端的數據無法傳輸,導致數據的阻塞和丟失。而完成端口通信模型采取了一系列的優化策略,并不存在客戶端無法得到服務的情況。

如表5 所示,在模擬客戶端數量較少時,兩種通信模型的線程上下文切換次數相當; 當模擬客戶端數量增加時,傳統通信模型的切換次數劇增,而每次的切換都會導致系統資源的額外開銷,這就使的傳統通信模型的數據處理效率十分低下。使用完成端口通信模型時,線程上下文切換次數并未隨著模擬客戶端的增加而產生更大的變化,因此完成端口模型更適合于大量客戶端的應用場合,并且仍可保持的數據通信的可靠性和高效性。

6、 結束語

完成端口技術的引入, 充分發揮了服務器多CPU 的優勢,使得整個監控系統的數據通信性能得到了極大的優化了。經過壓力測試,當監控終端設備數量達5000 時,系統仍然能夠保持高效、穩定的運行。目前該系統應用于廈門路橋公司,龍巖長汀等地的路燈控制,取得了良好的效果。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 無線通信
    +關注

    關注

    58

    文章

    4716

    瀏覽量

    144887
  • 服務器
    +關注

    關注

    13

    文章

    9717

    瀏覽量

    87358
  • 監控系統
    +關注

    關注

    21

    文章

    4038

    瀏覽量

    181401
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    [原創]基于WSN的路燈監控管理系統

    信息數據,控制各個路燈節點以及自組織等功能的無線傳感器網絡。節點與節點之間采用多跳通信協議,監控中與各個監控終端之間的
    發表于 02-02 12:45

    基于C/S 模式與完成端口路燈監控軟件的設計

    端口技術的應用,將原有的基于C / S 模式的路燈監控系統軟件進行優化,使得整套
    發表于 07-14 16:17

    LED路燈節能監控系統的設計與實現

    開發工具VisualBasic6.0 來進行開發。監控中心主界面如圖4 所示。圖3 軟件系統框圖圖4 LED 節能控制中心軟件界面  針
    發表于 09-29 09:51

    zigbee無線通信終端基于太陽能路燈監控系統的應用

    對太陽能充電情況、蓄電池狀態、LED燈頭溫度、照度等參數進行監測, 同時為合理利用資源,避免浪費情況的發生, 應對路燈的開、關, 輸出功率的調整給予控制。 系統組成: 1.監控中心:包
    發表于 08-31 10:46

    MDC系統軟件

    。以軟件通信手段為主,采用以太網、串口、MPI總線等設備進行通信實現數據采集。該方式幾乎不用增加過多硬件即可實現對機床全面的數據采集和
    發表于 08-12 13:28

    裝配生產線MES系統軟件

    并發線程數,針對MES系統軟件平臺的關鍵技術進行優化。通過測試證明,按照優化方案進行改進后的M
    發表于 12-20 19:21

    TCP通信服務端如何接收客戶的數據?

    畢設采用的是TCP協議,組員做的是下位機,C編程,WiFi模塊工作處于客戶。我負責上位機,Labview使用tcp協議時服務端怎么接收客戶的數據呢? 我找到的例程都是
    發表于 04-14 14:49

    基于ARM7及GPRS的路燈監控通信系統終端

    路燈監控通信系統的終端,實現遠程無線的各路現場數據的傳輸。結合上位機軟件,將各路數據實時傳遞到集中監控
    發表于 11-02 07:00

    監控系統客戶服務端設計

    詳情2.1.2 數據庫接口及實現2.1.2.1 用戶注冊2.1.2.2 用戶查詢2.2 監控系統客戶服務端設計2.2.1 `CS`模型2.2.2 功能2.2.2
    發表于 12-21 07:02

    監控服務器資源利用率的服務端腳本

    其主要目的是:基于 Python 編程語言來監控服務器的 CPU、內存、/目錄、/appslog、/bigdata目錄使用率以及網卡接收和發送情況。 該腳本部署場景分為:服務端和客戶
    的頭像 發表于 01-22 16:02 ?948次閱讀

    MQTT中服務端和客戶

    MQTT 是一種基于客戶-服務端架構(C/S)的消息傳輸協議,所以在 MQTT 協議通信中,有兩個最為重要的角色,它們便是服務端和客戶
    的頭像 發表于 07-30 14:55 ?3123次閱讀

    服務端的測試主要是測什么內容

    服務端測試是軟件開發過程中的一個重要環節,主要目的是確保服務端程序的穩定性、性能、安全性和可靠性。 功能測試 功能測試是服務端測試的基礎,主要驗證
    的頭像 發表于 05-30 15:24 ?5226次閱讀

    服務端測試和客戶測試區別在哪

    服務端測試和客戶測試是軟件開發過程中的兩個重要環節,它們分別針對服務器端和客戶軟件
    的頭像 發表于 05-30 15:27 ?4401次閱讀

    服務端測試是web測試嗎為什么

    客戶請求、執行業務邏輯、與數據庫交互等。服務端測試的目的是確保服務器端軟件組件能夠按照預期工作,沒有錯誤,并且能夠滿足性能要求。 服務端
    的頭像 發表于 05-30 15:30 ?1094次閱讀

    服務端測試包括什么類型

    服務端測試是確保軟件系統服務器端正常運行和滿足性能要求的重要環節。本文將詳細介紹服務端測試的類型、方法和最佳實踐。 1.
    的頭像 發表于 05-30 16:03 ?1538次閱讀
    主站蜘蛛池模板: 神马电影天堂网 | 日本欧洲亚洲一区在线观看 | 免费视频爰爱太爽了 | 在线视频一本 | 午夜宅男在线视频 | 欧美性白人极品1819hd高清 | 成人国产在线24小时播放视频 | 精品国产免费一区二区 | 亚洲免费网| 国模论坛 | 一区二区三区亚洲视频 | 欧美亚洲天堂 | 久久婷婷一区二区三区 | 天天欧美 | 你懂的在线视频观看 | 永久免费人成网ww555kkk手机 | 夜夜爽夜夜爱 | xxx亚洲日本 | 国产三级精品在线观看 | 91在线播放免费不卡无毒 | 国产精品99r8免费视频2022 | 中文字幕在线看视频一区二区三区 | 成人免费观看一区二区 | 亚洲欧美7777 | 亚洲一区亚洲二区 | 亚洲国产福利 | 伊人网色| 国产欧美高清 | 四虎永久在线精品国产免费 | 视色4se在线视频播放 | 成人永久免费视频网站在线观看 | 黄色网免费 | 四虎影院免费网址 | 久久免费精品国产72精品剧情 | 中文字幕在线观看第一页 | 爱爱免费网站 | 午夜免费啪视频观看网站 | 亚洲天天综合 | 国产理论精品 | 天天综合色天天综合 | 黄色福利站 |