李金猛
(國營蕪湖機(jī)械廠 安徽 蕪湖 241007)
在自動化檢測設(shè)備研制過程中,常常由于工控機(jī)母板資源的不足而利用到主板上部分接口資源以滿足設(shè)備檢測功能的需求,常用的有USB口、串口、并口、網(wǎng)口等資源。在前期設(shè)備研制過程中通過查看設(shè)備的工控機(jī),發(fā)現(xiàn)其內(nèi)部沒有可供利用的接口資源,無板卡插槽空間可以使用。因此通過使用主板資源設(shè)計一塊利用串口控制的IO板卡來滿足設(shè)備測試功能需求,在串口控制IO板卡的設(shè)計方法中通??梢杂脝纹瑱C(jī)和現(xiàn)場可編程控制器兩種方法來實(shí)現(xiàn),由于用單片機(jī)開發(fā)的板卡在工作中偶爾會出現(xiàn)死機(jī)現(xiàn)象,為保證正常工作,本設(shè)計選擇現(xiàn)場可編程邏輯控制器來完成硬件設(shè)計的功能,我們采用EPM7192芯片作為核心控制器,該芯片可以避免上述的缺點(diǎn),增強(qiáng)板卡的安全可靠性。
串口控制的IO板卡是自動化檢測設(shè)備和工控領(lǐng)域中常用的硬件控制卡,主要用于給產(chǎn)品輸出離散控制量或一次性控制指令,上位機(jī)PC通過串口發(fā)送控制命令至板卡上,利用電路板上的接收解碼電路,將接收的數(shù)據(jù)進(jìn)行解碼解出相應(yīng)的控制輸出指令,然后通過發(fā)送控制電路啟動控制相應(yīng)的離散量輸出或一次性指令的控制輸出,其原理框圖如圖1所示。
圖1 板卡的原理框圖Fig.1 Schematic diagram of board card
本卡共有電源電路、晶振電路、232接口電路、IO接口電路、主處理電路等5部分組成,現(xiàn)將板卡主要部分介紹如下:
1)232通信電路部分:系統(tǒng)控制通訊接口采用RS232,該接收電路部分采用可調(diào)波特率(軟件可以修改)進(jìn)行異步通訊,每10位1個字符,數(shù)據(jù)位為8位,第一位和最后一位分別為起始位和停止位,波特率為9 600 bit/s,每位時間約104 μs,為提高通訊的準(zhǔn)確性,接收部分采用3倍的采樣時鐘進(jìn)行采樣,并能自動過濾錯誤數(shù)據(jù)。
2)IO接口電路部分:該部分通過設(shè)計對應(yīng)的邏輯控制電路完成控制命令解析數(shù)據(jù)的編碼控制對應(yīng)IO接口的指令輸出,主要通過部分邏輯控制電路完成該部分功能。
3)主處理電路部分:時序產(chǎn)生和控制電路部分是整個電路的核心,主要完成時序的產(chǎn)生和配合,以及232信號的解碼部分。該部分主要就是由EPM7192芯片組成,主要接收來自PC發(fā)出的控制信息或命令,并將這些信息通過內(nèi)部解碼程序解碼后發(fā)出相應(yīng)的控制命令來控制對應(yīng)的IO口指令。
板卡的整個工作如下:首先是檢測一幀數(shù)據(jù)每個字節(jié)起始位的到來,其中每個字節(jié)都是由一個起始位、八位數(shù)據(jù)位、一位停止位組成,當(dāng)接收到一幀數(shù)據(jù)后,其中每一幀數(shù)據(jù)主要由起始信息、控制命令、控制信息、校驗(yàn)碼等幾部分組成,在接收完一幀數(shù)據(jù)后便開始處理此幀,根據(jù)此幀的控制信息發(fā)出相應(yīng)的控制命令,這些控制命令直接輸出到CPLD內(nèi)部的IO接口電路部分以完成IO指令碼的控制。
系統(tǒng)的軟件[4-5]主要是實(shí)現(xiàn)對PC機(jī)發(fā)過來的通信數(shù)據(jù)幀進(jìn)行解析然后輸出控制命令完成對IO控制指令的輸出,CPLD與PC上位機(jī)的通信波特率和通信協(xié)議為可選,整個解碼和IO指令的形成是通過VHDL語言和原理圖混合實(shí)現(xiàn)。整個軟件采用模塊化設(shè)計,其軟件結(jié)構(gòu)組成模塊如圖2所示。軟件的核心在于CPLD接收和處理這兩個模塊,通過實(shí)現(xiàn)這兩個模塊,就能對PC上位機(jī)發(fā)送過來的控制碼解碼形成控制命令來完成IO指令碼的輸出。
圖2 系統(tǒng)軟件結(jié)構(gòu)模塊Fig.2 System software structure module
在上面軟件模塊中,軟件主要包括波特率產(chǎn)生部分、接收部分、處理部分、控制部分。從而就有4個進(jìn)程來完成整個電路的接收控制。其中波特率部分就是對外部晶振分頻就可以獲得所需的頻率;接收部分就是接收數(shù)據(jù)幀的數(shù)據(jù),并且將每個位存儲于一個數(shù)組中;處理和發(fā)送部分就是在接收完整的數(shù)據(jù)幀后進(jìn)行處理;控制部分就是控制每個字節(jié)的起始位的到來并且控制波特率與外部數(shù)據(jù)的同步;IO口指令發(fā)送部分(原理圖設(shè)計)就是完成IO指令的輸出。這里重點(diǎn)介紹一下接收和控制部分的軟件。也即是整個軟件設(shè)計中最主要的兩個進(jìn)程:
上面兩個進(jìn)程中,reset是復(fù)位信號,是對整個軟件的初始化,這個初始化在另一個進(jìn)程中完成;Valid和Enable兩個信號主要在上面兩個進(jìn)程中捕捉信號的起始位;clk1信號分別是對外部有源晶振的分頻,clk1和接收信號的波特率一致,同步信號用,同時利用三倍于clk1的頻率信號對每個輸入位信號采樣3次,然后通過3中取2的法則在clk1的采樣下將這些采樣值賦予給Q;Q數(shù)組存放的是一幀數(shù)據(jù)的各個bit位;jishu為一幀中的字節(jié)數(shù),Hold是接收完一幀數(shù)據(jù)后發(fā)出的控制信號,該信號在其中的一個進(jìn)程中控制對應(yīng)IO電路中需要輸出的路號,從而由控制幀數(shù)據(jù)解碼信息完成對應(yīng)路數(shù)的IO輸出。
硬件電路的軟件調(diào)試主要使用MAXPlusII軟件,在軟件仿真中,主要采用的是波形仿真,在仿真通過后便可以將程序燒到芯片里做測試。圖3是在加入了模擬的輸入信號后,在時鐘的脈沖下逐步仿真后的波形。
圖3是對控制信息接收到并進(jìn)行處理的仿真波形圖,將一幀數(shù)據(jù)接收完全后便開始進(jìn)行處理,從仿真波形中可以看出,在接收完一幀數(shù)據(jù)后,便將ledout信號賦予高電平,從而根據(jù)此信號量進(jìn)行控制命令的解析,這樣便可以按照不同的控制命令控制對應(yīng)接口IO指令的發(fā)送。
板卡的使用及其具體的硬件測試電路框圖如圖4所示。
整個測試過程如下:PC上位機(jī)使用串口通信軟件,設(shè)定對應(yīng)的波特率和發(fā)送的數(shù)字IO開關(guān)信號,在板卡對應(yīng)的數(shù)字LED燈的亮滅顯示其控制的效果,在整個測試過程中,長時間通電和不間斷切換數(shù)據(jù),所有的LED燈完全按照所要求發(fā)送的路數(shù)顯示對應(yīng)的開關(guān)量,在連續(xù)兩天的不斷電測試發(fā)現(xiàn)誤碼率為0,大大超過先前板卡的誤碼率及其死機(jī)現(xiàn)象。完全符合產(chǎn)品測試要求,通過測試,整體檢測效果良好,設(shè)備運(yùn)行一切可靠。
圖3 仿真波形圖Fig.3 Simulation waveforms
圖4 板卡測試電路框圖Fig.4 Test circuit diagram of Board card
基于EPM7192的串口控制IO的板卡可以實(shí)現(xiàn)所要求的功能,而且還可以工作于比較差的環(huán)境中,該轉(zhuǎn)換接口模塊擴(kuò)展性好。另外此設(shè)計可以避免單片機(jī)出現(xiàn)的死機(jī)現(xiàn)象,可靠性高,通過修改其中的接收和處理軟件部分可以滿足不同波特率和不同通信協(xié)議的產(chǎn)品,使系統(tǒng)具有最大的擴(kuò)展性,并且盡可能的降低了設(shè)備修理的成本,具有一定的經(jīng)濟(jì)性。
[1]趙曙光,郭萬有,楊頌華.可編程邏輯器件原理、開發(fā)與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2000.
[2]James R.Armstrong F.Gail Gray.VHDL設(shè)計表示和綜合,[M].北京:機(jī)械工業(yè)出版社,2002
[3]張宏林.Visual C++串口通信與工程實(shí)踐[M].北京:人民郵電出版社,2008.
[4]宋建成.可編程邏輯器件原理與應(yīng)用[M].北京:科學(xué)出版社,2004.
[5]王毅平,張振榮.VHDL編程與仿真[M].北京:人民郵電出版社,2000.
[6]王振紅.VHDL數(shù)字電路設(shè)計與應(yīng)用實(shí)踐教程 [M].北京:機(jī)械工業(yè)出版社,2005.