亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2022-04-15 19:18:43王新月王奚李航張秀明
        計算技術(shù)與自動化 2022年1期
        關(guān)鍵詞:自動化測試數(shù)據(jù)通訊

        王新月 王奚 李航 張秀明

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

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

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

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

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

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

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

        1.1?測試方法

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

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

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

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

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

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

        (3)SCADA系統(tǒng)中HMI頁面組態(tài)測點較多,花費時間較多,環(huán)境維護需要時間成本。

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

        (4)存在人為誤差

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

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

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

        2?自動測試實現(xiàn)

        2.1?自動化測試難點

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

        2.2?自動化測試方法

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

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

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

        2.3?自動化測試實現(xiàn)

        2.3.1?HMI自動化寫值

        SCADA上層HMI界面,窗口層級較多,在查找窗口時,只能獲得最外層的窗口標題,因此需借助python中win32Gui模塊的FindWindow和FindWindowEx函數(shù)先找到父窗口句柄[2],再通過父窗口句柄按確定的層級關(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)視"為最外層窗口標題

        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()?#點擊寫值按鈕

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

        2.3.2?HMI自動化讀值

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

        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'變量值對比數(shù)組

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

        Dim?X_errlist_up()?As?String‘存儲錯誤變量名

        Dim?X_errdata_up()?As?String‘存儲錯誤變量值

        Dim?S?As?String

        Dim?K?As?String

        j?=?0

        flag?=?0

        X_compare_up?=?Array("0",?"-32768")?'變量值對比數(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?("讀上限錯誤類型:"?&?S?&Chr(10)?&?"讀上限錯誤數(shù)據(jù):"?&?K)‘不一致時輸出錯誤的變量名和變量值

        End?If

        If?flag?=?0?Then

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

        End?If

        End?Sub

        3?結(jié)?論

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

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

        參考文獻

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

        [2]?Doug?Hellmann.python?3?標準庫[M].北京:機械工業(yè)出版社,2018.

        猜你喜歡
        自動化測試數(shù)據(jù)通訊
        機器視覺系統(tǒng)與PLC的數(shù)據(jù)通訊
        “體感+”可穿戴體感套件
        Hadoop性能測試自動化研究
        數(shù)據(jù)驅(qū)動和關(guān)鍵字驅(qū)動的研究與應(yīng)用
        軟件(2016年4期)2017-01-20 09:56:35
        淺談空調(diào)控制器自動化測試
        東方教育(2016年7期)2017-01-17 21:28:10
        基于多總線結(jié)構(gòu)的電路板測試系統(tǒng)設(shè)計研究
        價值工程(2016年32期)2016-12-20 20:32:01
        航空航天與國防電子新形勢下自動化測試系統(tǒng)的應(yīng)用
        價值工程(2016年29期)2016-11-14 02:40:46
        基于CTI—TET和SeleniumWebdriver的Web應(yīng)用自動化測試框架的設(shè)計與實現(xiàn)
        軟件工程(2016年8期)2016-10-25 15:45:45
        基于C#的船舶電力推進監(jiān)控系統(tǒng)的數(shù)據(jù)通訊設(shè)計
        萊鋼能源管控系統(tǒng)中SCADA數(shù)據(jù)通訊系統(tǒng)升級改造
        色哟哟最新在线观看入口| 中文亚洲成a人片在线观看| 日韩人妖一区二区三区| av天堂免费在线播放| 国产精品久久久久久福利| 人人妻人人澡人人爽曰本| 亚洲国产剧情在线精品视| 久久精品亚洲热综合一本色婷婷| 无遮挡1000部拍拍拍免费| 日韩亚洲av无码一区二区三区| 大陆一级毛片免费播放| 久久蜜臀av一区三区| 亚洲偷自拍国综合第一页| 国产成人涩涩涩视频在线观看| 国产啪精品视频网给免丝袜| 国产一级一片内射在线| 亚洲成精品动漫久久精久| 亚洲av天堂一区二区| 国产一区二区三区四区三区| 亚洲最大av资源站无码av网址| 男人阁久久| 久久精品国产亚洲av日韩一| 四虎影视久久久免费观看| 无码一区二区波多野结衣播放搜索| 无码a级毛片免费视频内谢| 尤物精品国产亚洲亚洲av麻豆| 国内久久婷婷六月综合欲色啪| 亚洲国产精品成人久久| 日韩精品无码av中文无码版| 日韩精品欧美激情国产一区| 免费在线av一区二区| 一区二区三区美女免费视频| 狠狠噜天天噜日日噜视频麻豆| 女的把腿张开男的猛戳出浆| 亚洲中文字幕综合网站| 日本天堂免费观看| 亚洲av成本人无码网站| 初尝人妻少妇中文字幕在线| 国产av一区二区三区性入口| 真实国产老熟女粗口对白| 精品一区二区三区在线观看l|