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

基于python的SCADA與西門子PLC數(shù)據(jù)讀寫自動(dòng)化測(cè)試實(shí)現(xiàn)

2022-04-15 19:18:43王新月王奚李航張秀明

王新月 王奚 李航 張秀明

摘?要:在SCADA系統(tǒng)中,HMI與PLC的數(shù)據(jù)通訊測(cè)試,各個(gè)數(shù)據(jù)區(qū)不同類型數(shù)據(jù)讀寫的測(cè)試占用70%的測(cè)試時(shí)間。介紹了一種基于python的SCADA與西門子PLC數(shù)據(jù)通訊測(cè)試自動(dòng)化測(cè)試方法,該測(cè)試方法不僅實(shí)現(xiàn)簡(jiǎn)單,而且大大提高了測(cè)試效率,節(jié)省了測(cè)試時(shí)間。

關(guān)鍵詞:SCADA;數(shù)據(jù)通訊;自動(dòng)化測(cè)試

中圖分類號(hào):TP273??????文獻(xiàn)標(biāo)識(shí)碼:A

Data?Reading?and?Writing?Between?SCADA?and?Siemens

PLC?Based?on?Python?Realization?of?Automatic?Test

WANG?Xinyue1,?WANG?Xi2,LI?Hang3,ZHANG?Xiuming3

(1.?Ningbo?Hollysys?Information?Security?Institute?Co.,Ltd.,Xian,Shaanxi?710075,China;

2.Beijing?Hollysys?Intelligent?Technology?Co.,Ltd.,?Xian,Shaanxi?710075,China;

3.China?Mobile?Group?Heilongjiang?Company?limited,Harbin,Heilongjiang?150028,China)

Abstract:In?SCADA?system,?the?test?of?data?communication?between?HMI?and?PLC?takes?up?70%?of?the?test?time.?This?paper?introduces?an?automatic?test?method?of?data?communication?between?SCADA?and?Siemens?PLC?based?on?python.?The?test?method?is?not?only?simple,?but?also?greatly?improves?the?test?efficiency?and?saves?the?test?time.

Key?words:SCADA;?data?communication;automatic?test

SCADA系統(tǒng)是以計(jì)算機(jī)為基礎(chǔ)的生產(chǎn)過(guò)程控制與調(diào)度自動(dòng)化系統(tǒng),可以對(duì)現(xiàn)場(chǎng)的運(yùn)行設(shè)備進(jìn)行監(jiān)視和控制,和利時(shí)SCADA產(chǎn)品是國(guó)內(nèi)最早的SCADA產(chǎn)品之一,有20年的發(fā)展歷程,最初與北京地鐵13號(hào)線合作,定制開發(fā)了組態(tài)型SCADA軟件,與神華和利時(shí)合作開發(fā)了煤礦SCADA系統(tǒng),與中石化合作定制開發(fā)了石化SCADA產(chǎn)品,通過(guò)這些項(xiàng)目產(chǎn)品的建設(shè),積累了豐富的經(jīng)驗(yàn),伴隨著工業(yè)互聯(lián)網(wǎng)技術(shù)日漸成熟以及工業(yè)4.0概念的提出,和用戶對(duì)SCADA產(chǎn)品開放性的強(qiáng)烈需求,和利時(shí)集團(tuán)開發(fā)了面向未來(lái)的新一代產(chǎn)品SCADAV4.0,第四代SCADA平臺(tái)繼承了上一代平臺(tái)的大規(guī)模、高實(shí)時(shí)以及可靠、穩(wěn)定等核心特性,又融入了OPCUA的開放性、可互操作性、自描述性、安全性及集成能力,同時(shí)保持現(xiàn)有產(chǎn)品的兼容性,主要應(yīng)用在煤礦、食藥、能源等領(lǐng)域。

SCADA系統(tǒng)為上、下位機(jī)的結(jié)構(gòu),下位機(jī)完成設(shè)備的直接控制,而上位機(jī)側(cè)重于信息集中管理,上、下位機(jī)通過(guò)通信網(wǎng)絡(luò)連接。下位機(jī)配置的各種輸入設(shè)備(DI、AI等)進(jìn)行數(shù)據(jù)采集,下位機(jī)配置的各種輸出設(shè)備(DO、AO等)對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行控制,下位機(jī)接收上位機(jī)的監(jiān)控,并且向上位機(jī)傳輸各種現(xiàn)場(chǎng)數(shù)據(jù),下位機(jī)提供多種數(shù)據(jù)采集驅(qū)動(dòng),支持與各主流PLC進(jìn)行數(shù)據(jù)通訊。

其中,HMI與西門子PLC通訊測(cè)試所涉及的PLC型號(hào)包括S7200smart、S7300、S7400、S71200、S71500,可訪問(wèn)PLC的I、Q、M、DB數(shù)據(jù)區(qū),支持?jǐn)?shù)據(jù)雙向通信,讀數(shù)據(jù)為周期方式,寫數(shù)據(jù)為實(shí)時(shí)方式,支持多種數(shù)據(jù)類型,包括開關(guān)量數(shù)據(jù)(BIT)、1字節(jié)無(wú)符號(hào)整型BYTE、1字節(jié)有符號(hào)整型CHAR、2字節(jié)有符號(hào)整型SHORT、2字節(jié)無(wú)符號(hào)整型UNSIGNEDSHORT、4字節(jié)有符號(hào)整型INT、4字節(jié)無(wú)符號(hào)整型UNSIGNEDINT、8字節(jié)有符號(hào)整型LONGLONG、8字節(jié)無(wú)符號(hào)整型UNSIGNEDLONGLONG、4字節(jié)浮點(diǎn)型FLOAT、8字節(jié)浮點(diǎn)型DOUBLE、字符串類型(STRING)、時(shí)間類型DTL[1]。

在測(cè)試HMI與西門子PLC通訊過(guò)程中,不但要測(cè)試不同型號(hào)PLC的數(shù)據(jù)讀寫,而且需要測(cè)試的數(shù)據(jù)類型多達(dá)13種,在某種類型數(shù)據(jù)讀寫時(shí),還需驗(yàn)證有效最小左邊界、無(wú)效最大左邊界、有效最大右邊界、無(wú)效最大右邊界、中間值等,可以看出除個(gè)別數(shù)據(jù)類型差異外,不同型號(hào)PLC的數(shù)據(jù)通訊測(cè)試基本屬于重復(fù)測(cè)試,測(cè)試方法與輸入?yún)?shù)驗(yàn)證均有重疊,但總的測(cè)試工作量較大,因此有必要實(shí)現(xiàn)HMI與PLC數(shù)據(jù)讀寫的自動(dòng)化測(cè)試。

1?數(shù)據(jù)讀寫測(cè)試流程介紹

1.1?測(cè)試方法

SCADA系統(tǒng)中,S7協(xié)議驅(qū)動(dòng)測(cè)試主要驗(yàn)證HMI與西門子PLC可尋址區(qū)域的數(shù)據(jù)通訊功能,測(cè)試步驟為:(1)組態(tài)SCADA工程與PLC工程并下裝。(2)在SCADA頁(yè)面中組態(tài)待測(cè)試測(cè)點(diǎn)并在HMI上展示,上下層測(cè)點(diǎn)地址一一對(duì)應(yīng)。(3)將PLC側(cè)的測(cè)點(diǎn)放入監(jiān)視列表。(4)在SCADA側(cè)寫值,在PLC側(cè)判斷同一地址讀值是否寫入成功。(5)在PLC側(cè)寫值,在SCADA側(cè)判斷同一地址數(shù)據(jù)讀值是否成功。詳細(xì)測(cè)試流程見(jiàn)圖1。

基于以上測(cè)試過(guò)程,通過(guò)多個(gè)版本測(cè)試經(jīng)驗(yàn)積累和對(duì)比,發(fā)現(xiàn)人工測(cè)試存在一些問(wèn)題,如:

(1)由于數(shù)據(jù)區(qū)和測(cè)點(diǎn)類型較多,SCADA與PLC相同地址、相同類型的測(cè)點(diǎn)查找較困難

如測(cè)試I區(qū)第一個(gè)字節(jié)數(shù)據(jù)的讀寫,那么首先需在SCADA的HMI頁(yè)面上找到這個(gè)地址對(duì)應(yīng)的測(cè)點(diǎn),其次在PLC上位機(jī)軟件監(jiān)視區(qū)找到I區(qū)的第一個(gè)字節(jié),最后開始數(shù)據(jù)讀寫結(jié)果的對(duì)比,當(dāng)數(shù)據(jù)量較大或更換測(cè)試人員時(shí),查找起來(lái)就更加困難。

(2)SCADA與PLC各自寫值時(shí)需要點(diǎn)擊寫值按鈕,輸入數(shù)值并確定,步驟煩瑣

寫值測(cè)試時(shí),每寫一個(gè)值都需點(diǎn)擊SCADA中HMI頁(yè)面相應(yīng)測(cè)點(diǎn),打開寫值對(duì)話框,輸入數(shù)值,并確定。讀值測(cè)試時(shí),在PLC中每寫一個(gè)值也需要相同的操作步驟。

(3)SCADA系統(tǒng)中HMI頁(yè)面組態(tài)測(cè)點(diǎn)較多,花費(fèi)時(shí)間較多,環(huán)境維護(hù)需要時(shí)間成本。

若要在HMI界面中寫值,首先需組態(tài)測(cè)點(diǎn)寫值頁(yè)面,測(cè)試多少點(diǎn)就組態(tài)多少個(gè)寫值特性,組態(tài)成本較高,延長(zhǎng)了測(cè)試周期。

(4)存在人為誤差

在人工測(cè)試過(guò)程中,出于測(cè)試人員知識(shí)面和工作狀態(tài)等原因,測(cè)試結(jié)果存在誤差,如邊界值的選取有誤、測(cè)試地址覆蓋不全等。

(5)對(duì)測(cè)試人員要求較高,需同時(shí)了解上位機(jī)軟件及PLC硬件相關(guān)知識(shí)

SCADA系統(tǒng)S7協(xié)議驅(qū)動(dòng)的測(cè)試,需要測(cè)試人員有豐富的測(cè)試經(jīng)驗(yàn),對(duì)軟硬件知識(shí)貫通,才能勝任此項(xiàng)測(cè)試。

2?自動(dòng)測(cè)試實(shí)現(xiàn)

2.1?自動(dòng)化測(cè)試難點(diǎn)

HMI界面不是標(biāo)準(zhǔn)Windows控件,使用python的pywinauto[2]方法定位不到,這樣就無(wú)法使HMI界面的各個(gè)窗口完成讀、寫值等操作。同樣,西門子PLC上位機(jī)軟件的各個(gè)窗口,也不是完全的標(biāo)準(zhǔn)控件,自動(dòng)化操作較難,尤其是監(jiān)視列表,無(wú)法分辨出每一行的數(shù)據(jù)位置,無(wú)法完成按數(shù)據(jù)逐一寫值操作,且即使HMI和西門子PLC上位機(jī)軟件的各個(gè)窗口均是標(biāo)準(zhǔn)控件,如果使用傳統(tǒng)測(cè)試方法,由于是只能按點(diǎn)進(jìn)行操作,實(shí)現(xiàn)起來(lái)效率也并不是很高。因此需要采用批量讀寫值方式進(jìn)行數(shù)據(jù)讀寫測(cè)試,批量讀寫值可以利用SCADA系統(tǒng)中的VBA腳本和PLC上位機(jī)編程語(yǔ)言來(lái)完成。

2.2?自動(dòng)化測(cè)試方法

SCADA提供的編程環(huán)境有的是內(nèi)嵌VBA編譯器,有的是自定義的類似BASIC或類似C語(yǔ)言的編譯器。無(wú)論是哪種編程環(huán)境SCADA都要提供很多訪問(wèn)自身數(shù)據(jù)的屬性、方法,以便在編程環(huán)境中與SCADA系統(tǒng)交互。這種內(nèi)置的編程語(yǔ)言經(jīng)常稱作“動(dòng)作”,現(xiàn)在更多的稱呼是“腳本”。這里的腳本與Excel中的“宏”類似。通過(guò)腳本用戶可以自由擴(kuò)展系統(tǒng)功能。腳本與一般編程語(yǔ)言類似,在腳本中提供多種運(yùn)算操作(如賦值、數(shù)學(xué)運(yùn)算、邏輯運(yùn)算),控制語(yǔ)句(如條件判斷,循環(huán),分支),以及內(nèi)置函數(shù)等,有的SCADA還支持自定義函數(shù)。本文中所提的SCADA項(xiàng)目提供測(cè)點(diǎn)數(shù)據(jù)自動(dòng)讀寫函數(shù)DB_read和DB_Write,因此SCADA測(cè)數(shù)據(jù)的批量讀寫就可通過(guò)在VBA腳本中調(diào)用DB_read和DB_Write來(lái)完成。

PLC側(cè)批量數(shù)據(jù)讀寫比較容易實(shí)現(xiàn),使用PLC上位機(jī)軟件自帶編程語(yǔ)言即可。

SCADA與PLC側(cè)批量數(shù)據(jù)讀寫功能完成后,python只是起到了一個(gè)連接的作用,點(diǎn)擊HMI界面上的1個(gè)按鈕就可觸發(fā)上位機(jī)的批量寫操作,python讀取PLC上位機(jī)軟件監(jiān)視列表的所有值,與預(yù)期值作對(duì)比。接著利用python置PLC寫值標(biāo)志位為真,完成PLC側(cè)批量寫值操作,再在HMI界面點(diǎn)擊批量讀值按鈕完成批量讀操作,并把讀到的數(shù)據(jù)與預(yù)期作對(duì)比。數(shù)據(jù)讀寫自動(dòng)動(dòng)測(cè)試流程見(jiàn)圖2。

2.3?自動(dòng)化測(cè)試實(shí)現(xiàn)

2.3.1?HMI自動(dòng)化寫值

SCADA上層HMI界面,窗口層級(jí)較多,在查找窗口時(shí),只能獲得最外層的窗口標(biāo)題,因此需借助python中win32Gui模塊的FindWindow和FindWindowEx函數(shù)先找到父窗口句柄[2],再通過(guò)父窗口句柄按確定的層級(jí)關(guān)系查找到寫值按鈕,python中部分代碼如下。

app?=?Application().connect(path='D:HiaSCADAbinMacsVinci.exe')?#?app關(guān)聯(lián)上HMI程序

handlex1?=?win32gui.FindWindow(None,?"HMI監(jiān)視")?#?"HMI監(jiān)視"為最外層窗口標(biāo)題

handlex2?=?win32gui.FindWindowEx(handlex1,?0,?None,?None)

handlex3?=?win32gui.FindWindowEx(handlex2,?0,?None,?None)

handlex4?=?win32gui.FindWindowEx(handlex3,?0,?None,?None)

handlex5?=?win32gui.FindWindowEx(handlex4,?0,?None,?None)?#?查找到寫值按鈕句柄

app.window(title_re=u'HMI監(jiān)視').window(handle=handlex5,?class_name='Button').click_input()?#點(diǎn)擊寫值按鈕

寫值按鈕被點(diǎn)擊后就會(huì)觸發(fā)SCADA內(nèi)置的VBA批量寫值腳本,python等待寫值完成彈框,依據(jù)彈框中寫值完成標(biāo)志,置PLC讀值標(biāo)志位為真,PLC接收到讀值指令,自動(dòng)讀取所有寫值地址數(shù)據(jù),并返回結(jié)果給python,python對(duì)比HMI寫值數(shù)據(jù)與PLC讀值數(shù)據(jù),輸出相應(yīng)的測(cè)試報(bào)告。

2.3.2?HMI自動(dòng)化讀值

通過(guò)python置PLC寫值標(biāo)志位為真,PLC程序接收到寫值指令,自動(dòng)完成批量寫值操作,待寫值完成后,使用與3.3.1中同樣的方法點(diǎn)擊HMI界面上的讀值按鈕,觸發(fā)SCADA內(nèi)置的VBA批量讀值腳本,用VBA腳本自動(dòng)判定讀取到的值是否與PLC寫下的值一致,通過(guò)彈框輸出測(cè)試結(jié)果,python獲取彈框內(nèi)容生成相應(yīng)的測(cè)試報(bào)告。VBA中讀值處理流程精簡(jiǎn)代碼如下。

Private?Sub?Button_LButtonDown()

Dim?var?As?Variant

Dim?iAs?Integer

Dim?j?As?Integer

Dim?X_data_up(2)?As?String

Dim?X_compare_up()?As?Variant'變量值對(duì)比數(shù)組

Dim?X_datatype_up()?As?Variant'變量名稱

Dim?X_errlist_up()?As?String‘存儲(chǔ)錯(cuò)誤變量名

Dim?X_errdata_up()?As?String‘存儲(chǔ)錯(cuò)誤變量值

Dim?S?As?String

Dim?K?As?String

j?=?0

flag?=?0

X_compare_up?=?Array("0",?"-32768")?'變量值對(duì)比數(shù)組

X_datatype_up?=?Array("變量1",?"變量2")?'變量名稱

Library.DB_Read?"變量1",?var?'調(diào)用讀值接口

X_data_up(0)?=?var

Library.DB_Read?"變量2”,?var

X_data_up(1)?=?var

For?i?=?0?To?1‘判斷讀到的值是否正確

If?X_data_up(i)?=?X_compare_up(i)?Then

Else

flag?=?1

ReDim?Preserve?X_errlist_up(j?+?1)

ReDim?Preserve?X_errdata_up(j?+?1)

X_errlist_up(j)?=?X_datatype_up(i)

X_errdata_up(j)?=?X_data_up(i)

j?=?j?+?1

End?If

Next

If?flag>?0?Then

S?=?Join(X_errlist_up,?",")

K?=?Join(X_errdata_up,?",")

MsgBox?("讀上限錯(cuò)誤類型:"?&?S?&Chr(10)?&?"讀上限錯(cuò)誤數(shù)據(jù):"?&?K)‘不一致時(shí)輸出錯(cuò)誤的變量名和變量值

End?If

If?flag?=?0?Then

MsgBox?("pass")‘一致時(shí)輸出pass

End?If

End?Sub

3?結(jié)?論

介紹了一種SCADA上層HMI與西門子PLC數(shù)據(jù)讀寫自動(dòng)化測(cè)試方法,運(yùn)用SCADA內(nèi)置VBA和PLC編程語(yǔ)言實(shí)現(xiàn)上下層批量讀、寫值操作,簡(jiǎn)化了操作步驟,方法簡(jiǎn)單,易于實(shí)現(xiàn)。

與傳統(tǒng)手工測(cè)試相比,以200條用例為例,手工測(cè)試時(shí)間考慮各操作因素及判斷因素至少需要6.6?h左右,而自動(dòng)化測(cè)試僅需10?min左右,由此可以看出SCADA上層HMI與西門子PLC數(shù)據(jù)讀寫自動(dòng)化測(cè)試的實(shí)現(xiàn)大大提高了測(cè)試效率,更便于版本間升級(jí)測(cè)試。

參考文獻(xiàn)

[1]?廖常初.S71200?PLC編程及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2010.

[2]?Doug?Hellmann.python?3?標(biāo)準(zhǔn)庫(kù)[M].北京:機(jī)械工業(yè)出版社,2018.

主站蜘蛛池模板: 日本欧美精品| 狠狠亚洲婷婷综合色香| 亚洲欧美日本国产综合在线| 亚洲男人的天堂久久香蕉网| 青青青视频免费一区二区| 综合人妻久久一区二区精品| 日本精品视频| 精品人妻一区无码视频| 久久久久九九精品影院| 日本精品视频一区二区| 久热中文字幕在线| 国产三级成人| 中文字幕在线观| 99999久久久久久亚洲| 亚洲国产91人成在线| 国产免费黄| 国产噜噜噜视频在线观看| 99这里只有精品6| 丝袜无码一区二区三区| 午夜欧美在线| 无码视频国产精品一区二区| 91福利免费| 在线观看无码av五月花| 亚洲A∨无码精品午夜在线观看| 亚洲人成色77777在线观看| 又粗又硬又大又爽免费视频播放| 成人国产一区二区三区| 高清视频一区| 五月天福利视频 | 欧美成人亚洲综合精品欧美激情| 亚洲精品成人片在线观看| 精品黑人一区二区三区| 欧美黄色网站在线看| 91热爆在线| 手机精品福利在线观看| 91精品免费高清在线| 国产午夜精品鲁丝片| 成年午夜精品久久精品| 国产69精品久久久久孕妇大杂乱 | 国产精品不卡片视频免费观看| 91亚瑟视频| 99久久国产综合精品女同| 免费人成在线观看视频色| 一级毛片中文字幕| 91探花在线观看国产最新| 亚洲精品中文字幕无乱码| 国产无码性爱一区二区三区| 中文字幕亚洲无线码一区女同| 免费一级大毛片a一观看不卡| 久草性视频| 免费无码网站| 久久激情影院| 欧美亚洲国产一区| 成人日韩视频| 亚洲日韩在线满18点击进入| 美女扒开下面流白浆在线试听| 九九视频免费看| 九九热精品在线视频| 中文字幕av一区二区三区欲色| AV无码无在线观看免费| 小说区 亚洲 自拍 另类| 国产精品黄色片| 日韩欧美视频第一区在线观看| 91小视频版在线观看www| 国产黄色爱视频| 色婷婷久久| 国外欧美一区另类中文字幕| 久久性视频| 鲁鲁鲁爽爽爽在线视频观看 | 九九九精品视频| 99热国产这里只有精品无卡顿"| 亚洲无码日韩一区| 国产理论精品| 亚洲天堂成人在线观看| 蝌蚪国产精品视频第一页| 亚洲人成网站观看在线观看| 久久77777| 国产欧美精品午夜在线播放| 三上悠亚在线精品二区| 国产偷国产偷在线高清| 国产导航在线| 亚洲第一av网站|