對于每個具體的設(shè)計來說,需要對配置文件中的幾個部分進行配置。
(3) 人機界面模塊(HMI),用戶和軟PLC 之間的互動模塊。通過友好的人機界面,用戶可以控制軟PLC 的調(diào)用和開關(guān),同時可以查看軟PLC 各個狀態(tài)點的狀態(tài)。在Linux 下,可以使用GTK 或者TCL/TK 進行設(shè)計。本設(shè)計由于整個數(shù)控系統(tǒng)的需要,采用了TCL/TK 進行設(shè)計。因為軟PLC 的其他部分是用c語言進行設(shè)計,因而在用tcl/tk設(shè)計的人機界面模塊和軟PLC 之間,需要設(shè)計一個TCL/TK 的擴展模塊作為兩種語言之間的接口,這樣在界面上就可以用TCL 語言調(diào)用C 語言編寫的軟PLC 函數(shù)?,F(xiàn)階段本設(shè)計主要完成了常用的PLC 圖形語言梯形圖和兩種文本語言IL 語言和ST 語言的設(shè)計,因而人機界面可以分為兩種,梯形圖的編輯運行界面和文本編程的監(jiān)控界面。
?、?梯形圖界面(如圖2)。在梯形圖界面上,用戶可自由拖動如開關(guān)、計時器等各種器件進行自主編程,從而實現(xiàn)在線編程。在界面上右側(cè)是狀態(tài)欄,可以對各種狀態(tài)點的控制和狀態(tài)顯示,如將狀態(tài)點B1 狀態(tài)置1,則需單擊B1 前的小方框。界面的上方是菜單欄。用戶可通過菜單的選擇進行編輯、保存、打開等功能,編輯完畢,按下Run 鍵,TCL/TK 的底層程序?qū)z測狀態(tài)點狀態(tài),并根據(jù)元件種類進行邏輯運算,這些直接使用TCL/TK 編程就可以實現(xiàn)。而Exit 鍵則是退出軟PLC,當按下該鍵時,將會設(shè)置全局變量Quit = 1 并傳遞給關(guān)閉模塊Plcshutdown。關(guān)閉模塊將關(guān)閉所有在運行的軟PLC模塊,并殺死共享內(nèi)存上的信號量。
?、?文本編程監(jiān)控界面。文本語言相對不夠圖形語言直觀,設(shè)計監(jiān)控界面,可以從監(jiān)控界面上調(diào)用所需要的文本程序,同時對各個狀態(tài)點的狀態(tài)進行顯示和控制。
(4) 文本編輯模塊,用戶PLC文本程序的編輯模塊,使用文本編輯器即可實現(xiàn)。用戶使用符合61131-3 標準的編程語言編寫控制應用程序。編輯好的模塊將會被軟PLC 的編譯器所編譯,生成可執(zhí)行代碼。
(5) 邏輯模塊,軟PLC 的核心模塊,它包括IEC61131-3編譯器和數(shù)據(jù)處理模塊。IEC61131-3編譯器將編譯用戶編輯好的文本應用程序,首先將PLC 的代碼編譯成C 語言,然后再調(diào)用GCC 將程序和軟PLC的鏈接庫編譯成目標文件,同時顯示編譯結(jié)果的正確性,將編譯的錯誤信息及警告信息反饋給用戶。
文本編輯模塊與編譯模塊在軟PLC 運行時,不會作為調(diào)用模塊。軟PLC只調(diào)用最后生成的可執(zhí)行模塊。數(shù)據(jù)處理模塊執(zhí)行對各種浮點型數(shù)據(jù)的操作,功能包括PID控制、按一定的比例縮放數(shù)據(jù)大小等。
(6) 通信模塊(Communication module),主要負責軟件的網(wǎng)絡通信協(xié)議等的實現(xiàn),借助與操作系統(tǒng)的結(jié)合構(gòu)建網(wǎng)絡服務器,實現(xiàn)強大的網(wǎng)絡服務功能,實現(xiàn)Modbus 等總線協(xié)議的總線控制功能。
(7) I/O 模塊,軟PLC與物理IO連接的模塊。通過IO 模塊,軟PLC 的狀態(tài)點與硬
件的IO 點一一對應,軟PLC 可以通過IO 模塊直接讀寫PC104 上IO擴展板的IO 點,實現(xiàn)對I O 點的讀取和控制。
( 8 ) 關(guān)閉模塊(Plcshutdown),由于本設(shè)計采用了多模塊化設(shè)計和共享內(nèi)存通信機制。因而軟PLC退出,需要關(guān)閉所有正在運行的模塊和殺死共享內(nèi)存上的信號量。關(guān)閉模塊提供了Quit的全局變量, 當Quit=1,將運行關(guān)閉模塊中的程序關(guān)閉所有的軟PLC 模塊和殺死共享內(nèi)存的信號量。
以上是根據(jù)需要設(shè)計的一些模塊,根據(jù)用戶需要還可以增加一些模塊,如記錄模塊,數(shù)據(jù)庫連接模塊等,這些模塊將會記錄軟PLC 的工作記錄和保存軟PLC 的數(shù)據(jù)記錄。這些有待進一步的開發(fā)和設(shè)計。設(shè)計好各個模塊,軟PLC 的工作流程可如圖3 所示。
本設(shè)計是在Linux 下進行設(shè)計,除HMI 模塊是使用TCL/TK 設(shè)計外,其他均是使用C 語言進行編寫,在Linux 下使用GCC 進行編譯。由于篇幅所限,此處不展示代碼。
實例
下面以一個簡單的對3并口通道循環(huán)控制為例,說明軟PLC 的工作流程。
?。?)梯形圖編程。從軟PLC 主界面進入后,啟動梯形圖編程,調(diào)用梯形圖編程的主程序。梯形圖編程共需要調(diào)用梯形圖界面模塊、關(guān)閉模塊、IO 模塊,這些均在配置文件中設(shè)置好,不需用戶進行設(shè)置。配置文件主要部分定義如下:
需運行的模塊: 主要狀態(tài)點定義:Ladder為擁有寫的權(quán)利模塊,主程序啟動后,將讀取對應的配置文件,運行所需模塊。
用戶即可在梯形圖界面進行編輯,編輯后的梯形圖程序如圖4所示。這是一個比較簡單的程序,因而只需要使用3個計時器和幾個復位、置位輸出就可以實現(xiàn)功能。編輯好梯形圖程序后,按下Run 鍵,程序即可運行,并實現(xiàn)對IO 板上對應端口的控制。
(2)文本IL 語言編程。開始與梯形圖編程相同,從軟PLC 主界面進入后,啟動IL 語言編程,調(diào)用主程序。文本編程共需要調(diào)用監(jiān)控界面模塊、邏輯目標程序模塊、關(guān)閉模塊、IO 模塊。邏輯目標模塊為用戶編輯好的IL 程序,并通過編譯器生成的可執(zhí)行邏輯程序,用戶可在PC 機上編輯和編譯好邏輯程序,再移植到PC104 上進行調(diào)用。配置文件主要部分定義如下:
需運行的模塊:
主要狀態(tài)點定義
為編譯后的IL 程序模塊。由于篇幅關(guān)系,實現(xiàn)循環(huán)控制的IL 程序在此處不再列出。
結(jié)束語
軟PLC 具有強大的功能,在工業(yè)控制中發(fā)揮著越來越重要的作用,是一項具有巨大潛力的技術(shù),其強大的網(wǎng)絡功能是傳統(tǒng)的PLC 無法比擬的。中國工業(yè)自動化的水平相對國外來說較低,技術(shù)含量少。因而國內(nèi)企業(yè)要在激烈的競爭中立于不敗之地,必須增加生產(chǎn)的自動化程度,提高產(chǎn)品的技術(shù)含量。發(fā)展自主產(chǎn)權(quán)的軟PLC 將對此問題產(chǎn)生有力的推動作用,也有助于我國PLC 企業(yè)發(fā)展本國市場并向外擴展。
轉(zhuǎn)載請注明出處。