<dd id="saiiy"></dd>
  1. <s id="saiiy"></s>

    1. <s id="saiiy"></s>
      1. <span id="saiiy"><blockquote id="saiiy"></blockquote></span>

        基于GO語(yǔ)言的配網(wǎng)自動(dòng)化短信系統設計與實(shí)現

        發(fā)布時(shí)間:2025-06-13 15:57:25   來(lái)源:心得體會(huì )    點(diǎn)擊:   
        字號:

        李偉青 石 揚 葉匯鎵

        (廣東電網(wǎng)有限責任公司梅州供電局 廣東 梅州 514021)

        配網(wǎng)自動(dòng)化設備點(diǎn)多面廣,告警信號量巨大[1],調度員漏監視告警信號情況時(shí)有發(fā)生,導致供電所運維人員無(wú)法及時(shí)掌握設備異常情況,繼而耽誤搶修復電時(shí)間。因此,配電自動(dòng)化主站系統的短信功能應運而生。目前,電網(wǎng)企業(yè)使用的配網(wǎng)自動(dòng)化系統基本帶有短信功能,但受系統底層架構設計限制,僅支持固定數量的供電所,如配網(wǎng)自動(dòng)化系統OPEN3200僅支持32個(gè)供電所,D5200僅支持64個(gè)供電所。對于配調集約化的地級市供電公司[2],管理的供電所數量往往會(huì )超過(guò)64個(gè),此時(shí),配網(wǎng)自動(dòng)化系統自帶的短信功能就難以滿(mǎn)足實(shí)際需求。為解決上述問(wèn)題,本文設計開(kāi)發(fā)了一套獨立于主站系統、可支持任意供電所數量的跨平臺短信系統。

        本系統主要包括數據庫服務(wù)器、Linux工作站和GMS短信模塊等三部分。數據庫服務(wù)器和Linux工作站是配網(wǎng)自動(dòng)化主站系統發(fā)布區(安全III區)設備,數據庫采用國產(chǎn)達夢(mèng)數據庫(DM7),該數據庫以結構化方式存儲了配電設備跳閘和異常告警信息。工作站安裝了達夢(mèng)數據庫客戶(hù)端,借助配網(wǎng)自動(dòng)化主站系統局域網(wǎng),即可遠程訪(fǎng)問(wèn)數據庫服務(wù)器獲取告警信息。短信系統部署在Linux工作站上,定期讀取數據庫相關(guān)數據表中的告警記錄,將告警信息處理成短信內容后以串口或USB接口輸出至GSM短信模塊,再通過(guò)運營(yíng)商公網(wǎng)發(fā)送至目標接收人手機。系統硬件整體如圖1所示。

        圖1 系統硬件連接圖

        系統軟件設計采用“主程序+接口”架構,可實(shí)現主程序與接口之間有效解耦。將主要功能需求劃分為Web控制管理接口、告警信息采集接口、GSM短信模塊接口,主程序只需負責調用各功能接口,將各接口的數據流有序銜接處理,就可實(shí)現接口之間各司其職、運行高效、擴展靈活的目標。系統軟件架構如圖2所示。

        圖2 系統軟件架構圖

        考慮到數據庫類(lèi)型和數據表結構因不同應用場(chǎng)景存在差異,將告警信息采集接口做成插件模式,采集信息的具體邏輯由通用的shell腳本實(shí)現,主程序通過(guò)調用數據采集插件即可獲得指定時(shí)間段數據表中的所有告警信息。在獲取到告警信息后,主程序按照預定的規則進(jìn)行匹配,保留真正需要發(fā)送短信的告警信息,從Web載入的excel表格信息找出告警信息接收人,并將告警內容和接收人手機號碼存入緩存隊列。再通過(guò)調用GSM短信模塊不斷從緩存隊列中消費數據,按特定協(xié)議封裝成GSM模塊識別的編碼信息發(fā)出。為提升短信的發(fā)送效率,將GSM模塊設計成短信發(fā)送集群管理模塊,每個(gè)模塊隨機從緩存隊列中取出告警內容,自動(dòng)實(shí)現短信發(fā)送負載均衡。人機交互方面,本系統將告警信息預定的匹配規則和告警短信接收人信息與短信平臺程序解耦,管理員可通過(guò)Web控制臺上傳json文件和excel文件,對短信平臺的數據采集及線(xiàn)路管理人員信息配置進(jìn)行管理。此外,短信平臺對每個(gè)關(guān)鍵環(huán)節開(kāi)啟了日志模式,詳細記錄了告警信息內容、短信發(fā)送時(shí)間、接收人等信息,并可通過(guò)Web控制臺對上述流水日志進(jìn)行查詢(xún),便于功能調試和責任追溯。

        3.1 編程開(kāi)發(fā)語(yǔ)言選擇

        傳統的基于C/C++為編程語(yǔ)言,使用面向對象的QT類(lèi)GUI系統為基礎研發(fā)的客戶(hù)端軟件系統,在升級換代操作系統時(shí),也面臨著(zhù)重新適配開(kāi)發(fā)的工作,軟件的使用和開(kāi)發(fā)成本都比較高。如果將傳統的客戶(hù)端程序做成B/S(Brower/Server)架構,將軟件功能展示的邏輯交由操作系統發(fā)行版默認的瀏覽器來(lái)呈現,核心的功能由服務(wù)端來(lái)提供,整個(gè)軟件系統的開(kāi)發(fā)將不會(huì )局限于某個(gè)特定的GUI庫[3-4]。這種開(kāi)放模式的優(yōu)點(diǎn)也是顯而易見(jiàn)的,一方面可充分利用Web豐富的生態(tài)環(huán)境實(shí)現前端展現功能,另一方面,可從QTC++的跨平臺GUI開(kāi)發(fā)框架解放出來(lái),選擇一個(gè)對開(kāi)發(fā)和維護更加友好的后臺開(kāi)發(fā)語(yǔ)言來(lái)實(shí)現核心功能。因此本文選擇了當前廣泛應用后臺程序開(kāi)發(fā)的Golang語(yǔ)言。Golang語(yǔ)言是Google站在C/C++歷史的經(jīng)驗基礎上發(fā)明的專(zhuān)供服務(wù)端開(kāi)發(fā)的語(yǔ)言,相比于C++的復雜,Golang是大道至簡(jiǎn)[5-6]。

        3.2 數據查詢(xún)接口

        為實(shí)現主程序與數據采集解耦,數據查詢(xún)的邏輯由shell腳本實(shí)現,以文本流形式反饋給主程序。主程序中QueryForAlert()函數是查詢(xún)告警的總線(xiàn)程,可根據配置文件中查詢(xún)表信息,產(chǎn)生相應線(xiàn)程queryOneTableGenAlert()進(jìn)行單張表查詢(xún)操作,兩個(gè)函數是逐級細化解耦多表查詢(xún)操作過(guò)程。用戶(hù)可通過(guò)配置cft.json中的tables結構體信息,實(shí)現查詢(xún)數據庫多張不同表的目的,具有非常靈活的擴展特性。tables配置信息中包括輪詢(xún)數據庫間隔時(shí)間、數據庫查詢(xún)腳本路徑、對告警內容匹配的“白名單”關(guān)鍵字和過(guò)濾的“黑名單”關(guān)鍵字等。

        shell腳本是實(shí)現數據庫告警記錄查詢(xún)的載體,其主要功能包括實(shí)現遠程登錄、查詢(xún)指定數據表告警信息兩方面。腳本設計上充分考慮了擴展性,將通用的登錄和文本處理封裝成“exec_query.sh”,而查詢(xún)具體數據表的操作封裝成一個(gè)模板,如查詢(xún)事故跳閘告警信息的模板accident.sql.template,再將這兩部分整合成一個(gè)具有表名特征的接口查詢(xún)腳本,如事故信息表查詢(xún)腳本query_accident.sh。

        3.3 緩存隊列數據存儲

        由于腳本查詢(xún)數據庫的速率比GSM發(fā)送短信的速率快幾個(gè)數量級,兩者之間須要引入一種“降速器”才能解決速率失配的問(wèn)題——短信緩存隊列。查詢(xún)程序調用系統底層命令執行函數exec.Command()運行shell腳本,將查詢(xún)結果以文本流形式管道標準輸出cmd.StdoutPipe(),并存入csv文件流讀(接收)對象csvreader中。程序逐行讀出csvreader內容,按圖3所示流程進(jìn)行處理,將告警查詢(xún)結果轉變成包含告警內容主體、接收人號碼、線(xiàn)路名稱(chēng)等信息的alert結構體,并不斷存入緩存隊列,為下一步的短信封裝(熟數據)與發(fā)送提供原材料。

        3.4 緩存隊列數據消費

        考慮到Msg(告警內容)和Receivers(接收人)之間存在一對多的映射關(guān)系,每條告警內容需根據接收人數量生成的多條短信逐一發(fā)送m.SendSMS()。程序中以不帶break的for死循環(huán),不斷從ch隊列中讀取并封裝發(fā)送。

        常見(jiàn)的GSM模塊僅支持發(fā)送中文短信字符數不超過(guò)70個(gè)[7-8],因此在發(fā)送前對短信內容長(cháng)度進(jìn)行判斷,將超出70個(gè)字符的內容分割成多條(SplitMsg),并在每條短信內容前標記次序,以便接收人分辨子短信的先后順序(如分割成兩條短信時(shí),標記為1/2、2/2)。SendSMS()循環(huán)調用sendOneSMS()發(fā)送一個(gè)小于70個(gè)字符的短信,循環(huán)次數即為長(cháng)短信切割成小短信的數量。

        3.5 GMS模塊發(fā)送短信過(guò)程

        短信系統硬件上采用串口通信,軟件上通過(guò)AT指令交互。為避免modem發(fā)送的中文內容是亂碼,系統對短信內容采用PDU協(xié)議的UCS2編碼。在短信發(fā)送過(guò)程中,向一個(gè)接收人發(fā)送一條不超過(guò)70字符短信封裝成發(fā)送短信的最小操作單元sendOneSMS(),其核心操作包括短信編碼封裝和編碼發(fā)送兩部分。具體發(fā)送流程如圖4所示。

        圖4 短信發(fā)送過(guò)程流程

        AT命令是用于控制TE(Terminal Equipment)和MT(Mobile Terminal)之間交互的協(xié)議,協(xié)議本身采用文本,每個(gè)命令均以AT打頭[9-10]。系統采用西門(mén)子TC35i系列芯片,涉及的AT指令主要包括以下五個(gè):

        AT+CSCA?

        //查詢(xún)短信服務(wù)中心號碼

        AT+CMGF=0

        //設置短信格式為PDU模式

        AT+CMGS=length

        //發(fā)送短信文本長(cháng)度

        AT+IPR=115 200

        //設置波特率為115 200

        AT&W

        //保存修改后的配置

        為驗證設計開(kāi)發(fā)軟件的有效性,將短信系統部署在工作站中,并加入Linux操作系統自啟動(dòng)列表。短信系統啟動(dòng)初始化成功后發(fā)送一條提示短信,第一次運行需在accident_last_time文件設置數據庫查詢(xún)起始時(shí)間,否則按默認時(shí)間2020-01-01 00:00:00。GSM模塊采用9針串口線(xiàn)接入工作站COM1,使用Linux系統命令dmesg| grep ttyS查看GSM模塊是否正確掛載在/dev/tt yS0文件中。在測試過(guò)程中,為了避免短信誤發(fā)至目標接收人,先對config.xls配置文件中的接收人手機號臨時(shí)修改成測試人員手機號。測試結果如下:圖5為短信系統Web控制管理界面,圖6為配網(wǎng)自動(dòng)化主站告警信息,圖7為測試人員接收短信。

        圖5 Web控制管理界面

        圖6 配網(wǎng)自動(dòng)化主站告警信息

        圖7 測試人員接收短信

        為提高短信發(fā)布功能的可靠性,短信系統設置了“看門(mén)狗”功能,每天下午5:10(可修改)定時(shí)向系統管理員發(fā)送一條“sms station is running”提示短信,以表示短信平臺運行正常;管理員如未收到短信,則說(shuō)明短信系統自身故障,需現場(chǎng)檢查處理。

        自主開(kāi)發(fā)的短信系統成功部署應用,使得配網(wǎng)自動(dòng)化主站系統具備向任意個(gè)供電所按配電線(xiàn)路運維歸屬精準發(fā)送告警短信的能力。高效精確的短信服務(wù)解決了運維單位獲取設備異常信息手段不足的痛點(diǎn),為運維單位快速隔離故障和恢復送電贏(yíng)得寶貴時(shí)間,有助于提升公司供電可靠性水平。鑒于短信系統具有良好的擴展性,下一步將豐富短信功能,擴充數據查詢(xún)腳本對配網(wǎng)主站系統自身告警信息的采集,以提升主站系統安全運行水平。

        猜你喜歡主程序數據表腳本酒駕作文小學(xué)中年級(2022年11期)2022-11-25安奇奇與小cool 龍(第二回)課堂內外(小學(xué)版)(2020年11期)2020-12-04湖北省新冠肺炎疫情數據表黨員生活(2020年2期)2020-04-17淺談數控銑削技術(shù)代碼程序的嵌套方式研究數字技術(shù)與應用(2019年9期)2019-12-13電控冰箱軟件模塊化設計日用電器(2019年12期)2019-02-26基于列控工程數據表建立線(xiàn)路拓撲關(guān)系的研究鐵道通信信號(2018年10期)2018-12-06數據庫系統shell腳本應用電子測試(2018年14期)2018-09-26快樂(lè )假期中學(xué)生(2017年19期)2017-09-03時(shí)光倒流 換回PotPlayer老圖標電腦愛(ài)好者(2017年10期)2017-06-01圖表中國石油企業(yè)(2014年4期)2014-11-30
        国产另类无码专区|日本教师强伦姧在线观|看纯日姘一级毛片|91久久夜色精品国产按摩|337p日本欧洲亚洲大胆精

        <dd id="saiiy"></dd>
        1. <s id="saiiy"></s>

          1. <s id="saiiy"></s>
            1. <span id="saiiy"><blockquote id="saiiy"></blockquote></span>