李 靜,蔡啟仲,張 煒,張玲玲
(1.桂林電子科技大學電子工程與自動化學院,廣西桂林 541004;2.廣西科技大學電氣與信息工程學院,廣西柳州 545006)
可編程控制器(PLC:Programmable Controller)是現(xiàn)代工業(yè)控制極其重要的核心器件。PLC在輸入采集階段讀入所有開關(guān)量的狀態(tài),并存入輸入映像存儲器,在PLC用戶程序執(zhí)行過程中,需要頻繁地對輸入映像存儲器進行讀操作,讀取PLC指令執(zhí)行所需開關(guān)量軟元件的位信息或4位1組以及多組4位1組信息構(gòu)成的開關(guān)量數(shù)據(jù)[1-2]。為了簡便高速地讀取相應的位信息和數(shù)據(jù),利用FPGA高效的運算能力和并行處理的特點,設(shè)計PLC輸入存儲與讀取控制器,在內(nèi)部時序脈沖控制下,通過地址運算或移位方法迅速讀取開關(guān)量的位信息和數(shù)據(jù),解決控制器的時序脈沖與命令執(zhí)行過程中的相關(guān)問題,從而有效地提高可編程控制器執(zhí)行指令的速度。
1.1系統(tǒng)基本功能
(1)輸入信號采集:PLC輸入采集階段,直接讀取PLC輸入端口開關(guān)量信息傳輸給映像存儲器,采取一次讀入64位數(shù)據(jù)的方式。
(2)高速輸入位信息的讀取:在PLC執(zhí)行高速指令時直接從PLC的輸入端口X00~X07讀取1位信息。
(3)PLC程序執(zhí)行過程中位信息的讀?。涸赑LC執(zhí)行程序時直接從映像存儲器讀取位信息,這是PLC執(zhí)行程序時使用頻率最高的功能。
(4)PLC程序執(zhí)行過程中數(shù)據(jù)信號的讀?。哼@是針對PLC程序執(zhí)行過程中類似于X4K3這樣由位組成的數(shù)據(jù),針對這種情況PLC 需要讀取4位信息為1組或多組以4位信息為1組的信息(即4,8,12,16,20,24,28,32位的形式)。
根據(jù)系統(tǒng)的4個基本功能確定系統(tǒng)的4個功能命令:輸入信號采集命令、高速輸入位信息讀取命令、位信息讀取命令和數(shù)據(jù)信號讀取命令。
1.2系統(tǒng)整體方案
系統(tǒng)整體設(shè)計框圖如圖1所示,分為6個部分:PLC輸入端口與映像存儲模塊、命令譯碼與操作地址信息模塊、高速輸入位信息控制模塊、位信息讀取控制模塊、數(shù)據(jù)傳輸控制模塊和存儲矩陣模塊。
其工作流程為:系統(tǒng)一個寫脈沖WR寫入命令,經(jīng)過譯碼得到執(zhí)行的功能命令;執(zhí)行輸入信號采集命令時,將PLC輸入端口的信息以64位的形式一次讀入映像存儲器,并在內(nèi)部時序脈沖作用下自主完成4位1組輸入數(shù)據(jù)的所有數(shù)據(jù)的組合,并按照順序存入存儲矩陣中。執(zhí)行讀取命令時,一個讀脈沖RD即可讀出位信息、高速輸入位信息或數(shù)據(jù)至系統(tǒng)數(shù)據(jù)總線[3-4]。
圖1 PLC輸入存儲與讀取控制器結(jié)構(gòu)圖
PLC共有64個輸入端口X00~X63;系統(tǒng)復位信號為低電平有效;系統(tǒng)地址總線定義為5位,地址值為本模塊地址時,使能片選信號;總線通過32位數(shù)據(jù)總線D31~D0寫入命令和操作位;用WR和RD控制數(shù)據(jù)的寫和讀,當寫信號WR作用時將來自系統(tǒng)數(shù)據(jù)總線的命令字寫入命令譯碼與操作地址信息模塊;當讀信號RD作用時,讀出位信息或數(shù)據(jù)至系統(tǒng)數(shù)據(jù)總線[5-6]。
2.1PLC輸入端口與映像存儲模塊
PLC輸入端口與映像存儲模塊由PLC輸入端口、PLC輸入調(diào)理電路、FPGA輸入端口、64位入64位出輸入映像存儲器組成。
PLC輸入端口與外部輸入開關(guān)和PLC輸入調(diào)理電路連接,PLC輸入端口從外部輸入開關(guān)獲得64位開關(guān)量信息,并將開關(guān)量信息傳輸給PLC輸入調(diào)理電路,PLC輸入調(diào)理電路將0~24 V開關(guān)量調(diào)理成為FPGA端口輸入對應的0~3 V信號,并對開關(guān)信號濾波,消除開關(guān)輸入信號的抖動。在輸入采集信號的作用下,將64位開關(guān)量信號存入64位入64位出輸入映像存儲器中。
2.2命令譯碼與操作地址信息模塊
命令譯碼與操作地址信息模塊是PLC輸入存儲與讀取控制器的控制核心,用來完成輸入命令的譯碼和操作地址的存儲。該模塊主要包括模塊地址識別、命令寄存器和操作特征譯碼器。
系統(tǒng)選定PLC輸入存儲與讀取控制器工作時,系統(tǒng)地址總線的地址值和模塊地址相同,模塊地址識別輸出片選信號為“0”,使能命令寄存器,在系統(tǒng)寫脈沖WR作用下,將系統(tǒng)32位數(shù)據(jù)(D31~D0)存儲在命令寄存器中,操作特征譯碼器根據(jù)存儲在命令寄存器中的3位命令字,決定執(zhí)行的命令。
系統(tǒng)數(shù)據(jù)總線輸入的命令字主要分為3部分:操作特征編碼線、X元件編號、3位X組值。
(1)操作特征編碼線(D11~D9):操作特征編碼線經(jīng)過譯碼輸出5個譯碼值作為輸入模塊4個功能的命令線和復位輸出。操作特征編碼如表1所示。
表1 操作特征編碼
(2)X元件編號(D8~D3):作為讀取命令時軟元件尋址的地址編碼。位信息讀取時,編碼位分為2部分:高4位(D8~D5)作為X軟元件的組編碼地址,每4個X軟元件編為1組,低2位(D4~D3)作為X軟元件的組內(nèi)編碼地址;高速輸入位信息讀取時只取X元件編號的低3位(D5~D3)作為元件的尋址地址;數(shù)據(jù)信號讀取命令作用時,用X元件編號的高4位(D8~D5)來尋找組內(nèi)首元件的地址。
(3)3位X組值(D2~D0):數(shù)據(jù)信號讀取命令作用時,X組值用來尋找組號K1~K8。
2.3位信息讀取控制模塊
位信息讀取控制模塊主要由64位入4位出存儲模塊、4位入1位出控制模塊和三態(tài)門組成。圖2為位信息讀取控制模塊結(jié)構(gòu)圖。
圖2 位信息讀取控制模塊結(jié)構(gòu)圖
寫脈沖WR作用時,6位X元件編號通過命令寄存器直接寫進來,按照X元件編號高4位編碼地址,選定64位入4位出存儲模塊中1組4位信息輸出至4位入1位出控制模塊;根據(jù)X元件編號的低2位指定的組內(nèi)編碼地址選定4位入1位出控制模塊的1位信息輸出至三態(tài)門的輸入端口;在位信息讀取命令和讀信號RD的作用時,三態(tài)門輸出位信息至系統(tǒng)數(shù)據(jù)總線的D0位。
位信息的尋址設(shè)計:用X元件編號實現(xiàn)尋址,首先將X63~X00軟元件4位1組進行分組,64位共計16組,每個組內(nèi)的4個元件編號的高4位二進制數(shù)相同,為0000H~1111H。用X元件編號的高4位來表示這16組的首元件地址,然后將每個組內(nèi)的4個元件用X元件編號的低2位來尋址,從首元件開始依次為00~11。例如X53,X元件編號為110101,高4位地址為1101(52),先選定X55~X52這一組,然后根據(jù)低二位地址01,選定X53的位信息。
2.4高速輸入位信息控制模塊
該模塊主要由3-8譯碼器和8個三態(tài)門組成。
3-8譯碼器的輸入端是X元件編號低3位,輸出端分別作為8個三態(tài)門的控制信號,低電平有效;8個三態(tài)門的輸入端對應X0~X7的8個軟元件位信息。當高速輸入位信息讀取命令作用時,3-8譯碼器使能,按照X元件編號低3位譯碼輸出,3-8譯碼器有1個輸出端為“0”,選定一個三態(tài)門導通,在讀信號RD作用下,讀出選定的軟元件位信息至數(shù)據(jù)總線的D0位。
2.5存儲矩陣模塊
存儲矩陣模塊主要實現(xiàn)PLC應用指令中由位組成的數(shù)據(jù)的存儲。基本思路是:設(shè)計一個雙端口存儲矩陣,存儲4位1組或多組4位1組的數(shù)據(jù),將所有這種數(shù)據(jù)組合存儲在矩陣中的相應位置;PLC執(zhí)行程序過程中,數(shù)據(jù)信號讀取命令作用時,根據(jù)地址運算的結(jié)果選定雙端口存儲矩陣的單元內(nèi)容,讀出4位1組的信息。該模塊主要包括存儲矩陣、-1計數(shù)器。圖3為存儲矩陣控制模塊結(jié)構(gòu)圖。
圖3 存儲矩陣控制模塊結(jié)構(gòu)圖
該存儲矩陣共有100個存儲單元,表2是存儲矩陣00~09H地址單元存儲內(nèi)容示意圖,對于每個首個X的K值按照K1、K2~K8排列,寫入操作按照表中的順序輸入,例如,第1行~第8行,首先寫入地址為00的存儲單元的內(nèi)容為X00~X04的位信息。然后將X00~X04、X05~X08的信息寫入地址為01的存儲單元,依次類推按照順序存儲。觀察K1X00和K1X04,序號1的X00的地址為00,序號9的X04的地址為08,恰好是4位1組的4位數(shù)據(jù)的首元件編號的2倍。確定存儲矩陣的讀出地址有7位,由2個參數(shù)組成,一是X元件編號高4位,其值從0000~1000,將其與存儲矩陣的高4位地址線連接。二是3位X組值,確定K1~K8這樣的組號,將K值[組號]-1的值與存儲矩陣的低三位地址線連接。
最終得出存儲矩陣地址運算公式:
任何一個單元地址的計算=X元件首地址×2+(K值[組號]-1)
2.6數(shù)據(jù)傳輸控制模塊
數(shù)據(jù)傳輸控制模塊為存儲矩陣模塊提供地址運算和時序控制。該模塊由地址與時序控制模塊、64入4位出存儲模塊、4入32位出存儲模塊和脈沖分配器組成。其中,脈沖分配器是PLC輸入存儲與讀取控制器實現(xiàn)自主控制的重要手段。圖4為脈沖分配器脈沖輸出波形。
表2 存儲矩陣示意表格
圖4 脈沖分配器脈沖輸出波形
輸入信號采集命令作用時,啟動脈沖分配器作為該模塊的內(nèi)部時序控制信號。脈沖A作用時,將映像存儲器中的X63~X00的軟元件信息存儲在64位入4位出存儲模塊;脈沖B作用時,按照地址與時序控制模塊的地址運算結(jié)果指定的4位數(shù)據(jù)輸出到內(nèi)數(shù)據(jù)總線;脈沖C作用時,4位入32位輸出存儲模塊按照地址與時序控制模塊的運算結(jié)果,將數(shù)據(jù)線上的4位數(shù)據(jù)信息存進相應的存儲單元。脈沖D作用時,按照地址與時序控制模塊運算的地址值輸出32位信息至存儲矩陣模塊。
完成相應設(shè)計后,采用在底層設(shè)計方面更具優(yōu)勢的Verilog HDL語言來完成有關(guān)硬件的描述,編寫testbench.v文件用于模擬外部系統(tǒng)輸入信號,然后使用ModelSim軟件進行功能仿真,觀察該控制器內(nèi)部數(shù)據(jù)的變化以及外部端口的輸出狀態(tài)[7-8]。
測試方法為:
(1)根據(jù)各個模塊的功能要求編程完成仿真,然后編寫頂層文件,將這些模塊例化在頂層文件中,使其關(guān)聯(lián)起來;
(2)對PLC輸入存儲與讀取控制器的輸入采集命令以及3種讀取方式進行測試。寫入功能命令,測試該控制器能否完成位信息或數(shù)據(jù)的正確讀取[9-10]。
PLC輸入存儲與讀取控制器位信息讀取仿真圖如圖5所示。寫入PLC輸入采集命令Ox00000209,將64位開關(guān)量信息Ox1111111111111111存入映像存儲器,同時啟動脈沖分配器工作,在內(nèi)部時序脈沖的作用下獨立完成數(shù)據(jù)的讀入操作;寫入數(shù)據(jù)信號讀取命令Ox00000C09 ,當讀信號RD使能時,讀出存儲矩陣中地址為00H的4位信息為1組的數(shù)據(jù)Ox00000001,寫入Ox00000C0A命令時,讀出存儲矩陣中地址01H的2組4位信息為1組的數(shù)據(jù)Ox00000011;寫入高速位信息讀取命令Ox00000601和位信息讀取命令Ox00000409時,在讀信號RD作用下,分別讀出位信息X0和X1至系統(tǒng)數(shù)據(jù)總線D0位,如圖5中所示D0分別為1和0。符合設(shè)計要求。
圖5 PLC輸入存儲與讀取控制器位信息讀取仿真圖
經(jīng)測試,無論是讀取輸入位信息、高速輸入位信息還是數(shù)據(jù)信號,只需要在系統(tǒng)的寫信號WR作用下將命令寫入命令寄存器,在系統(tǒng)讀信號RD的作用下將選中的位單元信息發(fā)送到系統(tǒng)數(shù)據(jù)總線,使輸入信息的讀取更簡便。表明此FPGA系統(tǒng)可以初步實現(xiàn)PLC輸入存儲與讀取控制器的預期功能。
PLC輸入存儲與讀取控制器在內(nèi)部時序脈沖作用下,具有自主組織4位1組輸入數(shù)據(jù)的功能,使得輸入采集與其他控制器模塊實現(xiàn)并行處理;PLC用戶程序執(zhí)行過程中,位信息、高速輸入位信息和數(shù)據(jù)信號讀取都只需要2個PLC系統(tǒng)時鐘,提高了PLC執(zhí)行指令序列的速度,增強了控制性能。
參考文獻:
[1]李青云.PLC可編程控制器的應用及發(fā)展趨勢探析.中國科技信息,2010(16):117.
[2]方承遠,張振國.工廠電氣控制技術(shù).3版.北京:機械工業(yè)出版社,2006.
[3]侯鴻佳,蔡啟仲,陳文輝,等.ARM+FPGA組成的PLC結(jié)構(gòu)的通信系統(tǒng).廣西工學院學報,2012(1):60-64.
[4]黎娜,蔡啟仲,黃捷峰.基于ARM7與FPGA組成的可編程控制器,微計算機信息,2008(4):54-58.
[5]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程.2版.北京:北京航空航天大學出版社,2008.
[6]華清遠見嵌入式培訓中心.FPGA應用開發(fā)入門與典型實例.北京:人民郵電出版社,2008:6.
[7]王強,文豐,任勇峰.基于FPGA的高速實時數(shù)據(jù)采集存儲系統(tǒng).儀表技術(shù)與傳感器,2009(1):50-52.
[8]王榮揚,殷勇輝.偽隨機序列超聲測距系統(tǒng)與FPGA.儀表技術(shù)與傳感器,2013(2):46-48.
[9]李霞,蔡啟仲,陳文輝.基于CAN的嵌入式PLC和監(jiān)控系統(tǒng)通信設(shè)計.儀表技術(shù)與傳感器,2011(10):41-43.