• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      遠程測控模塊中有限狀態(tài)機的設(shè)計*

      2018-01-15 06:18:12,
      關(guān)鍵詞:狀態(tài)機測控指令

      ,

      (成都職業(yè)技術(shù)學院 軟件分院,成都 610041)

      引 言

      遠程測控系統(tǒng)使人們可以通過計算機網(wǎng)絡(luò)隨時隨地查看和控制現(xiàn)場設(shè)備的運行狀態(tài),也可以通過無線數(shù)據(jù)交換的形式把數(shù)據(jù)信息傳輸?shù)狡渌I(yè)測控儀器中。在整個控制系統(tǒng)中,上位機(也就是遠程決策系統(tǒng))通過指令與數(shù)據(jù)傳輸控制遠端測控裝置通信,測控模塊的響應(yīng)機制以及其控制系統(tǒng)工作狀態(tài)的穩(wěn)定性、安全性尤為重要,其控制過程可以基于軟件或硬件實現(xiàn),軟件實現(xiàn)最大的缺點是可靠性不夠高、響應(yīng)速度較慢[1],因此對實時性可靠性要求較高的系統(tǒng)更多的是采用專用芯片、高速芯片或者可編程邏輯器CPLD/FPGA來設(shè)計實施和驗證,并配合易于建立的、以描述控制特性為主的、應(yīng)用比較廣泛的有限狀態(tài)機(Finite_State_Machine,FSM)的建模方法來實施。

      有限狀態(tài)機基于數(shù)字集成電路系統(tǒng),大部分是時序電路, 時序電路可以用符號化的有限狀態(tài)機來模擬[2],不難發(fā)現(xiàn)遠程測控系統(tǒng)的各種控制狀態(tài)變化和轉(zhuǎn)移也可以描述系統(tǒng)的行為,而這些狀態(tài)的變化和轉(zhuǎn)移則形成了狀態(tài)機[3]。因此,采用基于狀態(tài)機的方法來定義和實現(xiàn)遠程測控是一種穩(wěn)定、可靠、簡潔的實現(xiàn)方案。本文通過基于FPGA的遠程測控模塊,采用有限狀態(tài)機為測控模型,利用Verilog HDL描述,實現(xiàn)了有限狀態(tài)機在遠程測控模塊及系統(tǒng)穩(wěn)定可靠地運行。

      1 基于FPGA的遠程測控系統(tǒng)的設(shè)計

      FPGA結(jié)合了微電子技術(shù)、電路技術(shù)、EDA技術(shù),使設(shè)計者可以集中精力進行所需邏輯功能的設(shè)計,縮短設(shè)計周期,提高了設(shè)計質(zhì)量。FPGA己經(jīng)在計算機硬件、工業(yè)控制、遙感遙測、雷達聲納、數(shù)據(jù)處理、智能儀器儀表、廣播電視、醫(yī)療電子和現(xiàn)代通信等多種領(lǐng)域中得到廣泛應(yīng)用。FPGA開發(fā)技術(shù)己經(jīng)成為數(shù)字系統(tǒng)的科研試驗、樣機調(diào)試和中小批量生產(chǎn)和驗證的首選方案[4]。

      對于工作點多、通信距離遠、環(huán)境惡劣且實時性和可靠性要求比較高的場合,可以利用無線電波來實現(xiàn)主控站與各個子站之間的數(shù)據(jù)通信,采用這種遠程測控方式有利于實現(xiàn)復(fù)雜連線,無需鋪設(shè)電纜或光纜,降低了環(huán)境成本[5]。本項目設(shè)計中,通信距離為3 000 m,采集點較多,采用的無線模塊可以有256個節(jié)點,現(xiàn)場FPGA模塊設(shè)計有模擬和數(shù)字輸入接口,可以接收大部分經(jīng)過處理的現(xiàn)場傳感數(shù)據(jù),根據(jù)遠程控制中心的要求實現(xiàn)現(xiàn)場情況的感知以及控制,模塊的輸出設(shè)計有數(shù)字驅(qū)動電路,可以直接控制繼電器、電機等現(xiàn)場設(shè)備;遠程計算機通過無線數(shù)字傳輸建立與現(xiàn)場模塊的通信,采集的現(xiàn)場數(shù)據(jù)經(jīng)過基于人工智能的決策系統(tǒng)發(fā)給遠端模塊執(zhí)行控制功能。系統(tǒng)框圖如圖1所示。

      圖1 系統(tǒng)框圖

      圖2 無線測控模塊中的數(shù)據(jù)流關(guān)系

      2 有限狀態(tài)機模型的建立

      2.1 無線測控模塊的數(shù)據(jù)流設(shè)計模型

      本文選擇Verilog HDL來對該邏輯設(shè)計的硬件電路進行描述,主要包含以下電路模塊:開關(guān)量的采樣、異步通信接口、I2C總線接口、自主定義的模塊與決策端通信狀態(tài)機、串行ADC的時序接口、硬件電路信號輸出,以及相關(guān)的數(shù)據(jù)和地址控制電路。實驗階段的芯片選用XILINX SPARTAN3S 250E,其基于SRAM工藝,優(yōu)點是使用標準的CMOS工藝,不需要任何復(fù)雜工序[6]。最后通過ISE開發(fā)平臺將整個控制電路集成到一個FPGA芯片中,減少了外界對系統(tǒng)的干擾,便于以后系統(tǒng)升級,對現(xiàn)場電路連接方式的控制較靈活。整個模塊核心的時序電路可以用符號化的有限狀態(tài)機來模擬,把一個時序邏輯抽象成一個同步有限狀態(tài)機是設(shè)計Verilog HDL模塊的關(guān)鍵[2]。狀態(tài)機在本項目基于FPGA的無線測控模塊設(shè)計中的數(shù)據(jù)流關(guān)系如圖2所示。

      2.2 無線測控模塊的協(xié)議與指令

      無線測控模塊在測控系統(tǒng)的地位處于從機或執(zhí)行現(xiàn)場的地位,模塊的所有功能和動作圍繞主機及決策系統(tǒng)的要求來完成。通常情況是在周期性的間歇狀態(tài)中,接收主機的查詢、采集轉(zhuǎn)換現(xiàn)場數(shù)據(jù)、存儲現(xiàn)場數(shù)據(jù)以及向主機回傳;接收主機發(fā)送的決策控制數(shù)據(jù),更新執(zhí)行的輸出狀態(tài)以及保存當前控制狀態(tài),在其他的時間現(xiàn)場模塊處于空閑狀態(tài)。本項目中基于FPGA的遠程測控模塊的主要協(xié)議與指令如表1所列。

      表1 FPGA 遠程測控模塊的主要協(xié)議與指令

      2.3 基于Verilog HDL的有限狀態(tài)機建模

      在本系統(tǒng)中,基于FPGA的遠端執(zhí)行模塊以及上位決策主機屬于從主關(guān)系,主從狀態(tài)機使用層次狀態(tài)機的設(shè)計方法來設(shè)計決策系統(tǒng),包含一個主狀態(tài)機和多個從狀態(tài)機。主狀態(tài)機起到仲裁控制作用,決定當前有哪些從狀態(tài)機可以運行[7]??梢酝ㄟ^設(shè)計不同的主狀態(tài)機的狀態(tài)轉(zhuǎn)移關(guān)系達到不同的控制策略,如分時復(fù)用或基于優(yōu)先級啟動不同的從狀態(tài)機等,在本系統(tǒng)主機中除控制可以并行執(zhí)行外,其它信息的采集均可采用限時輪流詢問的方式,主機的狀態(tài)和行為描述在此不再贅述。

      作為遠端模塊的從機,其狀態(tài)變化來自于第2.2節(jié)所描述的協(xié)議指令,由于采用可編程邏輯器件這種靈活的硬件設(shè)計,因此用基于Verilog HDL的有限狀態(tài)機建模,應(yīng)該主要考慮以下幾點[2]:編碼方案、FSM的綜合實現(xiàn)、狀態(tài)機所有狀態(tài)的完備以及邊沿觸發(fā)器的設(shè)計,滿足速度和面積的設(shè)計要求。通過以上協(xié)議和指令分析可以基本確定在整個控制過程當中模塊的工作狀態(tài),可以用圖形化的方式描述狀態(tài)機各個狀態(tài)之間的轉(zhuǎn)換關(guān)系,即該設(shè)計的狀態(tài)轉(zhuǎn)移圖如圖3所示(以遠程查詢指令為例)。

      圖3 狀態(tài)轉(zhuǎn)移圖

      3 Verilog程序的編寫

      根據(jù)狀態(tài)轉(zhuǎn)移圖編寫有限狀態(tài)機程序,由于Verilog具有并行執(zhí)行的特點[8],一個指令的判斷模塊輸出指令下跳沿給狀態(tài)機,即一個指令只執(zhí)行一次。下面的程序以主機發(fā)送查詢指令FF為例。

      //------------判斷FF指令下跳沿---------------

      reg[2:0] com_ff_neg;

      wire neg_ff_com; //采樣判斷FF指令下跳沿后的輸出

      always @ (posedge clk or negedge rst_n)

      begin

      if(!rst_n)

      com_ff_neg <= 3'b111;

      else //com_ff來自于無線模塊接收數(shù)據(jù)

      com_ff_neg <={com_ff_neg[1:0],com_ff};

      end

      assign neg_ff_com = ~com_ff_neg[1] & com_ff_neg[2];

      //-------------遠程控制命令FF狀態(tài)機-------------

      //采樣本地控制模塊的轉(zhuǎn)換數(shù)據(jù),來自于4種傳感器

      //寫入本地I2C存儲區(qū)后(作為斷電或開機后的本地采樣數(shù)據(jù))

      //通過無線模塊將該原始數(shù)據(jù)發(fā)送給主機

      parameter/*WAIT_FF*/ S0 = 3'b000;

      parameter/*SAMPLE0*/ S1 = 3'b001;

      parameter/*SAMPLE1*/ S2 = 3'b010;

      parameter/*SAMPLE2*/ S3 = 3'b011;

      parameter/*TX_LOCAL*/ S4 = 3'b101;

      parameter/*TX_END*/ S5= 3'b100;

      reg[2:0] state_ff; //主機查詢指令狀態(tài)機-狀態(tài)

      always @ (posedge clk or negedge rst_n)

      begin

      if(!rst_n) //復(fù)位狀態(tài)

      begin

      write_data_loc <=8'b00000000; byte_addr_loc <=3'b000;

      state_ff <= S0;

      inquiry <= 1'b1;

      tx_bytes <= 4'b0; //uart 發(fā)送數(shù)據(jù)字節(jié)控制

      end

      else

      case(state_ff)

      S0: begin

      inquiry <=1;

      if(neg_ff_com) //inquiry 低電平啟動采樣

      begin

      state_ff <= SAMPLE0;

      inquiry <=0; //1次寫入本地采樣到I2C

      write_data_loc <= local_data[3];

      byte_addr_loc <= 3'b011; //LOCAL_ADDR0 +3;

      end

      else state_ff <=S0;

      end

      S1: if(cstate == STOP2) // 寫入數(shù)據(jù)完成

      begin

      state_ff <= S2;

      inquiry <=0; //

      write_data_loc <= local_data[4];

      byte_addr_loc <= 3'b100; //LOCAL_ADDR0 + 4 ;

      end

      else state_ff <= S1;

      S2: if(cnt_20ms==20'hffff0) //寫入數(shù)據(jù)完成

      begin

      state_ff <= S3;

      inquiry <=0; //

      write_data_loc <= local_data[5];

      byte_addr_loc <= 3'b101; //LOCAL_ADDR0 + 5 ;

      end

      else state_ff <= S2;

      S3: if(cnt_20ms==20'hffff0) //寫入數(shù)據(jù)完成

      begin

      state_ff <= S4;

      inquiry <=0; //

      write_data_loc <= local_data[6];

      byte_addr_loc <= 3'b110; //LOCAL_ADDR0 + 6 ;

      end

      else state_ff <= S3;

      S4: if(cstate == STOP2)

      begin tx_bytes <=BYTE_LENGTH; //發(fā)送長度載入

      state_ff <=S5;

      end

      else state_ff <= S4;

      S5 : begin

      if (tx_num == 4'd11) tx_bytes <= tx_bytes - 1'b1;

      if(tx_bytes == 0) state_ff <= S0;

      end

      default : state_ff <= S0;

      endcase

      end

      4 實驗結(jié)果

      主從機的通信和控制模式核心為遠程模塊根據(jù)現(xiàn)場數(shù)據(jù)接收遠端主機的決策控制信號。在本項目中采用的主機為臺式計算機,從機或遠端的執(zhí)行機構(gòu)采用本項目設(shè)計的基于FPGA的遠程測控模塊。實驗對象為水產(chǎn)養(yǎng)殖環(huán)境的信息測量——溫度、溶氧量,主要執(zhí)行對象是對現(xiàn)

      場水環(huán)境進行調(diào)節(jié)控制,控制對象為充氧機和進出水泵,由于模塊本身的輸出電壓基本為3.3 V,因此需要在輸出端加驅(qū)動及保護控制繼電器。

      增氧泵是系統(tǒng)的主要控制對象之一,它是否正常工作直接決定了能否為魚塘充氧。增氧能力和動力效率是衡量增氧泵性能的重要指標,增氧能力是指每小時溶解到水中的氧氣的重量,動力效率是指在一定的條件下(如溫度)單位千瓦輸出功率的增氧能力。為了達到良好的增氧效果,系統(tǒng)選用葉輪式增氧泵[9]。在模塊的電路中設(shè)有兩片高耐壓、大電流復(fù)合晶體管IC——ULN2003,可以輸出14路驅(qū)動控制信號,其輸入端與FPGA-I/O口直接相連。

      系統(tǒng)初始化后,主機通過采樣指令開始接收傳感器檢測到的各項數(shù)據(jù),依次獲取溶氧量、溫度等參數(shù),將獲取值與設(shè)定值比較,根據(jù)專家決策做出相應(yīng)的動作從而實現(xiàn)自動控制。溫度傳感器采用 AD590,AD590為電流型溫度傳感器,它有非常好的線性輸出性能。當環(huán)境溫度為0 ℃時,其輸出電流為273 μA ,流過AD590的電流與絕對溫度成正比,溫度每增加1 ℃其輸出電流增加1 μA,即電流與溫度的關(guān)系是:I=(273+T) μA[10]。本項目現(xiàn)場模塊不對傳感器數(shù)值做任何判定和描述,直接根據(jù)時序傳遞給后端主機,由主機根據(jù)數(shù)據(jù)庫或?qū)<覜Q策系統(tǒng)做出相應(yīng)的顯示和控制。

      應(yīng)用測試中,將本地模塊放于浮標桶內(nèi),采用干電池供電,在距離1000 m左右的室內(nèi)對采集數(shù)據(jù)進行比較分析,時間跨度從早上9點到下午5點,間隔采樣時間為1小時,可以看出,該模塊對水養(yǎng)殖環(huán)境信息的檢測與標準參考值的相對誤差基本滿足使用需求。測試結(jié)果如表2所列。

      表2 無線測控模塊對水產(chǎn)養(yǎng)殖信息的測試 測試時間:2017.08.04

      結(jié) 語

      [1] 唐健隆,梁自澤,蔡麗,等.基于狀態(tài)機的巡線機器人控制系統(tǒng)設(shè)計[J].機器人技術(shù),2008,24(1-2):247-249.

      [2] 陳勇.有限狀態(tài)機的建模與優(yōu)化設(shè)計[J].重慶工學院學報:自然科學版,2007,21(5):55-58.

      [3] 熊振云,阮俊波,金惠華.嵌入式軟件中狀態(tài)機的抽象與實現(xiàn)[J].計算機應(yīng)用,2003,23(10):84-86.

      [4] 孔利東.基于FPGA的數(shù)據(jù)采集與處理技術(shù)的研究[D].武漢:武漢理工大學,2007.

      [5] 孫先逵,秦嵐.遠程測控技術(shù)的發(fā)展現(xiàn)狀和趨勢[J].儀器儀表學報,2004(8):562-564.

      [6] Clive Max Maxfield.The Design Warrior’s Guide to FPGAs Devices,Tools and Flows[M].杜生海,等譯.北京:人民郵電出版社,2007:221-225.

      [7] 豐平,馬曉川,陳模江.主從并行狀態(tài)機用于復(fù)雜FPGA控制系統(tǒng)設(shè)計[J].微計算機應(yīng)用,2009,30(6):1-5.

      [8] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學出版社,2003.

      [9] 劉海陸.基于 GSM 的魚塘增氧泵的遠程控制研究[D].舟山:浙江海洋學院,2014.

      [10] 劉冬香.基于CPLD/FPGA的溫度測控系統(tǒng)的設(shè)計[J].機電工程技術(shù),2009,38(12):20-21.

      林永宏(高級工程師),主要研究方向為應(yīng)用電子、嵌入式系統(tǒng)設(shè)計;邱紹峰(副教授),主要研究方向為圖像處理、電子技術(shù)應(yīng)用。

      猜你喜歡
      狀態(tài)機測控指令
      聽我指令:大催眠術(shù)
      基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
      《測控電路》實踐教學改革探討
      電子測試(2018年22期)2018-12-19 05:12:58
      ARINC661顯控指令快速驗證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      基于現(xiàn)代測控技術(shù)及其應(yīng)用分析
      向著新航程進發(fā)——遠望7號測控船首航記錄
      太空探索(2016年12期)2016-07-18 11:13:43
      基于USB2.0協(xié)議的通用測控通信接口設(shè)計
      坐標系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
      機電信息(2014年27期)2014-02-27 15:53:56
      FPGA設(shè)計中狀態(tài)機安全性研究
      黑龍江科學(2011年2期)2011-03-14 00:39:36
      霍邱县| 甘孜县| 东乌珠穆沁旗| 上杭县| 那坡县| 修水县| 大荔县| 峨眉山市| 柳林县| 石门县| 赤水市| 怀安县| 平南县| 海晏县| 罗城| 阿图什市| 九龙城区| 黄骅市| 巨鹿县| 怀仁县| 定襄县| 新乐市| 广平县| 津南区| 定西市| 武宁县| 界首市| 香港| 内乡县| 广昌县| 二连浩特市| 屏边| 广东省| 兖州市| 阿城市| 正定县| 孝昌县| 含山县| 靖边县| 民和| 江永县|