本公開內容涉及使用通用微處理器來調試可編程邏輯控制器(plc)的方法,并且具體地涉及使用通用微處理器來調試plc的方法,其使用不像專用asic的沒有單獨的跟蹤功能的通用主處理單元(mpu)來使得用戶能夠在由用戶設置的步驟處中斷驅動,由此有效地調試plc。
背景技術:
可編程邏輯控制器(plc)執行在用戶期望在運行由用戶編寫的順序程序的中間的編程步驟處中斷plc的操作的功能,以使得用戶能夠檢查到目前為止的驅動信息,使得用戶可以容易地在特定時間點檢測用戶的程序或數據中的錯誤。
個人計算機(pc)執行經由通信將調試命令發送到plc以及從plc中讀取各種數據的操作,其中調試命令包含用戶可以任意地選擇的調試中斷步驟。
plc執行操作plc本身需要的基本處理,并且在執行用于運行編譯代碼的操作的途中,執行從pc發送的驅動步驟處中斷驅動以及還有根據來自pc的指令恢復驅動的操作。
在從pc接收用于中斷調試的中斷步驟時,plc將用于中斷調試的中斷步驟的步驟號存儲在plc內的緩沖器中。plc當運行用戶的程序時在每個步驟運行調試檢查功能。調試檢查功能用于確定當前驅動步驟是否對應于在緩沖器中存儲的中斷步驟并且允許在當前驅動步驟被確定為對應于中斷步驟時中斷驅動。在任何功能處已經中斷了驅動的plc等待直到其從pc接收到驅動恢復指令為止并在接收到驅動恢復指令時從被中斷的步驟恢復驅動。
一般地,專用于plc的asic被設計為包括h/w中的trace功能,其中trace功能是在用戶的程序中的特定步驟處中斷驅動并將此通知給plc的功能。
然而,通用mpu不具有這樣的功能,并且因此包含被設計用于使plc在每個步驟跟隨調試檢查例程的算法。因此,常規調試處理例程確定plc的當前驅動模式是否為調試模式,在當前驅動模式被確定為調試模式時中斷驅動,并且之后等待直到從pc發送下一指令為止。plc在接收到驅動恢復指令時從當前中斷步驟的下一步驟恢復驅動。
常規調試方法在用戶的程序的每個驅動步驟處運行檢查調試中斷處理條件的調試處理例程并且因此增加plc用于執行分支和調試處理操作的處理時間。
另外,plc當其在調試模式驅動時重復地運行未在正常驅動模式執行的調試檢查例程。因此,存在可能發生不可預測的污染效應的可能性并且因此plc可以很可能不會與在驅動模式中一樣地操作。
技術實現要素:
本公開內容的方面是要提供一種使用通用微處理器來調試plc的方法,其中該方法可以當執行plc的調試時通過使用通用微處理器僅僅在由用戶設置的驅動步驟處執行調試處理操作而無需在每個驅動步驟運行調試處理例程,并且因此可以簡化plc的調試并且改進其性能。
本公開內容的其他目的不限于上述目的,并且其他目的和優點能夠通過參考本公開內容的實施例描述的下面的描述來認識到。
根據本發明的一方面,提供了一種使用通用微處理器來調試可編程邏輯控制器的方法,該方法包括:在plc的mpu處,備份在用戶的程序中包含的步驟的中斷步驟的識別信息和文件信息并且利用異常中斷代碼替代中斷步驟以設置中斷步驟用于調試;并且在plc的mpu處,在驅動plc的同時在逐步地運行用戶的程序中在具有異常中斷代碼的步驟處中斷plc的驅動。
該方法還可以包括在mpu處當mpu完成調試時恢復plc的驅動。
該方法還可以包括在mpu處從pc接收plc驅動恢復指令以便恢復plc的驅動。
設置中斷步驟用于調試可以包括在從mpu接收到中斷步驟設置指令后,將中斷步驟的步驟號和編譯代碼備份在數據存儲的臨時存儲區中;以及利用編譯代碼區中的中斷代碼替代中斷步驟的編譯代碼。
中斷plc的驅動可以包括在跟隨中斷處理例程以用于調試同時,在mpu處,在驅動plc的途中逐步地處理用戶的程序;在mpu處,讀取對應于每個步驟的編譯代碼區以取決于異常中斷代碼是否已經被存儲在編譯代碼區中來確定是否已經發生了異常中斷;在mpu處,當已經發生了異常中斷時確定當前模式是否為調試模式;并且在mpu處,在當前模式被確定為調試模式時中斷plc的驅動以用于調試。
該方法還可以包括在mpu處當完成調試時恢復驅動并且恢復備份在數據存儲的臨時存儲區中的對應于中斷步驟的編譯代碼。
該方法還可以包括在mpu處確定當前模式是否為調試模式,并且在當前模式被確定為不是調試模式時運行一般異常中斷處理。
根據本發明的另一方面,由于已經在被設置為用于在驅動plc中進行調試的中斷步驟的任何步驟處利用mpu的異常中斷替代編譯代碼,所以可以生成mpu的異常中斷并且可以使中斷處理例程具有分支。因此,在僅僅檢查當前步驟是否為調試步驟而無需確定當前步驟是否為中斷步驟之后,mpu210允許中斷plc的驅動。
通過這樣做,本公開內容可以克服由于通過無論何時運行每個步驟時執行檢查當前驅動步驟是否為調試步驟的功能而造成的污染效果而引起的plc的處理速率的減慢或先前調試中的問題。
本公開內容執行與在正常驅動模式中相同的操作直到發生異常中斷為止,并且因此可以改進在調試plc中的處理速率和準確性。
附圖說明
圖1是根據本公開內容的實施例的用于執行使用通用微處理器來調試可編程邏輯控制器的方法的系統配置的框圖。
圖2是用于示出根據本公開內容的實施例的使用通用微處理器來調試可編程邏輯控制器的方法的流程圖。
圖3是用于示出根據本公開內容的實施例的在使用通用微處理器來調試可編程邏輯控制器的方法中設置中斷步驟的過程的流程圖。
圖4是用于示出根據本公開內容的實施例的在使用通用微處理器來調試可編程邏輯控制器的方法中備份編譯代碼并且利用異常中斷代碼替代該編譯代碼的過程的框圖。
圖5是用于示出根據本公開內容的實施例的在使用通用微處理器來調試可編程邏輯控制器的方法中執行中斷處理例程的過程的流程圖。
具體實施方式
本公開內容可以以各種方式來修改并且包括各種實施例。因此,一些具體實施例將在附圖中通過圖示的方式來例示并且在下面的詳細描述中進行描述。然而,這不旨在將本公開內容限于具體實施例,并且要理解它們覆蓋落入本公開內容的精神和范圍中的所有修改、等效方案或更改。
在下文中,將參考附圖詳細描述根據本公開內容的優選實施例。
圖1是根據本公開內容的實施例的用于執行使用通用微處理器來調試可編程邏輯控制器的方法的系統配置的框圖。
參考圖1,個人計算機(pc)執行與可編程邏輯控制器(plc)200進行通信的操作以通過通信(例如,usb、串行、等等)將調試命令發送到主處理單元(mpu)210并從mpu210接收狀態信息,由此讀取plc200的各種數據,其中調試命令包含關于用戶可以根據用戶的判斷選擇的調試步驟的信息。
pc100可以執行在plc上的調試以便在特定時間點檢查用戶的程序或數據中的錯誤。為了這么做,pc100可以在用戶在運行plc200中的由用戶編寫的順序程序的途中的期望的程序步驟處中斷plc200的操作,并且使得用戶能夠檢查到目前為止的驅動信息。
plc200包括mpu210和數據存儲220。mpu210與pc100進行通信以將被中斷的步驟的步驟號和被中斷的步驟的編譯代碼備份在數據存儲220中并且利用異常中斷代碼替代編譯代碼,由此設置中斷步驟用于調試。
mpu210在驅動plc中逐步地運行用戶的程序,并且繼而跟隨在具有異常中斷代碼的步驟處的中斷處理例程以中斷plc的驅動以用于調試。之后當通過與pc100的通信完成調試時,mpu210恢復plc的驅動。
數據存儲220存儲驅動數據和編譯代碼,由用戶編寫的順序程序被轉化成用于在mpu210中操作的機器語言。數據存儲220可以包括ram。數據存儲220可以具有存儲針對每個步驟的編譯代碼的編譯代碼區和臨時存儲區。
圖2是用于示出根據本公開內容的實施例的使用通用微處理器來調試可編程邏輯控制器的方法的流程圖。
參考圖2,plc200與pc100進行通信以在接收到用于設置中斷步驟的中斷步驟設置指令時,將中斷步驟的步驟號和編譯代碼備份在數據存儲的臨時存儲區中并且利用異常中斷代碼替代中斷步驟,由此設置中斷步驟用于調試(s10)。
在其中設置了用于調試的中斷步驟的條件下,mpu210在驅動plc時逐步地運行用戶的程序中跟隨在具有異常中斷代碼的步驟處的中斷處理例程,以中斷plc的驅動以用于調試并且之后當完成調試時恢復驅動plc(s20)。
圖3是用于示出根據本公開內容的實施例的在使用通用微處理器來調試可編程邏輯控制器的方法中設置中斷步驟的過程的流程圖。圖4是用于示出根據本公開內容的實施例的在使用通用微處理器來調試可編程邏輯控制器的方法中備份編譯代碼并且利用異常中斷代碼替代該編譯代碼的過程的框圖。
參考圖3,plc的mpu210與pc100進行通信(s11)。因此,mpu210可以從pc100接收用于設置中斷步驟的中斷步驟設置指令。
因此,mpu210確定是否已經從pc100接收到用于設置中斷步驟的中斷步驟設置指令(s12)。
當確定從pc接收到中斷步驟設置指令時,mpu210將中斷步驟的步驟號和對應于中斷步驟的位置的編譯代碼備份在數據存儲220的臨時存儲區222中(s13)。
mpu210不僅將中斷步驟的步驟號存儲在臨時存儲區222中,而且將包含于中斷步驟中的編譯代碼本身存儲在臨時存儲區222中。
例如,參考圖4,其示出了接收到關于第二步驟的中斷步驟設置指令的示例,第二步驟的編譯代碼‘sub’被存儲在數據存儲220的臨時存儲區222中。
之后,mpu210利用異常中斷代碼替代對應于數據存儲220的編譯代碼區21中的中斷步驟的位置的編譯代碼(s14)。即,利用導致mpu210中的異常中斷的異常中斷代碼替代對應于中斷步驟的位置的編譯代碼。例如,異常中斷代碼可以包含生成非可屏蔽中斷(nmi)或指令異常的機器語言。然而,本公開內容不限于此并且可以使用在每個通用mpu中使用的異常中斷代碼。
在示出了接收到關于第二步驟的用于調試的中斷步驟設置指令的示例的圖4中,mpu210利用exception代碼替代數據存儲220的編譯代碼區221中的第二步驟的編譯代碼‘sub’。其后,mpu210執行plc的正常驅動。
圖5是用于示出根據本公開內容的實施例的在使用通用微處理器來調試可編程邏輯控制器的方法中執行中斷處理例程的過程的流程圖。
參考圖5,plc200的mpu210逐步地運行用戶的程序(s21)。plc200運行每個步驟以讀取每個步驟的編譯代碼并確定是否已經發送異常中斷(s22)。
當確定在任何步驟處發生異常中斷時,mpu210確定當前驅動模式是否為調試模式(s23)。確定當前驅動模式是否為調試模式可以關于取決于在臨時存儲區222中是否存在中斷步驟的步驟號和編譯代碼的異常中斷而做出。例如,在已經發生異常中斷的條件下,當中斷步驟的步驟號和編譯代碼已經被存儲在臨時存儲區222中時將當前驅動模式確定為調試模式。
在當前驅動模式被確定為調試模式時,mpu210中斷驅動并且與pc100進行通信以用于調試(s24)。因此,pc100在其中plc200的驅動被中斷的狀態中執行在中斷步驟處的調試。
mpu210確定是否已經從pc100接收到驅動恢復指令(s25)。
當確定已經從pc100接收到驅動恢復指令時,mpu210還原在臨時存儲區222中存儲的編譯代碼(s26)并且前進到下一步驟(s27)。
否則,當在s23中確定當前驅動模式不是調試模式時,mpu210將異常中斷當作并處理為一般異常中斷(s23)。即,如果中斷步驟的步驟號和編譯代碼尚未被存儲在臨時存儲區222中,則mpu210確定發生一般異常中斷,并且處理一般異常中斷處理。
因此,在到達在驅動的途中的第二步驟處后,生成mpu異常中斷并使中斷處理例程具有分支,因為已經利用允許mpu210的異常中斷發生的代碼替代了編譯代碼。
因此,在僅僅檢查當前步驟是否為調試步驟而無需確定當前步驟是否為中斷步驟之后,mpu210允許中斷plc200的驅動。其后,mpu210在執行與pc100的通信的同時等待。而且,在接收到驅動恢復指令時,其還原在臨時存儲區222中備份的被中斷的步驟的原始編譯代碼并且之后恢復plc200的驅動。
因此常規調試如上文所描述的必須無論何時運行每個步驟時執行檢查當前驅動步驟是否為調試步驟的功能,所以其可能減慢plc的處理速率或具有由于通過運行該功能而造成的污染效果而引起的問題。同上,本公開內容可以執行與在一般驅動模式中相同的操作直到發生異常中斷為止,并且因此可以改進如上文所描述的這樣的問題。
盡管上文已經描述了根據本公開內容的實施例,但是它們僅僅是示例性的,并且本領域技術人員將理解根據其導出的各種修改和改變可以在落入本公開內容的范圍中的等效范圍內完成。因此,本公開內容的真正技術范圍應當由隨附權利要求限定。