迟屹楠+王洪+刘忠祥

摘 要:互联网技术的发展逐渐渗透到电力行业,文章提出手机APP通信方法,将针对性地解决电力行业中电力电子装置中远距离通信问题,在无线范围内只需要打开手机APP就能精准读取电力电子设备运行状态,并且控制其运行方式,实现“四遥”功能。

关键词:电力电子;手机APP;通信

中图分类号:TN929.5 文献标志码:A 文章编号: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

引言

随着国家电网配电覆盖面积越来越广,户外配电的需求也日益提高,许多电力电子装置需要投入到户外配网中去,安装在户外的装置往往其位置在电线杆上或者其他人难以到达的位置[1],这种情况下,设备人员需要读取设备液晶屏上显示的运行参数或控制设备运行方式时,就会很不方面,人工成本较大。

本文提出了手机APP监控设备运行状况的方法,即在电力电子装置中安装无线模块,将电力电子的通信串口与无线模块相匹配,将数据传输到无线模块中,利用手机连接上无线网络,通过APP来读取电力电子装置的通信信息,并通过APP来控制设备的运行。手机APP监控软件在设备无线覆盖的范围内,能实现“四遥”功能,遥信是对装置开关信息的测量。遥控是对装置运行模式的远程控制。遥测是对装置电压,电流,功率等工作情况中参数的测量。遥调是对电力设备参数的远程调控。使用手机APP监控就舍弃了液晶屏的安装,节约设备成本,具有很高的实用性和通用性。

1 系统总体描述

户外和户内电力电子设备的安装在位置上具有灵活性同时需要实时监控,可采用手机APP作为上位机的方式来实现对装置在无线范围内的实时监控。本次系统中电力电子装置与Wifi模块连接采用串口RS485,通过Wifi模块发射无线网络,手机APP再接入网络中,与装置进行通信。整个系统布局如图1所示结构。

相比于现在普遍使用的液晶屏作为上位机,该系统最大的不同是增加了Wifi无线模块,打破了依靠串口线或网线传输的局限性,实现了电力电子装置与通信系统中的Wifi互连,数据信息共享。电力电子装置的运行状况,基本参数等信息通过Wifi通讯模块发送到无线网络,利用手机APP接收信息不仅能够实时掌握机器生产运行状况,也具有很强的灵活性,特别是针对户外设备情况。

2 硬件平台搭建

2.1 Wifi模块配置及下位机通信设计

在目前主流的Bluetooth、ZigBee和Wifi三种无线通信技术中,蓝牙使用的是FHSS(跳频扩谱)方式,通信距离一般是10米。ZigBee的传输速度不高,但功耗低,是一种新型技术。Wifi技术具有组网简单灵活、传输速率快、覆盖范围广的特点[2]。三种通信技术都支持数据的传输,本系统选用Wifi无线通信技术,其技术比较成熟,在工业领域更具有通用性。

本次系统中Wifi模块的基本参数设置首先需要匹配电力电子装置中的通信参数配置建立电力电子装置与Wifi模块之间的通信,电力电子装置中采用的通信方式485串口通信则需要对Wifi模块的串口参数进行匹配,包括波特率,数据位,校验位,起始位,停止位。

下位机采用DSP数据处理器,主要的电路结构如图2所示,SCIRX1和SCITX1为DSP的数据收发口,485-RTS为传输方向控制信号口,SH65HVD是485收发器,最后电路外接口为RS485的A,B口。

2.2 传输协议的规范

传输协议是指计算机通用语言。在工业领域中,传输协议是电力电子设备之间,电力电子设备与网络之间的一种通信语言规范。本次系统采用的是Modbus协议,协议中规范了查询和读取这两个主要功能。查询是上位机将报文发送给下位机,报文就是一段数据代码,发送的报文信息就是告知从设备需要执行哪种任务。例如功能代码中的03,是命令读取下位机的保持寄存器,并将保持寄存器中的数据返回给上位机。数据代码中需要告知下位机读取哪些寄存器即从哪个寄存器开始及寄存器的数量。报文最后还有校验位,检验发送和接受的报文数据内容是否正确。回应是下位机对上位机发送的报文作出回答,也是以报文的形式发送,上文的例子中,下位机接收到的是读取信息的报文,下位机回应的报文就应该包含所需寄存器里的数据内容。另外当上位机需要将数据写入寄存器时,下位机的回应就是告知是否写入成功。

3 手机APP设计

3.1 Android系统概述

Google安卓的开发平台包括操作系统,中间件,用户界面和应用软件。最开始是应用于手机,随着技术的开发,可支持平板等其他领域,安卓系统的应用也越来越广泛[3]。在安卓系统的设计结构中,包括有三层设计,底层是linux操作系统,中层是虚拟机和函数库,上层为针对用户的应用软件。

现有的手机都是一套成熟的安卓系统,安卓应用程序就是最上层的软件编写,主要程序包括Activity、Content Provider、Service、Intent等部分[4],其中Activity相对于其他的应用程序对话框或者其他的网络应用程序的页面窗口来说,它是安卓手机与用户交流的组件,也就是我们常见的手机界面,其设计需考虑其生命周期,通常可以独立的在后台运行。Intent是运行中的绑定机制,它是应用程序中四大组件的一个枢纽,同时也可用于不同应用程序之间,主要是来告知系统本应用程序需要什幺请求,想做的是一件什幺样的事情,使用Intent能在各个活动之间相互切换。系统软件流程图如图3。

3.2 APP与Wifi连接

开发手机软件,智能手机的应用软件主要分为三个部分,首先是APP与无线Wifi的网络连接,建立手机与无线之间的通信,再就是读,写功能的编辑,完成对下位机数据的读取和命令的下达,最后是显示部分,实现人机交互的界面。手机APP软件的编辑使用的是Java语言[5]。当Wifi设置完成之后,手机APP需要接入进行,那幺需要手机APP与Wifi的IP地址和端口号相匹配正确。

接网的具体代码如下:

IPText = (EditText) findViewById(R.id.IPEditText);

IPText.setText(“192.168.11.254”);读取wifi模块的IP地址

PortText = (EditText) findViewById(R.id.PortEditText);

PortText.setText(“8001”);读取wifi模块的端口号

将IP地址与端口号配置完成后,就需要建立线程一直读取数据:

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设计采用top标题模式,共有五个子界面,每个界面都有单独的进程进行读写,点开一个界面时屏蔽掉另外四个,避免进程之间的相互干扰。

3.3 APP与下位机通信处理

在编写读,写代码时,要严格依照之前定义的Modbus协议,来规范发送和接受的报文格式。为防止报文传输错误,报文的校验采用CRC校验法。

APP发送读功能的数据格式:从机地址(1字节)、功能域(1字节)、数据域(4字节)、CRC校验(2字节)。其中数据域包括待读寄存器地址的高位,待读寄存器地址底位,待读N个寄存器个数的高位,待读寄存器个数的底位。一次最多允许读取20个寄存器。下位机接受到读报文后返回的报文格式:从机地址(1字节)、功能域(1字节)、数据内容(2*N+1个字节)、CRC校验。其中数据内容包括:返回数据的字节数、N个数据高位、N个数据低位。读取错误时返回:从机地址、功能域(0x83)、错误代码、CRC校验。读取设备运行状态时的代码如下:

private void ReadData_Timestate2() {

int j;

int num, add;

try {

m_nAddr = 1; //判断报文为读功能

add = 0x1300; //读取下位机的寄存器地址

num = 0x0F; //读取的寄存器个数

Pack(0x03, add, num);报文信息打包

if (true == ReceiveThreadClose) {

outStream.write(m_bTxBuf, 0, 8); //发送报文

} else {

ReadDataTimestateFlag = false;

}

} catch (IOException e) {

ReadDataTimestateFlag = false;

}

}

APP发送写功能的数据格式:从机地址(1字节)、功能域(1字节)、数据长度(5+2*N字节)、CRC校验。其中数据长度包括寄存器地址高位、寄存器地址低位、寄存器个数高位、寄存器个数低位、字节数、数据内容。下位机接收到写报文后返回的报文格式:从机地址、功能域、寄存器地址高位、寄存器数据地址低位、写入寄存器个数高位、写入寄存器个数底位。写入错误时返回:从机地址、功能域(0x83)、错误代码、CRC校验。写功能的报文主要为控制命令,流程图如图4。

3.4 APP界面设计

手机APP界面主要显示的是电力电子装置运行的参数和人为控制的命令编写部分,在Andriod中使用布局管理器可以很方便地控制各组件的位置和大小,本次设计选用的是线性布局管理器(LinearLayout),组件的位置可以直接在eclipse中拖动摆放,也可定义组件的格式,例如“连接”按钮的定义代码如下: