王婳懿 陳 威 劉玉來(lái)
(上海航天設(shè)備制造總廠,上海 200245)
某設(shè)備正常工作需給其提供64路指令信號(hào)和兩路同步時(shí)鐘信號(hào),采用人工手動(dòng)操作按鈕提供指令信號(hào)的方式效率低下[1]。為此,筆者設(shè)計(jì)了一種全自動(dòng)故障診斷裝置,采用FPGA產(chǎn)生兩路同步信號(hào)并同時(shí)產(chǎn)生隨機(jī)序列給設(shè)備提供64路指令信號(hào)。在同步時(shí)鐘的作用下,對(duì)經(jīng)過(guò)設(shè)備轉(zhuǎn)換后輸出的8組8位串行數(shù)據(jù)進(jìn)行采集,并將其發(fā)送給上位機(jī),上位機(jī)對(duì)接收到的數(shù)據(jù)進(jìn)行分析,從而對(duì)設(shè)備的64路信號(hào)進(jìn)行診斷,給出診斷結(jié)果。本裝置自動(dòng)化程度高,避免了工人進(jìn)行繁瑣的操作浪費(fèi)時(shí)間,極大地提高了生產(chǎn)效率。
基于FPGA的故障信號(hào)診斷系統(tǒng)的總體設(shè)計(jì)框圖如圖1所示。 設(shè)備所需的兩路同步信號(hào)和64位隨機(jī)指令信號(hào)由FPGA產(chǎn)生,為減少FPGA IO口的占用量,將64位指令信號(hào)進(jìn)行六位編碼后輸出,在FPGA外部先進(jìn)行譯碼再提高信號(hào)的驅(qū)動(dòng)能力后,將得到64位信號(hào)傳輸給設(shè)備。上位機(jī)通過(guò)串口給FPGA發(fā)送握手信號(hào),F(xiàn)PGA接收到握手信號(hào)后將64位隨機(jī)指令信號(hào)的六位編碼信號(hào)發(fā)送給上位機(jī),上位機(jī)記錄下FPGA產(chǎn)生的編碼信號(hào)。設(shè)備接收到FPGA產(chǎn)生的同步時(shí)鐘信號(hào)后,將64位指令信號(hào)經(jīng)過(guò)隔離輸入給設(shè)備中心處理單元,將其轉(zhuǎn)換為8組8位串行數(shù)據(jù)后傳輸至FPGA。FPGA接收到串行數(shù)據(jù)后,將串行數(shù)據(jù)轉(zhuǎn)換為異步信號(hào)通過(guò)串口發(fā)送給上位機(jī),上位機(jī)將接收到的信號(hào)與此前接收到的編碼信號(hào)進(jìn)行比對(duì),并判斷設(shè)備64路每路性能的好壞[2]。
圖1 診斷系統(tǒng)總體框圖
FPGA產(chǎn)生A、B兩路同步時(shí)鐘信號(hào),如圖2所示。為確保設(shè)備在出現(xiàn)同步錯(cuò)誤的情況下能夠自動(dòng)恢復(fù)正確的同步,將A同步時(shí)鐘信號(hào)作為設(shè)備的計(jì)數(shù)器的異步清零信號(hào)。A信號(hào)的周期25ms,脈寬16.000μs,用來(lái)表示前一次通信的結(jié)束和下一次通信的開(kāi)始;B同步時(shí)鐘信號(hào)把設(shè)備輸出的串行信號(hào)取至測(cè)試設(shè)備,在B信號(hào)的作用下,設(shè)備中輸入的指令信號(hào)被轉(zhuǎn)換為串行數(shù)據(jù)輸出。每個(gè)A同步信號(hào)一周期內(nèi)傳輸?shù)乳g隔的64組B同步信號(hào),B信號(hào)每組8位,脈寬8.138μs。
圖2 同步信號(hào)和串行輸出信號(hào)
如圖3所示,clock1為61 440Hz的時(shí)鐘信號(hào),一個(gè)周期為16μs,設(shè)置一個(gè)計(jì)數(shù)器,當(dāng)計(jì)數(shù)器個(gè)數(shù)低于1 535時(shí)輸出為低電平,當(dāng)計(jì)數(shù)器個(gè)數(shù)為1 536時(shí)輸出高電平。計(jì)數(shù)器清零,得到A同步信號(hào)side。
為得到B同步信號(hào),先設(shè)置一個(gè)閘門信號(hào)change,當(dāng)閘門信號(hào)為高電平時(shí)clock1進(jìn)入閘門,當(dāng)閘門信號(hào)為低電平時(shí)clock1不能通過(guò)閘門,最終得到B同步信號(hào)character,如圖4所示。閘門信號(hào)的產(chǎn)生流程如圖5所示,其中clk即為時(shí)鐘clock1信號(hào)。
圖4 B同步信號(hào)仿真
圖5 閘門信號(hào)形成流程
同步信號(hào)B延遲20ns后作為8位串行轉(zhuǎn)并行的移位寄存器的時(shí)鐘,外部串行信號(hào)經(jīng)移位寄存器后得到8位并行數(shù)據(jù),加上1位起始位和1位停止位后得到10位數(shù)據(jù),輸入給10位并行轉(zhuǎn)串行移位寄存器。10位并轉(zhuǎn)串移位寄存器的時(shí)鐘信號(hào)clock的頻率為 115 200Hz(串口的傳輸速率)。設(shè)置一個(gè)pulse信號(hào),在每個(gè)同步信號(hào)B一組信號(hào)結(jié)束之后,pulse信號(hào)變?yōu)楦唠娖?,此時(shí)啟動(dòng)10位并轉(zhuǎn)串移位寄存器,開(kāi)始發(fā)送串口數(shù)據(jù)。串口發(fā)送數(shù)據(jù)的時(shí)鐘clock的周期至少滿足10clock=8clock1+T1,這樣在8個(gè)clock1時(shí)鐘周期內(nèi)才能發(fā)送完10位的數(shù)據(jù)。同步轉(zhuǎn)異步通信的工作原理如圖6所示。
圖6 同步轉(zhuǎn)異步通信工作原理
對(duì)所有信號(hào)進(jìn)行仿真,結(jié)果如圖7所示,其中clock2為50MHz時(shí)鐘信號(hào),shifin信號(hào)為串行輸入信號(hào),shifout為串行輸出信號(hào), 異步通信的時(shí)鐘信號(hào)clock為115 200Hz,在pulse的上升沿到來(lái)時(shí)shifout輸出。輸出電平與輸入一致,通信無(wú)故障。
圖7 信號(hào)仿真
指令信號(hào)產(chǎn)生單元采用M序列發(fā)生器,它是由6位移位寄存器加異或反饋網(wǎng)絡(luò)組成的。圖8所示為64位隨機(jī)碼發(fā)生器示意圖。M序列發(fā)生器的本原多項(xiàng)式為f(x)=x6+x+1。在時(shí)鐘脈沖的觸發(fā)下,每次移位后各級(jí)寄存器狀態(tài)都會(huì)發(fā)生變化,其中末級(jí)寄存器隨著移位寄存器的時(shí)鐘節(jié)拍的推移會(huì)產(chǎn)生一個(gè)序列。取末級(jí)寄存器的值為隨機(jī)碼值,圖8中qout為輸出,a0~a5為寄存器單元[3]。
圖8 指令信號(hào)產(chǎn)生單元
FPGA將M序列發(fā)生器產(chǎn)生的隨機(jī)碼進(jìn)行編碼,將編碼信號(hào)輸出,在FPGA外部再通過(guò)譯碼,譯碼后的信號(hào)通過(guò)增強(qiáng)驅(qū)動(dòng)電流得到所需信號(hào)。最終將所需信號(hào)進(jìn)行隔離得到所需的指令信號(hào)。
圖9 上位機(jī)軟件流程
上位機(jī)軟件的工作流程如圖9所示。上位機(jī)先發(fā)送握手信號(hào),接收到FPGA返回的序列之后,再接收FPGA發(fā)送的串行數(shù)據(jù),與FPGA返回的序列進(jìn)行對(duì)比,若序列相同,說(shuō)明設(shè)備正常工作;否則,說(shuō)明設(shè)備工作異常。
目前全自動(dòng)故障診斷裝置的自動(dòng)化程度較高,避免了人工進(jìn)行繁瑣的操作浪費(fèi)時(shí)間,極大地提高了生產(chǎn)效率。該裝置在某車間的運(yùn)行效果良好,其直接模擬人工產(chǎn)生64路指令信號(hào),避免了操作人員操作大量按鈕引起的誤操作。同時(shí),使用全自動(dòng)檢測(cè)裝置后,人機(jī)交互界面美觀度增加,減少了加電信號(hào)的按鈕數(shù)量,并能直接取出診斷結(jié)果。每臺(tái)待測(cè)設(shè)備的測(cè)試時(shí)間由原來(lái)的30min降低為2min,極大地提高了生產(chǎn)效率。
[1] 韓建,魏運(yùn)鋒,談卿暇,等.基于FDGA的IIR數(shù)字濾波器的設(shè)計(jì)及測(cè)試分析[J].化工自動(dòng)化及儀表,2014,41(7):790~792,805.
[2] 劉東華.FPGA應(yīng)用技術(shù)叢書(shū):Altera系列FPGA芯片IP核詳解[M].北京:電子工業(yè)出版社,2014:300~400.
[3] Stavinov E著,朱江,尹廷輝,喬廬峰,等譯.FPGA高手設(shè)計(jì)實(shí)戰(zhàn)真經(jīng)100則[M].北京:電子工業(yè)出版社, 2013:200~300.