華文網

基於K60的GCPLC系統的設計與實現

司蕭俊,王宜懷,白 聰

(蘇州大學 電腦科學與技術學院,江蘇 蘇州215000)

提出研製圖形構件化可程式設計邏輯控制器(GCPLC)的方案,它是傳統可程式設計邏輯控制器(PLC)的革新與新模式。與傳統PLC相比,

GCPLC具有圖形拖動程式設計、開放的二次程式設計架構、構件組合、開發環境相容、構件定制擴充、RTOS架構融入等特點。其目標是使GCPLC相對于傳統PLC,在技術架構、技術方法、設計思想及實現方式等方面能夠有新突破,在應用方面能夠逐步取代傳統PLC。

多工;GCPLC;圖形構件化;RTOS

中圖分類號:TP391

文獻標識碼:A

DOI:10.16157/j.issn.0258-7998.2017.02.010

中文引用格式: 司蕭俊,王宜懷,白聰. 基於K60的GCPLC系統的設計與實現[J].電子技術應用,2017,43(2):47-50.

英文引用格式:Si Xiaojun,

Wang Yihuai,Bai Cong. Design and implementation of GCPLC based on K60[J].Application of Electronic Technique,2017,43(2):47-50.

0 引言

傳統可程式設計邏輯控制器(Programmable Logic Controller,PLC)從提出至今已經發展四十多年,形成了全世界每年300億美元以上的巨大市場,涉及自動控制、機械、裝備、醫療電子等諸多應用領域,為一線基層技術人員利用嵌入式電腦生產實踐提供了基礎技術平臺。但也存在CPU選擇受限、硬體耦合性差、變數設置簡單、梯形圖程式設計功能深度不夠、二次程式設計困難、構件組合靈活性差、開發環境受限、新構件融入難度大等問題。

雖然經過多年改進與發展,從不同角度改進了技術,但由於技術架構未變,本質問題無法根本解決。

本文基於多工作業系統MQX、嵌入式ARM處理器、CAN匯流排等技術,設計了一套包含圖形構件化程式設計軟體及基於恩智浦K60微處理器的圖形構件化可程式設計邏輯控制器(Graphic Component Programmable Logic Controller,GCPLC)硬體的完整系統,並對整個系統進行簡要介紹,重點闡述了圖形構件化的軟體發展環境。

1 GCPLC的體系總體設計與工作原理

GCPLC的系統結構框圖如圖1所示。

圖1中的上半部分是GCPLC的軟體發展環境部分,主要完成圖形化程式設計、C語言檔的生成、程式編譯等功能,並且負責向硬體部分燒寫程式以及實現即時監控。下半部分的GCPLC硬體部分為整個系統的核心,

負責執行程式。硬體部分帶有多路普通/高速的GPIO介面、高速PWM以及差分輸入輸出介面、CAN匯流排界面、485信號介面和232介面,可以實現普通PLC具備的功能。

GCPLC系統將開發環節和運行環節分開操作。在開發階段,使用圖形構件化程式設計軟體編寫程式,並同時將嵌入式即時操作系統MQX融入其中;在執行階段,硬體部分執行程式,有序對各個任務進行調度,並且通過串口與PC通信,

從而將硬體部分的資訊傳遞給軟體部分,以實現即時監控。

2 GCPLC系統硬體設計

GCPLC硬體的主要應用目標是工業控制,而可靠性和抗干擾能力是衡量工業控制中電氣設備性能的關鍵指標,因此在設計內部電路時,採用了抗干擾技術,其中包括光耦隔離電路、場效應管隔離電路等。選用的硬體是具有極高隔離性能的元件,其中包括高速光耦6N137、場效應管LR120N等。下面著重介紹高速GPIO輸入電路和高速PWM差分輸出電路。

2.1 高速GPIO輸入電路

為了能夠滿足工業控制中對GPIO輸入的即時性和高效率需求,為GPPLC硬體設計了帶有電氣隔離特性的高速GPIO輸入電路,如圖2所示。

該電路使用6N137單通道高速光耦合器進行輸入輸出,並在輸出端對輸出進行濾波後輸出給K60核心板。該電路具有溫度、電流和電壓的補償功能,具有高輸入輸出隔離及抗干擾能力強的特性,電路典型的輸入速率為10 MB/s。

2.2 高速PWM差分輸出電路

電機驅動是一種很常見的工業控制方式,機械臂的運作、機器人的行走都離不開電機驅動。為了提高PWM的輸出效率,設計了具有差分能力的高速PWM電路,如圖3所示。

圖3是PWM的輸出部分,在其他部分利用SGM4717雙擲類比開關晶片,切換PWM的差分和普通輸出模式。在正常情況下,該PWM的輸出速率可達到100 KB/s以上,可以在工業控制中對電機進行穩定的驅動和控制。

3 GCPLC圖形化開發環境設計

在GCPLC系統中,PC可以為用戶提供一個良好的軟體發展調試環境,因此運行在電腦控制系統上的圖形化開發環境需要重點進行開發。GCPLC軟體發展環境是為了給GCPLC系統提供一個直觀、方便、可拖動、高效的程式開發平臺。該平臺主要支援圖形化的拖動、C語言的生成、程式編譯、程式寫入、即時監控等功能。

該平臺採用PC作為基本程式設計工具,應用Visual Studio 2012作為開發環境,程式設計語言捨棄了傳統PLC採用的梯形圖程式設計方式,選用了全新的圖示拖動及連接的程式設計語言,使得程式的二次開發變得更加容易,程式結構也變得更加清晰,並且添加了複製、剪切、刪除、粘貼、右鍵功能表等人性化的快捷操作。在燒寫程式之前,需要對程式進行編譯,由編譯器負責檢查使用者編寫的程式,並且將錯誤回饋給使用者。若編譯器無誤,則可以將使用者程式寫入GCPLC硬體板。該開發平臺主要由以下模組組成:

(1)圖示控制項模組。包含了編寫程式需要的所有控制項,控制項分為執行控制項、感測器控制項、通信控制項、流程控制項、任務控制項5個大類。每個大類下又包含了若干個具體的子控制項。

(2)控制項連接及屬性設置模組。該模組是進行控制項拖拉和連線的模組,也是整個開發環境的關鍵。在編寫程式時可以從上述的圖示控制項模組中選擇自己需要的控制項,選出控制項後可以放置在此模組上。每個控制項的頂部和底部都有一塊三角形區域,當選定了若干個控制項後,將這些控制項的三角形區域連線,則可以組成一段程式。

(3)代碼更新顯示模組。當連接好控制項連接模組中的控制項後,該模組便會自動生成相應的代碼。使用者只需要簡單的C語言基礎,便可以更好地理解這整段程式實現的功能。

3.1 圖示控制項模組

為了方便二次開發,在設計開發平臺時決定放棄傳統PLC的使用的梯形圖程式設計方法,轉而設計了開發者門檻更低、更加容易理解的圖示形式的控制項,一段完整的程式要能夠穩定、成功地運行,則需要C語言執行所需要的基本流程,基於程式執行的基本流程,將圖示控制項模組劃分為之前所闡述的5個大類。

執行控制項主要包括一些需要執行的操作,例如開關中斷、設置延時、設置IO輸入/輸出等;感測器控制項包含GCPLC需要的感測器,例如超聲波感測器、AD感測器等;通信控制項包含與硬體核心板通信相關的控制項,例如I2C、SPI、UART等;流程控制項則是與程式執行相關,所以包含IF判斷、條件迴圈、計數迴圈之類的控制項;任務控制項則是為了程式的多工協調執行而設置的,所以每當用戶添加一個任務,任務控制項中也會生成相應的控制項。

為了使開發平臺自身更具有拓展性,設計了一套從Access資料庫讀取控制項名稱和控制項圖片等相關屬性的演算法,當需要增加某種控制項時,只需要設置好該控制項的相應屬性,存入資料庫即可。而對於每一個使用者程式,其中的任務控制項也是各有不同的,因此實現任務控制項的動態存取也十分重要。而在設計控制項時,為了實現程式的通用性,設計了圖示控制項Icon類,其關鍵代碼如下:

public LinkIconType IconType;//控制項的類型

public string ModuleName;//控制項名字

public int IconArrNum;//控制項在控制項陣列中的下標

public int IconDbNum;//控制項在資料庫中的序號

public PictureBox IconPicBox;//控制項的圖片

public PictureBox MoveToIconPicBox;//滑鼠移動到控制項上時顯示的圖片

public int IconLeftDotNum; //控制項圖示的左側的Dotsize個數

public int IconTopDotNum; //控制項圖示的上側的Dotsize個數

3.2 控制項連接及屬性設置模組

控制項連接及屬性設置模組是進行控制項拖拉、連線、程式順序設計的模組,也是整個開發平臺的核心所在,若干個控制項通過不同的順序連接,將會生成截然不同的程式。

在這個介面中,可以通過按兩下每個控制項以編輯該控制項的屬性。例如,當點擊PWM初始化控制項時,便會跳出“PWM初始化”屬性視窗,如圖4所示。

該視窗用於設置GCPLC硬體上的PWM波的輸出頻率,只需要在文字方塊中輸入想要的頻率,點擊確定後就可以成功配置PWM的輸出頻率。使用者在程式設計時可以很容易掌握。其他的控制項也具各自的屬性視窗。

當從圖示控制項模組拖出控制項時,每個控制項之間都是各自獨立的,即使設置好控制項的屬性,這些控制項仍然不具備實際功能,只有通過每個控制項頂部和底部的三角形區域將需要的控制項連接起來時,這些控制項才會真正起作用,在開發環境中新建一個專案檔案後會自動生成一個Main圖示控制項,這個控制項是不可編輯的,表示為每個程式的開始。

為了能適應程式較小或者較大的情況,設計了可縮放的程式設計介面,當需要編寫程式量較大的程式時,可以縮小介面以便於查看完整的程式結構。另外,開發環境吸取了PLC程式設計中梯形圖多行編寫的優點,設計了多行顯示的程式結構。同時,當控制項圖示過多超過當前顯示頁面時,設計一套即時刷新的演算法,提升了軟體執行效率。

當GCPLC系統需要執行多工程式時,為了使得各個任務之間的劃分更加清晰,為主任務程式和每個子任務都開闢了單獨的視窗,使用者每添加一個任務,都會在主任務表單中生成一個子任務控制項圖示,按兩下任務控制項圖示後可以編輯相應的任務屬性,如任務名稱、任務棧大小、任務優先順序等。

3.3 代碼更新顯示模組

在控制項連接及屬性設置模組將各個圖示按照自己預想的順序連線完成後,如果沒有任何可以參照修改的功能,很有可能使得最後燒寫的程式無法正常運行,而且僅僅是圖示連接也會使得開發者感覺很疑惑。為了解決這些問題,設計了代碼顯示區域。該區域顯示的代碼與控制項連接模組的連線方式是一一對應的,如圖5所示。

4 GCPLC整體運行實驗

在本次實驗中,對GCPLC系統進行了一次整體上電自檢實驗測試。首先在GCPLC軟體發展環境中編寫好上電自檢的程式,這個上電自檢程式將打開GCPLC硬體系統中的所有GPIO、PWM、差分輸入/輸出、CAN匯流排、485、232和數碼管功能,並且將模組初始化資訊通過串口回饋出來。上電後的串口回饋資訊如圖6所示。

5 結論

GCPLC系統將嵌入式系統、軟體發展系統融合在一起,形成一個開放式的體系結構,相比傳統的PLC具有更高的靈活性和可擴展性,從而使得電腦控制系統不再受傳統PLC硬體的限制,提高了可靠性和可操作性。本系統具有良好的通信能力,能夠完成比較複雜的多工控制功能,可以滿足和實現當前和今後工業自動化領域控制系統開放性和柔性的要求,為工業自動化向更高層次的集成提供了可靠的計數保障,具有廣闊的應用前景。

參考文獻

[1] 嚴奎.嵌入式PLC程式設計軟體發展[J].工業控制電腦,2012,25(10):67-68,70.

[2] 張嵩,術守喜,丁廣乾.基於ARM的嵌入式PLC的設計[J].自動化與儀器儀錶,2008(3):9-10,23.

[3] 廖常初.PLC程式設計及應用(第4版)[M].北京:機械工業出版社,2014.

[4] TROELSEN A.C#與.NET 4高級程式設計[M].北京:人民郵電出版社,2011.

[5] 王宜懷.嵌入式系統原理與實踐:ARM Cortex-M4 Kinetis微控制器[M].北京:電子工業出版社,2012.

[6] 吳玉香,周東霞,林錦贇.嵌入式軟PLC系統的研究和實現[J].電腦工程,2009(10).

[7] 謝春傑.嵌入式軟PLC的研究與設計[D].南京:南京理工大學,2014.

[8] 郭建勳.嵌入式軟PLC開發系統的設計[D].廣州:華南理工大學,2010.

[9] PRATUMSUWAN P,PONGAEN W.An embedded PLC development for teaching in mechatronics education[J].Industrial Electronics & Applications,IEEE,2011(6):1477-1481.

[10] 艾春麗,劉榮鵬,張鳳登.基於軟PLC的多工並行控制系統的即時性研究[J].電腦應用,2007,27(12):272-274.

2.1 高速GPIO輸入電路

為了能夠滿足工業控制中對GPIO輸入的即時性和高效率需求,為GPPLC硬體設計了帶有電氣隔離特性的高速GPIO輸入電路,如圖2所示。

該電路使用6N137單通道高速光耦合器進行輸入輸出,並在輸出端對輸出進行濾波後輸出給K60核心板。該電路具有溫度、電流和電壓的補償功能,具有高輸入輸出隔離及抗干擾能力強的特性,電路典型的輸入速率為10 MB/s。

2.2 高速PWM差分輸出電路

電機驅動是一種很常見的工業控制方式,機械臂的運作、機器人的行走都離不開電機驅動。為了提高PWM的輸出效率,設計了具有差分能力的高速PWM電路,如圖3所示。

圖3是PWM的輸出部分,在其他部分利用SGM4717雙擲類比開關晶片,切換PWM的差分和普通輸出模式。在正常情況下,該PWM的輸出速率可達到100 KB/s以上,可以在工業控制中對電機進行穩定的驅動和控制。

3 GCPLC圖形化開發環境設計

在GCPLC系統中,PC可以為用戶提供一個良好的軟體發展調試環境,因此運行在電腦控制系統上的圖形化開發環境需要重點進行開發。GCPLC軟體發展環境是為了給GCPLC系統提供一個直觀、方便、可拖動、高效的程式開發平臺。該平臺主要支援圖形化的拖動、C語言的生成、程式編譯、程式寫入、即時監控等功能。

該平臺採用PC作為基本程式設計工具,應用Visual Studio 2012作為開發環境,程式設計語言捨棄了傳統PLC採用的梯形圖程式設計方式,選用了全新的圖示拖動及連接的程式設計語言,使得程式的二次開發變得更加容易,程式結構也變得更加清晰,並且添加了複製、剪切、刪除、粘貼、右鍵功能表等人性化的快捷操作。在燒寫程式之前,需要對程式進行編譯,由編譯器負責檢查使用者編寫的程式,並且將錯誤回饋給使用者。若編譯器無誤,則可以將使用者程式寫入GCPLC硬體板。該開發平臺主要由以下模組組成:

(1)圖示控制項模組。包含了編寫程式需要的所有控制項,控制項分為執行控制項、感測器控制項、通信控制項、流程控制項、任務控制項5個大類。每個大類下又包含了若干個具體的子控制項。

(2)控制項連接及屬性設置模組。該模組是進行控制項拖拉和連線的模組,也是整個開發環境的關鍵。在編寫程式時可以從上述的圖示控制項模組中選擇自己需要的控制項,選出控制項後可以放置在此模組上。每個控制項的頂部和底部都有一塊三角形區域,當選定了若干個控制項後,將這些控制項的三角形區域連線,則可以組成一段程式。

(3)代碼更新顯示模組。當連接好控制項連接模組中的控制項後,該模組便會自動生成相應的代碼。使用者只需要簡單的C語言基礎,便可以更好地理解這整段程式實現的功能。

3.1 圖示控制項模組

為了方便二次開發,在設計開發平臺時決定放棄傳統PLC的使用的梯形圖程式設計方法,轉而設計了開發者門檻更低、更加容易理解的圖示形式的控制項,一段完整的程式要能夠穩定、成功地運行,則需要C語言執行所需要的基本流程,基於程式執行的基本流程,將圖示控制項模組劃分為之前所闡述的5個大類。

執行控制項主要包括一些需要執行的操作,例如開關中斷、設置延時、設置IO輸入/輸出等;感測器控制項包含GCPLC需要的感測器,例如超聲波感測器、AD感測器等;通信控制項包含與硬體核心板通信相關的控制項,例如I2C、SPI、UART等;流程控制項則是與程式執行相關,所以包含IF判斷、條件迴圈、計數迴圈之類的控制項;任務控制項則是為了程式的多工協調執行而設置的,所以每當用戶添加一個任務,任務控制項中也會生成相應的控制項。

為了使開發平臺自身更具有拓展性,設計了一套從Access資料庫讀取控制項名稱和控制項圖片等相關屬性的演算法,當需要增加某種控制項時,只需要設置好該控制項的相應屬性,存入資料庫即可。而對於每一個使用者程式,其中的任務控制項也是各有不同的,因此實現任務控制項的動態存取也十分重要。而在設計控制項時,為了實現程式的通用性,設計了圖示控制項Icon類,其關鍵代碼如下:

public LinkIconType IconType;//控制項的類型

public string ModuleName;//控制項名字

public int IconArrNum;//控制項在控制項陣列中的下標

public int IconDbNum;//控制項在資料庫中的序號

public PictureBox IconPicBox;//控制項的圖片

public PictureBox MoveToIconPicBox;//滑鼠移動到控制項上時顯示的圖片

public int IconLeftDotNum; //控制項圖示的左側的Dotsize個數

public int IconTopDotNum; //控制項圖示的上側的Dotsize個數

3.2 控制項連接及屬性設置模組

控制項連接及屬性設置模組是進行控制項拖拉、連線、程式順序設計的模組,也是整個開發平臺的核心所在,若干個控制項通過不同的順序連接,將會生成截然不同的程式。

在這個介面中,可以通過按兩下每個控制項以編輯該控制項的屬性。例如,當點擊PWM初始化控制項時,便會跳出“PWM初始化”屬性視窗,如圖4所示。

該視窗用於設置GCPLC硬體上的PWM波的輸出頻率,只需要在文字方塊中輸入想要的頻率,點擊確定後就可以成功配置PWM的輸出頻率。使用者在程式設計時可以很容易掌握。其他的控制項也具各自的屬性視窗。

當從圖示控制項模組拖出控制項時,每個控制項之間都是各自獨立的,即使設置好控制項的屬性,這些控制項仍然不具備實際功能,只有通過每個控制項頂部和底部的三角形區域將需要的控制項連接起來時,這些控制項才會真正起作用,在開發環境中新建一個專案檔案後會自動生成一個Main圖示控制項,這個控制項是不可編輯的,表示為每個程式的開始。

為了能適應程式較小或者較大的情況,設計了可縮放的程式設計介面,當需要編寫程式量較大的程式時,可以縮小介面以便於查看完整的程式結構。另外,開發環境吸取了PLC程式設計中梯形圖多行編寫的優點,設計了多行顯示的程式結構。同時,當控制項圖示過多超過當前顯示頁面時,設計一套即時刷新的演算法,提升了軟體執行效率。

當GCPLC系統需要執行多工程式時,為了使得各個任務之間的劃分更加清晰,為主任務程式和每個子任務都開闢了單獨的視窗,使用者每添加一個任務,都會在主任務表單中生成一個子任務控制項圖示,按兩下任務控制項圖示後可以編輯相應的任務屬性,如任務名稱、任務棧大小、任務優先順序等。

3.3 代碼更新顯示模組

在控制項連接及屬性設置模組將各個圖示按照自己預想的順序連線完成後,如果沒有任何可以參照修改的功能,很有可能使得最後燒寫的程式無法正常運行,而且僅僅是圖示連接也會使得開發者感覺很疑惑。為了解決這些問題,設計了代碼顯示區域。該區域顯示的代碼與控制項連接模組的連線方式是一一對應的,如圖5所示。

4 GCPLC整體運行實驗

在本次實驗中,對GCPLC系統進行了一次整體上電自檢實驗測試。首先在GCPLC軟體發展環境中編寫好上電自檢的程式,這個上電自檢程式將打開GCPLC硬體系統中的所有GPIO、PWM、差分輸入/輸出、CAN匯流排、485、232和數碼管功能,並且將模組初始化資訊通過串口回饋出來。上電後的串口回饋資訊如圖6所示。

5 結論

GCPLC系統將嵌入式系統、軟體發展系統融合在一起,形成一個開放式的體系結構,相比傳統的PLC具有更高的靈活性和可擴展性,從而使得電腦控制系統不再受傳統PLC硬體的限制,提高了可靠性和可操作性。本系統具有良好的通信能力,能夠完成比較複雜的多工控制功能,可以滿足和實現當前和今後工業自動化領域控制系統開放性和柔性的要求,為工業自動化向更高層次的集成提供了可靠的計數保障,具有廣闊的應用前景。

參考文獻

[1] 嚴奎.嵌入式PLC程式設計軟體發展[J].工業控制電腦,2012,25(10):67-68,70.

[2] 張嵩,術守喜,丁廣乾.基於ARM的嵌入式PLC的設計[J].自動化與儀器儀錶,2008(3):9-10,23.

[3] 廖常初.PLC程式設計及應用(第4版)[M].北京:機械工業出版社,2014.

[4] TROELSEN A.C#與.NET 4高級程式設計[M].北京:人民郵電出版社,2011.

[5] 王宜懷.嵌入式系統原理與實踐:ARM Cortex-M4 Kinetis微控制器[M].北京:電子工業出版社,2012.

[6] 吳玉香,周東霞,林錦贇.嵌入式軟PLC系統的研究和實現[J].電腦工程,2009(10).

[7] 謝春傑.嵌入式軟PLC的研究與設計[D].南京:南京理工大學,2014.

[8] 郭建勳.嵌入式軟PLC開發系統的設計[D].廣州:華南理工大學,2010.

[9] PRATUMSUWAN P,PONGAEN W.An embedded PLC development for teaching in mechatronics education[J].Industrial Electronics & Applications,IEEE,2011(6):1477-1481.

[10] 艾春麗,劉榮鵬,張鳳登.基於軟PLC的多工並行控制系統的即時性研究[J].電腦應用,2007,27(12):272-274.