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