国产人妻精品区一区二区,国产农村妇女毛片精品久久,JAPANESE日本丰满少妇,日本公妇理伦a片,射精专区一区二区朝鲜

五分鐘技術趣談 | 物聯網平臺Modbus協議采樣命令下發并發性能測試方法
作者 | 移動Labs2023-02-09

Modbus是(shi)一種串行通信(xin)協(xie)議,是(shi)Modicon公司(現在的(de)施耐德電(dian)氣 Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信(xin)而發表(biao)。Modbus已經成為工(gong)業(ye)領域通信(xin)協(xie)議的(de)業(ye)界(jie)標準(De facto),并且現在是(shi)工(gong)業(ye)電(dian)子(zi)設備之間常用的(de)連(lian)接(jie)方式。

采樣命令

Modbus協議同樣也是物聯網平臺(tai)的(de)流(liu)行(xing)協議(yi)之(zhi)一,采(cai)樣命(ming)令作為Modbus協議(yi)的(de)主(zhu)要功能,其主(zhu)要流(liu)程是設(she)備在(zai)平臺(tai)設(she)置(zhi)周(zhou)期采(cai)樣命(ming)令,平臺(tai)會周(zhou)期性主(zhu)動對在(zai)線設(she)備下發采(cai)樣命(ming)令。

我(wo)們在為雄(xiong)安(an)建設物聯網平臺時,正好平臺就有Modbus的能力,平臺交付就必(bi)須(xu)要測試Modbus的采樣命令并發(fa)。

物(wu)聯網平臺Modbus協議采樣命令下(xia)發流(liu)程如下(xia):

創建設備(bei),在平臺給(gei)設備(bei)設置(zhi)采樣(yang)命令:采樣(yang)周期、功能編號、從機(ji)地址、數據長度等信(xin)息。

設備(bei)上線后,平臺按照采(cai)樣周期對設備(bei)進(jin)行周期性發送采(cai)樣命令。

設備收到采樣命令(ling)后將寄(ji)存(cun)器(qi)數(shu)據返回結果給(gei)平臺,并保(bao)存(cun)采樣數(shu)據。

通(tong)常(chang)(chang)情(qing)況下我們做性(xing)能測試(shi)都是客戶(hu)端發起請求服(fu)務(wu)的響(xiang)應客戶(hu)端,而Modbus的采樣(yang)命(ming)令恰好相反,以往(wang)我們常(chang)(chang)用的性(xing)能測試(shi)工具就不(bu)可行了。

要(yao)如何才(cai)能測試服務的(de)采樣命令的(de)并(bing)發呢(ni)?

測試方法

為(wei)了測試物聯網平臺Modbus協(xie)議采樣命(ming)(ming)令(ling)(ling)并發(fa)性(xing)能,我們研(yan)究出了一種高(gao)并發(fa)的采樣命(ming)(ming)令(ling)(ling)并發(fa)性(xing)能測試方(fang)法。該方(fang)法采用異(yi)步IO的方(fang)式批量(liang)模擬(ni)設備(bei)連接(jie)服務器、接(jie)收采樣命(ming)(ming)令(ling)(ling)并響(xiang)應(ying)命(ming)(ming)令(ling)(ling),并統計每(mei)秒接(jie)收的命(ming)(ming)令(ling)(ling)數量(liang)。技術實(shi)現細(xi)節如下:

1、通過(guo)API批量(liang)創建(jian)Modbus設備,并給每個(ge)設備創建(jian)n個(ge)采(cai)樣(yang)命令(ling)。即無需提前創建(jian)設備和設備的采(cai)樣(yang)命令(ling);

2、批(pi)量初始化設備的socket連接,socket設置(zhi)為非(fei)阻塞(sai),生成(cheng)socket列表。采用(yong)異步IO,減少(shao)多線程線程切(qie)換帶來的資源(yuan)消(xiao)耗,提(ti)升(sheng)CPU利用(yong)率(lv);

3、同(tong)時啟動(dong)以(yi)下三個線程(cheng):

①批(pi)量設備注(zhu)冊線程(cheng):批(pi)量上報注(zhu)冊報文(wen),設備注(zhu)冊完成后線程(cheng)退出;

②采樣命(ming)(ming)令條數統(tong)計線程:所有設備注冊成功后,每秒(miao)統(tong)計一次最近1秒(miao)內收(shou)到采樣命(ming)(ming)令條數;

③采(cai)樣命令(ling)接收(shou)處(chu)理線(xian)(xian)程(cheng):采(cai)用select批量管理設(she)備socket列(lie)表,接收(shou)并(bing)立(li)即響應采(cai)樣命令(ling),并(bing)實時記錄采(cai)樣命令(ling)條數。select模型為非阻塞式IO,能夠一定程(cheng)度上減少(shao)服(fu)務器瞬間的并(bing)發線(xian)(xian)程(cheng)數,從而(er)提(ti)高CPU執行效率;

Python代碼示例(片段)

Python代(dai)碼示(shi)例(片段)

4、根據運行設備數(shu)量以及平均每(mei)秒接收到(dao)采樣命令(ling)數(shu)量來判斷平臺(tai)是否(fou)滿(man)足當前的(de)(de)采樣命令(ling)的(de)(de)處理性(xing)能。性(xing)能滿(man)足的(de)(de)條(tiao)件下預期結果(guo)為

預期每秒命令接收數(shu)量(liang) ≈ 設備數(shu)量(liang) * n

逐步增加設備(bei)數量(liang),當預(yu)(yu)期每秒命令(ling)接(jie)收數量(liang) > 設備(bei)數量(liang) * n時,即服務已(yi)達到瓶(ping)頸(jing)。則最(zui)終測試服務的(de)采樣命令(ling)最(zui)大(da)并發量(liang)為,滿足預(yu)(yu)期結果時的(de)設備(bei)最(zui)大(da)接(jie)入(ru)量(liang) * n。

測試流程圖

該測試方法優點:

1、無需單獨添(tian)加創建設備(bei)和設備(bei)的(de)(de)采樣(yang)(yang)命(ming)令,簡化了Modbus協議采樣(yang)(yang)命(ming)令性(xing)能測試的(de)(de)準備(bei)工作;

2、在(zai)設備端(duan)統計并發(fa)量,無需(xu)在(zai)服務端(duan)增加任何統計邏輯;

3、采用(yong)模(mo)擬設備(bei),無需準備(bei)大量真實(shi)設備(bei),降低了Modbus協議采樣命令性能測試(shi)的成本;

4、通過非(fei)阻塞式IO,顯(xian)著(zhu)提升(sheng)Modbus協議采(cai)樣命令并發(fa)性(xing)能(neng)測(ce)試的設備響應速度,解決Modbus協議采(cai)樣命令并發(fa)性(xing)能(neng)測(ce)試高并發(fa)狀態下的資源浪費問題;

5、設(she)備響應速度的提升,有效提高Modbus協議采樣命令(ling)并(bing)發性能(neng)測試(shi)的準(zhun)確度。

我們采用此(ci)種(zhong)方(fang)法(fa)編寫的(de)Python代碼,單個(ge)腳本(ben)可以支撐1秒內1萬+次的(de)命(ming)令(ling)處理(li)能力。在(zai)雄(xiong)安(an)(an)物聯網平臺的(de)性能測(ce)試中起到了(le)(le)非常(chang)好的(de)作用,同時運行10個(ge)腳本(ben),完成(cheng)了(le)(le)雄(xiong)安(an)(an)平臺Modbus協(xie)議采樣命(ming)令(ling)10萬并發的(de)測(ce)試。

熱門文章
2022年,長武縣農業農村局依托省級現代農業產業園創建,與西安電子科技大學合作實施數字農業項目已建成投入應用...
2023-02-09
X