《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM與GPRS技術的SCADA系統(tǒng)在風光電廠中的應用
基于ARM與GPRS技術的SCADA系統(tǒng)在風光電廠中的應用
來源:電子技術應用2011年第6期
鮑玉軍
常州工學院 電子信息與電氣工程學院, 江蘇 常州213002
摘要: 介紹了以ARM核微處理器LPC2214及嵌入式操作系統(tǒng)μC/OS-Ⅱ為運行平臺,在實現(xiàn)TCP/IP和PPP協(xié)議的基礎上,對GPRS通信模塊MC39i進行控制,從而可方便地使用GPRS的數(shù)據分組業(yè)務傳輸監(jiān)控數(shù)據。研究結果證明,本系統(tǒng)對風光發(fā)電廠監(jiān)控系統(tǒng)的兼容、維護等都具有重要的參考價值。
中圖分類號: TP399
文獻標識碼: A
文章編號: 0258-7998(2011)06-131-04
Application of SCADA system based on ARM and GPRS technology in wind-solar hybrid power plant
Bao Yujun
School of Electronic Information Electric Engineering, Changzhou Institute of Technology, Changzhou 213002, China
Abstract: The paper introduced used ARM kernel microprocessor LPC2214 and embedded system μC/OS-Ⅱ as the whole system platform, and realized the software about TCP/IP and PPP′s programming. Then we realized the GPRS communication by controlling the MC39i module. So can transmit the power plant′s status parameters easily by means of GPRS network′s services. The conclusions which produced in this paper are especially good for the wind-solar hybrid power plant′s monitoring and controlling, also be good for the whole system′s maintenance.
Key words : ARM; LPC2214; GPRS; wind-solar hybrid power plant


 太陽能和風能是公認的潔凈資源,對環(huán)境不產生任何污染,是21世紀能源發(fā)展戰(zhàn)略的重要選擇。隨著風光互補發(fā)電系統(tǒng)應用范圍的不斷擴大,對風光互補發(fā)電系統(tǒng)的性能要求也越來越高。
     通常應用于風光發(fā)電廠的監(jiān)督控制與數(shù)據采集系統(tǒng)SCADA(Supervisory Control And Data Acquisition)一般都是由電力通信專網來保障其通信。但由于風光電廠在地理位置上的特殊性、多樣性(通常在邊遠偏僻地區(qū)),使得某些通信網無法勝任SCADA的要求[1]。
 通用分組無線業(yè)務(GPRS)是GSM網絡的升級,通過在GSM網絡上增加SGSN和GGSN兩種數(shù)據交換節(jié)點設備以及一些更新軟件來實現(xiàn),GPRS網絡中的數(shù)據傳輸以數(shù)據分組的形式傳送。在國內,移動通信網絡目前已基本覆蓋全國所有地區(qū),因此利用技術上較為成熟的GPRS無線網絡,可對風光發(fā)廠的各個發(fā)電站進行實時遠程監(jiān)測與控制,這對提高整個風光電廠的性能具有實際意義。
1 系統(tǒng)組成
 整個風光電廠的SCADA系統(tǒng)由風光發(fā)電站的狀態(tài)參數(shù)采集部分和數(shù)據處理及傳輸兩部分組成。本文重點介紹數(shù)據處理及傳輸部分。風光電廠SCADA系統(tǒng)如圖1所示。

    通過CAN總線與CAN總線適配器的連接,將各個風光發(fā)電站的狀態(tài)參數(shù)傳輸至基于LPC2214的嵌入式系統(tǒng),數(shù)據經處理后由GPRS通信模塊MC39i輸出,并通過GPRS網絡和Internet將數(shù)據傳輸至監(jiān)控中心。反之,監(jiān)控中心也可以將各種操作指令傳送至控制終端,以控制風光發(fā)電站的運行。本系統(tǒng)的核心部分為“嵌入式GPRS通信模塊”的實現(xiàn)[2]。
 本系統(tǒng)使用ARM7核微處理器LPC2214,并適當對系統(tǒng)存儲資源進行擴展,通過移植嵌入式操作系統(tǒng)μC/OS-Ⅱ來管理整個系統(tǒng)的運行。系統(tǒng)所使用的GPRS模塊MC39i由西門子公司生產,具有使用方便、接口電路簡單等優(yōu)點[3]。GPRS雖支持TCP/IP業(yè)務,但因為MC39i沒有嵌入TCP/IP協(xié)議和PPP協(xié)議,所以需要在基于LPC2214的嵌入式系統(tǒng)中實現(xiàn)TCP/IP協(xié)議和PPP協(xié)議,否則系統(tǒng)無法使用GPRS網絡的數(shù)據分組業(yè)務。

 


2 CAN總線接口電路設計
 SJA1000與LPC2214之間的接口電路如圖2所示,主要包含:LPC2214最小系統(tǒng)(未畫出)、CAN通信控制器SJA1000、CAN總線驅動器82C250和高速光電耦合器6N137。LPC2214控制SJA1000的初始化以及對風光發(fā)電站狀態(tài)參數(shù)的接收和發(fā)送。其中,SJA1000的AD0~AD7連接到LPC2214的P2口(DATA0~DATA7),/CS為0時,LPC2214選中SJA1000。SJA1000的/RD、/WR、ALE分別與LPC2214的對應引腳相連,/INT接LPC2214的P0.1腳(外部中斷0),用于中斷訪問SJA1000。

    SJA1000的TX0、RX0通過高速光耦6N137后與82C250的TXD和RXD連接,這樣可較好地實現(xiàn)本節(jié)點在CAN總線上的電氣隔離,從而增強CAN總節(jié)點的抗干擾能力。要注意光耦部分電路采用的兩個電源VCC和VDD必須完全隔離,否則此光耦就失去了意義。本系統(tǒng)中的電源隔離采用了小功率的電源隔離模塊實現(xiàn)。
    另外,通過在82C250的CANH和CANL引腳之間串連60 ?贅的電阻以消除電路中信號反射等干擾。CANH和CANL與地之間并聯(lián)兩個30 pF的小電容,可濾除總線上的高頻干擾和一定的電磁輻射。另外,在兩根CAN總線輸入端與地之間分別接了一個防雷擊管,當兩端輸入端與地之間出現(xiàn)瞬變干擾時,通過防雷擊管的放電可起到一定的保護作用。
3 基于μC/OS-Ⅱ環(huán)境的多任務設計
3.1 μC/OS-Ⅱ操作系統(tǒng)在ARM7核上的移植

 移植是使一個實時內核能在其他微處理器上運行,也就是為特定的CPU編寫特定的代碼。因為μC/OS-Ⅱ在讀/寫CPU寄存器時,只能通過匯編語言來進行,因此在使用μC/OS-Ⅱ時,針對具體的CPU,用戶需要用匯編語言編寫與CPU硬件相關的代碼。
 根據μC/OS-Ⅱ的要求,移植μC/OS-Ⅱ到一個微處理器的體系結構上需要提供三個文件:在C語言頭文件OS_CPU.H中,要定義與編譯器無關的數(shù)據類型;定義所使用的堆棧數(shù)據類型以及堆棧的增長方向;定義一些有關ARM核的軟中斷。在C程序源文件OS_CPU_C.C中,主要是μC/OS-Ⅱ任務堆棧初始化函數(shù);在匯編程序源文件OS_CPU_A.S中,主要是時鐘節(jié)拍中斷服務函數(shù)、中斷退出時的任務切換函數(shù)以及μC/OS-Ⅱ第一次進入多任務環(huán)境時運行最高優(yōu)先級任務的函數(shù)。
3.2 系統(tǒng)任務設計
 μC/OS-Ⅱ要求在其上運行的應用軟件“任務化”,所以需要按μC/OS-Ⅱ的任務編寫規(guī)范設計系統(tǒng)應用任務。按任務優(yōu)先級從高到低設計如下[4]。
 Task0:完成系統(tǒng)各部分(包括MC39i)初始化工作后,采用時間片的方式進行PPP數(shù)據幀的接收,并完成該數(shù)據幀的解析。
 Task 1:風光發(fā)電廠各發(fā)電站狀態(tài)參數(shù)的讀取。
 Task 2:UDP數(shù)據包的接收處理。
 Task 3:TCP數(shù)據包的接收處理。
 Task 4:ICMP數(shù)據包的接收處理(主要是響應PING)。
 Task 5:針對UDP數(shù)據報中的命令請求進行響應。
 Task 6:針對TCP數(shù)據報中的命令請求進行響應(Web服務器功能)。
 系統(tǒng)任務之間的通信如圖3所示。

3.3 IP數(shù)據包解析模塊軟件設計
  IP協(xié)議是TCP/IP協(xié)議的核心,也是網絡層中最重要的協(xié)議,IP層接收由更低層發(fā)來的數(shù)據包,并將其發(fā)送到更高層——TCP或UDP層;反之,IP報也把從TCP或UDP層接收來的數(shù)據包傳送到更低層,并最終通過TCP/IP網絡進行無連接傳送數(shù)據報。
 本系統(tǒng)向監(jiān)控中心傳送的數(shù)據,需先進行TCP/IP協(xié)議的處理,即要求LPC2214實現(xiàn)TCP/IP協(xié)議。其中IP數(shù)據包的封裝及發(fā)送是通過函數(shù)ip_send( )實現(xiàn)的,通常此函數(shù)是在PPP協(xié)議處理函數(shù)中被調用。風光發(fā)電站各狀態(tài)參數(shù)在被封裝為UDP數(shù)據包以后,調用此函數(shù)進行IP協(xié)議格式數(shù)據封裝,即在IP數(shù)據報頭的數(shù)據結構中添加IP報頭信息(其中包括計算IP報頭的校驗和值)。在封裝好IP包之后,要設置此IP報頭數(shù)據(20 B)的“發(fā)送結構”Send_Ptr,從而與UDP數(shù)據報構成一個發(fā)送數(shù)據鏈。
    發(fā)送IP報之前要先得到“發(fā)送信號量”SendFlag,否則只有掛起當前任務等待此信號量。一旦得到發(fā)送信號量,對該IP報進行PPP協(xié)議數(shù)據格式封裝,之后再啟動MC39i發(fā)送數(shù)據,數(shù)據發(fā)送完畢后要及時釋放發(fā)送信號量。
 具體程序如下:
  Uint8 ip_send(struct Send_Ptr *TxdData,uint8 * dest_ip,uint8 PROTOCOL)
  {//TxdData為存放待傳輸數(shù)據首指針;dest_ip為目的IP地址首指針;IP包中的下一層
//客戶協(xié)議類型(UDP、TCP)
    uint16 CRC;
      uint8 Ip_Head[20];
      struct Send_Ptr TxdIpData;
      uint8 err;
      static uint16 FrameIndex=0;
      Ip_Head[0]=0x45;
       ……                 //進行TCP/IP協(xié)議中的IP數(shù)據包
                                                    //報頭設置
      Ip_Head[19]=dest_ip[3];
    CRC=CreateIpHeadCrc(Ip_Head);  //對IP首部中每16位
                                 //進行二進制反碼求和
      Ip_Head[10]=(CRC&0xff00)>>8;
      Ip_Head[11]=CRC&0x00ff;
      TxdIpData.STPTR=TxdData;
      TxdIpData.length=20;
      TxdIpData.DAPTR=Ip_Head;
      OSSemPend(SendFlag,10,&err);
            //獲取μC/OS-Ⅱ操作系統(tǒng)當前的發(fā)送權(得到“發(fā)
                 //送信號量”SendFlag)
      if(err==OS_NO_ERR)          //沒有得到發(fā)送權(發(fā)送信
                        //號量SendFlag),掛起任務,等待
      {
          if(ip_mac_send(&TxdIpData,dest_ip))
                //按照PPP協(xié)議打包數(shù)據,并啟動MC39i
                                                //通信模塊進行傳輸數(shù)據
          {
              OSSemPost(SendFlag);
              //發(fā)送成功,釋放“發(fā)送信號量”,并返回“1”
              return(1);
          }
          else
          {
              OSSemPost(SendFlag);
                //發(fā)送失敗,釋放“發(fā)送信號量”,并返回“0”
              return(0);
          }
      }
      else
          return (0);
    }
4 GPRS通信模塊MC39i的應用
 在本系統(tǒng)中MC39i作為GPRS終端的無線收發(fā)模塊,從TCP/IP模塊接收的IP數(shù)據包和從基站接收的GPRS分組數(shù)據進行相應的協(xié)議處理后再轉發(fā)。MC39i提供了9針的標準RS232接口,通過SP3232電平轉換芯片與LPC2214的串口相連,進行全雙工通信。LPC2214與MC39i的接口如圖4所示。

    利用GPRS網絡傳輸數(shù)據之前,需要采用PPP協(xié)議將GPRS通信模塊接入Internet。PPP協(xié)議位于數(shù)據鏈路層,是為在兩個對等實體間傳輸數(shù)據包連接而設計的,使用可擴展的鏈路控制協(xié)議LCP來建立,配置和測試數(shù)據鏈路。用網絡控制協(xié)議族NCP建立和配置不同的網絡層協(xié)議,并且允許采用多種網絡層協(xié)議[5]。在本系統(tǒng)完成啟動之后,首先進行MC39i的工作頻率等參數(shù)設置,然后進行撥號與PPP協(xié)商,得到系統(tǒng)本地IP,從而完成GPRS終端的Internet接入。
    LPC2214通過RS232串行口控制GPRS模塊,涉及到的軟件包括:MC39i的初始化、登錄GGSN、與監(jiān)控中心的Internet數(shù)據傳輸。LPC2214對MC39i模塊的控制采用AT命令,圖5給出了GPRS撥號上網及PPP協(xié)商軟件流程圖。

  當GPRS撥號成功接入Internet后,就可以進行無線數(shù)據傳輸了。LPC2214將風光發(fā)電站的狀態(tài)參數(shù)先進行TCP/IP協(xié)議的處理(封裝為IP數(shù)據包),再經RS232串口控制MC39i模塊將所有數(shù)據封裝成GPRS分組數(shù)據包并傳送到GPRS無線網絡[6]。反之,GGSN的回答也可通過串行口進入本系統(tǒng)。
     在現(xiàn)有的GPRS網絡基礎上開發(fā)成本較低的風光電廠SCADA系統(tǒng),具有投入少、安裝方便、傳輸可靠、方便遠程管理等,尤其適合一些邊遠地區(qū)的風光電廠的遠程監(jiān)控,其實用意義大。通過對本系統(tǒng)的試驗測試,基本實現(xiàn)了數(shù)據的遠距離的無線傳輸,具有時延低、正確率高等優(yōu)點。
參考文獻
[1] 林軼群,趙劍鋒. GPRS技術在電力SCADA系統(tǒng)中的應用[J]. 中國科技信息,2006(2).
[2] Bao Yujun. Design of the net data information acquisition for electric energy meter[C]. SPIE  Fourth International Symposium on Precision Mechanical Measuremets, August 25-29, Hefei, China, 2008.
[3] 汪俊鋒,陶維青,張全. 基于MC39I的電能管理終端遠程GPRS接口設計[J]. 合肥工業(yè)大學學報(自然科學版),2009(1).

[4] Bao Yujun. Design of electric energy meter for longdistance data information transfers which based upon GPRS technology[C].IEEE 2009 International Workshop on Intelligent Systems and Applications, May 23-24, Wuhan,China,2009.
[5] 郝記生,張曦煌.基于GPRS網絡的無線數(shù)據傳輸系統(tǒng)[J]. 計算機工程與設計, 2008(10).
[6] 李敏,陳文,王寶勤. 嵌入式GPRS無線通訊系統(tǒng)設計[J]. 長江大學學報(自然科學版), 2009(6).

此內容為AET網站原創(chuàng),未經授權禁止轉載。