尚未使用或者是同一個斷點;暫停PLC控制器IP核,寫入PLC控制器IP核的斷點寄存器;保存相關斷點結(jié)構信息;返回命令的執(zhí)行結(jié)果。
[0194]③斷點添加完成。
[0195]⑷功能GO (執(zhí)行):
[0196]該功能使PLC控制器IP核收到GO命令后在調(diào)試模式下開始執(zhí)行二進制代碼。其調(diào)試方法為:
[0197]①上位機調(diào)試軟件:發(fā)送GO命令。
[0198]②嵌入式軟件:接收到編譯調(diào)試軟件發(fā)送的GO命令后,給PLC控制器IP核一個GO命令。
[0199]③PLC控制器IP核:收到GO命令后,從斷點處開始執(zhí)行,執(zhí)行到下一個斷點處(如果沒有斷點,則一直執(zhí)行直到程序結(jié)束),發(fā)送中斷;
[0200]④嵌入式軟件:處理中斷,反饋命令執(zhí)行結(jié)果。
[0201]⑤完成。
[0202](5)功能 Step Over (步越過):
[0203]該功能完成步越過。
[0204]①上位機調(diào)試軟件:發(fā)送Step Over命令。
[0205]②嵌入式軟件:讀取當前指令,并判斷:如果當前是CAL類指令,則在IP (指令指針)+4的位置設置一個斷點;如果為其它指令,驅(qū)動PLC控制器IP核執(zhí)行二進制指令級單步。
[0206]③PLC控制器IP核:執(zhí)行到斷點處或完成單步,給出中斷。
[0207]④嵌入式軟件:處理該中斷;并將當前數(shù)據(jù)段段號、代碼段段號、當前指令在代碼段的偏移量等信息發(fā)送給編譯調(diào)試軟件。
[0208]⑤上位機調(diào)試軟件:根據(jù)相關數(shù)據(jù),判斷是否已到達目標點。如果是,則完成StepOver功能;如果不是,則重復步驟①?⑤。
[0209]⑥完成。
[0210](6)功能Step In(進入指定用戶功能塊或函數(shù)):
[0211]該功能完成進入用戶功能塊或函數(shù)。對于其它非調(diào)用語句,執(zhí)行效果與St印Over一樣。
[0212]①上位機調(diào)試軟件:發(fā)送St印In命令。
[0213]②嵌入式軟件:驅(qū)動PLC控制器IP核執(zhí)行一個二進制指令級的單步。
[0214]③PLC控制器IP核:執(zhí)行一個單步后,給出中斷。
[0215]④嵌入式軟件:處理該中斷;并將當前數(shù)據(jù)段段號、代碼段段號、當前指令在代碼段的偏移量等信息發(fā)送給編譯調(diào)試軟件。
[0216]⑤上位機調(diào)試軟件:根據(jù)相關數(shù)據(jù),判斷是否已到達目標點。如果是,則一個完整Step In完成;如果不是,則重復步驟①?⑤。
[0217]⑥完成。
[0218](7)功能Step Out (從指定用戶功能塊或函跳出):
[0219]該功能完成跳出用戶功能塊或函數(shù);但是有一點需要注意:如果在跳出該用戶功能塊或函數(shù)的過程中(兩點之間)存在其它斷點,則先停在該斷點上。如果已在主代碼段中執(zhí)行,則不運行執(zhí)行Step Outo
[0220]①上位機調(diào)試軟件:發(fā)送St印Out命令。
[0221]②嵌入式軟件:獲取進入該用戶功能塊或函數(shù)前的指令指針,并在PrevIP+4的位置設置一個斷點;然后,恢復PLC控制器IP核的執(zhí)行。
[0222]③PLC控制器IP核:執(zhí)行到斷點處,給出中斷。
[0223]④嵌入式軟件:處理該中斷;并將當前數(shù)據(jù)段段號、代碼段段號、當前指令在代碼段的偏移量等信息發(fā)送給編譯調(diào)試軟件。
[0224]⑤上位機調(diào)試軟件:根據(jù)相關數(shù)據(jù),判斷是否已到達目標點。如果是,則一個完整Step Out完成;如果不是,則編譯調(diào)試軟件開始發(fā)送Step In命令,直到到達目標點。
[0225]⑥完成。
[0226]⑶功能Remove One Breakpoint (刪除指定斷點):
[0227]該功能完成刪除指定斷點。
[0228]①上位機調(diào)試軟件:發(fā)送Remove one Breakpoint命令及斷點ID。
[0229]②嵌入式軟件:接收到命令后,根據(jù)斷點ID刪除相應斷點,并反饋執(zhí)行的結(jié)果。
[0230]③完成。
[0231](9)功能 Remove All Breakpoints (刪除所有斷點):
[0232]該功能完成刪除所有斷點,包括斷點的相關數(shù)據(jù)。
[0233]①上位機調(diào)試軟件:發(fā)送Remove all Breakpoints命令。
[0234]②嵌入式軟件:接收到命令后,通過寫PLC控制器IP核的斷點寄存器逐一刪除斷點。
[0235]③完成。
[0236]本發(fā)明的關鍵點在于:
[0237]關鍵點1:一種基于SOC的PLC在線調(diào)試系統(tǒng),其特征在于:它包括上位機軟件、嵌入式軟件和SOC系統(tǒng)。
[0238]關鍵點2:—種基于SOC的PLC在線調(diào)試系統(tǒng),其特征在于:上位機軟件用于編輯、編譯用戶程序,將IL、ST、LD、FBD和SFC轉(zhuǎn)換成PLC控制器能夠解析執(zhí)行的自定義二進制代碼,存儲并維護用戶程序與自定義二進制代碼的對應關系;下載、調(diào)試并監(jiān)控用戶程序的運行狀態(tài)及數(shù)據(jù)。
[0239]關鍵點3:—種基于SOC的PLC在線調(diào)試系統(tǒng),其特征在于:嵌入式軟件運行于嵌入式微處理器IP核之上,用于驅(qū)動PLC控制器IP核,配置相關的模式及參數(shù)寄存器;反饋相關數(shù)據(jù)給上位機的第一調(diào)試模塊,如當前狀態(tài)、當前數(shù)據(jù)段段號、當前代碼段段號及偏移;維護斷點的相關數(shù)據(jù)及相關操作(如設置、清除普通斷點或臨時斷點)。
[0240]關鍵點4:一種基于SOC的PLC在線調(diào)試系統(tǒng),其特征在于:S0C系統(tǒng)包括通信IP核、PLC控制器IP核,嵌入式微處理器IP核、中斷控制器IP核以及Flash和SRAM,各個IP核掛接在總線上,通過總線進行通信。
[0241]關鍵點5:—種基于SOC的PLC在線調(diào)試系統(tǒng),其特征在于PLC控制器IP核支持GO命令,收到GO命令后在調(diào)試模式下開始執(zhí)行二進制代碼;支持單步執(zhí)行二進制指令,完成一個單步后輸出一個中斷;支持硬件斷點,執(zhí)行到斷點處,則發(fā)出執(zhí)行到斷點處的中斷;能夠?qū)崟r反饋當前指令所在的數(shù)據(jù)段段號、代碼段段號、代碼段段內(nèi)偏移及當前指令指針、當前斷點ID等當前運行狀態(tài)。
[0242]關鍵點6:—種基于SOC的PLC在線調(diào)試方法,其特征在于包括以下步驟:
[0243]①上位機軟件將IL、ST、LD, FBD和SFC轉(zhuǎn)換成PLC控制器能夠解析執(zhí)行的自定義二進制代碼。
[0244]②上位機軟件通過嵌入式軟件將二進制代碼下載到SOC系統(tǒng)的存儲器中。
[0245]③上位機軟件通過嵌入式軟件將調(diào)試信息配置給PLC控制器IP核。
[0246]④嵌入式軟件通過總線配置PLC控制器IP核的寄存器,啟動調(diào)試模式、配置調(diào)試參數(shù)并讀取當前運行狀態(tài)和數(shù)據(jù)。
[0247]⑤PLC控制器IP核執(zhí)行用戶程序并檢測調(diào)試信息,到達調(diào)試斷點或者暫停條件時進行暫停并通過中斷控制器給嵌入式軟件傳輸中斷。
[0248]⑥上位機軟件通過監(jiān)控信息計算出相應的文件與行號,移動光標。
[0249]⑦上位機軟件通過監(jiān)控信息判斷調(diào)試是否結(jié)束,如果結(jié)束則給出結(jié)束命令;如果未結(jié)束則發(fā)送命令,繼續(xù)執(zhí)行。
[0250]以下為編程語言術語的解釋說明:
[0251]IEC 61131-3標準是國際電工委員會(IEC)制定的工業(yè)控制編程語言的標準。該標準是IEC在合理吸收和借鑒世界范圍內(nèi)各可編程序控制器(PLC)廠家的技術及編程語言的基礎上,形成的一套新的國際編程語言標準。IEC 61131-3標準極大地改進了工業(yè)控制系統(tǒng)的編程軟件的質(zhì)量,提高了軟件開發(fā)效率;它規(guī)定的5種編程語言,不僅為控制器生產(chǎn)廠家和系統(tǒng)集成工程師的編程帶來很大的方便,而且對最終用戶也有很大的益處。該標準定義了用于構造程序內(nèi)部結(jié)構的SFC(順序功能圖)語言和四個互操作編程語言:IL(指令表)、LD(梯形圖)、FBD (功能塊圖)和ST (結(jié)構文本)。通過分解成邏輯元素、模塊化以及現(xiàn)代軟件技術來組成每個程序,從而提高了其重復使用性,減少了錯誤,提高了編程和用戶的效率。
[0252]LD (梯形圖):梯形圖語言是PLC程序設計中最常用的編程語言。它是與繼電器線路類似的一種編程語言。由于電氣設計人員對繼電器控制較為熟悉,因此,梯形圖編程語言得到了廣泛的歡迎和應用。梯形圖編程語言的特點是:與電氣操作原理圖相對應,具有直觀性和對應性;與原有繼電器控制相一致,電氣設計人員易于掌握。梯形圖編程語言與原有的繼電器控制的不同點是,梯形圖中的能流不是實際意義的電流,內(nèi)部的繼電器也不是實際存在的繼電器,應用時,需要與原有繼電器控制的概念區(qū)別對待。
[0253]IL(指令表):指令表編程語言是與匯編語言類似的一種助記符編程語言,和匯編語言一樣由操作碼和操作數(shù)組成。在無計算機的情況下,適合采用PLC手持編程器對用戶程序進行編制。同時,指令表編程語言與梯形圖編程語言圖一一對應,在PLC編程軟件下可以相互轉(zhuǎn)換。指令表表編程語言的特點是:采用助記符來表示操作功能,具有容易記憶,便于掌握;在手持編程器的鍵盤上采用助記符表示,便于操作,可在無計算機的場合進行編程設計;與梯形圖有一一對應關系。其特點與梯形圖語言基本一致。
[0254]FBD(功能塊圖):功能模塊圖語言是與數(shù)字邏輯電路類似的一種PLC編程語言。采用功能模塊圖的形式來表示模塊所具有的功能,不同的功能模塊有不同的功能。功能模塊圖編程語言的特點:功能模塊圖程序設計語言的特點是:以功能模塊為單位,分析理解控制方案簡單容易;功能模塊是用圖形的形式表達功能,直觀性強,對于具有數(shù)字邏輯電路基礎的設計人員很容易掌握的編程;對規(guī)模大、控制邏輯關系復雜的控制系統(tǒng),由于功能模塊圖能夠清楚表達功能關系,使編程調(diào)試時間大大減少。
[0255]SFC(順序功能圖):順序功能流程圖語言是為了滿足順序邏輯控制而設計的編程語言。編程時將順序流程動作的過程分成步和轉(zhuǎn)換條件,根據(jù)轉(zhuǎn)移條件對控制系統(tǒng)的功能流程順序進行分配,一步一步的按照順序動作。每一步代表一個控制功能任務,用方框表示。在方框內(nèi)含有用于完成相應控制功能任務的梯形圖邏輯。這種編程語言使程序結(jié)構清晰,易于閱讀及