遲屹楠+王洪+劉忠祥
摘 要:互聯(lián)網(wǎng)技術(shù)的發(fā)展逐漸滲透到電力行業(yè),文章提出手機(jī)APP通信方法,將針對(duì)性地解決電力行業(yè)中電力電子裝置中遠(yuǎn)距離通信問題,在無(wú)線范圍內(nèi)只需要打開手機(jī)APP就能精準(zhǔn)讀取電力電子設(shè)備運(yùn)行狀態(tài),并且控制其運(yùn)行方式,實(shí)現(xiàn)“四遙”功能。
關(guān)鍵詞:電力電子;手機(jī)APP;通信
中圖分類號(hào):TN929.5 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2018)05-0040-03
Abstract: The development of Internet technology has gradually penetrated into the power industry. This paper proposes a mobile phone APP communications method, which will solve the problem of long-distance communications in power electronic devices. Within the wireless range, people only need to open the mobile phone APP to accurately read the power electronic equipment running state and control its operation mode in order to achieve "four remote" functions.
Keywords: power electronics; mobile phone app; communications
引言
隨著國(guó)家電網(wǎng)配電覆蓋面積越來(lái)越廣,戶外配電的需求也日益提高,許多電力電子裝置需要投入到戶外配網(wǎng)中去,安裝在戶外的裝置往往其位置在電線桿上或者其他人難以到達(dá)的位置[1],這種情況下,設(shè)備人員需要讀取設(shè)備液晶屏上顯示的運(yùn)行參數(shù)或控制設(shè)備運(yùn)行方式時(shí),就會(huì)很不方面,人工成本較大。
本文提出了手機(jī)APP監(jiān)控設(shè)備運(yùn)行狀況的方法,即在電力電子裝置中安裝無(wú)線模塊,將電力電子的通信串口與無(wú)線模塊相匹配,將數(shù)據(jù)傳輸?shù)綗o(wú)線模塊中,利用手機(jī)連接上無(wú)線網(wǎng)絡(luò),通過APP來(lái)讀取電力電子裝置的通信信息,并通過APP來(lái)控制設(shè)備的運(yùn)行。手機(jī)APP監(jiān)控軟件在設(shè)備無(wú)線覆蓋的范圍內(nèi),能實(shí)現(xiàn)“四遙”功能,遙信是對(duì)裝置開關(guān)信息的測(cè)量。遙控是對(duì)裝置運(yùn)行模式的遠(yuǎn)程控制。遙測(cè)是對(duì)裝置電壓,電流,功率等工作情況中參數(shù)的測(cè)量。遙調(diào)是對(duì)電力設(shè)備參數(shù)的遠(yuǎn)程調(diào)控。使用手機(jī)APP監(jiān)控就舍棄了液晶屏的安裝,節(jié)約設(shè)備成本,具有很高的實(shí)用性和通用性。
1 系統(tǒng)總體描述
戶外和戶內(nèi)電力電子設(shè)備的安裝在位置上具有靈活性同時(shí)需要實(shí)時(shí)監(jiān)控,可采用手機(jī)APP作為上位機(jī)的方式來(lái)實(shí)現(xiàn)對(duì)裝置在無(wú)線范圍內(nèi)的實(shí)時(shí)監(jiān)控。本次系統(tǒng)中電力電子裝置與Wifi模塊連接采用串口RS485,通過Wifi模塊發(fā)射無(wú)線網(wǎng)絡(luò),手機(jī)APP再接入網(wǎng)絡(luò)中,與裝置進(jìn)行通信。整個(gè)系統(tǒng)布局如圖1所示結(jié)構(gòu)。
相比于現(xiàn)在普遍使用的液晶屏作為上位機(jī),該系統(tǒng)最大的不同是增加了Wifi無(wú)線模塊,打破了依靠串口線或網(wǎng)線傳輸?shù)木窒扌?,?shí)現(xiàn)了電力電子裝置與通信系統(tǒng)中的Wifi互連,數(shù)據(jù)信息共享。電力電子裝置的運(yùn)行狀況,基本參數(shù)等信息通過Wifi通訊模塊發(fā)送到無(wú)線網(wǎng)絡(luò),利用手機(jī)APP接收信息不僅能夠?qū)崟r(shí)掌握機(jī)器生產(chǎn)運(yùn)行狀況,也具有很強(qiáng)的靈活性,特別是針對(duì)戶外設(shè)備情況。
2 硬件平臺(tái)搭建
2.1 Wifi模塊配置及下位機(jī)通信設(shè)計(jì)
在目前主流的Bluetooth、ZigBee和Wifi三種無(wú)線通信技術(shù)中,藍(lán)牙使用的是FHSS(跳頻擴(kuò)譜)方式,通信距離一般是10米。ZigBee的傳輸速度不高,但功耗低,是一種新型技術(shù)。Wifi技術(shù)具有組網(wǎng)簡(jiǎn)單靈活、傳輸速率快、覆蓋范圍廣的特點(diǎn)[2]。三種通信技術(shù)都支持?jǐn)?shù)據(jù)的傳輸,本系統(tǒng)選用Wifi無(wú)線通信技術(shù),其技術(shù)比較成熟,在工業(yè)領(lǐng)域更具有通用性。
本次系統(tǒng)中Wifi模塊的基本參數(shù)設(shè)置首先需要匹配電力電子裝置中的通信參數(shù)配置建立電力電子裝置與Wifi模塊之間的通信,電力電子裝置中采用的通信方式485串口通信則需要對(duì)Wifi模塊的串口參數(shù)進(jìn)行匹配,包括波特率,數(shù)據(jù)位,校驗(yàn)位,起始位,停止位。
下位機(jī)采用DSP數(shù)據(jù)處理器,主要的電路結(jié)構(gòu)如圖2所示,SCIRX1和SCITX1為DSP的數(shù)據(jù)收發(fā)口,485-RTS為傳輸方向控制信號(hào)口,SH65HVD是485收發(fā)器,最后電路外接口為RS485的A,B口。
2.2 傳輸協(xié)議的規(guī)范
傳輸協(xié)議是指計(jì)算機(jī)通用語(yǔ)言。在工業(yè)領(lǐng)域中,傳輸協(xié)議是電力電子設(shè)備之間,電力電子設(shè)備與網(wǎng)絡(luò)之間的一種通信語(yǔ)言規(guī)范。本次系統(tǒng)采用的是Modbus協(xié)議,協(xié)議中規(guī)范了查詢和讀取這兩個(gè)主要功能。查詢是上位機(jī)將報(bào)文發(fā)送給下位機(jī),報(bào)文就是一段數(shù)據(jù)代碼,發(fā)送的報(bào)文信息就是告知從設(shè)備需要執(zhí)行哪種任務(wù)。例如功能代碼中的03,是命令讀取下位機(jī)的保持寄存器,并將保持寄存器中的數(shù)據(jù)返回給上位機(jī)。數(shù)據(jù)代碼中需要告知下位機(jī)讀取哪些寄存器即從哪個(gè)寄存器開始及寄存器的數(shù)量。報(bào)文最后還有校驗(yàn)位,檢驗(yàn)發(fā)送和接受的報(bào)文數(shù)據(jù)內(nèi)容是否正確?;貞?yīng)是下位機(jī)對(duì)上位機(jī)發(fā)送的報(bào)文作出回答,也是以報(bào)文的形式發(fā)送,上文的例子中,下位機(jī)接收到的是讀取信息的報(bào)文,下位機(jī)回應(yīng)的報(bào)文就應(yīng)該包含所需寄存器里的數(shù)據(jù)內(nèi)容。另外當(dāng)上位機(jī)需要將數(shù)據(jù)寫入寄存器時(shí),下位機(jī)的回應(yīng)就是告知是否寫入成功。
3 手機(jī)APP設(shè)計(jì)
3.1 Android系統(tǒng)概述
Google安卓的開發(fā)平臺(tái)包括操作系統(tǒng),中間件,用戶界面和應(yīng)用軟件。最開始是應(yīng)用于手機(jī),隨著技術(shù)的開發(fā),可支持平板等其他領(lǐng)域,安卓系統(tǒng)的應(yīng)用也越來(lái)越廣泛[3]。在安卓系統(tǒng)的設(shè)計(jì)結(jié)構(gòu)中,包括有三層設(shè)計(jì),底層是linux操作系統(tǒng),中層是虛擬機(jī)和函數(shù)庫(kù),上層為針對(duì)用戶的應(yīng)用軟件。endprint
現(xiàn)有的手機(jī)都是一套成熟的安卓系統(tǒng),安卓應(yīng)用程序就是最上層的軟件編寫,主要程序包括Activity、Content Provider、Service、Intent等部分[4],其中Activity相對(duì)于其他的應(yīng)用程序?qū)υ捒蚧蛘咂渌木W(wǎng)絡(luò)應(yīng)用程序的頁(yè)面窗口來(lái)說(shuō),它是安卓手機(jī)與用戶交流的組件,也就是我們常見的手機(jī)界面,其設(shè)計(jì)需考慮其生命周期,通??梢元?dú)立的在后臺(tái)運(yùn)行。Intent是運(yùn)行中的綁定機(jī)制,它是應(yīng)用程序中四大組件的一個(gè)樞紐,同時(shí)也可用于不同應(yīng)用程序之間,主要是來(lái)告知系統(tǒng)本應(yīng)用程序需要什么請(qǐng)求,想做的是一件什么樣的事情,使用Intent能在各個(gè)活動(dòng)之間相互切換。系統(tǒng)軟件流程圖如圖3。
3.2 APP與Wifi連接
開發(fā)手機(jī)軟件,智能手機(jī)的應(yīng)用軟件主要分為三個(gè)部分,首先是APP與無(wú)線Wifi的網(wǎng)絡(luò)連接,建立手機(jī)與無(wú)線之間的通信,再就是讀,寫功能的編輯,完成對(duì)下位機(jī)數(shù)據(jù)的讀取和命令的下達(dá),最后是顯示部分,實(shí)現(xiàn)人機(jī)交互的界面。手機(jī)APP軟件的編輯使用的是Java語(yǔ)言[5]。當(dāng)Wifi設(shè)置完成之后,手機(jī)APP需要接入進(jìn)行,那么需要手機(jī)APP與Wifi的IP地址和端口號(hào)相匹配正確。
接網(wǎng)的具體代碼如下:
IPText = (EditText) findViewById(R.id.IPEditText);
IPText.setText(“192.168.11.254”);讀取wifi模塊的IP地址
PortText = (EditText) findViewById(R.id.PortEditText);
PortText.setText(“8001”);讀取wifi模塊的端口號(hào)
將IP地址與端口號(hào)配置完成后,就需要建立線程一直讀取數(shù)據(jù):
public void ConnectWifiClick(View v) {
sIPaddrText = IPText.getText().toString();
String sPortText = PortText.getText().toString();
iport = Integer.parseInt(sPortText);
ConnectionStatus.setText(“連接中 ” + “ ....”); ConnectionStatus.setBackgroundColor(android.graphics.Color.GREEN;
SocketConnectThread=newThread(SocketConnectWIFIThread);//通信線程
SocketConnectThread.start();
}
}
本次APP設(shè)計(jì)采用top標(biāo)題模式,共有五個(gè)子界面,每個(gè)界面都有單獨(dú)的進(jìn)程進(jìn)行讀寫,點(diǎn)開一個(gè)界面時(shí)屏蔽掉另外四個(gè),避免進(jìn)程之間的相互干擾。
3.3 APP與下位機(jī)通信處理
在編寫讀,寫代碼時(shí),要嚴(yán)格依照之前定義的Modbus協(xié)議,來(lái)規(guī)范發(fā)送和接受的報(bào)文格式。為防止報(bào)文傳輸錯(cuò)誤,報(bào)文的校驗(yàn)采用CRC校驗(yàn)法。
APP發(fā)送讀功能的數(shù)據(jù)格式:從機(jī)地址(1字節(jié))、功能域(1字節(jié))、數(shù)據(jù)域(4字節(jié))、CRC校驗(yàn)(2字節(jié))。其中數(shù)據(jù)域包括待讀寄存器地址的高位,待讀寄存器地址底位,待讀N個(gè)寄存器個(gè)數(shù)的高位,待讀寄存器個(gè)數(shù)的底位。一次最多允許讀取20個(gè)寄存器。下位機(jī)接受到讀報(bào)文后返回的報(bào)文格式:從機(jī)地址(1字節(jié))、功能域(1字節(jié))、數(shù)據(jù)內(nèi)容(2*N+1個(gè)字節(jié))、CRC校驗(yàn)。其中數(shù)據(jù)內(nèi)容包括:返回?cái)?shù)據(jù)的字節(jié)數(shù)、N個(gè)數(shù)據(jù)高位、N個(gè)數(shù)據(jù)低位。讀取錯(cuò)誤時(shí)返回:從機(jī)地址、功能域(0x83)、錯(cuò)誤代碼、CRC校驗(yàn)。讀取設(shè)備運(yùn)行狀態(tài)時(shí)的代碼如下:
private void ReadData_Timestate2() {
int j;
int num, add;
try {
m_nAddr = 1; //判斷報(bào)文為讀功能
add = 0x1300; //讀取下位機(jī)的寄存器地址
num = 0x0F; //讀取的寄存器個(gè)數(shù)
Pack(0x03, add, num);報(bào)文信息打包
if (true == ReceiveThreadClose) {
outStream.write(m_bTxBuf, 0, 8); //發(fā)送報(bào)文
} else {
ReadDataTimestateFlag = false;
}
} catch (IOException e) {
ReadDataTimestateFlag = false;
}
}
APP發(fā)送寫功能的數(shù)據(jù)格式:從機(jī)地址(1字節(jié))、功能域(1字節(jié))、數(shù)據(jù)長(zhǎng)度(5+2*N字節(jié))、CRC校驗(yàn)。其中數(shù)據(jù)長(zhǎng)度包括寄存器地址高位、寄存器地址低位、寄存器個(gè)數(shù)高位、寄存器個(gè)數(shù)低位、字節(jié)數(shù)、數(shù)據(jù)內(nèi)容。下位機(jī)接收到寫報(bào)文后返回的報(bào)文格式:從機(jī)地址、功能域、寄存器地址高位、寄存器數(shù)據(jù)地址低位、寫入寄存器個(gè)數(shù)高位、寫入寄存器個(gè)數(shù)底位。寫入錯(cuò)誤時(shí)返回:從機(jī)地址、功能域(0x83)、錯(cuò)誤代碼、CRC校驗(yàn)。寫功能的報(bào)文主要為控制命令,流程圖如圖4。
3.4 APP界面設(shè)計(jì)
手機(jī)APP界面主要顯示的是電力電子裝置運(yùn)行的參數(shù)和人為控制的命令編寫部分,在Andriod中使用布局管理器可以很方便地控制各組件的位置和大小,本次設(shè)計(jì)選用的是線性布局管理器(LinearLayout),組件的位置可以直接在eclipse中拖動(dòng)擺放,也可定義組件的格式,例如“連接”按鈕的定義代碼如下:endprint