可編程邏輯控制器(PLC),一種數(shù)字運算操作的電子系統(tǒng),專為在工業(yè)環(huán)境應用而設計。它采用一類可編程的存儲器,用于其內(nèi)部存儲程序,執(zhí)行邏輯運算、順序控制、定時、計數(shù)與算術操作等面向用戶的指令,并通過數(shù)字或模擬輸入/輸出控制各種類型的機械或生產(chǎn)過程,是工業(yè)控制的核心部分。隨著工業(yè)技術的發(fā)展以及規(guī)模的不斷擴大,傳統(tǒng)的PLC面臨著IO點數(shù)增多、通訊功能需要增強等諸多方面的挑戰(zhàn),已無法滿足個性化、差異化的需求。
現(xiàn)有的設計主要有工控機、單片機板等。工控機在互連、表達、算法等方面優(yōu)勢明顯,但其實時性、穩(wěn)定性難以滿足連續(xù)控制的苛刻要求,通常用于監(jiān)控。單片機系統(tǒng)在成本控制上更加靈活,可是沒有操作系統(tǒng)使其只能應用于低端場合。具有嵌入式操作系統(tǒng)的PLC將能結(jié)合兩者的優(yōu)點,成為PLC領域的主要研究方向。本文介紹以嵌入式芯片STM32和CAN總線相結(jié)合的方式進行嵌入式PLC設計,并采用μC/OS-II實時操作系統(tǒng),利用其開放性、模塊化和可擴展性的系統(tǒng)結(jié)構(gòu)特性來達到高實時要求的PLC控制,在保證實時性的同時,實現(xiàn)多點位、復雜功能的PLC系統(tǒng)控制目標。
1 系統(tǒng)總體設計
系統(tǒng)總體設計框圖如圖1所示。本設計采用ST公司生產(chǎn)STM32F103RCT6作為系統(tǒng)的主處理器。STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex-M3內(nèi)核,它集成了兩個CAN控制器,并為每個CAN控制器分配了256字節(jié)的SRAM,每個CAN控制器有3個發(fā)送郵箱和兩個接收FIFO。它主要負責采集、處理開關量和模擬量輸入,控制開關量輸出,同時通過CAN總線完成與上位機的通信。
開關量的輸入,為了減少外部開關對系統(tǒng)的干擾,首先在輸入端用光電耦合器隔離,再由IO口分別讀取12路通道的輸入,讀取的開關量可以存儲在ARM的存儲器內(nèi)。ARM對開關量數(shù)據(jù)進行處理,一方面通過CAN總線將數(shù)據(jù)傳輸?shù)缴衔粰C;另一方面將開關狀態(tài)由LED實時顯示輸入開關量狀態(tài)。對于13路的開關量輸出,ARM通過CAN總線得到上位機傳來的開關量輸出數(shù)據(jù),并且將數(shù)據(jù)進行處理,一方面通過控制繼電器的鎖存器將數(shù)據(jù)鎖存,完成對繼電器的開關控制;另一方面將開關狀態(tài)由LED實時顯示輸出開關量狀態(tài)。模擬量的采樣則通過信號放大調(diào)理電路及相應的控制電路,然后對其進行A/D轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)字量讀入 PLC系統(tǒng)的輸入映像緩沖區(qū),從而完成對模擬量的采集。
2 系統(tǒng)硬件設計
2.1 開關量輸入輸出模塊
開關量輸入電路的功能是接收工業(yè)現(xiàn)場各種開關量信號的輸入,并將其轉(zhuǎn)換成符合CPU要求的標準邏輯電平。為提高控制器的抗干擾能力,在開關量輸入信號和處理器STM32之間使用光電耦器件TLP521隔離,當開關量輸入信號受到干擾時,只要其共模電壓低于光耦的最大隔離電壓,就不會對處理器正常工作造成任何影響。
開關量輸入電路如圖2所示。其中X1為輸入端,P1為微控制器端口,LED0為輸入點的狀態(tài)指示燈,TLP521為光電耦合器,它實現(xiàn)現(xiàn)場與PLC的CPU電氣隔離,提高抗干擾性。