專利名稱:可編程控制器程序編輯方法
技術領域:
本發(fā)明涉及一種可編程控制器(PLC)程序編輯方法,尤其涉及 一種可由光標拖拉及判斷拖拉來源方式,自動產(chǎn)生IEC61131程序片賴二 的可編程控制器(PLC)程序編輯方法。
背景技術:
早期PLC控制程序發(fā)展軟件大多使用階梯圖程序(Ladder Diagram, LD )語言,其語法簡單易學,因此被廣泛使用于PLC應用 程序的開發(fā)。但階梯圖程序欠缺許多高級語言的特色,例如變量數(shù)據(jù) 結構、數(shù)值運算能力、對象導向設計方式以及程序執(zhí)行控制等。此外, 階梯圖程序的語法及語意也隨其PLC硬件平臺的不同而異。因此國際 電工聯(lián)盟(International Electrotechnical Commission, IEC )制訂出IEC 61131-3的國際標準編程語言,該標準除具備前述高級語言的特色外, 還定義了一組完整的程序發(fā)展工具。
IEC 61131-3定義了下列五種不同的程序語言
1. 階梯圖程序(LD)
階梯圖須熟悉機械的動作順序并先行畫出控制回路后,再將繼電 器控制電路中的a接點、b接點、電路串并聯(lián),并將線圈予以符號化。
2. 功能框圖(Functional Block Diagram, FBD ) 程序語言是由一些事先定義好的功能方塊組成的,并經(jīng)由適當連
接而構成完整的電路,因此功能方塊程序特別適合于說明控制組件中 數(shù)據(jù)或數(shù)據(jù)的流程。
3. 指令(Instructional List, IL,或Statement List, SL ) 指令為一種低級語言,由布爾代數(shù)(Boolean Algebra)及其基本
邏輯演變而來,主要是由一些助憶符號(Memonics)組成。例如與 (AND)、或(OR)、非(NOT)等符號。4. 結構式文件編程語言(Structure Text, ST )
一些高階的PLC具有高階程序語言,例如數(shù)學運算、子程序、循 環(huán)及條件判斷式,以通過通訊網(wǎng)路與計算機(PC)聯(lián)機操作。
5. J頃序功能5危禾呈圖(Sequential Function Chart, SFC )
順序功能流程圖是將機械動作或步驟一步步分解成順序功能流程 圖的組成元素,再依其動作順序連接起來,以完成整體的機械動作。
IEC 61131-3的程序語言可以用PLC本身配置的程序書寫器輸入, 或者藉由計算機聯(lián)機編程軟件,前者僅適于指令碼的輸入,而后者則 可輸入所有類型的程序語言?,F(xiàn)有的計算機聯(lián)機編程軟件,例如 CoDesys的編程軟件或InfoTeam編程軟件在撰寫程序時,使用者須熟 記語法(Syntax),若要進行函數(shù)調(diào)用,則須查明該函數(shù)有哪些參數(shù), 在使用上對于使用者來說相當不便。
IEC61131對于結構式文件編程語言(ST)與指令(IL)兩種文字 語言的編輯器,在其使用上其語法有特定規(guī)范。因此如能提供函數(shù)庫 拖拉,讓使用者可以不用記住IEC61131所制訂的特殊語法,直接用拖 拉方式完成函數(shù)調(diào)用;或者利用范例鍵將特有的程序語法范例導出, 再由范例修改成自已所需的程序,即可大幅改善程序撰寫效率。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種可以利用光標拖拉及判斷拖拉來 源的方式,自動產(chǎn)生IEC61131程序片段的可編程控制器程序編輯方 法。
為達到上述目的,本發(fā)明提供一種PLC程序編輯方法,其在計算 機上使用光標工具編輯PLC程序。在計算機偵測到鼠標的拖放動作時, 即判斷拖拉對象來源。若拖拉對象來源是函數(shù)庫,則依據(jù)函數(shù)形態(tài)決 定是否將拖拉對象來源轉換成IEC61131語法,并填入編輯區(qū)。若拖拉 對象來源是項目中的程序組織單元(POU),則依據(jù)來源POU形態(tài)、 編輯中的POU形態(tài)及禁止遞歸調(diào)用原則,決定是否將拖拉對象來源轉 換成IEC61131語法,并填入編輯區(qū)。在判斷不可拖^:時,可將光標形 狀變化成禁止圖標,以提醒使用者。藉由本發(fā)明的方法,可讓使用者
用光標拖拉方式,將函數(shù)庫或POU轉換成程序代碼貼在編輯區(qū),以便 于PLC程序撰寫。
圖1是說明本發(fā)明的PLC程序編輯方法在計算機窗口上的操作的 示意圖2示出了根據(jù)本發(fā)明第 一 實施例的方法流程圖; 圖3示出了根據(jù)本發(fā)明第二實施例的方法流程圖; 圖4示出了本發(fā)明的一個范例的操作; 圖5A及圖5B示出了根據(jù)圖4的范例的操作結果。
具體實施例方式
圖1是說明本發(fā)明的PLC程序編輯方法在計算機窗口上的操作的 示意圖。窗口上側部分為功能選單區(qū)(function menu )、左下側為程序 檔案總管(program file manager )、右下側為編輯區(qū)(Edit area),但是 應當理解的是,這種配置(layout)僅是為了便于說明,而本發(fā)明并不 局限與此。
窗口左下側程序檔案總管所顯示的項目樹(project tree )主要具有 兩個檔案夾,即函數(shù)庫(Libraries )和程序組織單元(Programming Organization Unit, POU Pool)檔案夾。函數(shù)庫中的函數(shù)共分兩種形態(tài) 函數(shù)(Function, FC )禾口功能方》A ( Function Block, FB )。而項目中的 POU共分三種形態(tài)l.程序(Program, PG )、 2.函數(shù)FC、 3.功能方塊FB。 其中函數(shù)庫中的函數(shù)跟POU都是一樣供使用者調(diào)用的;差別在于函數(shù) 是經(jīng)包裝過的,因此不可再進行編輯。
如圖1所示,目前編輯中的POU形態(tài)為程序(Program)而POU 名稱為ST。根據(jù)IEC61131規(guī)定,有下列的調(diào)用規(guī)則
1. 程序PG能調(diào)用函數(shù)FC及功能方塊FB;
2. 功能方塊FB能調(diào)用函數(shù)FC及功能方塊FB,但不能調(diào)用程序
PG;
3. 函數(shù)FC只能調(diào)用函數(shù)FC,不能調(diào)用程序PG及功能方塊FB;
4.不允許遞歸調(diào)用,所以POU不能調(diào)用自已。
因此可以看出在上述的規(guī)則中,調(diào)用的優(yōu)先次序是程序(Program) —功能方塊(Function Block )—函數(shù)(Function ),且不容許遞歸調(diào)用。
圖2是說明根據(jù)本發(fā)明第一實施例的方法流程圖。在IEC61131 編輯器(Text editor)工作時(步驟IO),若光標工具(如鼠標)偵測 到一個拖放動作(drag and drop)(步驟12),則此計算機系統(tǒng)會判斷 在拖拉(drag)操作時的內(nèi)容是否可以丟放(drop)到編輯器區(qū)域(步 驟14),若不可以則回到步驟10;若可以丟》丈,則進一步判斷拖^拉內(nèi) 容是功能方塊FB還是函數(shù)FC (步驟16)。若拖拉內(nèi)容是函數(shù)FC,則 轉換成IEC61131語法程序片段(步驟16A ),再將轉換得到的IEC61131 語法程序片段貼到IEC61131編輯器區(qū)域(步驟18)。若拖拉內(nèi)容是功 能方塊FB,則轉換成IEC61131語法程序片段(步驟16B),再將轉換 得到的IEC61131語法程序片段貼到IEC61131編輯器區(qū)域(步驟18)。 因此使用者可以直接將函數(shù)庫中的函數(shù)FC與功能方塊FB對應的 IEC61131語法程序片段,用光標拖拉的方式貼到IEC61131編輯器區(qū) 域。
圖3是說明根據(jù)本發(fā)明第二實施例的方法流程圖,此流程更具體 說明根據(jù)在拖拉(drag)操作時的內(nèi)容,來判斷是否可進行拖放的操 作。
在IEC61131編輯器區(qū)域工作時(步驟20 ),若光標工具(如鼠標) 偵測到一個拖放動作(drag and drop)(步驟22 ),則此計算機系統(tǒng)會 判斷拖拉(drag )操作時的對象來源(步驟22 ),并分成拖拉操作時的 對象來源為函數(shù)庫(步驟30)、拖拉操作時的對象來源為項目中的POU (步驟50)以及其它來源(步驟70)處理。
若拖拉操作時的對象來源為函數(shù)庫(步驟30),則判斷函數(shù)形態(tài) (步驟300)。若函數(shù)形態(tài)為函數(shù)FC,則可轉換成IEC61131語法程序 片段(步驟302)、將鼠標光標改成可接受丟放(drop)的圖標(icon) (步驟314)、找到光標位置(步驟318)、再將轉換得到的IEC61131 語法程序片段貼到IEC61131編輯器區(qū)域(步驟320)。
若函數(shù)形態(tài)為功能方塊FB,則判斷編輯中的POU形態(tài)(步驟
310)。若編輯中的POU形態(tài)為函數(shù)FC,則將鼠標光標改成禁止接受 丟放(drop)的圖標(icon)(步驟312),因為函數(shù)FC不能調(diào)用功能 方塊FB。若編輯中的POU形態(tài)為功能方塊FB或是程序PG,則可以 調(diào)用功能方塊FB,因此將鼠標光標改成可接受丟放(drop)的圖標 (icon)(步驟314)、轉換成IEC61131的功能方塊FB語法程序片段 (步驟316)、找到光標位置(步驟318)、再將轉換得到的IEC61131 語法程序片段貼到IEC61131編輯器區(qū)域(步驟320)。
若拖拉操作時的對象來源為項目中的POU (步驟50),則判斷拖 拉對象的POU形態(tài)(步驟52),并分成形態(tài)為函數(shù)FC (步驟54)、功 能方塊FB (步驟56 )以及程序PG (步驟58 )三種情形來考慮。
若拖拉對象的POU形態(tài)為函數(shù)FC,則判斷拖拉來源是否與編輯 中的POU同名(步驟54),若同名則表示不能遞歸調(diào)用(POU不能調(diào) 用自已),則將鼠標光標改成禁止接受丟放(drop)的圖標(步驟540)。 若不同名,則進行步驟542-548以指示使用者可接受拖放并將來源 POU轉換成IEC61131語法程序片段而貼到IEC61131編輯區(qū)。
若拖拉對象的POU形態(tài)為功能方塊FB,則判斷編輯中的POU形 態(tài)(步驟56),并依據(jù)編輯中的POU形態(tài),分別進行步驟560 (對應 POU形態(tài)為函數(shù)FC)、步驟562 (對應POU形態(tài)為功能方塊FB)、步 驟566 (對應POU形態(tài)為程序PG)。如果對應POU形態(tài)為函數(shù)FC, 將鼠標光標改成禁止接受丟放(drop)的圖標(步驟560),因為函數(shù) FC不能調(diào)用功能方塊FB。如果對應POU形態(tài)為功能方塊FB,則判 斷拖拉來源是否為編輯中的POU(步驟562);若是,則將鼠標光標改 成禁止接受丟放(drop)的圖標(步驟564),因為禁止遞歸調(diào)用。如 果來源不是編輯中的POU,則進行步驟566-572,以指示^f吏用者可接 受拖放、并將由來源POU轉換而成的IEC61131語法程序片段貼到 IEC61131編輯區(qū)。若拖拉對象的POU形態(tài)為程序PG,則進行步驟 566-572,以指示使用者可接受拖放、并將來源POU轉換而成的 IEC61131語法程序片段貼到IEC61131編輯區(qū)。
在步驟52中,若拖拉對象的POU形態(tài)為程序PG,則將鼠標光標 改成禁止接受丟放(drop )的圖標(步驟58 ),因為程序PG不能被調(diào)用。
在步驟24中,若拖拉對象來源為其它,則將鼠標光標改成禁止接
受丟放(drop)的圖標,以提醒使用者操作錯誤。
圖4、圖5以及圖5B示出了根據(jù)上述流程、當一個程序(Program) 形態(tài)的POU編輯器接收到來自函數(shù)庫中的功能方塊FB形態(tài)的函數(shù)形 態(tài)時觸發(fā)的丟放事件所經(jīng)過的流程,在圖4中虛線方向代表經(jīng)過的流 程路徑。
當文字編輯器"t妻受一個拖;改操作時,由于目前編輯的POU形態(tài)為 程序PG,而拖拉來源為函數(shù)庫中的功能方塊FB,因此流程會走如圖 4所示的路徑步驟20 —步驟22 —步驟24 —步驟30 —步驟310 —步驟 314—步驟316—步驟318 —步驟320。根據(jù)本發(fā)明的方法可判斷為FB 形態(tài)的函數(shù)庫,故光標會變成接受圖標以顯示允許丟放狀態(tài)、就調(diào)用 對應的FB形態(tài)函數(shù)解析程序將函數(shù)自動轉換成IEC61131的FB調(diào)用 (CALL )語法、找到目前光標指到的位置、將轉換得到的程序片段填 入光標指到的位置。
IEC61131規(guī)范的函數(shù)或功能方塊調(diào)用較為特殊,與一般程序語言 不太一樣。利用此拖拉技巧,可讓使用者不需記憶調(diào)用方式及所調(diào)用 的函數(shù)有何參數(shù),因為根據(jù)本發(fā)明的方法,拖拉到文字編輯器后會自 動產(chǎn)生調(diào)用程序片段及內(nèi)部參數(shù)。
再者,因IEC61131規(guī)范的基本程序語法與大家熟悉的C、 VB... 等語言不太一樣,利用本發(fā)明的拖拉及判斷方式導出語法范例,可讓 使用者不需記憶IEC61131規(guī)范的基本程序語法,從而提高程序編輯效 率。
以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此即限制本發(fā)明的專利 范圍,凡是在本發(fā)明特征范圍內(nèi)所作的其它等效變化或修飾,均應包括 在本發(fā)明的專利范圍內(nèi)。
權利要求
1.一種可編程控制器程序編輯方法,是在計算機上使用光標工具編輯PLC程序,所述方法包含以下步驟偵測拖放動作;判斷拖拉對象來源;若拖拉對象來源可進行丟放操作,則將拖拉對象來源轉換成IEC61131語法,并填入編輯區(qū)。
2. 如;K利要求1所述的編輯方法,進一步包括 在判斷拖拉對象來源為函數(shù)庫時,判斷函數(shù)形態(tài)。
3. 如權利要求2所述的編輯方法,進一步包括 若所述函數(shù)形態(tài)為函數(shù),則將函數(shù)轉換成IEC61131語法,并填入編輯區(qū)。
4. 如;f又利要求2所述的編輯方法,進一步包括若所述函數(shù)形態(tài)為功能方塊,則判斷編輯中的程序組織單元形態(tài)。
5. 如權利要求4所述的編輯方法,進一步包括 若所述編輯中的程序組織單元形態(tài)為功能方塊,則將所述功能方塊轉換成IEC61131語法,并填入編輯區(qū)。
6. 如權利要求4所述的編輯方法,進一步包括若所述編輯中的程序組織單元形態(tài)為程序,則將所述程序轉換成 IEC61131語法,并填入編輯區(qū)。
7. 如權利要求1所述的編輯方法,進一步包括 在判斷拖拉對象來源為項目中的程序組織單元時,則判斷拖拉對象的程序組織單元形態(tài)。
8. 如權利要求7所述的編輯方法,進一步包括若所述拖拉對象的程序組織單元形態(tài)為函數(shù),則判斷拖拉來源是 否與編輯中的程序組織單元同名;若不同名,則將函數(shù)轉換成IEC61131語法,并填入編輯區(qū)。
9. 如權利要求7所述的編輯方法,進一步包括 若所述拖拉對象的程序組織單元形態(tài)為功能方塊,則判斷編輯中的程序組織單元形態(tài)。
10. 如權利要求9所述的編輯方法,進一步包括 若所述編輯中的程序組織單元形態(tài)為函數(shù),則變化光標形態(tài)以指示禁止拖放。
11. 如權利要求9所述的編輯方法,進一步包括 若所述編輯中的程序組織單元形態(tài)為功能方塊,則判斷拖放來源是否為編輯中的程序組織單元。
12. 如權利要求11所述的編輯方法,進一步包括若所述拖放來源是編輯中的程序組織單元,則變化光標形態(tài)以指 示禁止拖放。
13. 如權利要求11所述的編輯方法,進一步包括若所述拖放來源不是編輯中的程序組織單元,則將指定的程序組 織單元轉換成IEC61131語法,并填入編輯區(qū)。
14. 如權利要求9所述的編輯方法,進一步包括若所述編輯中的程序組織單元形態(tài)為程序,則將指定的程序組織 單元轉換成IEC61131語法,并填入編輯區(qū)。
15.如權利要求7所述的編輯方法,進一步包括若所述拖拉對象的程序組織單元形態(tài)為程序,則變化光標形態(tài)以 指示禁止拖放。
全文摘要
一種可編程控制器(PLC)程序編輯方法,是在計算機上使用光標工具編輯PLC程序。在計算機偵測到鼠標的拖放動作時,即判斷拖拉對象來源。若拖拉對象來源是函數(shù)庫,則依據(jù)函數(shù)形態(tài)決定是否將拖拉對象來源轉換成IEC61131語法,并填入編輯區(qū)。若拖拉對象來源是項目中的程序組織單元(POU),則依據(jù)來源POU形態(tài)、編輯中的POU形態(tài)以及禁止遞歸調(diào)用原則,決定是否將拖拉對象來源轉換成IEC61131語法,并填入編輯區(qū)。在判斷不可拖放時,可將光標形狀變化成禁止圖標,以提醒使用者。藉由本發(fā)明的方法,可讓使用者用光標拖拉方式,將函數(shù)庫或POU轉換成程序代碼而貼在編輯區(qū),以便于PLC程序撰寫。
文檔編號G05B19/05GK101369143SQ20071014526
公開日2009年2月18日 申請日期2007年8月17日 優(yōu)先權日2007年8月17日
發(fā)明者施學甫 申請人:臺達電子工業(yè)股份有限公司