<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ISP微控制器的PLC實現方法

          基于ISP微控制器的PLC實現方法

          作者: 時間:2012-02-13 來源:網絡 收藏

          可編程序(Programmable Logic Controller,簡稱)把自動化技術、計算機技術和通信技術融為一體,按照成熟而有效的繼電控制概念和設計思想,用先進的微技術來I/O的實時檢測和控制。由于具有編程簡單、可靠性高、通用性強和使用方便等特點,因此得到廣泛應用。技術已經成為工科院校電工學的必修內容。但PLC的種類很多,發(fā)展很快,而指令系統(tǒng)和使用又不盡相同,使PLC的教學內容總是滯后于PLC的技術發(fā)展。為了改變這種狀況,我們以自帶在系統(tǒng)中編程()功能的、高性價比的微SM2965為核心,研制了功能的可編程序控制器,用于PLC控制實驗。下面介紹PLC的設計思路、硬件構成和軟件設計

          本文引用地址:http://www.ex-cimer.com/article/172117.htm

          一、采用微控制器SM2965設計PLC的思路

          為了滿足對嵌入式系統(tǒng)采用高級語言開發(fā)的需求,新一代微控制器配置了ISP功能,它是指在用戶設計的微控制器系統(tǒng)中為配置新的系統(tǒng)功能對器件進行重新編程的技術。在PLC中采用具有ISP功能的微控制器,不僅可以在線更新用戶程序,而且還可以在線升級系統(tǒng)程序。使PLC教學能緊跟PLC最新技術發(fā)展。

          (一)SM2965的特點

          SM2965的內核是標準的80C52,但在此基礎上擴展了以下功能:

          在系統(tǒng)中編程,編程電壓為+5V;

          64k字節(jié)快閃存儲器(FLASH E2PROM),ISP功能使FLASH E2PROM可在線編程;

          1k字節(jié)的RAM空間—256字節(jié)的片內RAM和768字節(jié)的片內擴展內存(EXRAM);

          可編程的看門狗定時器。

          可見,一片SM2965包含了標準的80C32、FLASH、E2PROM(28SF512)、SRAM(靜態(tài)數據存儲器)和WDT(看門狗定時器)SM2965是性價比極相當高的“單片”計算機。而其ISP特性使得FLASH E2PROM既可作為程序空間,也可像E2PROM一樣保存數據。以其為核心設計的PLC具有成本低、體積小、擴展方便及使用靈活等優(yōu)點。

          (二)由微控制器組成PLC的思路

          以微控制器為核心設計PLC,其硬件組成與微控制器測控系統(tǒng)基本相同。但在微控制器測控系統(tǒng)中,“測”和“控”的過程在時間上是串行關系。而PLC是按循環(huán)掃描方式進行工作的,每個掃描周期包括輸入采樣、程序執(zhí)行和輸出刷新三個階段,采用集中輸入、集中輸出并行關系的工作方式。若像微控制器測控系統(tǒng)一樣,對PLC梯形圖程序行依次實時采集輸入端子狀態(tài),進行處理后實時輸出,達不到PLC的控制效果。為此,在RAM區(qū)設置輸入緩沖作為輸入映像寄存器,采用一次性讀入全部輸入端子狀態(tài),并將其存入輸入緩沖區(qū),然后,按照梯形圖程序行的邏輯關系,從輸入緩沖區(qū)讀取相應輸入端子狀態(tài),運算處理后將待輸出的結果存入輸出緩沖區(qū)—元件映像寄存器。最后,當梯形圖程序行全部執(zhí)行完畢,一次性將輸出緩沖區(qū)的值輸出到相應的輸出端子,經過上述三個階段,完成一個程序掃描周期。如此往復,自動進行下一輪的掃描。這樣將串行程序工作和并行工業(yè)控制系統(tǒng)兩種關系協(xié)調起來。雖然存在輸入/輸出滯后現象,但微控制器執(zhí)行一條指令的時間是微秒級,執(zhí)行一個掃描周期的時間為幾毫秒,最大為幾十毫秒。相對于電器的動作時間而言,掃描周期是短暫的,可以認為在一個掃描周期內輸入端子的狀態(tài)是不變的,對其狀態(tài)變化的采集和處理也是實時的,從而滿足了實時控制的要求。

          二、硬件配置及系統(tǒng)資源分析

          系統(tǒng)硬件配置以微控制器SM2965為核心,如圖1所示。

          34.jpg

          該微控制器有64k字節(jié)的FLASH存儲器和1k字節(jié)的RAM,不必擴展外部存儲器,其接口P0~P3全部可作為I/O使用。輸入端子經光電隔離后連到P0口的8個腳。用于開關量的輸入。開關接通時,相應引腳為“1”,開關斷開時,相應引腳為“0”。在輸入采樣階段,MCU(微控制器)讀P0口的狀態(tài),存入輸入緩沖區(qū)相當于輸入映像寄存器。P2口作為PLC的輸出鎖存器。在輸出刷新階段,將輸出緩沖區(qū)的內容轉存到P2口鎖存器,P2口8個引腳經光電隔離后直接驅動輸出設備的執(zhí)行機構。P3口將鍵盤、顯示器和微型打印機等外設與PLC連接,使PLC可脫離主機單獨使用。P1作為I/O擴展接口,當輸入、輸出設備所需I/O點數超過P0和P2所提供的I/O點數時,可由P1口通過I/O擴展單元加以擴展。用P1.6和P1.7口軟件模擬I2C總線接口,帶有I2C總線的I/O接口器件、A/D和D/A轉換器件作為I2C的從器件與此相連后即可增加I/O點數和擴展其他功能。系統(tǒng)配置電平轉換集成電路ICL232,將TTL電平轉換為RS232C電平,可直接與主機相連進行串行通信。SM2965內部自帶可編程看門狗電路,其外部僅用簡單的阻容復位即可。

          SM2965片內ROM空間分配如圖2所示,PLC系統(tǒng)程序、中斷控制設置在低地址空間,系統(tǒng)上電復位從0000H地址直接跳轉到PLC系統(tǒng)程序的入口地址,進入PLC監(jiān)控。下載引導程序位于F000H~FFFFH地址范圍,系統(tǒng)上電復位如檢測到0000H地址的內容為空“#0FFH”,則自動跳轉到下載引導程序的入口地址為F000H,用于升級或更新PLC系統(tǒng)程序。E000H~EFFFH空間固化了若干個PLC控制范例供實驗時參照。

          35.jpg

          SM2965片內768字節(jié)RAM作為PLC的梯形圖緩沖區(qū),將源程序用PLC匯編器匯編成PLC目標代碼文件,并經串行通信口發(fā)送到SM2965,由SM2965將其寫入梯形圖緩沖區(qū)。系統(tǒng)無須配置編程器。

          三、系統(tǒng)軟件組成

          系統(tǒng)軟件包括微控制器軟件和PC機集成軟件兩部分。為方便系統(tǒng)維護和升級,微控制器軟件采用C51編寫,對實時性要求較高的部分使用匯編語言編寫。微控制器軟件主要包括下載引導程序、系統(tǒng)主程序、PLC指令分析程序及串行口中斷程序。下載引導程序僅在系統(tǒng)升級時調用。微控制器軟件組成如圖3所示。

          38.jpg

          PLC程序按輸入采樣、執(zhí)行梯形圖程序行及輸出刷新三個階段進行周期性的循環(huán)掃描,在輸入采樣時,間隔2ms連續(xù)三次采集P0口狀態(tài),結果全相同時為有效,即將其存入輸入緩沖區(qū),否則重新采樣,以此提高抗干擾能力。執(zhí)行梯形圖程序行時依次讀取PLC運行緩沖區(qū)數據進行運算,遇到“=”指令時將運算結果存入輸出緩沖區(qū)。當MCU從運行緩沖區(qū)讀到“MEND”指令的二進制代碼時,表示梯形圖程序結束,然后將輸出緩沖區(qū)的內容一次性輸出到P2口,從而完成輸出端子的刷新。

          PLC上位機軟件如圖4所示,采用Visual C++6.0編寫,主要由串行通信程序和PLC匯編語言匯編器組成,還包括更新范例、裝載范例、裝載指定實驗、系統(tǒng)實時監(jiān)控、模擬仿真、系統(tǒng)升級和在線幫助等輔助模塊。寫完梯形圖源程序后,用PLC匯編器將其匯編成目標程序文件(OBJ文件)。選取主菜單裝載指定實驗,再選定相應的OBJ文件,該段目標代碼即被傳送到PLC運行緩沖區(qū)。主菜單上的“更新范例”對應于微控制器的“更新指定范例”模塊。調用更新范例和系統(tǒng)升級命令時需要輸入權限密碼。

          39.jpg

          c++相關文章:c++教程



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();