基于RAM的嵌入式可編程控制器的設(shè)計(jì)與實(shí)現(xiàn)
引言
可編程邏輯控制器(PLC)以其高可靠性和使用方便的特性.使其在現(xiàn)代工業(yè)控制中得到了廣泛的應(yīng)用。隨著工廠自動(dòng)化的進(jìn)展,對(duì)PLC之間以及PLC同其他控制設(shè)備之間相互聯(lián)系的要求也相應(yīng)提高。由于PLC的通訊方式為串行通訊,受通訊方式的制約,傳統(tǒng)的PLC(即外掛式PLC)難以勝任微機(jī)和PLC都必須參與實(shí)時(shí)控制和控制功能較為復(fù)雜的系統(tǒng)。當(dāng)輸入/輸出點(diǎn)數(shù)多時(shí),PLC體積會(huì)隨點(diǎn)數(shù)的增多而增大,安裝不太方便。此外,目前國(guó)內(nèi)因沒(méi)有自己的品牌,在應(yīng)用PLC的場(chǎng)合仍多選用國(guó)外產(chǎn)品,品牌多,成本高,因此研制符合實(shí)際應(yīng)用需求的國(guó)產(chǎn)化新型PLC系統(tǒng)及其通用開(kāi)發(fā)平臺(tái)具有重要意義和應(yīng)用前景。
為了提高速度,降低成本,可采用虛擬式PLC,即把PLC上的CPU和存儲(chǔ)器等部件由微機(jī)的軟件虛擬實(shí)現(xiàn),再配合普通的開(kāi)關(guān)量I/O卡實(shí)現(xiàn)對(duì)電氣開(kāi)關(guān)的控制。但此方案因主機(jī)要直接參與控制邏輯的運(yùn)算過(guò)程,占用了主機(jī)的部分工作時(shí)間,會(huì)導(dǎo)致整機(jī)速度下降。另外,把過(guò)多的功能集中到主機(jī)使主機(jī)發(fā)生故障的風(fēng)險(xiǎn)加大。因此,本文給出一種嵌入式PLC的設(shè)計(jì)方案,它可以看作是一種智能型I/O接口卡,在不增大系統(tǒng)體積的同時(shí),使通訊速度大幅度提升,故障風(fēng)險(xiǎn)相對(duì)分散。
1 嵌入式PLC的硬件結(jié)構(gòu)設(shè)計(jì)
嵌入式PLC是利用PC機(jī)開(kāi)放式、模塊化和可嵌入的特點(diǎn),以及成熟的硬件及豐富的軟件資源,尤其是開(kāi)放式的PC總線而設(shè)計(jì)的。本項(xiàng)目總的設(shè)計(jì)思想是:設(shè)計(jì)一個(gè)嵌入式PLC卡,它可以插到主機(jī)底板的插槽上,因該卡直接與主機(jī)底板總線相連,通訊速度可以大大提高。卡上自帶CPU,用以處理開(kāi)關(guān)信號(hào),開(kāi)關(guān)邏輯處理不占用PC主機(jī)的時(shí)間,其輸出經(jīng)外接繼電器以控制開(kāi)關(guān)設(shè)備的開(kāi)啟與關(guān)閉、導(dǎo)通或截止。其軟/硬件的分配是合理的,能有效解決PLC與主機(jī)通信和協(xié)調(diào)工作的問(wèn)題,較好地滿足控制系統(tǒng)實(shí)時(shí)性的要求。
嵌入式PLC是一個(gè)完全獨(dú)立于PC機(jī)的完整的計(jì)算機(jī)系統(tǒng),其硬件組成如圖1所示,主要由單片機(jī)最小系統(tǒng)、程序存儲(chǔ)模塊、通訊模塊及輸入輸出模塊組成。嵌入式PLC的CPU采用了ATMEL公司推出的AT89S51單片機(jī),該單片機(jī)是低功耗的、具有4KB在線可編程FLASH存儲(chǔ)器。圖1中雙口存儲(chǔ)器(雙口RAM)用于完成PC主機(jī)與嵌入式PLC之間信息的交換,與采用并行口的方案相比,該方法簡(jiǎn)潔明了,無(wú)需復(fù)雜的通訊協(xié)議,PC主機(jī)可以隨時(shí)了解外部設(shè)備開(kāi)關(guān)狀態(tài)而不需額外消耗時(shí)間,效率高于其他實(shí)現(xiàn)方式。目前,工控機(jī)的底板總線有兩類:ISA總線和PCI總線。ISA總線的數(shù)據(jù)轉(zhuǎn)輸速率比PCI總線要低得多,但已完全能夠滿足一般工業(yè)控制的需要,而且ISA總線對(duì)工控機(jī)擴(kuò)展卡的要求比PCI要寬松。從已有的工業(yè)應(yīng)用經(jīng)驗(yàn)看,ISA總線可靠性也比較高,因此仍選擇ISA總線做為嵌入式PLC設(shè)計(jì)的基礎(chǔ)。此外,圖1中包括一片靜態(tài)RAM芯片6264,主要用于存儲(chǔ)PLC梯形圖程序。在工控PC主機(jī)中對(duì)電氣控制邏輯進(jìn)行編程,編譯后經(jīng)雙口RAM存入6264中,PLC運(yùn)行這部分程序以完成電氣控制。
圖1 嵌入式PLC的硬件結(jié)構(gòu)簡(jiǎn)圖
1.1 通訊模塊的設(shè)計(jì)
PC主機(jī)與嵌入式PLC卡之間可以采用并行口進(jìn)行數(shù)據(jù)傳輸。這種通訊方式實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,成本低廉,一般又能滿足大多數(shù)場(chǎng)合對(duì)速度的要求,目前己得到廣泛的應(yīng)用。另外,為了保證可靠地進(jìn)行數(shù)據(jù)傳輸,通常在硬件設(shè)計(jì)上還要考慮握手信號(hào)。通訊雙方進(jìn)行應(yīng)答的過(guò)程中,速度較快的一方將受另一方的制約。在通訊量比較大的情況下,這種交互過(guò)程將浪費(fèi)相當(dāng)多的CPU時(shí)間。因此在信息量比較大的場(chǎng)合,運(yùn)用并行口進(jìn)行通訊就受到限制。此外,還可以采用共用存儲(chǔ)器的方法進(jìn)行信息傳輸,它可以達(dá)到更高的傳輸速度。傳統(tǒng)的共用存儲(chǔ)器硬件設(shè)計(jì)比普通的并行口復(fù)雜得多,應(yīng)用范圍較小。最近幾年出現(xiàn)的雙口RAM芯片內(nèi)含總線仲裁電路,提供兩套相互獨(dú)立的控制、地址和數(shù)據(jù)總線,可以大大簡(jiǎn)化共用存儲(chǔ)器電路設(shè)計(jì),使其應(yīng)用日益增多。因此,在此采用雙口RAM進(jìn)行數(shù)據(jù)傳輸。嵌入式PLC卡通訊部分的設(shè)計(jì)如圖2所示。
圖2 嵌入式PLC卡通訊部分原理圖
在圖2中,IDT7132為IDT公司生產(chǎn)的雙端口RAM芯片,容量2K字節(jié),它有兩套完全相同的地址、數(shù)據(jù)和控制總線,內(nèi)部含有總線仲裁電路,允許兩側(cè)總線同時(shí)對(duì)它進(jìn)行讀寫操作。當(dāng)兩側(cè)同時(shí)對(duì)該芯片的同一單元進(jìn)行讀寫時(shí),內(nèi)部仲裁電路會(huì)根據(jù)兩側(cè)讀寫控制信號(hào)微小的時(shí)間差,判決一側(cè)正常讀寫,同時(shí)在另一側(cè)給出BUSY信號(hào)(低有效),表示不能正常完成讀寫,它可用作等待信號(hào)來(lái)擴(kuò)展讀寫周期,以保證正確讀寫。
圖2中AT-BUS為PC機(jī)底板總線,也可稱作ISA總線。雖然在通用PC行業(yè),ISA有被其他更高速率的總線如PCI等替代的趨勢(shì),但高速率的總線同時(shí)也提高了對(duì)外圍擴(kuò)展線路板的要求,使可靠性有所降低,而且ISA總線己能滿足絕大多數(shù)工控系統(tǒng)對(duì)傳輸速率的要求,因此在工控領(lǐng)域仍占據(jù)重要地位。
AT總線的地址信號(hào)AO-A 10與IDT7132直接相連,A11-A19及AEN信號(hào)經(jīng)通用可編程芯片GAL16V8,產(chǎn)生IDT7132的片選信號(hào)。這種做法可以簡(jiǎn)化譯碼電路的設(shè)計(jì),且可以很方便地修改IDT7132的地址選擇,以免與工控機(jī)中己有的擴(kuò)展板發(fā)生沖突。一般地,PC系列機(jī)存儲(chǔ)器空間的OAOOOOH-OEFFFFH區(qū)域?yàn)関o擴(kuò)展卡保留,且某些標(biāo)準(zhǔn)uo設(shè)備如顯示適配器己經(jīng)占用了其中的一部分空間,因此本卡上IDT7132在工控PC機(jī)中占用存儲(chǔ)器空間應(yīng)提供多種選擇。例如,欲使IDT7132占用的地址空間為OD800:1000 -OD800:17FF,只需將GAL按以下邏輯編程:
1.2輸入/輸出(I/O)模塊的設(shè)計(jì)
嵌入式可編程控制器是一種工業(yè)控制計(jì)算機(jī),控制對(duì)象是工業(yè)生產(chǎn)設(shè)備或工業(yè)生產(chǎn)過(guò)程,工作于工業(yè)生產(chǎn)現(xiàn)場(chǎng),它與工業(yè)生產(chǎn)過(guò)程的聯(lián)系就是通過(guò)輸入輸出(I/O)模塊實(shí)現(xiàn)的。I/O接口模塊的任務(wù)是將被控對(duì)象或被控生產(chǎn)過(guò)程的各種變量進(jìn)行采集送入單片機(jī)處理,同時(shí)控制器又通過(guò)I/O模塊將運(yùn)算處理產(chǎn)生的輸出信息送到被控設(shè)備或生產(chǎn)現(xiàn)場(chǎng),驅(qū)動(dòng)各種執(zhí)行機(jī)構(gòu)動(dòng)作,實(shí)現(xiàn)實(shí)時(shí)控制。
在通常的PC工業(yè)控制中,需要用到多路輸入,單片機(jī)上可用的I/O端口數(shù)量有限而且寶貴。在此系統(tǒng)中,根據(jù)設(shè)計(jì)要求的輸入、輸出點(diǎn)數(shù),進(jìn)行I/O端口的擴(kuò)展。本次設(shè)計(jì)中所選用的I/O擴(kuò)展芯片是8255A。由于輸出模塊另選了其他元件,不需要在8255A上另辟輸出端口,因此8255A的三個(gè)端口全部都用作輸入。出于對(duì)可靠性及抗干擾兩方面的考慮,開(kāi)關(guān)量輸入信號(hào)經(jīng)濾波及光電禍合器隔離后送入8255,然后由驅(qū)動(dòng)器74LS245讀入單片機(jī)。設(shè)計(jì)中采用的輸出元件是德州儀器(TI)公司生產(chǎn)的邏輯功率器件TPIC6B273ND,該器件是一種單片、高電壓、中等電流的功率邏輯8位D型鎖存器,其將鎖存器和驅(qū)動(dòng)器做在單一芯片里,滿足了輸出模塊的要求,先將信號(hào)鎖存,而后在輸出刷新時(shí)驅(qū)動(dòng)負(fù)載,并且能提供15OmA的連續(xù)電流驅(qū)動(dòng)較大范圍的負(fù)載。開(kāi)關(guān)量輸出信號(hào)經(jīng)TPIC6B273ND鎖存及功率放大后送至繼電器板,由繼電器控制外部開(kāi)關(guān)設(shè)備的通斷。經(jīng)過(guò)這樣的設(shè)計(jì)使得輸出模塊結(jié)構(gòu)大大簡(jiǎn)化,一改傳統(tǒng)模塊體積大,電路連線復(fù)雜等缺陷。
2 嵌入式PLC的軟件設(shè)計(jì)
軟件設(shè)計(jì)有兩部分內(nèi)容,一個(gè)是工控PC機(jī)中相關(guān)程序設(shè)計(jì)(即上位機(jī)程序的設(shè)計(jì)或梯形圖集成開(kāi)發(fā)環(huán)境的設(shè)計(jì)),另一個(gè)是PLC卡自身所帶程序設(shè)計(jì)(下位機(jī)程序的設(shè)計(jì))。前者主要功能參圖3所示,一般基于Visual C++或Borland C++平臺(tái)進(jìn)行開(kāi)發(fā)。
在圖3中,梯形圖編程模塊為用戶提供方便的PLC電氣控制邏輯編程手段,其結(jié)果生成梯形圖文件。梯形圖文件僅存儲(chǔ)I/O點(diǎn)之間的邏輯關(guān)系,其格式與嵌入式PLC所用CPU類型無(wú)關(guān),以提高編程模塊的適應(yīng)性及可重用性。梯形圖編譯模塊則用于把該文件轉(zhuǎn)化為一系列的8051機(jī)器指令,并加上一些必要的附加指令,產(chǎn)生二進(jìn)制(BIN)指令碼文件。此部分應(yīng)當(dāng)考慮到PLC中I/O點(diǎn)的資源分布情況,使最后生成的BIN文件的指令與實(shí)際I/O資源協(xié)調(diào)一致。通訊模塊用于把BIN文件傳輸?shù)诫p口RAM中,再由PLC卡自身所帶的程序(下位程序)把它轉(zhuǎn)儲(chǔ)到靜態(tài)存儲(chǔ)器(6264)中。監(jiān)控模塊提供用戶對(duì)I/O點(diǎn)監(jiān)視與設(shè)置、PLC卡運(yùn)行狀態(tài)/編程狀態(tài)設(shè)置等功能,方便用戶現(xiàn)場(chǎng)調(diào)試。另外,為了使用戶能夠在自主開(kāi)發(fā)的應(yīng)用程序中對(duì)PLC卡進(jìn)行有效的監(jiān)控,此部分提供開(kāi)放的用戶接口。
圖3 PC機(jī)中軟件主要功能
嵌入式PLC卡自身所帶程序(下位程序)主要實(shí)現(xiàn)以下功能6264中邏輯處理程序(即由工控機(jī)傳來(lái)的BIN文件)及運(yùn)行狀態(tài)的有效性檢驗(yàn),I/O點(diǎn)及雙口RAM映射區(qū)域的周期性刷新,運(yùn)行故障監(jiān)測(cè)等。只有當(dāng)6264中已存有有效的BIN文件,且已設(shè)置好有效的運(yùn)行標(biāo)志時(shí),才能運(yùn)行6264中的邏輯處理程序。另外在運(yùn)行期間,運(yùn)用看門狗(Watch Dog)對(duì)運(yùn)行是否正常加以監(jiān)視,防止并處理諸如運(yùn)行6264中的程序時(shí)發(fā)生的超時(shí)錯(cuò),6264中的邏輯處理程序出錯(cuò)等異常情況。
3 結(jié)論
本文設(shè)計(jì)的嵌入式可編程控制器系統(tǒng)采用了插卡式結(jié)構(gòu),利用總線技術(shù)及雙端口RAM與工控 PC機(jī)進(jìn)行信息交換,速度快,可靠性高,實(shí)時(shí)性有保證。其可嵌入到工控PC機(jī)系統(tǒng)中,便于與用戶的軟硬件組合成更復(fù)雜的系統(tǒng)。此外,目前國(guó)內(nèi)有關(guān)嵌入式PLC系統(tǒng)的研發(fā)不是很多,本文的研究工作對(duì)推動(dòng)PLC控制系統(tǒng)國(guó)產(chǎn)化具有重要意義。