李金猛
(國營蕪湖機械廠 安徽 蕪湖 241007)
在自動化檢測設備研制過程中,常常由于工控機母板資源的不足而利用到主板上部分接口資源以滿足設備檢測功能的需求,常用的有USB口、串口、并口、網口等資源。在前期設備研制過程中通過查看設備的工控機,發現其內部沒有可供利用的接口資源,無板卡插槽空間可以使用。因此通過使用主板資源設計一塊利用串口控制的IO板卡來滿足設備測試功能需求,在串口控制IO板卡的設計方法中通常可以用單片機和現場可編程控制器兩種方法來實現,由于用單片機開發的板卡在工作中偶爾會出現死機現象,為保證正常工作,本設計選擇現場可編程邏輯控制器來完成硬件設計的功能,我們采用EPM7192芯片作為核心控制器,該芯片可以避免上述的缺點,增強板卡的安全可靠性。
串口控制的IO板卡是自動化檢測設備和工控領域中常用的硬件控制卡,主要用于給產品輸出離散控制量或一次性控制指令,上位機PC通過串口發送控制命令至板卡上,利用電路板上的接收解碼電路,將接收的數據進行解碼解出相應的控制輸出指令,然后通過發送控制電路啟動控制相應的離散量輸出或一次性指令的控制輸出,其原理框圖如圖1所示。

圖1 板卡的原理框圖Fig.1 Schematic diagram of board card
本卡共有電源電路、晶振電路、232接口電路、IO接口電路、主處理電路等5部分組成,現將板卡主要部分介紹如下:
1)232通信電路部分:系統控制通訊接口采用RS232,該接收電路部分采用可調波特率(軟件可以修改)進行異步通訊,每10位1個字符,數據位為8位,第一位和最后一位分別為起始位和停止位,波特率為9 600 bit/s,每位時間約104 μs,為提高通訊的準確性,接收部分采用3倍的采樣時鐘進行采樣,并能自動過濾錯誤數據。
2)IO接口電路部分:該部分通過設計對應的邏輯控制電路完成控制命令解析數據的編碼控制對應IO接口的指令輸出,主要通過部分邏輯控制電路完成該部分功能。
3)主處理電路部分:時序產生和控制電路部分是整個電路的核心,主要完成時序的產生和配合,以及232信號的解碼部分。該部分主要就是由EPM7192芯片組成,主要接收來自PC發出的控制信息或命令,并將這些信息通過內部解碼程序解碼后發出相應的控制命令來控制對應的IO口指令。
板卡的整個工作如下:首先是檢測一幀數據每個字節起始位的到來,其中每個字節都是由一個起始位、八位數據位、一位停止位組成,當接收到一幀數據后,其中每一幀數據主要由起始信息、控制命令、控制信息、校驗碼等幾部分組成,在接收完一幀數據后便開始處理此幀,根據此幀的控制信息發出相應的控制命令,這些控制命令直接輸出到CPLD內部的IO接口電路部分以完成IO指令碼的控制。
系統的軟件[4-5]主要是實現對PC機發過來的通信數據幀進行解析然后輸出控制命令完成對IO控制指令的輸出,CPLD與PC上位機的通信波特率和通信協議為可選,整個解碼和IO指令的形成是通過VHDL語言和原理圖混合實現。整個軟件采用模塊化設計,其軟件結構組成模塊如圖2所示。軟件的核心在于CPLD接收和處理這兩個模塊,通過實現這兩個模塊,就能對PC上位機發送過來的控制碼解碼形成控制命令來完成IO指令碼的輸出。

圖2 系統軟件結構模塊Fig.2 System software structure module
在上面軟件模塊中,軟件主要包括波特率產生部分、接收部分、處理部分、控制部分。從而就有4個進程來完成整個電路的接收控制。其中波特率部分就是對外部晶振分頻就可以獲得所需的頻率;接收部分就是接收數據幀的數據,并且將每個位存儲于一個數組中;處理和發送部分就是在接收完整的數據幀后進行處理;控制部分就是控制每個字節的起始位的到來并且控制波特率與外部數據的同步;IO口指令發送部分(原理圖設計)就是完成IO指令的輸出。這里重點介紹一下接收和控制部分的軟件。也即是整個軟件設計中最主要的兩個進程:


上面兩個進程中,reset是復位信號,是對整個軟件的初始化,這個初始化在另一個進程中完成;Valid和Enable兩個信號主要在上面兩個進程中捕捉信號的起始位;clk1信號分別是對外部有源晶振的分頻,clk1和接收信號的波特率一致,同步信號用,同時利用三倍于clk1的頻率信號對每個輸入位信號采樣3次,然后通過3中取2的法則在clk1的采樣下將這些采樣值賦予給Q;Q數組存放的是一幀數據的各個bit位;jishu為一幀中的字節數,Hold是接收完一幀數據后發出的控制信號,該信號在其中的一個進程中控制對應IO電路中需要輸出的路號,從而由控制幀數據解碼信息完成對應路數的IO輸出。
硬件電路的軟件調試主要使用MAXPlusII軟件,在軟件仿真中,主要采用的是波形仿真,在仿真通過后便可以將程序燒到芯片里做測試。圖3是在加入了模擬的輸入信號后,在時鐘的脈沖下逐步仿真后的波形。
圖3是對控制信息接收到并進行處理的仿真波形圖,將一幀數據接收完全后便開始進行處理,從仿真波形中可以看出,在接收完一幀數據后,便將ledout信號賦予高電平,從而根據此信號量進行控制命令的解析,這樣便可以按照不同的控制命令控制對應接口IO指令的發送。
板卡的使用及其具體的硬件測試電路框圖如圖4所示。
整個測試過程如下:PC上位機使用串口通信軟件,設定對應的波特率和發送的數字IO開關信號,在板卡對應的數字LED燈的亮滅顯示其控制的效果,在整個測試過程中,長時間通電和不間斷切換數據,所有的LED燈完全按照所要求發送的路數顯示對應的開關量,在連續兩天的不斷電測試發現誤碼率為0,大大超過先前板卡的誤碼率及其死機現象。完全符合產品測試要求,通過測試,整體檢測效果良好,設備運行一切可靠。

圖3 仿真波形圖Fig.3 Simulation waveforms

圖4 板卡測試電路框圖Fig.4 Test circuit diagram of Board card
基于EPM7192的串口控制IO的板卡可以實現所要求的功能,而且還可以工作于比較差的環境中,該轉換接口模塊擴展性好。另外此設計可以避免單片機出現的死機現象,可靠性高,通過修改其中的接收和處理軟件部分可以滿足不同波特率和不同通信協議的產品,使系統具有最大的擴展性,并且盡可能的降低了設備修理的成本,具有一定的經濟性。
[1]趙曙光,郭萬有,楊頌華.可編程邏輯器件原理、開發與應用[M].西安:西安電子科技大學出版社,2000.
[2]James R.Armstrong F.Gail Gray.VHDL設計表示和綜合,[M].北京:機械工業出版社,2002
[3]張宏林.Visual C++串口通信與工程實踐[M].北京:人民郵電出版社,2008.
[4]宋建成.可編程邏輯器件原理與應用[M].北京:科學出版社,2004.
[5]王毅平,張振榮.VHDL編程與仿真[M].北京:人民郵電出版社,2000.
[6]王振紅.VHDL數字電路設計與應用實踐教程 [M].北京:機械工業出版社,2005.