王明武, 賀雯, 劉毅鐸, 王益凡
(1.陜西理工大學(xué) 機(jī)械工程學(xué)院, 陜西 漢中 723000;2.陜西漢中變壓器有限公司, 陜西 漢中 723000)
電柵攔魚由脈沖電發(fā)生器、電極及導(dǎo)線組成,可控硅被觸發(fā)開通時(shí),高容量的電能就向電極放電,從而在水中攔魚斷面上形成一定強(qiáng)度的不均勻電場(chǎng)。魚類受到刺激后將本能地向電場(chǎng)較弱的方向逃游,從而達(dá)到攔魚的目的[1-2]。電柵攔魚能從根本上克服有形機(jī)械性攔魚設(shè)施攔魚效率低、易被漂浮物堵塞而存在安全隱患的局限性,從而得到了較大范圍的應(yīng)用。因此,本文使用STC89C52單片機(jī)設(shè)計(jì)出一種基于CAN總線的電子脈沖攔魚裝置節(jié)點(diǎn),該裝置利用高壓脈沖在水庫泄洪口形成脈沖電磁場(chǎng)刺激魚類,從而防止魚類逃脫水庫。該裝置節(jié)點(diǎn)具有一主多從、網(wǎng)絡(luò)化、智能化的特點(diǎn),并可進(jìn)一步降低前期使用可編程控制器所開發(fā)的電子脈沖攔魚裝置的生產(chǎn)成本。
系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,單片機(jī)作為主機(jī)和從機(jī)的主控制器,并使用CAN總線控制器和收發(fā)器實(shí)現(xiàn)主機(jī)和從機(jī)之間的總線通信功能。
圖1 攔魚裝置節(jié)點(diǎn)系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)
控制器局域網(wǎng)(Controller Area Network,CAN)由德國(guó)博世公司開發(fā),是市場(chǎng)上占用率最高的現(xiàn)場(chǎng)總線之一[3-5]。CAN2.0 技術(shù)規(guī)范分為CAN2.0A(11 位標(biāo)識(shí)符)、CAN2.0B(29 位標(biāo)識(shí)符)兩個(gè)版本。為使報(bào)文攜帶更多的數(shù)據(jù)信息,本系統(tǒng)采用CAN2.0B擴(kuò)展幀格式,標(biāo)識(shí)符定義具體如表1所示。其中CAN 數(shù)據(jù)包優(yōu)先級(jí)占用第28—26位,數(shù)據(jù)類型代碼占用第23—16位,發(fā)送節(jié)點(diǎn)總線地址占用第15—8位,接收節(jié)點(diǎn)總線地址使用第7—0位,保留位設(shè)置為0。
表1 CAN2.0B 29位標(biāo)識(shí)符分配表
攔魚裝置主機(jī)節(jié)點(diǎn)與多個(gè)從機(jī)節(jié)點(diǎn)之間可以相互傳輸信息,屬于典型的一主多從工作方式,從而實(shí)現(xiàn)長(zhǎng)距離、大容量的總線通信,并具備實(shí)時(shí)在線的監(jiān)控功能,以及抗干擾能力強(qiáng)的性能特點(diǎn)。
系統(tǒng)硬件原理框圖如圖2所示,主機(jī)電路包括最小系統(tǒng)、CAN通信電路、液晶屏電路、按鍵電路、故障報(bào)警電路等部分;從機(jī)包括最小系統(tǒng)、CAN通信電路、按鍵電路、絕緣柵雙極型晶體管(Insulated Gate Bipolar Transistor,IGBT)驅(qū)動(dòng)電路、信號(hào)采集電路等部分。電源模塊負(fù)責(zé)為主機(jī)、從機(jī)以及大功率外設(shè)提供相應(yīng)的供電電壓。
圖2 系統(tǒng)硬件原理框圖
主機(jī)產(chǎn)生從機(jī)母線取放電的脈沖時(shí)序,并通過CAN總線協(xié)議與從機(jī)進(jìn)行數(shù)據(jù)通信,用來控制不同從機(jī)的IGBT驅(qū)動(dòng)電路分時(shí)輪流導(dǎo)通放電攔魚,導(dǎo)通時(shí)間為0.6~1.2 ms,放電頻率為3~12 Hz,導(dǎo)通時(shí)間和放電頻率均可調(diào),從而適應(yīng)不同泄洪量、不同水質(zhì)和不同魚類的攔魚需求。從機(jī)需要采集工作頻率、驅(qū)動(dòng)板和總線通信等參數(shù)并通過反饋給主機(jī),主機(jī)再進(jìn)行連鎖保護(hù)、故障報(bào)警,以及通過液晶屏實(shí)時(shí)地顯示和監(jiān)控工作參數(shù)。
主機(jī)和從機(jī)控制核心是微控制器,最終確定攔魚裝置主機(jī)和從機(jī)均采用STC89C52單片機(jī)。STC89C52是STC公司生產(chǎn)的一種具有低功耗、高性能的8位微控制器[6],內(nèi)部集成8 KB的可編程Flash存儲(chǔ)器并具備豐富的片上資源,完全符合本系統(tǒng)的設(shè)計(jì)要求。
圖3 HMI液晶屏接線原理截圖
液晶屏可以非常直觀地顯示出工作模式、放電頻率、導(dǎo)通時(shí)間、用戶頁面等內(nèi)容。考慮到需要顯示的內(nèi)容過多,系統(tǒng)選用了深圳淘晶馳公司的多元化2.2英吋液晶屏,具體型號(hào)為TJC3224T022。該液晶屏可當(dāng)作智能串口顯示終端,硬件部分包括MCU、顯示屏、輸入端口、通信端口、程序存儲(chǔ)器等;軟件部分包括液晶屏上運(yùn)行的自帶的WINCE操作系統(tǒng),以及Windows操作系統(tǒng)上對(duì)其進(jìn)行配置的組態(tài)軟件。
圖3是液晶屏接線原理截圖。1腳VCC接5 V,4腳GND接地,2腳TX(串口發(fā)送)、3腳RX(串口接收)分別與P3.0、P3.1引腳相連接,并使用串口方式與STC89C52進(jìn)行數(shù)據(jù)通信。液晶屏主要用于系統(tǒng)的登錄,以及設(shè)置攔魚裝置的各種工作參數(shù),例如調(diào)整從機(jī)所需要的放電頻率(3~12 Hz)、導(dǎo)通時(shí)間(0.6~1.2 ms)等參數(shù),接收到信號(hào)的從機(jī)通過改變定時(shí)器的初值并控制其引腳翻轉(zhuǎn)來產(chǎn)生PWM,之后從機(jī)以相應(yīng)的頻率控制IGBT變換正負(fù)極。IGBT交替變化正負(fù)極的時(shí)候,通過軟件或者硬件制造一個(gè)死區(qū)時(shí)間,否則兩個(gè)IGBT管同時(shí)為正極的時(shí)候會(huì)發(fā)生短路現(xiàn)象。
CAN總線通信電路由MCP2515協(xié)議控制器,以及TJA1050收發(fā)器組成。恩智浦公司的MCP2515是一款帶工業(yè)標(biāo)準(zhǔn)SPI總線接口獨(dú)立的CAN控制器,STC89C52不直接參與CAN 通信協(xié)議的處理,從而減少了單片機(jī)的開銷[7]。MCP2515完全支持CAN V2.0B規(guī)范,可以接收或發(fā)送標(biāo)準(zhǔn)幀、擴(kuò)展數(shù)據(jù)幀,以及遠(yuǎn)程幀報(bào)文[8-9],并且內(nèi)置有2個(gè)屏蔽寄存器、6個(gè)濾波器寄存器,以用于濾除不需要的報(bào)文信息。TJA1050是一種標(biāo)準(zhǔn)的高速CAN收發(fā)器,主要為CAN控制器提供差動(dòng)接收性能[10]。具體的總線外部硬件電路如圖4所示。
圖4 CAN 總線外部硬件連接圖
MCP2515的16腳CS(片選)、15腳SO(主入從出)、14腳SI(主出從入)、13腳SCK(串行時(shí)鐘)、12腳INT(中斷)分別接至STC89C52單片機(jī)的P2.4—P2.0端口,通過SPI總線進(jìn)行讀取或?qū)懭霐?shù)據(jù)到單片機(jī)。MCP2515的1腳TXCAN(CAN發(fā)送)、2腳RXCAN(CAN接收)分別與TJA1050的1腳TXD、4腳RXD連接。TXCAN信號(hào)經(jīng)TJA1050轉(zhuǎn)換成CAN總線可識(shí)別的差分信號(hào)將數(shù)據(jù)發(fā)送到總線上;相反,TJA1050將總線上差分信號(hào)轉(zhuǎn)成TTL電平,再通過RXCAN完成數(shù)據(jù)接收過程[11]。CAN在接收到數(shù)據(jù)的時(shí)候會(huì)觸發(fā)一個(gè)低電平,需要外部中斷進(jìn)行捕獲并及時(shí)作出響應(yīng)。
TJA1050收發(fā)器的CANH和CANL兩個(gè)端口,通過屏蔽性能較好的雙絞線或是其他信號(hào)線與不同節(jié)點(diǎn)的CAN模塊相連接,從而達(dá)到多個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)互傳。此外,CAN 總線兩端接有120 Ω終端匹配電阻以抑制信號(hào)反射,從而提高通信的抗干擾能力[12]。
驅(qū)動(dòng)電路主要用于驅(qū)動(dòng)大功率外設(shè)IGBT,具體如圖5所示。D4818使用功率較大、驅(qū)動(dòng)更強(qiáng)、穩(wěn)定性較高的雙驅(qū)動(dòng)電路。驅(qū)動(dòng)電路使用D4818驅(qū)動(dòng)模塊,VIN+輸入所需要的電壓5~36 V,VIN-為地線,OUT+、OUT-為負(fù)載設(shè)備的正負(fù)極,輸出電壓范圍5~36 V。TRIG/PWM接單片機(jī)產(chǎn)生PWM波的端口。D4818通過PWM控制IGT的柵極,進(jìn)而控制負(fù)載的工作。
圖5 D4818驅(qū)動(dòng)電路圖
此外,主機(jī)還可通過人機(jī)鍵盤進(jìn)行運(yùn)行啟??刂疲蛘邔?duì)系統(tǒng)工作參數(shù)進(jìn)行設(shè)置。同時(shí),系統(tǒng)還具備連鎖保護(hù)和故障報(bào)警,當(dāng)出現(xiàn)頻率故障、驅(qū)動(dòng)故障和通信故障時(shí),主機(jī)就會(huì)報(bào)警,從而形成完善的故障保護(hù)機(jī)制。
主機(jī)和從機(jī)程序流程圖如圖6所示,軟件模塊包括PWM函數(shù),延時(shí)函數(shù),CAN收發(fā)函數(shù),SPI讀寫函數(shù)、串口響應(yīng)函數(shù),屏幕按鍵檢測(cè)函數(shù),中斷子程序等編程單元。
(a) 主機(jī)通信程序流程圖 (b) 從機(jī)通信程序流程圖 圖6 CAN總線程序流程圖
主機(jī)和從機(jī)首先進(jìn)行CAN通信、串口、定時(shí)器中斷,以及模塊等初始化。CAN通信初始化內(nèi)容包括總線波特率、接收發(fā)射緩沖器、中斷工作模式設(shè)置,并啟動(dòng)CAN通信。CAN初始化完成后,數(shù)據(jù)的發(fā)送與接收過程將自動(dòng)按照特定的協(xié)議進(jìn)行傳輸數(shù)據(jù)而無需用戶干涉。
初始化正常后,主機(jī)使用串口響應(yīng)函數(shù)接收液晶屏所設(shè)置的頻率參數(shù)等指令,并調(diào)用時(shí)序模塊函數(shù)將產(chǎn)生的控制位通過CAN總線實(shí)時(shí)地循環(huán)傳送給各個(gè)從機(jī)。從機(jī)的CAN模塊接收到信息時(shí),觸發(fā)外部中斷將標(biāo)志位gRXFlag置1,從機(jī)調(diào)用CAN接收函數(shù)和SPI讀取函數(shù)接收控制位,進(jìn)而產(chǎn)生相應(yīng)的PWM波形以控制IGBT驅(qū)動(dòng)相應(yīng)的負(fù)載。CAN接收函數(shù)的部分代碼如下:
void CAN_Receive (uchar *CAN RXBuf)
{
uchar i; DLC= SPIbyteRd (RXB0DLC);
for (i=0; i {CANRXBuf[i]= SPIbyteRd (RXB0D0+i); } SPIbyteWr (CANINTF,0); } 反之,從機(jī)信息將反饋信息通過SPI寫入函數(shù)和CAN收發(fā)函數(shù)發(fā)送給主機(jī)。CAN發(fā)送數(shù)據(jù)時(shí),SPI將要發(fā)送的數(shù)據(jù)寫入CAN模塊,數(shù)據(jù)按位傳輸,高位在前,低位在后。CAN發(fā)送函數(shù)的部分代碼如下: void CAN_Send (uchar *CANTXBuf,uchar length1) { Uchar tempdata,j; tempdata=SPIbyteRd(CAN_RD_STATUS); SPIbyteWr (TXB0DLC,length1); for(j=0;j {SPIbyteWr (TXB0D0+j,CANTXBuf[J]);} if(tempdata&0x04) { delay1ms (1); SPIbyteWr (TXB0CTRL,0); while(SPIbyteRd (CAN_RD_STATUS) &0x04); } CS=0; WriteSPI(CAN_RTS_TXB0); CS=1; } 系統(tǒng)時(shí)序控制如圖7所示。主機(jī)讀取液晶屏設(shè)置從機(jī)個(gè)數(shù)n(1~16)、放電頻率f(3~12 Hz)、脈寬長(zhǎng)度參數(shù)τ(0.6~1.2 ms),主站總的工作頻率為nf,主機(jī)輪流輸出每個(gè)從機(jī)控制位的周期為 (1) 每個(gè)從機(jī)接收到控制位后啟動(dòng)定時(shí)中斷0,輪流導(dǎo)通的間隔時(shí)間nT,則從機(jī)的工作頻率為 (2) 圖7 時(shí)序控制 圖8 IGBT負(fù)載波形 實(shí)際應(yīng)用中,攔魚面積越大,所需的主、從機(jī)個(gè)數(shù)越多,不僅數(shù)據(jù)量增大,而且通信距離也變長(zhǎng)。為了提高通信距離,必須適當(dāng)降低CAN總線的通信速率,系統(tǒng)通信的實(shí)時(shí)性也隨之降低。因此,從機(jī)的放電頻率比設(shè)定的工作頻率要略小一些。 這里,設(shè)定n=3,f=6 Hz,τ=0.6 ms,系統(tǒng)初始化配置好CAN總線模塊后,從機(jī)根據(jù)從機(jī)個(gè)數(shù)、放電頻率、脈寬長(zhǎng)度參數(shù)自動(dòng)計(jì)算并設(shè)置定時(shí)器初始值,利用定時(shí)器中斷產(chǎn)生PWM方波驅(qū)動(dòng)IGBT;同時(shí),系統(tǒng)為了避免兩路IGBT同時(shí)導(dǎo)通而造成的正負(fù)極短路現(xiàn)象,程序進(jìn)行了互鎖,并且設(shè)定了換向?qū)ǖ乃绤^(qū)保護(hù)時(shí)間。圖8為通過數(shù)字示波器捕捉的波形,圖中PWM波形非常規(guī)則,周期T=168 ms,f=5.952 Hz,達(dá)到了預(yù)期的設(shè)計(jì)指標(biāo)要求。 針對(duì)企業(yè)進(jìn)一步降低電子脈沖攔魚裝置生產(chǎn)成本的需求,提出了基于CAN 總線的電子脈沖攔魚裝置節(jié)點(diǎn)的設(shè)計(jì)。該攔魚裝置節(jié)點(diǎn)以STC89C52作為主控器,使用MCP2515和TJA1050構(gòu)成了總線通信接口電路,編制了CAN總線程序軟件,并進(jìn)行了多節(jié)點(diǎn)主從模式通信實(shí)驗(yàn)。經(jīng)應(yīng)用表明:設(shè)計(jì)的節(jié)點(diǎn)硬件電路具有成本低、工作穩(wěn)定可靠、抗干擾能力強(qiáng)的特點(diǎn),從而為進(jìn)一步的投產(chǎn)試用和增設(shè)物聯(lián)網(wǎng)平臺(tái)功能奠定了堅(jiān)實(shí)的基礎(chǔ)。4 實(shí)驗(yàn)結(jié)果
5 結(jié)束語