?

基于單片機開發可編程控制器的研究

2016-12-26 09:39王善紅
中國新技術新產品 2016年23期
關鍵詞:梯形圖單片機

王善紅

摘 要:本文設計了一種基于單片機開發控制器的新方案以實現內核驅動與邏輯運算、控制分離。

關鍵詞:單片機;梯形圖;結構化數據;自編程

中圖分類號:TP334 文獻標識碼:A

一、概述

通?;趩纹瑱C開發的智能控制器,因內部程序已固化,開發完成后,其功能基本定型,只能應用于設計時的特定目標,現場如需變更控制方案也非常困難。針對這一短板,我們設計一種基于單片機開發控制器的一種新方案,實現內核驅動與邏輯運算、控制分開,并以簡明梯形圖語言實現運行邏輯編程,不僅擴展了控制器的應用范圍,而且減輕現場調試難度,控制方案的變動,只需修改梯形圖邏輯即可解決。

二、原理

單片機應具備的特性:足夠容量的可擦寫flash程序存儲器,支持IAP功能,現在大多單片機芯片都支持用戶自編程IAP功能,如Atmega128、STM32F3、STM32F4系列皆能滿足要求。首先將單片機flash存儲器劃分為3塊,一部分存儲實現IAP功能的Boot Loader程序,一部分存儲單片機內核程序,余下的部分用于存儲用戶程序。內核程序主要是硬件驅動及用戶程序間代碼接口與算法。用戶程序即為用梯形圖編輯工具形成順序控制邏輯,比較規則及數據輸出去向等。

內核程序周期性地掃描內外部設備內存映射地址,并調用用戶區邏輯運算,將結果以數據量及消息量的方式輸出到設備,如此周而復始,完成用戶邏輯的控制方案。

三、具體實現

單片機如何實現硬件驅動及通信不在本議題討論范圍內,重點論述如何實現梯形圖編譯工具軟件與單片機執行梯形圖控制邏輯。

1.用戶程序編輯與編譯(梯形圖編譯工具):

梯形圖的編輯元器件主要包括常開接點、常閉接點、繼電器等簡單元件和定時、比較等功能元器件。為了靈活應用和擴展編輯元器件,方便編程,將梯形圖元件數據結構定義如下:

type

Tmdevice=record

name: string[4]; //元件名稱

mclass: byte; //元件類型

memo: string; //元件備注,消息變量為消息變量實體

end;

其中Mclass的取值0:開關量輸入(DI),1:開關量輸出(DO),2:定時器(T),3:計數器(C),4:內部繼電器(M),5:數據寄存器(D),6:消息輸入(MI),7:消息輸出(MO)。

梯形圖用戶程序我們可以看成是有限個邏輯節點構成固定列寬,可擴展行數的表,每個節點代表元件加邏輯操作構成的數據結構體,因此首先定義節點數據結構:

Type

Tprodata=record

Opclass: byte; //節點類型(元件類型+連接類連)

notop: byte; //操作碼

Address: byte; //操作數內存地址

Chadd: word; //比較數

end;

依據上述約定實現繪制的梯形圖,如圖1所示。

2.梯形圖邏輯掃描算法

梯形圖語言描述一個邏輯網絡自左向右的能量潮,元件的邏輯運算總是與左側的運算“與”運算,分支總是與左側結果“或”運算,逐行掃描遇分支節點先將運算結果壓入棧,掃描暫時放棄分支節點右側元件,進行下一行掃描,如遇分支,繼續執行壓棧,一直掃描到沒有分支時,將結果與棧頂“或”運算,執行出棧(先進先出原則),同時判斷棧頂節點連接類型,決定下一步是出棧還是掃描,如遇出棧節點有右側分支,則掃描右側元件,并作邏輯運算,直至掃描至行結束標志節點,并將運算結果賦值與最后節點元件,因此位于結束標志點的元件一定是輸出型元件。如果在掃描過程中,能量潮在開始標志與結束標志中有中斷或能量潮開始與結束標志不完整,都視為梯形圖編譯未能通過。

我們將上面元件掃描順序及元件操作類型記錄在一個順序數據組中,這個順序數組結構應是這樣:

Type

Tprodata=record

Oprate: byte; //數據運算類型

selfop: byte; //自身附加運算

Address: byte;//元件內存映射地址

Chadd: word;//比較運算值

end;

其中Oprate對應的邏輯運算,1表示與,2表示異或,4表示賦值,5表示壓棧,6表示出棧,7表示棧更新,8表示定時器操作,9:定時器溢出處理,10:計數器操作,11:計算器溢出處理,12:表示位操作,13:寄存器數值比較。

然后定義一個Tprodata類型變長數組,將上面梯形圖掃描編譯順序結果存放在這個變長數組中,最后將這個數據數據按Intel Hex格式格式化輸出文件,并保存在磁硬盤中。

3.下載用戶程序到單片機用戶程序寄存器

單片機具有自編程(IAP)功能,將梯形圖編譯結果文件(Intel Hex格式)下載到單片機用戶程序寄存器分區,因用戶程序寄存器分區是可單獨通過IAP擦寫,這樣修改控制器運行邏輯,只需修改梯形圖,編譯下載就可實現控制邏輯與內核程序分離。

4.單片機執行梯形圖邏輯實現

5.梯形圖元件在單片機內存映射

單片機內核程序中首先定義一組元件內存映射,數組的大小與梯形圖中元件數組大小一致,并保持與梯形圖編輯工具中元件類型對應,這里定義為u16 opdate[255]。

為處理梯形圖用戶邏輯,在單片機內核程序中建立幾個接口函數,如圖2所示。

接口函數實現方式中已明確了數據處理細節,單片機內核循環執行ReadDI()、checkprodata()、OutDO()函數。ReadDI()將輸入端口的邏輯狀態讀入映射區。通信控制字、消息輸入通過中斷接口調用中斷處理函數將數據存入相應的內存映射地址,checkprodata()順序讀取、處理用戶邏輯,并將邏輯運算、比較結果傳遞相應的輸出映射內存地址,OutDO()函數將輸出映射地址中的結果輸出控制器的輸出端。通過圖3更清晰彼此間的作用機制。

結論

本文設計基于單片機開發智能控制器,實現內核程序與用戶控制邏輯分離,控制邏輯通過梯形圖編輯工具編譯與下載,控制目標的變更,只需修改梯形圖邏輯即可實現。此設計方案成功應用在江蘇鹽城供電公司東郊變、安泰變環境監測與報警,智能排水不同控制目標。

參考文獻

[1]杜開初.基于AT89C51單片機的微型可編程控制器[J].單片機與嵌入式系統應用,2002(1):17-18.

猜你喜歡
梯形圖單片機
基于單片機的SPWM控制逆變器的設計與實現
基于單片機的層次漸變暖燈的研究
基于單片機的便捷式LCF測量儀
小議PLC與單片機之間的串行通信及應用
基于VC的梯形圖編程軟件開發技術
基于單片機的平衡控制系統設計
繼電器電路轉為梯形圖教學經驗淺談
PLC編譯功能的實現
一種可編程邏輯控制程序的競態檢測方法
PLC梯形圖程序設計技巧及應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合