新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM與GPRS技術的SCADA系統在風光電廠中的應用

        基于ARM與GPRS技術的SCADA系統在風光電廠中的應用

        作者: 時間:2017-06-04 來源:網絡 收藏

        太陽能和風能是公認的潔凈資源,對環境不產生任何污染,是21世紀能源發展戰略的重要選擇。隨著風光互補發電系統應用范圍的不斷擴大,對風光互補發電系統的性能要求也越來越高。

        通常應用于風光發電廠的監督控制與數據采集系統SCADA(Supervisory Control And Data Acquisition)一般都是由電力通信專網來保障其通信。但由于風光電廠在地理位置上的特殊性、多樣性(通常在邊遠偏僻地區),使得某些通信網無法勝任SCADA的要求[1]。

        通用分組無線業務(GPRS)是GSM網絡的升級,通過在GSM網絡上增加SGSN和GGSN兩種數據交換節點設備以及一些更新軟件來實現,GPRS網絡中的數據傳輸以的形式傳送。在國內,移動通信網絡目前已基本覆蓋全國所有地區,因此利用技術上較為成熟的GPRS無線網絡,可對風光發廠的各個發電站進行實時遠程監測與控制,這對提高整個風光電廠的性能具有實際意義。

        1 系統組成

        整個風光電廠的SCADA系統由風光發電站的狀態參數采集部分和數據處理及傳輸兩部分組成。本文重點介紹數據處理及傳輸部分。風光電廠SCADA系統如圖1所示。

        通過CAN總線與CAN總線適配器的連接,將各個風光發電站的狀態參數傳輸至基于LPC2214的嵌入式系統,數據經處理后由模塊MC39i輸出,并通過GPRS網絡和Internet將數據傳輸至監控中心。反之,監控中心也可以將各種操作指令傳送至控制終端,以控制風光發電站的運行。本系統的核心部分為“嵌入式模塊”的實現[2]。

        本文引用地址:http://www.104case.com/article/201706/348374.htm

         本系統使用ARM7核微處理器LPC2214,并適當對系統存儲資源進行擴展,通過移植嵌入式操作系統μC/OS-Ⅱ來管理整個系統的運行。系統所使用的GPRS模塊MC39i由西門子公司生產,具有使用方便、接口電路簡單等優點[3]。GPRS雖支持TCP/IP業務,但因為MC39i沒有嵌入TCP/IP協議和PPP協議,所以需要在基于LPC2214的嵌入式系統中實現TCP/IP協議和PPP協議,否則系統無法使用GPRS網絡的業務。

        2 CAN總線接口電路設計

        SJA1000與LPC2214之間的接口電路如圖2所示,主要包含:LPC2214最小系統(未畫出)、CAN通信控制器SJA1000、CAN總線驅動器82C250和高速光電耦合器6N137。LPC2214控制SJA1000的初始化以及對風光發電站狀態參數的接收和發送。其中,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連接,這樣可較好地實現本節點在CAN總線上的電氣隔離,從而增強CAN總節點的抗干擾能力。要注意光耦部分電路采用的兩個電源VCC和VDD必須完全隔離,否則此光耦就失去了意義。本系統中的電源隔離采用了小功率的電源隔離模塊實現。

        另外,通過在82C250的CANH和CANL引腳之間串連60 ?贅的電阻以消除電路中信號反射等干擾。CANH和CANL與地之間并聯兩個30 pF的小電容,可濾除總線上的高頻干擾和一定的電磁輻射。另外,在兩根CAN總線輸入端與地之間分別接了一個防雷擊管,當兩端輸入端與地之間出現瞬變干擾時,通過防雷擊管的放電可起到一定的保護作用。

        3 基于μC/OS-Ⅱ環境的多任務設計


        3.1 μC/OS-Ⅱ操作系統在ARM7核上的移植

        移植是使一個實時內核能在其他微處理器上運行,也就是為特定的CPU編寫特定的代碼。因為μC/OS-Ⅱ在讀/寫CPU寄存器時,只能通過匯編語言來進行,因此在使用μC/OS-Ⅱ時,針對具體的CPU,用戶需要用匯編語言編寫與CPU硬件相關的代碼。

        根據μC/OS-Ⅱ的要求,移植μC/OS-Ⅱ到一個微處理器的體系結構上需要提供三個文件:在C語言頭文件OS_CPU.H中,要定義與編譯器無關的數據類型;定義所使用的堆棧數據類型以及堆棧的增長方向;定義一些有關ARM核的軟中斷。在C程序源文件OS_CPU_C.C中,主要是μC/OS-Ⅱ任務堆棧初始化函數;在匯編程序源文件OS_CPU_A.S中,主要是時鐘節拍中斷服務函數、中斷退出時的任務切換函數以及μC/OS-Ⅱ第一次進入多任務環境時運行最高優先級任務的函數。

        3.2 系統任務設計

        μC/OS-Ⅱ要求在其上運行的應用軟件“任務化”,所以需要按μC/OS-Ⅱ的任務編寫規范設計系統應用任務。按任務優先級從高到低設計如下[4]。

        Task0:完成系統各部分(包括MC39i)初始化工作后,采用時間片的方式進行PPP數據幀的接收,并完成該數據幀的解析。

        Task 1:風光發電廠各發電站狀態參數的讀取。
        Task 2:UDP數據包的接收處理。
        Task 3:TCP數據包的接收處理。
        Task 4:ICMP數據包的接收處理(主要是響應PING)。
        Task 5:針對UDP數據報中的命令請求進行響應。
        Task 6:針對TCP數據報中的命令請求進行響應(Web服務器功能)。
        系統任務之間的通信如圖3所示。


        3.3 IP數據包解析模塊軟件設計

        IP協議是TCP/IP協議的核心,也是網絡層中最重要的協議,IP層接收由更低層發來的數據包,并將其發送到更高層——TCP或UDP層;反之,IP報也把從TCP或UDP層接收來的數據包傳送到更低層,并最終通過TCP/IP網絡進行無連接傳送數據報。

        本系統向監控中心傳送的數據,需先進行TCP/IP協議的處理,即要求LPC2214實現TCP/IP協議。其中IP數據包的封裝及發送是通過函數ip_send( )實現的,通常此函數是在PPP協議處理函數中被調用。風光發電站各狀態參數在被封裝為UDP數據包以后,調用此函數進行IP協議格式數據封裝,即在IP數據報頭的數據結構中添加IP報頭信息(其中包括計算IP報頭的校驗和值)。在封裝好IP包之后,要設置此IP報頭數據(20 B)的“發送結構”Send_Ptr,從而與UDP數據報構成一個發送數據鏈。

        發送IP報之前要先得到“發送信號量”SendFlag,否則只有掛起當前任務等待此信號量。一旦得到發送信號量,對該IP報進行PPP協議數據格式封裝,之后再啟動MC39i發送數據,數據發送完畢后要及時釋放發送信號量。

        具體程序如下:

        Uint8 ip_send(struct Send_Ptr *TxdData,uint8 * dest_ip,uint8 PROTOCOL)
        {//TxdData為存放待傳輸數據首指針;dest_ip為目的IP地址首指針;IP包中的下一層
        //客戶協議類型(UDP、TCP)
        uint16 CRC;
        uint8 Ip_Head[20];
        struct Send_Ptr TxdIpData;
        uint8 err;
        static uint16 FrameIndex=0;
        Ip_Head[0]=0x45;
        …… //進行TCP/IP協議中的IP數據包
        //報頭設置
        Ip_Head[19]=dest_ip[3];
        CRC=CreateIpHeadCrc(Ip_Head); //對IP首部中每16位
        //進行二進制反碼求和
        Ip_Head[10]=(CRC0xff00)>>8;
        Ip_Head[11]=CRC0x00ff;
        TxdIpData.STPTR=TxdData;
        TxdIpData.length=20;
        TxdIpData.DAPTR=Ip_Head;
        OSSemPend(SendFlag,10,err);
        //獲取μC/OS-Ⅱ操作系統當前的發送權(得到“發
        //送信號量”SendFlag)
        if(err==OS_NO_ERR) //沒有得到發送權(發送信
        //號量SendFlag),掛起任務,等待
        {
        if(ip_mac_send(TxdIpData,dest_ip))
        //按照PPP協議打包數據,并啟動MC39i
        //通信模塊進行傳輸數據
        {
        OSSemPost(SendFlag);
        //發送成功,釋放“發送信號量”,并返回“1”
        return(1);
        }
        else
        {
        OSSemPost(SendFlag);
        //發送失敗,釋放“發送信號量”,并返回“0”
        return(0);
        }
        }
        else
        return (0);
        }

        4 模塊MC39i的應用

        在本系統中MC39i作為GPRS終端的無線收發模塊,從TCP/IP模塊接收的IP數據包和從基站接收的GPRS分組數據進行相應的協議處理后再轉發。MC39i提供了9針的標準RS232接口,通過SP3232電平轉換芯片與LPC2214的串口相連,進行全雙工通信。LPC2214與MC39i的接口如圖4所示。

        利用GPRS網絡傳輸數據之前,需要采用PPP協議將GPRS通信模塊接入Internet。PPP協議位于數據鏈路層,是為在兩個對等實體間傳輸數據包連接而設計的,使用可擴展的鏈路控制協議LCP來建立,配置和測試數據鏈路。用網絡控制協議族NCP建立和配置不同的網絡層協議,并且允許采用多種網絡層協議[5]。在本系統完成啟動之后,首先進行MC39i的工作頻率等參數設置,然后進行撥號與PPP協商,得到系統本地IP,從而完成GPRS終端的Internet接入。

        LPC2214通過RS232串行口控制GPRS模塊,涉及到的軟件包括:MC39i的初始化、登錄GGSN、與監控中心的Internet數據傳輸。LPC2214對MC39i模塊的控制采用AT命令,圖5給出了GPRS撥號上網及PPP協商軟件流程圖。

        當GPRS撥號成功接入Internet后,就可以進行無線數據傳輸了。LPC2214將風光發電站的狀態參數先進行TCP/IP協議的處理(封裝為IP數據包),再經RS232串口控制MC39i模塊將所有數據封裝成GPRS分組數據包并傳送到GPRS無線網絡[6]。反之,GGSN的回答也可通過串行口進入本系統。

        在現有的GPRS網絡基礎上開發成本較低的風光電廠SCADA系統,具有投入少、安裝方便、傳輸可靠、方便遠程管理等,尤其適合一些邊遠地區的風光電廠的遠程監控,其實用意義大。通過對本系統的試驗測試,基本實現了數據的遠距離的無線傳輸,具有時延低、正確率高等優點。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 济源市| 泌阳县| 平乐县| 白朗县| 德保县| 昌乐县| 积石山| 万安县| 曲靖市| 萨迦县| 碌曲县| 古交市| 山西省| 安远县| 田东县| 洞口县| 青阳县| 锡林浩特市| 边坝县| 贺州市| 天长市| 云和县| 宽甸| 夹江县| 兴国县| 灵璧县| 灵丘县| 梁平县| 高平市| 乐业县| 宣武区| 乐安县| 临泽县| 宁阳县| 遵义市| 仲巴县| 甘泉县| 崇文区| 容城县| 盘锦市| 乐平市|