熊田忠,葉文華,楊 斌,毛冬輝,王祺奧,黃艷飛
(1.南京航空航天大學(xué)機(jī)電學(xué)院,江蘇南京210016;2.三江學(xué)院電氣與自動(dòng)化工程學(xué)院,江蘇南京210012;3.南京歐創(chuàng)數(shù)控機(jī)床有限公司,江蘇南京211199)
作為控制器,PLC 和工控機(jī)(或稱IPC)均廣泛應(yīng)用于工業(yè)控制領(lǐng)域。PLC 堅(jiān)固耐用,可靠性高,抗干擾能力強(qiáng),編程靈活方便,通用性好,特別適合輸入/輸出點(diǎn)數(shù)眾多的以順序邏輯控制為主的工業(yè)場合。工控機(jī)硬件結(jié)構(gòu)方面有總線標(biāo)準(zhǔn)化程度高、兼容性強(qiáng),而軟件資源豐富、可視化軟件編程容易,程序可移植性好,運(yùn)行速度快,存儲(chǔ)量大,聯(lián)網(wǎng)方便等特點(diǎn)[1-3]。
將PLC 的現(xiàn)場控制優(yōu)勢與工控機(jī)的圖形界面與數(shù)據(jù)處理等優(yōu)勢相結(jié)合,即PLC 作為下位機(jī)主要進(jìn)行控制,工控機(jī)作為上位機(jī)進(jìn)行管理,這樣的架構(gòu)是實(shí)現(xiàn)管控分離的分布式系統(tǒng),成為許多中、大型控制系統(tǒng)的普遍配置方案[4-5],二者又通過通信連接實(shí)現(xiàn)管控一體化。
工控機(jī)控制系統(tǒng)是基于工控機(jī)和一個(gè)穩(wěn)定可靠的操作系統(tǒng)以及一套由不同廠家開發(fā)的基于PC 的控制軟件,加上一些必要的I/O 硬件設(shè)備組成的控制系統(tǒng)。該系統(tǒng)是一種開放式控制,使控制系統(tǒng)和工廠管理系統(tǒng)更易于連接,能夠把實(shí)時(shí)邏輯控制、連續(xù)生產(chǎn)過程和批量生產(chǎn)過程控制、運(yùn)動(dòng)控制、可視化操作、信息分析、系統(tǒng)診斷等功能集成到一個(gè)緊湊的軟件包中,這些軟件通常以通用免費(fèi)的VC、VB、Delphi 等進(jìn)行開發(fā),能完成一些PLC 難以完成的工作,并且成本相對于PLC結(jié)合工控機(jī)的控制系統(tǒng)更為低廉[6-8]。但是,單一工控機(jī)控制系統(tǒng)的研究文獻(xiàn)均未對順序邏輯控制方法進(jìn)行系統(tǒng)、通用化的論述。
梯形圖是PLC 的一種主要編程語言,采用經(jīng)驗(yàn)法設(shè)計(jì)梯形圖,設(shè)計(jì)使用的時(shí)間、設(shè)計(jì)的質(zhì)量與設(shè)計(jì)者的經(jīng)驗(yàn)有很大關(guān)系。對于復(fù)雜的控制系統(tǒng),分析起來非常困難,容易遺漏掉一些應(yīng)加以考慮的問題;設(shè)計(jì)出的梯形圖往往非常復(fù)雜,難讀懂,這也給PLC 控制系統(tǒng)維護(hù)和改進(jìn)帶來了很大的困難。順序功能圖(sequential function chart)又稱為狀態(tài)轉(zhuǎn)移圖或功能圖,它是描述控制系統(tǒng)的控制過程、功能和特性的一種圖形,也是設(shè)計(jì)可編程程序控制器的順序控制程序的有力工具。順序功能圖具有直觀、簡單、邏輯性強(qiáng)的特點(diǎn),不僅可使工作效率大為提高,而且能使程序調(diào)試極為方便[9-11]。
近年來正在發(fā)展的軟PLC 技術(shù)可以解決工控機(jī)順序邏輯控制問題。軟PLC 技術(shù)是一種基于IPC 或EPC 的將PLC 的控制功能封裝在軟件內(nèi)的控制技術(shù),也就是通過軟件來實(shí)現(xiàn)標(biāo)準(zhǔn)硬件PLC 的基本功能。但是,軟PLC 技術(shù)又會(huì)增加額外開發(fā)或軟件成本[12-14],在PLC 順序控制不占主要的控制系統(tǒng)中采用軟PLC 技術(shù)不是很有必要。
通常的工控機(jī)一般不具有順序功能圖和梯形圖編譯軟件,筆者研究的是基于順序功能圖的VC 編程方法,在單一工控機(jī)控制系統(tǒng)上可以較方便地實(shí)現(xiàn)類似PLC 的順序控制功能,在以VC 等應(yīng)用軟件編程的工控機(jī)控制系統(tǒng)中,本研究提出的方法容易與其他控制系統(tǒng)功能軟件很好地融合,且實(shí)現(xiàn)成本低。
一個(gè)典型順序功能圖實(shí)例如圖1所示。S0 ~S8為順序功能圖的“步”,其中S0 為“起始步”;步與步之間的連線為步轉(zhuǎn)換方向線;轉(zhuǎn)換方向線上標(biāo)出的是轉(zhuǎn)換條件;每步右側(cè)線連方格部分為步輸出,本研究的步輸出須以設(shè)置(Set)和復(fù)位(Reset)的形式給出,而不能直接掛線圈。本例S0-S1-S2 步轉(zhuǎn)換關(guān)系為單行序列,S2-S3 轉(zhuǎn)換或S2-S4 轉(zhuǎn)換為選擇序列,S5-S6、S7 的轉(zhuǎn)換為并行序列,通常的順序控制均以這3 種序列形式組合而成。符合順序控制的過程只要用順序功能圖準(zhǔn)確描述,就能夠以適當(dāng)方法“翻譯”成相應(yīng)的梯形圖程序,閱讀、調(diào)試、修改都比較方便,且不容易出錯(cuò)。程序分步轉(zhuǎn)換程序和步輸出程序,下面以西門子S7-300 PLC 的梯形圖編程為例給出部分程序,其他程序可以參照編寫,其中步S0 ~S8 以M10.0 ~M11.0 的9 個(gè)位邏輯表示。
圖1 一個(gè)典型順序功能圖實(shí)例
圖1 實(shí)例的選擇序列S2-S3,S2-S4 及其合并S3-S5,S4-S5,并行序列S5-S6、S7 及其合并S6、S7-S8 的步轉(zhuǎn)換程序梯形圖如圖2所示。
圖2 部分步轉(zhuǎn)換程序梯形圖
圖1 實(shí)例的S8 步的步輸出程序梯形圖如圖3所示。
圖3 部分步輸出程序梯形圖
本研究采用VC + +6.0 編寫基于順序功能圖的順序控制程序時(shí)采用如下方法:
單獨(dú)開一個(gè)線程進(jìn)入一個(gè)循環(huán)的掃描控制程序模擬PLC 主掃描循環(huán),從而可以不影響控制系統(tǒng)的其他界面操作,線程的優(yōu)先級根據(jù)需要而定;在主掃描循環(huán)程序中依次編寫輸入映射、步轉(zhuǎn)換、步輸出、輸出映射等子程序代碼;采用開線程結(jié)合Sleep 函數(shù)實(shí)現(xiàn)PLC定時(shí)器功能,邏輯上不同時(shí)開啟的定時(shí)器都可以采用一個(gè)線程控制。總體程序流程圖如圖4所示。其中,各線程可以根據(jù)需要設(shè)定不同的優(yōu)先級。
圖4 總體程序流程圖
下面筆者以圖1 順序功能圖為例分別加以敘述,其中,步轉(zhuǎn)換程序和步輸出程序僅給出了部分參考程序代碼,其他代碼可以參照編寫。
定義相關(guān)變量及其含義如表1所示。
表1 變量定義
編寫名為PlcMainCycle 的線程程序如下:
在需要調(diào)用時(shí),可寫入如下代碼:
AfxBeginThread(PlcMainCycle,NULL,THREAD_PRIORITY_NORMAL);//主掃描循環(huán)線程開啟
輸入映射程序功能是將外部輸入狀態(tài)(數(shù)字量輸入DI 或模擬量輸入AI 等)讀入到內(nèi)存變量,本例將DI 讀入到InputMap;輸出映射程序是將處理好的用以更新外部輸出狀態(tài)的值映射到外部設(shè)備(數(shù)字量輸出DO 或模擬量輸出AO 等),本例將OutputMap 映射到DO。通??梢哉{(diào)用I/O 設(shè)備廠家提供的靜態(tài)鏈接庫或動(dòng)態(tài)鏈接庫相應(yīng)函數(shù)即可完成。
步轉(zhuǎn)換程序采用條件語句和位操作符、邏輯運(yùn)算符等即可容易實(shí)現(xiàn),以圖1 實(shí)例的并行序列S5-S6、S7 及其合并S6、S7-S8 的步轉(zhuǎn)換程序?yàn)槔?,參考代碼如下:
與PLC 不同,在Windows 多任務(wù)操作系統(tǒng)下VC編程沒有多個(gè)獨(dú)立定時(shí)器可用。針對常用的延時(shí)接通定時(shí)器,本研究采用了線程結(jié)合Sleep 函數(shù)的方法來實(shí)現(xiàn)。定時(shí)器線程代碼如下:
需要注意的是,邏輯上同時(shí)運(yùn)行的定時(shí)器不可以采用一個(gè)線程控制,要分別編寫和開啟不同的類似線程,否則會(huì)引起錯(cuò)亂,如圖1 的T2 和T3 定時(shí)器。該方法定時(shí)器調(diào)用時(shí),在相應(yīng)輸出程序中先復(fù)位對應(yīng)的延時(shí)到標(biāo)志位,再設(shè)定延時(shí)ms 數(shù)值,最后開啟對應(yīng)的定時(shí)器線程。定時(shí)器線程中,程序掛起設(shè)定延時(shí)ms 數(shù)值時(shí)長后,置位對應(yīng)延時(shí)到標(biāo)志位。延時(shí)到標(biāo)志位的狀態(tài)供主掃描循環(huán)線程查詢使用。具體使用代碼示例見2.4 節(jié)S6、S7-S8 步轉(zhuǎn)換程序和2.6 節(jié)S6、S7 步輸出程序。
同樣,步輸出程序也只需通常的條件語句和位操作符、邏輯運(yùn)算符即可實(shí)現(xiàn),圖1 實(shí)例S6 和S7 步輸出程序參考代碼如下:
為使程序更清晰、便于移植,以上步轉(zhuǎn)換程序和步輸出程序中,部分移位的位數(shù)也可以采用宏定義。
在主頻為2.53 GHz,Intel Core i3 CPU 的PC 機(jī),Windows XP 操作系統(tǒng)上,本研究采用VC+ +6.0 建立基于基本對話框的MFC 應(yīng)用程序,通過讀取Windows的CPU 時(shí)間戳的方法對主掃描循環(huán)時(shí)間進(jìn)行測試,經(jīng)運(yùn)行調(diào)試,順序控制功能正確,程序運(yùn)行約2 min 后的某畫面如圖5所示。
圖5 運(yùn)行結(jié)果圖
由圖5 可見,平均主掃描循環(huán)周期僅約6.6 ×10-5ms,最大值也僅約1.49 ms,遠(yuǎn)小于通常PLC 主掃描周期限值(與I/O 設(shè)備硬件反應(yīng)有關(guān),通常設(shè)為150 ms左右),可見,該方法在通常的工控機(jī)硬件條件下完全可以承擔(dān)規(guī)模大得多的順序控制功能;查看Windows 任務(wù)管理器,此時(shí)CPU 使用27%。為減小程序運(yùn)行時(shí)的CPU 資源占用,可在主掃描循環(huán)程序中增加Sleep(50)語句,運(yùn)行后CPU 資源占用減小為5%左右,比該程序不運(yùn)行時(shí)占用2%左右略高。
本研究提出了一種工控機(jī)在Windows 操作系統(tǒng)下,采用VC 編程實(shí)現(xiàn)基于順序功能圖的類似PLC 順序控制的控制方法,在工藝步驟以順序功能圖確定后,也可以“翻譯”成相應(yīng)的程序代碼,實(shí)現(xiàn)順序控制功能。該方法具有較好的編程靈活方便、低成本和良好的控制性能,在柔性PCB 加強(qiáng)板預(yù)貼機(jī)上得到較長時(shí)間的工程應(yīng)用驗(yàn)證,具有一定的應(yīng)用價(jià)值。
[1]王 起.論P(yáng)LC、單片機(jī)、工控機(jī)在工業(yè)現(xiàn)場中的應(yīng)用及選用方法[J].廣西輕工業(yè),2011(1):60-61.
[2]朱錚濤.計(jì)算機(jī)順序邏輯控制系統(tǒng)設(shè)計(jì)[J].機(jī)床與液壓,2001(3):53-55.
[3]杜明俠.PC-BASED 控制系統(tǒng)在圖書配送中的應(yīng)用設(shè)計(jì)[J].華北水利水電學(xué)院學(xué)報(bào),2008,29(1):87-88,91.
[4]馬杏軍,劉 謹(jǐn),陳敏賢.PLC 與工控機(jī)集成控制在汽車固定節(jié)檢漏中的應(yīng)用[J].機(jī)電工程,2001,18(3):33-36.
[5]劉保杰,強(qiáng)寶民.基于工控機(jī)和PLC 的電液比例同步控制液壓實(shí)驗(yàn)臺的設(shè)計(jì)[J].機(jī)床與液壓,2012,40(18):82-48.
[6]權(quán)建洲,賴向東,吳保芳.基于工控機(jī)位置伺服同步系統(tǒng)的開發(fā)[J].機(jī)電工程,2002,19(4):7-9.
[7]孫頻東,陳小虎,趙芙生.基于工控機(jī)的回轉(zhuǎn)窯控制系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2000,13(3):49-51.
[8]費(fèi)建林,楊正波.大型中空微機(jī)控制系統(tǒng)[J].電子儀器儀表用戶,1997(3):16-19.
[9]左 毅,陳燎原.PLC 梯形圖的三種順序控制設(shè)計(jì)法[J].機(jī)床電器,2007(2):43-46.
[10]陸秀令,張松華,張忠賢.PLC 梯形圖的順序控制設(shè)計(jì)法[J].機(jī)床與液壓,2004(4):150-151.
[11]廖常初.PLC 梯形圖的順序控制設(shè)計(jì)法與順序功能圖[J].電工技術(shù)雜志,2001(10):51-53.
[12]陳嬋娟,李 龍.軟PLC 開發(fā)系統(tǒng)指令表編輯模塊的研究與實(shí)現(xiàn)[J].制造技術(shù)與機(jī)床,2012(12):224-226.
[13]陳 佳,劉林林.基于工業(yè)PC 的軟PLC 的設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2009,22(1):5-7.
[14]馬雄波.基于PC 機(jī)的開放式多軸軟數(shù)控系統(tǒng)關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué)機(jī)電工程學(xué)院,2007.