王清珍 邵杰



摘 要: 針對現(xiàn)有PLC的設(shè)計、制造的過程十分復雜,價格昂貴,不適合小批量生產(chǎn)、制造的缺點,現(xiàn)設(shè)計一種低成本簡易PLC,對這種PLC進行硬件結(jié)構(gòu)設(shè)計和系統(tǒng)軟件設(shè)計與調(diào)試。經(jīng)過實踐可用于對具有一定工作工程的機械設(shè)備控制,來代替接觸器、繼電器控制系統(tǒng)提高控制可靠性。該可編程程序控制器構(gòu)成的系統(tǒng)共可處理1 024 B,8 192個點的現(xiàn)場信號,應(yīng)用前景很靈活,很廣泛。
關(guān)鍵詞: 可編程控制器; 設(shè)計過程; 硬件結(jié)構(gòu); 機械設(shè)備控制
中圖分類號: TN710?34; TP368.2 文獻標識碼: A 文章編號: 1004?373X(2016)06?0161?05
Design of programmable controller based on microcomputer
WANG Qingzhen, SHAO Jie
(Zhengzhou University of Science &Technology, Zhengzhou 450064, China)
Abstract: The design and manufacture process of the existing PLC are complex, and its cost is expensive, which is unsuitable for small?lot production and manufacture, so a simple PLC with low cost was designed. The hardware structure design, system software design and debugging for this PLC were conducted. The practice proves that the PLC can be applied to mechanical equipment control of a certain working engineering to replace contactor and relay control system, and improve the control reliability. The system composed of programmable controller can process the field signal with 1024 bytes and 8192 points, and has flexible and extensive application prospect.
Keywords: programmable controller; design process; hardware structure; mechanical equipment control
0 引 言
可編程序控制器(PLC)在工業(yè)現(xiàn)場控制中有著廣泛的應(yīng)用。目前市場上的PLC大都為技術(shù)實力雄厚的大型企業(yè)生產(chǎn),如日本的三菱、歐姆龍,德國的西門子等廠家[1]。這些廠家具有豐富的電子產(chǎn)品生產(chǎn)經(jīng)驗和完善的技術(shù)鏈條,可以完成對PLC的硬件、軟件、上位機開發(fā)軟件和配套設(shè)備的設(shè)計、制造、銷售和培訓等的一系列過程,甚至包括PLC內(nèi)部的處理器芯片,都是由這些廠家中負責生產(chǎn)集成電路的部門制造的。這些主流可編程序控制器功能完善、可靠性很高,而設(shè)計、制造的過程十分復雜,從硬件電路的設(shè)計到上位機軟件的開發(fā)是一個復雜的系統(tǒng)工程,必須是大型企業(yè)才具備這樣的條件,而中小型企業(yè)很難進入PLC設(shè)計制造領(lǐng)域。
在當前PLC應(yīng)用場所之中,并不是所有的地方都需要功能復雜、完善的PLC。
目前通行的PLC,除了具有基本指令之外,還具有復雜的功能指令、具有現(xiàn)場總線功能和聯(lián)機通信、具有多種功能模塊擴展功能,還包括與一些相關(guān)工控設(shè)備,如觸摸屏等連接功能。這使得PLC的價格十分昂貴。而在很多應(yīng)用場所,這里面的大多數(shù)功能都是用不上的,如控制單獨工作,工作過程不太復雜的機械設(shè)備,簡單的過程控制設(shè)備等,這些設(shè)備使用目前功能完善PLC會使制造成本上升,采用接觸器、繼電器控制又會造成產(chǎn)品可靠性的下降,直接采用單片機控制,進行單片機開發(fā)過程復雜,會增加開發(fā)成本,延長產(chǎn)品開發(fā)周期。所以,設(shè)計一種低成本,只有基本邏輯指令和簡單聯(lián)機擴展功能的PLC是有一定市場價值的。
這種低成本簡易PLC可以用于具有一定工作工程的機械設(shè)備控制,可以代替接觸器、繼電器控制系統(tǒng)提高控制可靠性,又比直接使用單片機控制更加方便。而這種PLC設(shè)計制造過程相對簡單,可在中小型企業(yè)中研發(fā)生產(chǎn)。
1 硬件設(shè)計
這種新型可編程序控制器采用模塊化設(shè)計。從結(jié)構(gòu)上看,該可編程序控制器具有核心模塊、接口模塊和現(xiàn)場信號模塊三種。其中現(xiàn)場信號模塊又有模擬信號模塊和開關(guān)量信號模塊兩種。三種模塊之間通過總線相連,實現(xiàn)結(jié)構(gòu)擴展;從功能上看,該可編程序控制器有主機、從機和開關(guān)信號擴展機三種功能模塊,其中從機又有模擬信號機和開關(guān)量信號機兩種。三種功能模塊之間通過電纜連接,根據(jù)實際用途和現(xiàn)場信號數(shù)量選配。
1.1 核心模塊
核心模塊是該可編程序控制器的運算核心和通信核心,起用戶程序運算和模塊信號通信作用。核心模塊上的通信口分為上位通信口和下位通信口。上位通信口有雙RS 422通信、雙RS 232通信[2]和RS 485通信三種通信方式。通過上位通信口可以與其他核心模塊實現(xiàn)多部該型可編程序控制器聯(lián)機工作。由于總線驅(qū)動能力和信號鏡像寄存器容量的限制,設(shè)計其最多可實現(xiàn)8臺主機的聯(lián)機工作。上位通信口也可以用于與上位機的連接,用于程序下載和通信。下位通信口為TTL電平的SPI總線通信口,用于連接接口模塊。一個核心模塊最多可連接8臺接口模塊,采用SPI環(huán)形數(shù)據(jù)通信,可使一臺主機可以連接8臺分機。由于TTL電平的傳輸距離和傳輸可靠性都是有限的,故主機與分機、分機與分機之間須靠近安裝。該型PLC的核心模塊采用STC12C5A32S2型單片機作為控制器,該型單片機為常見的51內(nèi)核[3],開發(fā)較為方便,運算速度較快,每時鐘周期即機器周期。該單片機存儲空間較大,有32 KB FLASH程序存儲器和32 KB E2PROM存儲器,分別可以用以存儲大量的系統(tǒng)程序和用戶程序。該單片機有兩個串行通信口,可以用來與上位機通信和進行端口擴展。
核心模塊的硬件電路如圖1所示。設(shè)計有兩組輸入端子,第一組有8個輸入端,第二組有4個輸入端,每組輸入端有一個共陽極的公共端。輸入端子通過光電隔離器和外部分壓濾波元件,將端子和公共端之間的開關(guān)信號轉(zhuǎn)換為單片機引腳的電平信號。輸出端子也有兩組,分別有8個輸出端和2個輸出端,采用繼電器輸出,每個繼電器通過單片機的引腳經(jīng)集成三極管驅(qū)動。
單片機的兩個串行通信口分別轉(zhuǎn)換為RS 232信號和RS 485信號,RS 232口用于與上位機或編程器通信,輸入用戶程序;RS 485口用于與其他PLC模塊相連,進行端口擴展。單片機還要連接一個三位撥碼開關(guān),用于設(shè)置該機的物理地址,并連接一個I2C總線E2PROM存儲器,用于PLC的數(shù)據(jù)存儲器[4]。
1.2 接口模塊
接口模塊用于現(xiàn)場信號轉(zhuǎn)換和傳輸,以及部分人機接口功能。接口模塊具雙向SPI通信口[5]和現(xiàn)場模塊接口。雙向SPI通信口可以與核心模塊或其他接口模塊連接,將其數(shù)據(jù)傳輸給主機;現(xiàn)場模塊接口可以與模擬信號模塊或開關(guān)量信號模塊連接。1臺接口模塊最多可以與4臺開關(guān)量信號模塊或1臺模擬信號模塊連接,接口模塊可以從現(xiàn)場信號模塊讀取數(shù)據(jù)傳送至核心模塊。若有多臺接口模塊相連,接口模塊之間還具有一路輔助通信鏈路,為一主多從模式的UART通信,用于接口模塊之間的自檢測、數(shù)據(jù)校驗和備用數(shù)據(jù)通信。另外接口模塊帶有LED點陣,用于現(xiàn)場信號指示。
1.3 現(xiàn)場信號模塊
現(xiàn)場信號模塊有模擬量模塊和開關(guān)量信號模塊兩種,用于現(xiàn)場信號的轉(zhuǎn)換?,F(xiàn)場信號模塊由采集電路、光電隔離電路、放大器、信號寄存器等構(gòu)成,可以將現(xiàn)場開關(guān)量或模擬量信號轉(zhuǎn)換為數(shù)據(jù),由接口模塊讀取。其中模擬量模塊只能單獨與接口模塊連接,而開關(guān)量信號模塊可擴展,與接口模塊連接的開關(guān)量信號模塊還可在與最多3臺開關(guān)量信號模塊相連?,F(xiàn)場信號模塊的設(shè)計相當靈活,在信號標準的前提下,不同的現(xiàn)場信號模塊可以設(shè)計出不同數(shù)量的I/O口或模擬通道。本項目所設(shè)計的開關(guān)量信號模塊具有32個I/O點,包括 16個輸入點和16個輸出點,而模擬量模塊設(shè)計有3個模擬量輸入通道和3個模擬量輸出通道。
如上所述,該新型可編程序控制器的擴展方式是:1臺主機可以與7臺分機連接,分機可以是模擬分機和開關(guān)量分機兩種,1臺開關(guān)量分機又可與另外3臺擴展機相連。主機和主機之間也可相連,最多可以有8臺主機連接在一起構(gòu)成系統(tǒng)。系統(tǒng)內(nèi)主機為運算核心,每臺主機都具有信號處理能力,而分機和擴展機僅有信號轉(zhuǎn)換和傳輸功能。故該可編程序控制器構(gòu)成的系統(tǒng)最多具有1 024 B、8 192個點的現(xiàn)場信號處理能力。擴展連接方式如圖2所示。
2 軟件設(shè)計
軟件設(shè)計的內(nèi)容是設(shè)計單片機的底層系統(tǒng)程序,底層系統(tǒng)程序能夠接收編程器發(fā)來的用戶程序,并能夠識別用戶程序,根據(jù)用戶程序的內(nèi)容控制PLC的輸入/輸出端口的狀態(tài),做出相應(yīng)的控制動作。
圖2 擴展結(jié)構(gòu)
2.1 用戶程序格式
用戶程序是PLC用戶根據(jù)自身的控制過程編寫的,該簡化型的PLC用戶程序相對簡單,只有END結(jié)束、LD放置起始觸點、LDI放置起始常閉觸點、OR并聯(lián)、ORI并聯(lián)常閉觸點、AND串聯(lián)、ANI串聯(lián)常閉觸點、ORB多觸點并聯(lián)、ANB多觸點串聯(lián)、PUSH入棧、POP出棧、SET置位、RST復位、OUT輸出、CJ跳轉(zhuǎn)等16條基本指令和輸入繼電器X、輸出繼電器Y、輔助繼電器M、定時器T、計數(shù)器C、數(shù)據(jù)寄存器D等6種編程元素,編程元素定義如表1所示。這16條基本指令主要是針對開關(guān)量的邏輯控制指令,已經(jīng)可以替代接觸器繼電器系統(tǒng),滿足大部分應(yīng)用場合的要求。
表1 編程元素對照表
用戶程序的數(shù)據(jù)有4種:指令、編程元素、編程元素編號和常數(shù)[6]。如表2所示,每一種數(shù)據(jù)都是以1 B的形式存在,字節(jié)的高2位是數(shù)據(jù)識別位,以11,10,01,00分別表示指令、編程元素、編程元素編號和常數(shù),指令和編程元素的低6位分別表示其序號,如語句LD X0對應(yīng)的程序代碼為11 000001 10 000000 01 000000,故最多可支持64條指令或編程元素;編程元素編號和常數(shù)的低6位分為中3位和低3位,每3位二進制數(shù)可以表示1位八進制數(shù),每1 B的編程元素編號或常數(shù)可以表示2位八進制數(shù)。
表2 用戶程序格式
用戶程序在單片機存儲器中的形式是:指令、編程元素、編程元素編號、常數(shù)。其中有些指令后面沒有編程元素,如入棧指令PUSH等,大部分程序語句后面都沒有常數(shù),只有當編程元素數(shù)定時器T、計數(shù)器C時,或跳轉(zhuǎn)指令CJ后才有常數(shù)。如果有編程元素,編程元素后要緊跟一個字節(jié)的編程元素編號,用元素編號中的兩位八進制數(shù)來給編程元素編址。而定時器T、計數(shù)器C或跳轉(zhuǎn)指令CJ后面要跟2 B的常數(shù),即4位八進制數(shù),數(shù)值的范圍為4 096,固定時器、計數(shù)器的最大工作范圍為4 095,而用戶程序也不能超過4 096條。圖3和表3列出了一段用戶程序的代碼對照。
2.2 編程元素及其編址
在該型PLC的6種編程元素中,輸入繼電器X和輸出繼電器Y的數(shù)值與端口的狀態(tài)相對應(yīng);輔助繼電器M和數(shù)據(jù)寄存器D可以保存運算過程中的數(shù)據(jù),M的物理存儲區(qū)是單片機的RAM位尋址區(qū),數(shù)據(jù)寄存器D的物理存儲區(qū)是E2PROM,數(shù)據(jù)寄存器D斷電之后可以保存數(shù)據(jù)。定時器T和計數(shù)器C的物理存儲區(qū)是單片機的RAM和定時/計數(shù)器,每一個T或C都要占用2個RAM字節(jié),用以存儲2個常數(shù)(4位八進制數(shù)),定時/計數(shù)器T的最大定時范圍為4 095個時間單位,而C的最大計數(shù)值也是4 095。單片機內(nèi)的一個定時/計數(shù)器用作T的時基定時器,時間單位為10 ms,定時/計數(shù)器T的定時范圍是10 ms~40.95 s。
編程元素通常用2位八進制數(shù),即用1 B的編程元素編號來編址,如圖4所示,低位八進制數(shù)為位地址,高位八進制數(shù)為組地址,在一臺PLC內(nèi)部,一種編程元素不能超過8組,每組有8個,最多支持64個。考慮到硬件條件和單片機的運算能力,該型PLC的編程元素數(shù)量為6個。
由于單臺PLC輸入輸出端口數(shù)量有限,只有2組共12個輸入端口和10個輸出端口,有時候不能滿足要求。所以該型PLC需要具備一定的擴展能力,通過設(shè)備上自帶的RS 232總線或RS 485總線可以將多臺PLC連接起來,總線上的PLC的每一個端口都有惟一的地址,這個地址是該PLC的端口組地址和位地址的基礎(chǔ)上再加上該PLC設(shè)備地址,設(shè)備地址是通過該PLC上的3位撥碼開關(guān)所設(shè)置的一個3位二進制數(shù),即1個八進制數(shù),構(gòu)成端口地址的第3位。總線上的每一個PLC都要通過撥碼開關(guān)設(shè)置惟一一個地址,最多可以通過總線連接8個同一型號的PLC。
圖3 梯形圖程序
表3 用戶程序、代碼對照示例對照表
圖4 編程元素的地址
2.3 用戶程序執(zhí)行的軟件設(shè)計
用于分析用戶程序的軟件是該PLC系統(tǒng)程序的核心部分[7?8]。程序執(zhí)行軟件分為用戶程序段讀入、編程元素尋址和運算執(zhí)行三個過程:
(1) 將用戶程序段中的當前指令到下一條指令之間的內(nèi)容分讀入指定的緩存,這里面包含一條指令、一個編程元素和編程元素的地址(即元素編號),有的還包括常數(shù),這幾部分內(nèi)容將被區(qū)分并存入相應(yīng)的區(qū)域。
(2) 編程元素尋址,將編程元素地址指向的開關(guān)量讀入為單片機的累加器C,準備進行邏輯運算或輸出。各種編程元素對應(yīng)的開關(guān)量存儲在不同的區(qū)域:輸入輸出繼電器X,Y對應(yīng)單片機的端口,輔助繼電器M對應(yīng)單片機RAM位尋址區(qū)的64個位數(shù)據(jù),數(shù)據(jù)存儲器D對應(yīng)外部E2PROM中的64個位數(shù)據(jù),定時器和繼電器的開關(guān)量也存儲在RAM位尋址區(qū),用64個位數(shù)據(jù)分別代表32個定時器和32個計數(shù)器的開關(guān)狀態(tài)。這一階段首先要分析指令,根據(jù)指令不同分為兩種情況:一種是變量輸入指令,包括:LD,LDI,OR,ORI,AND,ANI,ORB,ANB,PUSH,PRD,POP11條;另一種是變量輸出指令,包括:SET,RST,OUT,CJ4條。對于變量輸入指令,首先要進行尋址,將編程元素對應(yīng)的開關(guān)量讀入累加器C,等待進行運算,運算結(jié)果存入為累加器C;對于變量輸出指令,是將為累加器C中的開關(guān)量先進行運算,然后再對編程元素進行尋址,將運算結(jié)果送入編程元素編號指定的地址。
(3) 運算執(zhí)行階段,這個階段相關(guān)的寄存器是位累加器C和位數(shù)據(jù)堆棧區(qū)。其中僅與位累加器有關(guān)的指令有AND,ANI,OR,ORI,OUT等,它們的功能是: AND,ANI,OR,ORI等指令是將位累加器中的開關(guān)量與編程元素指向的開關(guān)量進行邏輯運算,結(jié)果存入位累加器;OUT指令將位累加器中的數(shù)據(jù)輸出到編程元素指向的地址,如果編程元素指向的地址為計數(shù)器,則判斷該次輸出是否產(chǎn)生下降沿,有的話則對計數(shù)器對應(yīng)的寄存器進行減1操作,若減為零則對該計數(shù)器對應(yīng)的開關(guān)量置位;SET和RST指令判斷位累加器是否為1,若為1則將編程元素指向的開關(guān)量置1或清零,若不為1則編程元素指向的開關(guān)量不變。與位累加器和位數(shù)據(jù)堆棧區(qū)都有關(guān)的指令有:LD,LDI,ANB,ORB,PUSH,PRD,POP等,它們的功能是:LD和LDI指令是將變量讀入位累加器,若是之前已有LD,LDI指令而未見OUT指令,則將原位累加器中的數(shù)據(jù)入棧,再將變量讀入位累加器;ANB,ORB是將當前位累加器中的開關(guān)量與棧內(nèi)最近的數(shù)據(jù)進行邏輯運算,結(jié)果存入位累加器,棧中數(shù)據(jù)刪除;PUSH,PRD,POP等指令是分別將位累加器中數(shù)據(jù)入棧、讀棧和出棧。
這三個階段循環(huán)進行,每執(zhí)行1條指令循環(huán)1次,這個過程需要由程序計數(shù)器參與。程序計數(shù)器是在單片機RAM中指定的單元,每循環(huán)一次便將程序計數(shù)器中的數(shù)值加1,所以程序計數(shù)器中的數(shù)值便是已執(zhí)行的指令數(shù)。CJ和END這兩條指令與程序計數(shù)器有關(guān),CJ的操作數(shù)是一組常數(shù),常數(shù)值即跳轉(zhuǎn)地址。CJ對應(yīng)的開關(guān)量一旦被置1,該常數(shù)便賦給程序計數(shù)器,程序發(fā)生相應(yīng)跳轉(zhuǎn)。END可將程序計數(shù)器清零,使用戶程序得以循環(huán)執(zhí)行。用戶程序執(zhí)行程序除了以這三個過程進行處理外,還有中斷處理程序。如果用戶程序使用了定時器T,則單片機的定時器被打開,以10 ms為時間單位進行定時,每10 ms對定時器對應(yīng)的寄存器的數(shù)值減一定時,若減為零則對該定時器對應(yīng)的開關(guān)量置位。
3 試驗結(jié)果
經(jīng)過多次硬件系統(tǒng)功能的分析與測試和軟件系統(tǒng)的實驗與調(diào)試,最終系統(tǒng)達到以下試驗結(jié)果,可以作為選擇PLC的依據(jù)。
根據(jù)現(xiàn)場總線的不同,通信距離和通信速率如表4所示。
表4 PLC通信參數(shù)表
觸點不同,導通、閉合與斷開時間延遲也不同,如表5所示。
表5 觸點特征表
4 結(jié) 論
本文完成了對PLC的各種總線的通信距離、各種信號量的輸入/輸出類型和傳輸速率的測試。該研究以總線構(gòu)架為思路,通過嵌入式技術(shù)的方式實現(xiàn)可編程設(shè)備的設(shè)計,形成一種基于單片機的、可以通過總線擴展、運行統(tǒng)一程序?qū)崿F(xiàn)集中管理分散控制的工業(yè)現(xiàn)場可編程控制器,靈活大,可擴展性好等優(yōu)點,使得這種PLC的應(yīng)用前景很好?,F(xiàn)已成功研究了系統(tǒng)的硬件組成和底層控制軟件的設(shè)計,還需要進一步對此系統(tǒng)進行上位機軟件[9]設(shè)計的完善。
參考文獻
[1] 李少遠.工業(yè)過程系統(tǒng)的預測控制[J].控制工程,2010,17(4):407?415.
[2] 潘方.RS 232串口通信在PC機與單片機通信中的應(yīng)用[J].現(xiàn)代電子技術(shù),2012,35(13):69?71.
[3] 王清珍.單片機原理及接口技術(shù)[M].大連:大連理工大學出版社,2009.
[4] 殷蘇民,張建明,李正陽,等.基于單片機的PLC數(shù)據(jù)存儲系統(tǒng)[J].電子技術(shù)應(yīng)用,2014,40(8):31?33.
[5] 趙淑玉,孟寶全.單片機和PLC的應(yīng)用與串行通信[J].科技信息:科學教研,2008(21):52.
[6] 朱林,宋寧,李琦.解釋型控制器的研究與實現(xiàn)[J].化工自動化與儀表,2012,39(12):1644?1647.
[7] GELEN G, UZAM M. The synthesis and PLC implementation of hybrid modular supervisors for real time control of an experimental manufacturing system [J]. Journal of manufacturing systems, 2014, 33(4): 535?550.
[8] WANG Wan, SUN Dayu. The design and application of automatic control system for inorganic membrane filter [J]. Procedia engineering, 2011, 15: 5503?5507.
[9] 朱晶川,孫力.基于PLC的自動切筋分離系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2015,38(10):111?114.