基于ISP微控制器的PLC實(shí)現(xiàn)方法
可編程序控制器(Programmable Logic Controller,簡(jiǎn)稱PLC)把自動(dòng)化技術(shù)、計(jì)算機(jī)技術(shù)和通信技術(shù)融為一體,按照成熟而有效的繼電控制概念和設(shè)計(jì)思想,用先進(jìn)的微控制器技術(shù)來實(shí)現(xiàn)I/O的實(shí)時(shí)檢測(cè)和控制。由于PLC具有編程簡(jiǎn)單、可靠性高、通用性強(qiáng)和使用方便等特點(diǎn),因此得到廣泛應(yīng)用。PLC技術(shù)已經(jīng)成為工科院校電工學(xué)的必修內(nèi)容。但PLC的種類很多,發(fā)展很快,而指令系統(tǒng)和使用方法又不盡相同,使PLC的教學(xué)內(nèi)容總是滯后于PLC的技術(shù)發(fā)展。為了改變這種狀況,我們以自帶在系統(tǒng)中編程(ISP)功能的、高性價(jià)比的微控制器SM2965為核心,研制了基于ISP功能的可編程序控制器,用于PLC控制實(shí)驗(yàn)。下面介紹PLC的設(shè)計(jì)思路、硬件構(gòu)成和軟件設(shè)計(jì)方法。
本文引用地址:http://2s4d.com/article/172117.htm一、采用ISP微控制器SM2965設(shè)計(jì)PLC的思路
為了滿足對(duì)嵌入式系統(tǒng)采用高級(jí)語言開發(fā)的需求,新一代微控制器配置了ISP功能,它是指在用戶設(shè)計(jì)的微控制器系統(tǒng)中為配置新的系統(tǒng)功能對(duì)器件進(jìn)行重新編程的技術(shù)。在PLC中采用具有ISP功能的微控制器,不僅可以在線更新用戶程序,而且還可以在線升級(jí)系統(tǒng)程序。使PLC教學(xué)能緊跟PLC最新技術(shù)發(fā)展。
(一)SM2965的特點(diǎn)
SM2965的內(nèi)核是標(biāo)準(zhǔn)的80C52,但在此基礎(chǔ)上擴(kuò)展了以下功能:
在系統(tǒng)中編程,編程電壓為+5V;
64k字節(jié)快閃存儲(chǔ)器(FLASH E2PROM),ISP功能使FLASH E2PROM可在線編程;
1k字節(jié)的RAM空間—256字節(jié)的片內(nèi)RAM和768字節(jié)的片內(nèi)擴(kuò)展內(nèi)存(EXRAM);
可編程的看門狗定時(shí)器。
可見,一片SM2965包含了標(biāo)準(zhǔn)的80C32、FLASH、E2PROM(28SF512)、SRAM(靜態(tài)數(shù)據(jù)存儲(chǔ)器)和WDT(看門狗定時(shí)器)SM2965是性價(jià)比極相當(dāng)高的“單片”計(jì)算機(jī)。而其ISP特性使得FLASH E2PROM既可作為程序空間,也可像E2PROM一樣保存數(shù)據(jù)。以其為核心設(shè)計(jì)的PLC具有成本低、體積小、擴(kuò)展方便及使用靈活等優(yōu)點(diǎn)。
(二)由微控制器組成PLC的思路
以微控制器為核心設(shè)計(jì)PLC,其硬件組成與微控制器測(cè)控系統(tǒng)基本相同。但在微控制器測(cè)控系統(tǒng)中,“測(cè)”和“控”的過程在時(shí)間上是串行關(guān)系。而PLC是按循環(huán)掃描方式進(jìn)行工作的,每個(gè)掃描周期包括輸入采樣、程序執(zhí)行和輸出刷新三個(gè)階段,采用集中輸入、集中輸出并行關(guān)系的工作方式。若像微控制器測(cè)控系統(tǒng)一樣,對(duì)PLC梯形圖程序行依次實(shí)時(shí)采集輸入端子狀態(tài),進(jìn)行處理后實(shí)時(shí)輸出,達(dá)不到PLC的控制效果。為此,在RAM區(qū)設(shè)置輸入緩沖作為輸入映像寄存器,采用一次性讀入全部輸入端子狀態(tài),并將其存入輸入緩沖區(qū),然后,按照梯形圖程序行的邏輯關(guān)系,從輸入緩沖區(qū)讀取相應(yīng)輸入端子狀態(tài),運(yùn)算處理后將待輸出的結(jié)果存入輸出緩沖區(qū)—元件映像寄存器。最后,當(dāng)梯形圖程序行全部執(zhí)行完畢,一次性將輸出緩沖區(qū)的值輸出到相應(yīng)的輸出端子,經(jīng)過上述三個(gè)階段,完成一個(gè)程序掃描周期。如此往復(fù),自動(dòng)進(jìn)行下一輪的掃描。這樣將串行程序工作和并行工業(yè)控制系統(tǒng)兩種關(guān)系協(xié)調(diào)起來。雖然存在輸入/輸出滯后現(xiàn)象,但微控制器執(zhí)行一條指令的時(shí)間是微秒級(jí),執(zhí)行一個(gè)掃描周期的時(shí)間為幾毫秒,最大為幾十毫秒。相對(duì)于電器的動(dòng)作時(shí)間而言,掃描周期是短暫的,可以認(rèn)為在一個(gè)掃描周期內(nèi)輸入端子的狀態(tài)是不變的,對(duì)其狀態(tài)變化的采集和處理也是實(shí)時(shí)的,從而滿足了實(shí)時(shí)控制的要求。
二、硬件配置及系統(tǒng)資源分析
系統(tǒng)硬件配置以微控制器SM2965為核心,如圖1所示。
該微控制器有64k字節(jié)的FLASH存儲(chǔ)器和1k字節(jié)的RAM,不必?cái)U(kuò)展外部存儲(chǔ)器,其接口P0~P3全部可作為I/O使用。輸入端子經(jīng)光電隔離后連到P0口的8個(gè)腳。用于開關(guān)量的輸入。開關(guān)接通時(shí),相應(yīng)引腳為“1”,開關(guān)斷開時(shí),相應(yīng)引腳為“0”。在輸入采樣階段,MCU(微控制器)讀P0口的狀態(tài),存入輸入緩沖區(qū)相當(dāng)于輸入映像寄存器。P2口作為PLC的輸出鎖存器。在輸出刷新階段,將輸出緩沖區(qū)的內(nèi)容轉(zhuǎn)存到P2口鎖存器,P2口8個(gè)引腳經(jīng)光電隔離后直接驅(qū)動(dòng)輸出設(shè)備的執(zhí)行機(jī)構(gòu)。P3口將鍵盤、顯示器和微型打印機(jī)等外設(shè)與PLC連接,使PLC可脫離主機(jī)單獨(dú)使用。P1作為I/O擴(kuò)展接口,當(dāng)輸入、輸出設(shè)備所需I/O點(diǎn)數(shù)超過P0和P2所提供的I/O點(diǎn)數(shù)時(shí),可由P1口通過I/O擴(kuò)展單元加以擴(kuò)展。用P1.6和P1.7口軟件模擬I2C總線接口,帶有I2C總線的I/O接口器件、A/D和D/A轉(zhuǎn)換器件作為I2C的從器件與此相連后即可增加I/O點(diǎn)數(shù)和擴(kuò)展其他功能。系統(tǒng)配置電平轉(zhuǎn)換集成電路ICL232,將TTL電平轉(zhuǎn)換為RS232C電平,可直接與主機(jī)相連進(jìn)行串行通信。SM2965內(nèi)部自帶可編程看門狗電路,其外部?jī)H用簡(jiǎn)單的阻容復(fù)位即可。
SM2965片內(nèi)ROM空間分配如圖2所示,PLC系統(tǒng)程序、中斷控制設(shè)置在低地址空間,系統(tǒng)上電復(fù)位從0000H地址直接跳轉(zhuǎn)到PLC系統(tǒng)程序的入口地址,進(jìn)入PLC監(jiān)控。下載引導(dǎo)程序位于F000H~FFFFH地址范圍,系統(tǒng)上電復(fù)位如檢測(cè)到0000H地址的內(nèi)容為空“#0FFH”,則自動(dòng)跳轉(zhuǎn)到下載引導(dǎo)程序的入口地址為F000H,用于升級(jí)或更新PLC系統(tǒng)程序。E000H~EFFFH空間固化了若干個(gè)PLC控制范例供實(shí)驗(yàn)時(shí)參照。
SM2965片內(nèi)768字節(jié)RAM作為PLC的梯形圖緩沖區(qū),將源程序用PLC匯編器匯編成PLC目標(biāo)代碼文件,并經(jīng)串行通信口發(fā)送到SM2965,由SM2965將其寫入梯形圖緩沖區(qū)。系統(tǒng)無須配置編程器。
三、系統(tǒng)軟件組成
系統(tǒng)軟件包括微控制器軟件和PC機(jī)集成軟件兩部分。為方便系統(tǒng)維護(hù)和升級(jí),微控制器軟件采用C51編寫,對(duì)實(shí)時(shí)性要求較高的部分使用匯編語言編寫。微控制器軟件主要包括下載引導(dǎo)程序、系統(tǒng)主程序、PLC指令分析程序及串行口中斷程序。下載引導(dǎo)程序僅在系統(tǒng)升級(jí)時(shí)調(diào)用。微控制器軟件組成如圖3所示。
PLC程序按輸入采樣、執(zhí)行梯形圖程序行及輸出刷新三個(gè)階段進(jìn)行周期性的循環(huán)掃描,在輸入采樣時(shí),間隔2ms連續(xù)三次采集P0口狀態(tài),結(jié)果全相同時(shí)為有效,即將其存入輸入緩沖區(qū),否則重新采樣,以此提高抗干擾能力。執(zhí)行梯形圖程序行時(shí)依次讀取PLC運(yùn)行緩沖區(qū)數(shù)據(jù)進(jìn)行運(yùn)算,遇到“=”指令時(shí)將運(yùn)算結(jié)果存入輸出緩沖區(qū)。當(dāng)MCU從運(yùn)行緩沖區(qū)讀到“MEND”指令的二進(jìn)制代碼時(shí),表示梯形圖程序結(jié)束,然后將輸出緩沖區(qū)的內(nèi)容一次性輸出到P2口,從而完成輸出端子的刷新。
PLC上位機(jī)軟件如圖4所示,采用Visual C++6.0編寫,主要由串行通信程序和PLC匯編語言匯編器組成,還包括更新范例、裝載范例、裝載指定實(shí)驗(yàn)、系統(tǒng)實(shí)時(shí)監(jiān)控、模擬仿真、系統(tǒng)升級(jí)和在線幫助等輔助模塊。寫完梯形圖源程序后,用PLC匯編器將其匯編成目標(biāo)程序文件(OBJ文件)。選取主菜單裝載指定實(shí)驗(yàn),再選定相應(yīng)的OBJ文件,該段目標(biāo)代碼即被傳送到PLC運(yùn)行緩沖區(qū)。主菜單上的“更新范例”對(duì)應(yīng)于微控制器的“更新指定范例”模塊。調(diào)用更新范例和系統(tǒng)升級(jí)命令時(shí)需要輸入權(quán)限密碼。
c++相關(guān)文章:c++教程
評(píng)論