国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種工業(yè)控制器的組態(tài)調(diào)試器實現(xiàn)方法

2017-09-25 02:10:39牛洪海盧海松
自動化儀表 2017年9期
關(guān)鍵詞:斷點組態(tài)指令

吳 波,牛洪海,盧海松

(南瑞繼保電氣有限公司,江蘇 南京 211102)

一種工業(yè)控制器的組態(tài)調(diào)試器實現(xiàn)方法

吳 波,牛洪海,盧海松

(南瑞繼保電氣有限公司,江蘇 南京 211102)

在工業(yè)過程控制領(lǐng)域,常常需要對控制器內(nèi)的復雜控制邏輯進行單步執(zhí)行、斷點調(diào)試,以便明確診斷邏輯的正確性和合理性,但目前各廠家的工業(yè)控制器并不具備該功能。為了解決該問題,對高級編程語言C/C++的調(diào)試器功能進行了系統(tǒng)的研究,包括其程序斷點的設計原理和調(diào)試器的實現(xiàn)機制。結(jié)合工業(yè)控制器算法組態(tài)的語言特點,設計了一種面向算法組態(tài)的調(diào)試器,并將其運用到工業(yè)控制器的嵌入式軟件系統(tǒng)中。通過與算法邏輯運算單元的交互設計,成功實現(xiàn)了復雜控制邏輯的單步執(zhí)行、逐頁逐模塊以及斷點調(diào)試等功能。試驗結(jié)果表明,集成組態(tài)調(diào)試器功能的工業(yè)控制器,能夠極大地方便項目實施過程中的現(xiàn)場組態(tài)和深入調(diào)試,有效降低組態(tài)算法的錯誤率和提高工程調(diào)試的效率。該控制器為工業(yè)控制器的全方位診斷功能以及虛擬仿真的實現(xiàn)提供了一定的參考。

工業(yè)控制器; 算法組態(tài); 調(diào)試器; 單步執(zhí)行; 斷點調(diào)試; 嵌入式開發(fā); DCS; PLC

0 引言

為了便于編程開發(fā)和調(diào)試,一般高級編程語言,如C/C++等,均提供了完備的調(diào)試器功能。調(diào)試器通過按照代碼行、函數(shù)、功能塊斷點等方式中斷程序執(zhí)行,輔助開發(fā)人員進行逐步調(diào)試和分析,定位程序代碼的問題和錯誤所在。在工業(yè)控制領(lǐng)域,隨著各種算法組態(tài)語言越來越多地應用于復雜對象和控制過程的組態(tài)[1],針對算法組態(tài)語言的調(diào)試器功能需求日益迫切。目前市面上的控制器產(chǎn)品尚不支持這方面的功能。本文設計了適用于工業(yè)控制器的組態(tài)調(diào)試器。

1 組態(tài)調(diào)試器設計原理

在工業(yè)控制領(lǐng)域,算法邏輯的組態(tài)語言有五種,分別是功能塊圖(function block diagram,F(xiàn)BD)、梯形圖(ladder diagram,LD)、指令表(instruction list,IL)、結(jié)構(gòu)文本(structured text,ST)、順序功能圖(sequential function chart,SFC)[2]。組態(tài)工具根據(jù)算法邏輯的組態(tài)內(nèi)容,生成一種中間產(chǎn)物或者目標產(chǎn)物,下載到工業(yè)控制器內(nèi)執(zhí)行處理[3-4]。

該流程和基于高級語言的程序開發(fā)過程原理相同,所以有必要研究高級語言調(diào)試器的原理。通過借鑒分析,逐步得到組態(tài)調(diào)試器的設計原理和方法。

1.1 常規(guī)調(diào)試器原理

調(diào)試器原理主要包括兩個方面:一是斷點機制,二是變量監(jiān)視。實現(xiàn)兩者的首要問題,就是源代碼和目標產(chǎn)物之間的映射關(guān)系。

基于高級語言的程序代碼,在開發(fā)完成之后,經(jīng)由編譯器的分析、編譯、鏈接轉(zhuǎn)化成一長串的比特流,即基于機器指令碼的目標程序,方能在目標CPU上正確執(zhí)行[5]。

開發(fā)人員對源代碼的調(diào)試,歸根結(jié)底是對目標程序進行調(diào)試。但是經(jīng)過編譯處理之后,源代碼和目標程序之間的關(guān)系變得錯綜復雜。為此,必須完全記錄編譯器在源代碼處理過程中產(chǎn)生的信息,以便源代碼和目標程序間的雙向索引定位。這些信息就是信息調(diào)試器運行必須參考的調(diào)試信息。

根據(jù)調(diào)試信息,源代碼中的任意行和任意變量均可以定位到目標程序中的唯一地址。開發(fā)人員在某行源代碼處設置斷點,調(diào)試器經(jīng)過轉(zhuǎn)換后,通知CPU將在目標程序的對應地址處停止運行。當CPU運行到對應地址處,觸發(fā)軟中斷,并通知調(diào)試器命中斷點。對于變量監(jiān)視,調(diào)試器根據(jù)其在目標程序中的地址直接查詢獲取[6-7]。

斷點命中機理和變量監(jiān)視,需要目標平臺的CPU和操作系統(tǒng)的共同支持實現(xiàn)。

1.2 組態(tài)調(diào)試器原理

對于高級編程語言,調(diào)試器的基本單位是源代碼行。而對于算法邏輯組態(tài),調(diào)試器的基本單位往往是算法塊。因此,相對于以代碼行作為斷點,組態(tài)調(diào)試器的最小可定義斷點是算法塊。

但是工業(yè)控制器對算法邏輯的處理一般分為兩類,即解釋執(zhí)行機制和編譯執(zhí)行機制。采用解釋執(zhí)行機制的控制器,其內(nèi)核對算法邏輯邊解釋邊執(zhí)行。而采用編譯執(zhí)行機制的控制器,其內(nèi)核執(zhí)行的是由算法邏輯語言編譯形成的機器指令碼。

如前文所述,如果在采用編譯執(zhí)行機制的工業(yè)控制器上實現(xiàn)調(diào)試器,則需要維護算法組態(tài)和目標程序之間的調(diào)試信息。本文的工業(yè)控制器采用的是解釋執(zhí)行機制,故可以省去調(diào)試信息的維護設計環(huán)節(jié)。但二者的基本原理是完全相通的[8]。

1.2.1 組態(tài)斷點定義

基于功能塊圖組態(tài)的算法邏輯結(jié)構(gòu)如圖 1所示。其中,最小邏輯單位是功能模塊,如加法塊、邏輯與、PID模塊等。但為了方便用戶和工程人員應用,常常會根據(jù)現(xiàn)場應用的需要,對這些由基本功能模塊組成的算法邏輯進行分頁。

圖1 算法邏輯結(jié)構(gòu)圖

因此,定義頁號和模塊號作為組態(tài)斷點的描述信息,可以完全記錄算法邏輯的執(zhí)行步驟信息。故將“頁號+模塊號”的組合信息作為組態(tài)斷點數(shù)據(jù)結(jié)構(gòu)。

由于調(diào)試器通常支持多個斷點,故在控制器中定義如圖 2所示的組態(tài)斷點鏈表,對調(diào)試過程中設置的組態(tài)斷點進行統(tǒng)一管理和維護。

圖2 組態(tài)斷點鏈表

因為組態(tài)斷點信息描述的是算法邏輯中的某個模塊邏輯地址信息,所以當用戶設置斷點后,在算法邏輯順序執(zhí)行過程中,一定會執(zhí)行到組態(tài)斷點處。此時控制器命中組態(tài)斷點,停止算法邏輯的執(zhí)行運算,并將相關(guān)數(shù)據(jù)信息上傳給組態(tài)工具顯示。

1.2.2 軟組態(tài)斷點和硬組態(tài)斷點

斷點命中時,用戶通過初步觀察之后,可以停止調(diào)試,也可以繼續(xù)通過逐頁、逐模塊等調(diào)試指令來進一步觀察算法邏輯的演變過程。

通常情況下,控制器會將這兩種調(diào)試指令分別解析處理,但這會增加調(diào)試器的實現(xiàn)復雜度。況且這兩種調(diào)試指令和已命中組態(tài)斷點以及算法邏輯的內(nèi)容密切有關(guān),因此將逐頁、逐模塊調(diào)試指令轉(zhuǎn)化為一種特別的“組態(tài)斷點”來處理。

例如:逐頁指令=當前命中斷點模塊所在頁的下一有效頁中的首模塊;逐模塊=當前命中斷點模塊的下一個模塊。

為了便于區(qū)分,對于不是由用戶直接設置的組態(tài)斷點,將其定義為軟組態(tài)斷點;而由用戶直接設置的組態(tài)斷點定義為硬組態(tài)斷點。二者的區(qū)別在于:軟組態(tài)斷點一經(jīng)命中,即由調(diào)試器自動刪除;而硬組態(tài)斷點的產(chǎn)生和刪除,均由用戶支配。

2 組態(tài)調(diào)試器的開發(fā)實現(xiàn)

基于圖 1所示的算法邏輯結(jié)構(gòu),開發(fā)面向FBD組態(tài)的工業(yè)控制器[9-11]。該控制器基于TI公司的OMAP雙核平臺,ARM處理器側(cè)采用嵌入式Linux作為操作系統(tǒng),執(zhí)行通信管理職責;數(shù)字信號處理芯片(digital signal processing,DSP)側(cè)無操作系統(tǒng),實現(xiàn)算法邏輯的高效執(zhí)行和I/O通信等功能。ARM和DSP之間通過共享內(nèi)存進行數(shù)據(jù)交互,實現(xiàn)了算法邏輯的變量監(jiān)視功能。因此調(diào)試器的開發(fā)重心集中到組態(tài)斷點機制的實現(xiàn)上。

2.1 調(diào)試器開發(fā)

在工業(yè)控制器的軟件架構(gòu)中引入調(diào)試器功能組件,調(diào)試器接口如圖 3所示。

圖3 調(diào)試器接口示意圖

調(diào)試器的功能分為兩部分:①通信預處理單元,負責與組態(tài)工具的調(diào)試接口通信,獲取調(diào)試指令并進行預處理;②調(diào)試單元,負責與算法邏輯運算任務交互,執(zhí)行調(diào)試指令。其中,對調(diào)試指令的預處理流程如圖 4所示。

以組態(tài)斷點的設置為例,組態(tài)工具和調(diào)試器的通信接口建立TCP連接后,首先進行算法邏輯的校驗和同步,確保組態(tài)工具側(cè)的算法邏輯和控制器執(zhí)行的算法邏輯相同。隨后,用戶可以根據(jù)需要設置任一頁的任一個模塊作為斷點。調(diào)試器收到斷點設置指令后,將其壓入硬組態(tài)斷點隊列,交由調(diào)試單元查詢使用。

圖4 調(diào)試指令預處理流程圖

當算法邏輯的正常運行態(tài)被組態(tài)斷點中斷之后,進入調(diào)試態(tài)運行。此時算法邏輯暫停在某頁某模塊上,如果要繼續(xù)執(zhí)行邏輯,則需要從該模塊的下一個模塊繼續(xù)執(zhí)行。所以通信預處理單元在處理單步執(zhí)行、逐頁、逐模塊以及繼續(xù)執(zhí)行指令時,都需要根據(jù)當前暫停位置推算下次執(zhí)行的起始位置。

一旦通信預處理單元接收到繼續(xù)執(zhí)行指令,并且檢測到軟、硬組態(tài)斷點隊列均為空時,控制器自動退出調(diào)試態(tài)。這樣就實現(xiàn)了算法邏輯的正常運行態(tài)到調(diào)試態(tài)的平穩(wěn)切換,大大降低了開發(fā)實現(xiàn)的難度。

在現(xiàn)場調(diào)試時,為了安全起見,在調(diào)試器功能啟用之前,有必要屏蔽所有I/O的輸出,避免引起現(xiàn)場設備的誤動作。

2.2 算法運行及調(diào)試

工業(yè)控制器在周期掃描執(zhí)行算法邏輯時,每次執(zhí)行均從首頁首模塊開始,直到終頁終模塊結(jié)束。當周期定時器中斷再次觸發(fā)時,重復該過程,進而實現(xiàn)算法邏輯的周期運行。由于算法邏輯運行的DSP側(cè)缺乏操作系統(tǒng),因此高級語言的斷點命中機理并不適用,故本文從任務調(diào)度以及對算法任務的起始位置、終止位置的控制這兩方面來綜合實現(xiàn)。當調(diào)試器功能觸發(fā)后,將打斷周期執(zhí)行的算法任務。算法調(diào)試流程如圖 5所示。

圖5 算法調(diào)試流程圖

算法邏輯的運行任務在逐頁逐模塊掃描解釋執(zhí)行時,每解釋執(zhí)行完一個模塊,都會判斷是否命中硬組態(tài)斷點或軟組態(tài)斷點。如果命中,則本次運行任務提前終止,并記錄任務退出時的位置信息。下次繼續(xù)運行時,將從該位置信息的下一個模塊繼續(xù)執(zhí)行。這意味著調(diào)試過程中,算法任務的起始位置和終止位置是動態(tài)變化的,因此必須保存下來,以便保證算法運行調(diào)試的連續(xù)性。

與算法邏輯的周期運行流程相比,算法邏輯在調(diào)試態(tài)運行時,不再由周期定時器中斷觸發(fā),而是由用戶手動下發(fā)的調(diào)試指令觸發(fā)。這意味著如果用戶不按調(diào)試按鈕,則算法邏輯的數(shù)據(jù)一直保持不變,經(jīng)由監(jiān)視接口上送到組態(tài)工具,有利于用戶對算法邏輯的數(shù)據(jù)斷面進行深入診斷和分析。

此外,在調(diào)試狀態(tài)下,根據(jù)單步、逐頁、逐模塊和繼續(xù)執(zhí)行等調(diào)試指令執(zhí)行時,如果算法邏輯執(zhí)行到終頁終模塊,并不意味著本次運行調(diào)試結(jié)束退出,而是必須跳轉(zhuǎn)到首頁首模塊繼續(xù)從頭開始。

3 功能驗證與測試

3.1 測試環(huán)境

為了驗證工業(yè)控制器的調(diào)試器功能,測試環(huán)境由以下四個部分組成。

①組態(tài)軟件采用PCS-Explorer,在Windows 7 64 bit平臺上運行,具備控制器組態(tài)、在線監(jiān)視及調(diào)試器接口功能。

②控制器采用PCS-9150控制器作為試驗平臺,集成開發(fā)調(diào)試器功能。

③報文分析工具Wireshark2.0,用于輔助分析組態(tài)軟件和控制器的通信狀態(tài)。

④調(diào)試終端軟件SecrueCRT7.2.6,用于實時監(jiān)視控制器的運行狀態(tài)。

3.2 測試結(jié)果分析

在對調(diào)試器進行測試的過程中,通過組態(tài)軟件對控制器的算法執(zhí)行過程進行狀態(tài)監(jiān)視,輔以調(diào)試終端軟件的實時運行狀態(tài)信息分析。測試結(jié)果表明,工業(yè)控制器中加入了調(diào)試器功能后,不僅各項調(diào)試指令全部運行正常,而且并不影響控制器內(nèi)原有任務和功能。主要測試內(nèi)容及結(jié)果如表1所示。

表1 測試內(nèi)容及結(jié)果

根據(jù)工業(yè)控制器現(xiàn)場應用的反饋,應用人員利用調(diào)試器能夠更快、更精準地定位到復雜算法邏輯中的各類錯誤,包括功能塊算法設計錯誤、算法組態(tài)順序錯誤、算法邏輯設計錯誤;同時現(xiàn)場控制調(diào)試的效率提高了50%以上。

4 結(jié)束語

本文提出了一種組態(tài)調(diào)試器的設計與實現(xiàn)方法,并將其運用在工業(yè)控制器中,成功實現(xiàn)了復雜算法邏輯的單步執(zhí)行、逐頁逐模塊以及斷點調(diào)試等功能。在實際應用中,用戶利用工業(yè)控制器的調(diào)試器功能,極大地提高了工業(yè)控制算法邏輯組態(tài)的正確性和合理性,便于現(xiàn)場對復雜對象控制算法邏輯的調(diào)試和優(yōu)化,確保了現(xiàn)場控制的可靠運行。

[1] 王常力,羅安.分布式控制系統(tǒng) (DCS) 設計與應用實例[M].北京:電子工業(yè)出版社,2016.

[2] 王明武,張士勇,陳應舒.IEC61131-3編程語言的現(xiàn)狀與發(fā)展[J].制造業(yè)自動化,2010,32(A5):102-104.

[3] 譚伯龍.面向工業(yè)機器人控制器的軟PLC系統(tǒng)軟件開發(fā)[D].南京:東南大學,2015.

[4] 翟永杰,張鵬,張悅.火電廠仿真機中的DCS仿真方式與關(guān)鍵技術(shù)[J].中國電力,2010(Z4):7-14.

[5] 常志恒,肖鐵軍,史順波.基于JTAG的片上調(diào)試器與調(diào)試系統(tǒng)的設計實現(xiàn)[J].計算機工程與應用,2012,48(30):78-82.

[6] 姚藍,羅威,王亞磊,等.嵌入式系統(tǒng)遠程調(diào)試軟件的設計與實現(xiàn)[J].工業(yè)控制計算機,2007,20(4):52-53.

[7] 曾杰,蔣澤軍.嵌入式遠程調(diào)試器的設計與實現(xiàn)[J].計算機測量與控制,2005,13(7):731-733.

[8] 關(guān)文祥.運動控制器指令編譯系統(tǒng)的研究與實現(xiàn)[D].廣州:廣東工業(yè)大學,2010.

[9] 吳潔瓊,蔡啟仲,潘紹明,等.基于ARM-FPGA的小型PLC邏輯運算控制器的設計[J].計算機工程與設計,2016,37(9):2394-2399.

[10]周濤,項嶸,李浩,等.基于嵌入式Linux的工業(yè)控制系統(tǒng)設計與實現(xiàn)[J].電子設計工程,2016,24(7):23-25.

[11]王華忠.工業(yè)控制系統(tǒng)及應用:PLC與組態(tài)軟件[M].北京:機械工業(yè)出版社,2016.

ImplementationMethodofConfigurationDebuggerforIndustrialController

WU Bo,NIU Honghai,LU Haisong

(NR Electric Co.,Ltd.,Nanjing 211102,China)

In the field of industrial process control,the single step execution and breakpoint debugging of the complex control logic in controller are usually necessary to ensure the correctness and rationality of the logic.However,most industrial controllers provided by the manufacturers do not support such functions.In order to solve this problem,the functions of debugger of advanced programming language C/C++ are researched systematically, and the design principle of program breakpoint and the implementation mechanism of debugger are included.A debugger orienting algorithm configuration is designed according to the language features of industrial controller algorithm configuration.The debugger is applied in the embedded software system of the industrial controller,through the interactive design of algorithm logic operation unit,the test functions of single step execution,page by page,module by module and breakpoint for the complex logic are implemented successfully.The test results indicate that the industrial controller which integrates the functions of configuration debugger can greatly ease the field configuration and deep debugging for the project implementation,and effectively reduce the error rate of the configuration algorithm,and improve the efficiency of project commissioning.This controller references for realizing omnidirectional diagnostic function and virtual simulation of industrial controllers.

Industrial controller; Algorithm configuration; Debugger; Single step execution; Breakpoint debugging; Embedded development; DCS; PLC

TH86;TP273

: A

10.16086/j.cnki.issn1000-0380.201709022

修改稿收到日期:2017-03-18

吳波(1984—),男,碩士,工程師,主要從事工業(yè)控制產(chǎn)品的研發(fā)工作。E-mail:wubo@nrec.com。

猜你喜歡
斷點組態(tài)指令
聽我指令:大催眠術(shù)
基于PLC及組態(tài)技術(shù)的恒溫控制系統(tǒng)開發(fā)探討
一類無限可能問題的解法
ARINC661顯控指令快速驗證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
基于PLC和組態(tài)的智能電動擰緊系統(tǒng)
主導電回路發(fā)生斷點故障判斷方法探討
PLC組態(tài)控制在水箱控制系統(tǒng)的應用
鑄造行業(yè)三維組態(tài)軟件的應用
坐標系旋轉(zhuǎn)指令數(shù)控編程應用
機電信息(2014年27期)2014-02-27 15:53:56
锡林郭勒盟| 琼结县| 昔阳县| 和林格尔县| 双流县| 通许县| 桐城市| 察隅县| 乐清市| 威信县| 拜泉县| 金乡县| 镇远县| 宣化县| 顺昌县| 旺苍县| 沙湾县| 枞阳县| 泗阳县| 蛟河市| 永安市| 阿拉善右旗| 怀宁县| 张家川| 塔城市| 嘉义市| 凤山县| 望江县| 毕节市| 老河口市| 黄浦区| 泸州市| 临西县| 孝昌县| 阿拉善左旗| 革吉县| 阳原县| 潍坊市| 成都市| 巫山县| 大竹县|