• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2022-04-15 19:18:43王新月王奚李航張秀明
    關(guān)鍵詞:自動(dòng)化測試數(shù)據(jù)通訊

    王新月 王奚 李航 張秀明

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

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

    中圖分類號:TP273??????文獻(xiàn)標(biāo)識碼: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)過程控制與調(diào)度自動(dòng)化系統(tǒng),可以對現(xiàn)場的運(yùn)行設(shè)備進(jìn)行監(jiān)視和控制,和利時(shí)SCADA產(chǎn)品是國內(nèi)最早的SCADA產(chǎn)品之一,有20年的發(fā)展歷程,最初與北京地鐵13號線合作,定制開發(fā)了組態(tài)型SCADA軟件,與神華和利時(shí)合作開發(fā)了煤礦SCADA系統(tǒng),與中石化合作定制開發(fā)了石化SCADA產(chǎn)品,通過這些項(xiàng)目產(chǎn)品的建設(shè),積累了豐富的經(jīng)驗(yàn),伴隨著工業(yè)互聯(lián)網(wǎng)技術(shù)日漸成熟以及工業(yè)4.0概念的提出,和用戶對SCADA產(chǎn)品開放性的強(qiáng)烈需求,和利時(shí)集團(tuán)開發(fā)了面向未來的新一代產(chǎn)品SCADAV4.0,第四代SCADA平臺繼承了上一代平臺的大規(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ī)通過通信網(wǎng)絡(luò)連接。下位機(jī)配置的各種輸入設(shè)備(DI、AI等)進(jìn)行數(shù)據(jù)采集,下位機(jī)配置的各種輸出設(shè)備(DO、AO等)對現(xiàn)場設(shè)備進(jìn)行控制,下位機(jī)接收上位機(jī)的監(jiān)控,并且向上位機(jī)傳輸各種現(xiàn)場數(shù)據(jù),下位機(jī)提供多種數(shù)據(jù)采集驅(qū)動(dòng),支持與各主流PLC進(jìn)行數(shù)據(jù)通訊。

    其中,HMI與西門子PLC通訊測試所涉及的PLC型號包括S7200smart、S7300、S7400、S71200、S71500,可訪問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é)無符號整型BYTE、1字節(jié)有符號整型CHAR、2字節(jié)有符號整型SHORT、2字節(jié)無符號整型UNSIGNEDSHORT、4字節(jié)有符號整型INT、4字節(jié)無符號整型UNSIGNEDINT、8字節(jié)有符號整型LONGLONG、8字節(jié)無符號整型UNSIGNEDLONGLONG、4字節(jié)浮點(diǎn)型FLOAT、8字節(jié)浮點(diǎn)型DOUBLE、字符串類型(STRING)、時(shí)間類型DTL[1]。

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

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

    1.1?測試方法

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

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

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

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

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

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

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

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

    (4)存在人為誤差

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

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

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

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

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

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

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

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

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

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

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

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

    SCADA上層HMI界面,窗口層級較多,在查找窗口時(shí),只能獲得最外層的窗口標(biāo)題,因此需借助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)視"為最外層窗口標(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)擊后就會觸發(fā)SCADA內(nèi)置的VBA批量寫值腳本,python等待寫值完成彈框,依據(jù)彈框中寫值完成標(biāo)志,置PLC讀值標(biāo)志位為真,PLC接收到讀值指令,自動(dòng)讀取所有寫值地址數(shù)據(jù),并返回結(jié)果給python,python對比HMI寫值數(shù)據(jù)與PLC讀值數(shù)據(jù),輸出相應(yīng)的測試報(bào)告。

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

    通過python置PLC寫值標(biāo)志位為真,PLC程序接收到寫值指令,自動(dòng)完成批量寫值操作,待寫值完成后,使用與3.3.1中同樣的方法點(diǎn)擊HMI界面上的讀值按鈕,觸發(fā)SCADA內(nèi)置的VBA批量讀值腳本,用VBA腳本自動(dòng)判定讀取到的值是否與PLC寫下的值一致,通過彈框輸出測試結(jié)果,python獲取彈框內(nèi)容生成相應(yīng)的測試報(bào)告。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‘存儲錯(cuò)誤變量名

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

    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?("讀上限錯(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)化測試方法,運(yùn)用SCADA內(nèi)置VBA和PLC編程語言實(shí)現(xiàn)上下層批量讀、寫值操作,簡化了操作步驟,方法簡單,易于實(shí)現(xiàn)。

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

    參考文獻(xiàn)

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

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

    猜你喜歡
    自動(dòng)化測試數(shù)據(jù)通訊
    機(jī)器視覺系統(tǒng)與PLC的數(shù)據(jù)通訊
    “體感+”可穿戴體感套件
    Hadoop性能測試自動(dòng)化研究
    數(shù)據(jù)驅(qū)動(dòng)和關(guān)鍵字驅(qū)動(dòng)的研究與應(yīng)用
    軟件(2016年4期)2017-01-20 09:56:35
    淺談空調(diào)控制器自動(dòng)化測試
    東方教育(2016年7期)2017-01-17 21:28:10
    基于多總線結(jié)構(gòu)的電路板測試系統(tǒng)設(shè)計(jì)研究
    航空航天與國防電子新形勢下自動(dòng)化測試系統(tǒng)的應(yīng)用
    基于CTI—TET和SeleniumWebdriver的Web應(yīng)用自動(dòng)化測試框架的設(shè)計(jì)與實(shí)現(xiàn)
    軟件工程(2016年8期)2016-10-25 15:45:45
    基于C#的船舶電力推進(jìn)監(jiān)控系統(tǒng)的數(shù)據(jù)通訊設(shè)計(jì)
    萊鋼能源管控系統(tǒng)中SCADA數(shù)據(jù)通訊系統(tǒng)升級改造
    丰城市| 凌海市| 楚雄市| 荆州市| 太仓市| 巨鹿县| 肇庆市| 共和县| 海原县| 怀安县| 阿巴嘎旗| 德清县| 都昌县| 万山特区| 铜山县| 紫阳县| 临澧县| 商南县| 宜丰县| 满城县| 兰西县| 巨野县| 昌图县| 卫辉市| 莱阳市| 遵义县| 通城县| 右玉县| 和静县| 衡水市| 二手房| 读书| 剑川县| 曲松县| 扶绥县| 广德县| 嵊州市| 丽江市| 万年县| 宽城| 中牟县|