熊田忠,葉文華,楊 斌,毛冬輝,王祺奧,黃艷飛
(1.南京航空航天大學機電學院,江蘇南京210016;2.三江學院電氣與自動化工程學院,江蘇南京210012;3.南京歐創數控機床有限公司,江蘇南京211199)
作為控制器,PLC 和工控機(或稱IPC)均廣泛應用于工業控制領域。PLC 堅固耐用,可靠性高,抗干擾能力強,編程靈活方便,通用性好,特別適合輸入/輸出點數眾多的以順序邏輯控制為主的工業場合。工控機硬件結構方面有總線標準化程度高、兼容性強,而軟件資源豐富、可視化軟件編程容易,程序可移植性好,運行速度快,存儲量大,聯網方便等特點[1-3]。
將PLC 的現場控制優勢與工控機的圖形界面與數據處理等優勢相結合,即PLC 作為下位機主要進行控制,工控機作為上位機進行管理,這樣的架構是實現管控分離的分布式系統,成為許多中、大型控制系統的普遍配置方案[4-5],二者又通過通信連接實現管控一體化。
工控機控制系統是基于工控機和一個穩定可靠的操作系統以及一套由不同廠家開發的基于PC 的控制軟件,加上一些必要的I/O 硬件設備組成的控制系統。該系統是一種開放式控制,使控制系統和工廠管理系統更易于連接,能夠把實時邏輯控制、連續生產過程和批量生產過程控制、運動控制、可視化操作、信息分析、系統診斷等功能集成到一個緊湊的軟件包中,這些軟件通常以通用免費的VC、VB、Delphi 等進行開發,能完成一些PLC 難以完成的工作,并且成本相對于PLC結合工控機的控制系統更為低廉[6-8]。但是,單一工控機控制系統的研究文獻均未對順序邏輯控制方法進行系統、通用化的論述。
梯形圖是PLC 的一種主要編程語言,采用經驗法設計梯形圖,設計使用的時間、設計的質量與設計者的經驗有很大關系。對于復雜的控制系統,分析起來非常困難,容易遺漏掉一些應加以考慮的問題;設計出的梯形圖往往非常復雜,難讀懂,這也給PLC 控制系統維護和改進帶來了很大的困難。順序功能圖(sequential function chart)又稱為狀態轉移圖或功能圖,它是描述控制系統的控制過程、功能和特性的一種圖形,也是設計可編程程序控制器的順序控制程序的有力工具。順序功能圖具有直觀、簡單、邏輯性強的特點,不僅可使工作效率大為提高,而且能使程序調試極為方便[9-11]。
近年來正在發展的軟PLC 技術可以解決工控機順序邏輯控制問題。軟PLC 技術是一種基于IPC 或EPC 的將PLC 的控制功能封裝在軟件內的控制技術,也就是通過軟件來實現標準硬件PLC 的基本功能。但是,軟PLC 技術又會增加額外開發或軟件成本[12-14],在PLC 順序控制不占主要的控制系統中采用軟PLC 技術不是很有必要。
通常的工控機一般不具有順序功能圖和梯形圖編譯軟件,筆者研究的是基于順序功能圖的VC 編程方法,在單一工控機控制系統上可以較方便地實現類似PLC 的順序控制功能,在以VC 等應用軟件編程的工控機控制系統中,本研究提出的方法容易與其他控制系統功能軟件很好地融合,且實現成本低。
一個典型順序功能圖實例如圖1所示。S0 ~S8為順序功能圖的“步”,其中S0 為“起始步”;步與步之間的連線為步轉換方向線;轉換方向線上標出的是轉換條件;每步右側線連方格部分為步輸出,本研究的步輸出須以設置(Set)和復位(Reset)的形式給出,而不能直接掛線圈。本例S0-S1-S2 步轉換關系為單行序列,S2-S3 轉換或S2-S4 轉換為選擇序列,S5-S6、S7 的轉換為并行序列,通常的順序控制均以這3 種序列形式組合而成。符合順序控制的過程只要用順序功能圖準確描述,就能夠以適當方法“翻譯”成相應的梯形圖程序,閱讀、調試、修改都比較方便,且不容易出錯。程序分步轉換程序和步輸出程序,下面以西門子S7-300 PLC 的梯形圖編程為例給出部分程序,其他程序可以參照編寫,其中步S0 ~S8 以M10.0 ~M11.0 的9 個位邏輯表示。

圖1 一個典型順序功能圖實例
圖1 實例的選擇序列S2-S3,S2-S4 及其合并S3-S5,S4-S5,并行序列S5-S6、S7 及其合并S6、S7-S8 的步轉換程序梯形圖如圖2所示。

圖2 部分步轉換程序梯形圖
圖1 實例的S8 步的步輸出程序梯形圖如圖3所示。

圖3 部分步輸出程序梯形圖
本研究采用VC + +6.0 編寫基于順序功能圖的順序控制程序時采用如下方法:
單獨開一個線程進入一個循環的掃描控制程序模擬PLC 主掃描循環,從而可以不影響控制系統的其他界面操作,線程的優先級根據需要而定;在主掃描循環程序中依次編寫輸入映射、步轉換、步輸出、輸出映射等子程序代碼;采用開線程結合Sleep 函數實現PLC定時器功能,邏輯上不同時開啟的定時器都可以采用一個線程控制。總體程序流程圖如圖4所示。其中,各線程可以根據需要設定不同的優先級。

圖4 總體程序流程圖
下面筆者以圖1 順序功能圖為例分別加以敘述,其中,步轉換程序和步輸出程序僅給出了部分參考程序代碼,其他代碼可以參照編寫。
定義相關變量及其含義如表1所示。

表1 變量定義
編寫名為PlcMainCycle 的線程程序如下:

在需要調用時,可寫入如下代碼:
AfxBeginThread(PlcMainCycle,NULL,THREAD_PRIORITY_NORMAL);//主掃描循環線程開啟
輸入映射程序功能是將外部輸入狀態(數字量輸入DI 或模擬量輸入AI 等)讀入到內存變量,本例將DI 讀入到InputMap;輸出映射程序是將處理好的用以更新外部輸出狀態的值映射到外部設備(數字量輸出DO 或模擬量輸出AO 等),本例將OutputMap 映射到DO。通常可以調用I/O 設備廠家提供的靜態鏈接庫或動態鏈接庫相應函數即可完成。
步轉換程序采用條件語句和位操作符、邏輯運算符等即可容易實現,以圖1 實例的并行序列S5-S6、S7 及其合并S6、S7-S8 的步轉換程序為例,參考代碼如下:

與PLC 不同,在Windows 多任務操作系統下VC編程沒有多個獨立定時器可用。針對常用的延時接通定時器,本研究采用了線程結合Sleep 函數的方法來實現。定時器線程代碼如下:

需要注意的是,邏輯上同時運行的定時器不可以采用一個線程控制,要分別編寫和開啟不同的類似線程,否則會引起錯亂,如圖1 的T2 和T3 定時器。該方法定時器調用時,在相應輸出程序中先復位對應的延時到標志位,再設定延時ms 數值,最后開啟對應的定時器線程。定時器線程中,程序掛起設定延時ms 數值時長后,置位對應延時到標志位。延時到標志位的狀態供主掃描循環線程查詢使用。具體使用代碼示例見2.4 節S6、S7-S8 步轉換程序和2.6 節S6、S7 步輸出程序。
同樣,步輸出程序也只需通常的條件語句和位操作符、邏輯運算符即可實現,圖1 實例S6 和S7 步輸出程序參考代碼如下:


為使程序更清晰、便于移植,以上步轉換程序和步輸出程序中,部分移位的位數也可以采用宏定義。
在主頻為2.53 GHz,Intel Core i3 CPU 的PC 機,Windows XP 操作系統上,本研究采用VC+ +6.0 建立基于基本對話框的MFC 應用程序,通過讀取Windows的CPU 時間戳的方法對主掃描循環時間進行測試,經運行調試,順序控制功能正確,程序運行約2 min 后的某畫面如圖5所示。

圖5 運行結果圖
由圖5 可見,平均主掃描循環周期僅約6.6 ×10-5ms,最大值也僅約1.49 ms,遠小于通常PLC 主掃描周期限值(與I/O 設備硬件反應有關,通常設為150 ms左右),可見,該方法在通常的工控機硬件條件下完全可以承擔規模大得多的順序控制功能;查看Windows 任務管理器,此時CPU 使用27%。為減小程序運行時的CPU 資源占用,可在主掃描循環程序中增加Sleep(50)語句,運行后CPU 資源占用減小為5%左右,比該程序不運行時占用2%左右略高。
本研究提出了一種工控機在Windows 操作系統下,采用VC 編程實現基于順序功能圖的類似PLC 順序控制的控制方法,在工藝步驟以順序功能圖確定后,也可以“翻譯”成相應的程序代碼,實現順序控制功能。該方法具有較好的編程靈活方便、低成本和良好的控制性能,在柔性PCB 加強板預貼機上得到較長時間的工程應用驗證,具有一定的應用價值。
[1]王 起.論PLC、單片機、工控機在工業現場中的應用及選用方法[J].廣西輕工業,2011(1):60-61.
[2]朱錚濤.計算機順序邏輯控制系統設計[J].機床與液壓,2001(3):53-55.
[3]杜明俠.PC-BASED 控制系統在圖書配送中的應用設計[J].華北水利水電學院學報,2008,29(1):87-88,91.
[4]馬杏軍,劉 謹,陳敏賢.PLC 與工控機集成控制在汽車固定節檢漏中的應用[J].機電工程,2001,18(3):33-36.
[5]劉保杰,強寶民.基于工控機和PLC 的電液比例同步控制液壓實驗臺的設計[J].機床與液壓,2012,40(18):82-48.
[6]權建洲,賴向東,吳保芳.基于工控機位置伺服同步系統的開發[J].機電工程,2002,19(4):7-9.
[7]孫頻東,陳小虎,趙芙生.基于工控機的回轉窯控制系統[J].工業控制計算機,2000,13(3):49-51.
[8]費建林,楊正波.大型中空微機控制系統[J].電子儀器儀表用戶,1997(3):16-19.
[9]左 毅,陳燎原.PLC 梯形圖的三種順序控制設計法[J].機床電器,2007(2):43-46.
[10]陸秀令,張松華,張忠賢.PLC 梯形圖的順序控制設計法[J].機床與液壓,2004(4):150-151.
[11]廖常初.PLC 梯形圖的順序控制設計法與順序功能圖[J].電工技術雜志,2001(10):51-53.
[12]陳嬋娟,李 龍.軟PLC 開發系統指令表編輯模塊的研究與實現[J].制造技術與機床,2012(12):224-226.
[13]陳 佳,劉林林.基于工業PC 的軟PLC 的設計與實現[J].工業控制計算機,2009,22(1):5-7.
[14]馬雄波.基于PC 機的開放式多軸軟數控系統關鍵技術研究與實現[D].哈爾濱:哈爾濱工業大學機電工程學院,2007.