力网供电长期以来依靠人力对商业用电和生活用电数据进行抄读,效率极其低下。抄表数据统计主要依靠人力,报表生成周期长,统计结果分析慢,获得结果不能及时反映系统用电量需求分布,对供应系统的网络优化没有参考价值,严重限制了供电系统的供电效率和质量的提高。
传统抄表方式依靠人力抄表,电表数据抄取周期较长,无法获得同一时刻所有用户的电表数据,使得电表数据的获取具有不精确性和时间段的模糊性,导致电网用电量的时空分布结果可信度不高,从而无法给供电管理部门提供有效的参考数据和建议。
自动抄表系统是供电系统监管部门用来对工业和生活用电进行监测、管理和控制,以及对用户用电情况进行统计、分析的重要手段。本文提出了将 GPRS通讯技术与 J2EE 技术相结合的方案应用到自动抄表系统的设计中,构成了网络化的远程自动抄表系统。在底层硬件设计中,采用一种基于通用分组无线业务 GPRS(GeneralPacketRatioService)无线上网技术的自动数据采集方案。在上层软件设计中,采用美国 Sun 公司推出的 J2EE(Java2Platform,EnterpriseEdition)平台。该产品已应用在实际抄表系统中,效果良好。
1、系统的整体结构及工作原理
1.1 系统的组成
图 1 是系统总体设计方案。系统由五部分组成:GPRS 数据采集模块、通信服务器、数据库服务器、Web 服务器、客户端。
GPRS 数据采集模块:它是系统的硬件主要部分。GPRS 模块上电后拥有一个动态的 IP 地址,可以与通信服务器进行 Socket 通信。它的功能就是将检测到的电能流量以十六进制数据格式发送给通信服务器。GPRS 终端也可以接受来之通信服务器的命令。
通信服务器:它打开服务器的某一端口,监听并接受所有 GPRS 终端向该端口发送的 UDP数据包,然后将数据包解析成流量等数据,写进数据库中。通讯服务器的另一任务是向 GPRS 终端发送命令的任务,即向 GRPS 终端发送 UDP 数据包。
数据库服务器:通信服务器从 GPRS 终端获得的数据都存储在数据库服务器上,同时数据库服务器还需对数据进行备份。
Web 服务器:它连接着数据库服务器和客户端。首先它向客户端提供 Web 服务。响应来之客户端的请求,并根据客户端的请求向数据库服务器获取数据,然后再将数据以 html 格式返回给客户端,使得客户端可以浏览它所请求的数据。Web 服务器还可以直接向通信服务器提出请求,通信服务器根据 Web 服务器的请求向 GPRS 终端发送命令。
客户端:它采用瘦客户端,只需要一个 Internet 浏览器即可。客户端的任务就是向 Web 服务器发出 http 请求,然后将 Web 服务器返回的 ht-ml 格式文件显示给用户。
1.2 系统的功能
系统的功能有:查看历史数据,读取实时或整点数据。
查看历史数据:客户端根据自己的需求,要求查看历史上某一段数据的请求,该请求经过 Web 服务器转送给数据库服务器,数据库服务器将数据经过 Web 服务器转接以 html 格式返回给客户端。
读取实时或整点数据:客户端要求读取实时或整点数据请求,Web 服务器根据请求来通知通讯服务器,然后由通讯服务器通知 GPRS 数据采集模块,GPRS 数据采集模块通过 GPRS 网络向通讯服务器发送数据包。当通讯服务器收到数据包时,将数据包解析成流量参数写到数据库服务器中,然后由数据库服务器将数据发送给 Web 服务器,然后由 Web 服务器将数据以 html 格式返回给客户端。
2、GPRS 通信模块的设计及其功能
第 2.5 代通讯技术 GPRS(GenealpacketRADIoService,通用分组无线业务)作为第三代通讯技术的前奏,GPRS 技术是在现有 GSM 技术基础上发展而来的一种新的分组交换的数据承载业务,由英国 BTCellent 公司在 1983 年提出。GSM 技术主要以提供话音业务为主,而 GPRS 技术在移动终端与计算机通信网络的路由器之间提供了分组传递业务,这就是 GPRS 网络与 GSM 网络的最大区别。
GPRS 把分组交换技术引入现有 GSM 系统,为移动用户和数据网络之间提供语音通信。GPRS 采用分组交换技术,主要提供非语音的数据业务,特别适用于间断的、突发性的和频繁的、少量的数据传输,给移动用户提供高速无线 IP 和 x.25 服务。GSM 网络采用电路交换的方式,也适用于偶尔的大数据量传输。
本系统就是利用 GPRS 的分组无线业务,通过无线网络连接到现场的自动抄表装置上进行数据测量。
在系统中,关键之一是网络协议的选择。目前有两种协议,即 TCP 协议和 UDP 协议。UDP 协议与 TCP 协议相比较,有以下几个优点:适用于小数据量的传输;使用方便,不需要建立连接,是一种无连接的通讯方式;传输数据的效率高,实时性强。
考虑到 UDP 上述特点以及流量测量系统对实时性的高要求,本系统采用了 UDP 协议。
3、系统硬件设计
电能流量测量设备有两种工作方式:一是按事先设定好的时间间隔,周期性地采集用户数据,实时地传送到数据库服务器;二是实时地响应来自于通信服务器的控制命令,按照控制命令进行特定的数据采集任务。这就要求作为数据传输模块和终端设备控制模块的 GPRS 终端能够实时地解析、处理各种控制命令并向数据传输服务提供尽可能大的吞吐率。另外考虑到系统的可扩展性,本系统硬件设计时没有采用传统的低成本但是高开发费用且性能、功能受限制的单片机加 GPRS 通讯模块的方案,而是使用了以高性能嵌入式 CPU 芯片为核心的设计方案。GPRS 数据传输终端的硬件组成和连接如图 2 所示。CPU 采用了专为网络解决方案设计的 SamsungARM74510B。GPRS 模块采用目前比较流行的西门子 MC35 系列模块。
传输终端的软件采用了以嵌入式实时操作系统为平台、自主知识产权的网络组件为核心的体系结构。操作系统选用了μclinux。μclinux 最大的特点就是没有 MMU,很适合 ARM 嵌入式微处理器。该μclinux 的内核版本是 Linux2.4,它具备完整的嵌入式 TCP/IP 网络协议栈,操作系统所有代码加起来编译后的镜像文件小于 1MB。
该系统以数字信号处理器 DSP 为核心,采用交流取样技术,可以连续地检测和统计电量的有关参数。
抄表数据终端起着管理和协调 GPRS 网络和仪表数据通信的作用。由于无线传输是基于 GPRS 的,所以抄表数据传输终端也可以称为 GPRS 终端,要完成硬件和软件的设计。抄表终端的硬件设计一般都会选用世界知名厂商生产的 GPRS 模块作为抄表终端与 GPRS 网络连接的中间件,实现同基站空中接口的连接,选用高速微处理器连接仪表和 GPRS 模块,处理两者间的数据通信问题。
4、系统软件设计
4.1B/S 结构
目前软件结构设计模式主要有两大类:一是传统的 Client/Server(客户端/服务器)模式,它采用 Intranet 技术,适用于局域网环境可连接用户数有限,当用户数量增多时,性能会明显下降,客户端都要安装。一是正在不断发展的 Browser/Server(浏览器/服务器)模式,它采用 Internet/Intranet 技术,适用于广域网环境,支持更多的客户,可根据访问量动态配置 Web 服务器、应用服务器,以保证系统性能。客户端只需要标准的 Internet 浏览器。
由于运行该系统的物理平台的复杂性,例如不同设备的操作系统、数据库服务器等都具有相异性,各种专业网络都有各自不同的网络架构和实现方式,因此必须选择能够较好支持跨平台开发的运行环境进行设计。此外,考虑到使用该系统的人员具有广泛性,依据不同的权限随时可以查看该系统的详细情况,若仍完全采用传统的固定 C/S 模式,就必须严格对每个客户端进行参数设置,这显然是不可取的。
系统的软件设计采用以 Web 技术为基础,以浏览器/服务器即 B/S 为体系结构的方案。B/S 模式与传统的 C/S 模式相比,优点在于:主要工作是服务器端程序的开发。服务器主要负责开发、维护网上的内容与资源,负责信息的收集、存储、发布,不存在客户端程序的开发和维护。客户端直接利用现有的局域网或 Internet 连接,不需要特殊设置和安装,使用标准的 Internet 浏览器,直接访问专用 Web 服务器页面,就可观看监测和分析电能质量的实时数据,并能查询所需历史数据。
4.2 系统运行环境与工具的选择
考虑到系统的移植性和跨平台性,本系统选择了 Sun 公司设计开发的 J2EE 平台,使用 JSP(JavaServerPages)作为 B/S 模式的开发工具。J2EE(Java2PlatformEnterpriseEdiTIon)是一个适用于企业级计算的支持多层、分布式应用的全新概念的 Java 平台,它为搭建具有可伸缩性,灵活性、易维护性的企业信息系统提供了良好的机制,与传统的互联网应用程序模型相比有着不可比拟的优势。J2EE 主要面向网络应用,它定义了一系列规范的标准,使得 Java 程序员能够共同的遵照这个标准,开发大型面向网络的项目。它同时提供了庞大的开发库,是面向电子商务开发的企业级应用平台。Java 具有“编写一次,到处运行”的特性,能够通过 JDBC 方便连接各类数据库,调用各类 API,同时在 Internet 应用中保护数据的安全模式等。总结该系统的平台解决方案如下:
计算模式:三层 B/S 模式;网络操作系统:Windows2000Server;数据库服务器:Oracle8i;Web 服务器:ApacheTomcat5.O;数据库驱动接口:JDBC 驱动;主要的开发环境及工具:J2EE,Java,JSP,Javascript。
4.3 连接池(ConnecTIonPool)机制
程序的效率问题在 JSP 编程过程中是很重要的,即要考虑如何使有限的计算机系统资源为更多的客户提供更好的服务,保证客户的响应速度和服务质量。如果有很多人访问该网站,每一次 Web 请求都需要与数据库建立一个连接,那么数据库就有可能要同时处理许多建立连接的请求,这对于数据库服务器和 WebServer 来说是一个很严重的负担,甚至会导致资源耗尽而死机。
本系统使用连接池机制来解决这个问题。连接池最基本的思想就是预先建立一些连接放置于内存对象中以备使用。当程序中需要建立与数据库的连接时,只需到连接池中读取即可,不需新建连接。当程序不需该连接时,只要将该连接放回到连接池中,以便其他程序或用户使用。同时连接池机制对于位于池中的连接具有管理的功能,增加了与数据库连接的强壮性。
4.4 数据库的远程管理
数据库内容包括:现场流量参数的实时数据、历史数据、不合格数据、人员的管理、权限的管理等。
数据库远程管理按照如下流程来实现:
(1)客户端发出数据的查询或修改指令;
(2)服务端接收指令,向客户端返回结果;
(3)客户端接收结果,显示查询数据。
当客户端请求查看实时数据的时候,客户端向服务器发出请求,服务器每隔 2s 就将实时数据发送给客户端,客户端接收并显示该数据。该过程就是一个典型的数据库远程管理过程。传统的技术是页面不断刷新,来获取新的数据,以便让用户看到不断变化的实时数据。但该方法的缺点一是当数据量较大时,占用服务器资源的消耗大;二是用户能明显感到页面的不断刷新,对用户视觉和听觉都有很大影响。本系统采用了 Microsoft 开发的 xmlhttp 技术,它是 Microsoftxml 解析器(MSXML)中的一个客户/服务通讯管道协议。运用 xmlhttp 可以简单方便地实现数据库远程管理。由于其传送的是 XML 格式的数据,大大减轻了对服务器的消耗,而且采用 xmlhttp 协议,可以实现页面无刷新更新数据,使界面更加友好。
要:基于STM32+华为云IoT设计的老人防摔倒报警系统。
本文分享自华为云社区《基于STM32+华为云IOT设计的老人防摔倒报警系统【玩转华为云】-云社区-华为云》,作者: DS小龙哥 。
我国独生子女,以及人口老龄化等问题,正逐渐成为一个重大的社会问题,老年人机体能力的下降,摔倒引起的安全和危害愈来愈突出,国家和社会越来越关注老年人的健康和安全,开发一个能够实时检测出老年人是否摔倒,并且能及时告知监护人的摔倒检测以及报警系统具有重要的现实意义。
本系统包括检测摔倒模块、GPS定位模块和通信模块三部分,通过检测老年人日常状态,可以得知老年人的状态,如果监测到老年人摔倒了,此时会通过网络把检测结果上传到物联网云平台,获得老年人摔倒地点的GPS定位,并且通过GPRS通讯发短信给预设的监护人。
(1)采用STM32单片机作为主控芯片,配合其他模块完成功能设计
(2)通信模块采用SIM800C,支持上传采集的GPS经纬度数据到云端服务器,云端采用华为云物联网平台。
(3)老人摔倒检测采用MPU6050陀螺仪检测,当检测到老人摔倒之后,会通过SIM800C发送短信到紧急联系人,设备上的蜂鸣器会发出警报声,周围行人听到也可以进行帮助;并且会将GPS数据上传到云端,通过地图显示老人的位置,家人通过短信知道老人摔倒后,通过云端地图显示的位置,可以快速赶到老人身边,或者报警求助,报告位置。
(4)老人摔倒后,如果自己能行动,没有大问题,可以自己按下设备上的按键取消蜂鸣器报警,并且通过SIM800C向家人发送一条短信,报平安。
为了快速验证方案的可行性,这里采用现成的模块采用杜邦线连接完成整个预想的功能设计。
下面就是硬件连接好之后的效果图,选用的硬件型号在第4章节已经全部贴出来了;为了方便户外测试,这里的供电电源采用了充电宝,也可以采用电池盒供电。
可以设置电子围栏,坐标超出之后进行提示。
主控芯片采用STM32RCT6,通信模块采用SIM800C,GPS采集使用ATGM336北斗BDS+GPS双模模块,老人摔倒检测模块采用MPU6050陀螺仪。
这些都是采用现成的成品模块,都是在淘宝上买的,下面都贴出了模块的型号,模块的实物截图,如果自己想做一个,可以在淘宝上找到一样的模块型号购买。
SIM800C模块是一款高性能高性价比工业级的GSM/GPRS模块。本模块采用SIMCOM公司的工业级四频850/900/ 1800/1900MHz SM800芯片,可以低功耗实现语音、SMS、数据和传真信息的传输。
模块特点:
1、支持极限DC5V-18V宽电压输入
2、有电源使能开关引脚EN
3、支持锂电池供电接口VBAT3.5-4.5V
4、输入支持移动和联通手机卡Micro SIM卡
5、送51/STM32/ARDUINO驱动例程
6、DC 5V-18V电源输入,推荐使用DC 9V
7、电源开始使能引脚默认使能
8、电源地
9、GSM模块的TXD引脚接其它模块的RXD
10、GSM模块的RXD引脚接其它模块的TXD
11、数据终端准备
12、内核音频输出引脚
13、内核音频输出引脚
14、锂电池输入引脚,DC 3.5 - 4.5V
15、电源地
16、启动引脚和GND短路可实现开机自启动
17、电源地
18、RTC外置电池引脚
19、内核振铃提示引脚
20、内合音频输入引脚
21、内核音频输入引脚
加粗的引脚一般都用到。
建议使用V_IN单独供电DC5-18V输入(推荐使用9V),或者VBAT供电锂电池两种供电方式这两种供电方式最稳定。如果只是简单调试,也可使用USB-TTL或者开发板的5V直接给模块供电。不过一般电脑或者开发板的功率有限,可能会不稳定。请根据具体情况自己取舍选择合适电源。
总结:
模块本身支持自适应波特率,可以自动根据发送过去的指令计算对应的波特率,一般使用115200即可。
模块调试总结:
(1)供电电压5V也可以,采用电脑USB供电(直接插电脑USB口)。正常供电之后,模块上有电源指示灯。
(2)SIM800C的TX脚接单片机的RX脚
(3)SIM800C的RX脚接单片机的TX脚
(4)SIM800C的第11个引脚(PWK)和12个引脚(GND)短接接在一起,才可以开机。
电源正常后,右上角有一个黄色的电源灯。
通过串口发送AT指令过去测试模块效果。
GPS模块正常定位后,模块上的LED灯会按照1秒钟闪烁一次。
返回的字段里GNRMC表示当前定位的GPS经纬度,解析代码只需要解析GNRMC表示当前定位的GPS经纬度,解析代码只需要解析GNRMC字段。
第一次启动GPS模块,定位差不多要几分钟时间,定位成功后,第二次启动定位就很快,最好是在室外,室内信号差,定位时间更久。
陀螺仪选择的是正点原子的模块,比较稳定,质量较好。
蜂鸣器选择的高电平触发。
为了方便查看老人摔倒之后的位置,需要通过SIM800C将设备采集的GPS数据上传到云平台服务器保存,就算老人没有跌倒,也可以实时关注老人的位置,在地图上绘制出轨迹线路,方便家人随时联系,了解老人的情况。
这里物联网的平台选择是华为云物联网平台,目前是免费使用的,在云端创建产品等信息后,设备再通过MQTT协议连接云平台上传GPS数据。目前华为云的拖拽试网页开发页面已经下架,目前要开发对应的上位机,可以采用最近主推的低代码开发平台或者自己通过云平台的应用侧开发接口自己开发上位机,我这里是自己开发的上位机,通过QT编写的上位机APP,支持windows、Android、Linux等多个平台运行,跨平台使用还是比较方便。
下面接着就介绍如何登陆官网创建产品、设备、完成云端的产品部署。
官网地址: https://www.huaweicloud.com/product/iothub.html
打开官网后没有华为云账号需要先注册账号,这些步骤就不多说了,接下来就直接介绍如何创建产品、设备、配置属性、完成数据上传交互的流程。
点击免费使用进去页面。
点击左边产品选项,点击右上角创建产品按钮,弹出参数填充对话框。
根据自己的设备情况填入信息之后保存。
产品创建成功,点击查看详细信息。
在现在的详情页面往下翻,可以看到模型创建的选项。
点击自定义模型选项,创建模型。
这里的模型就是设备上传的数据属性。
添加服务ID。
点击创建属性,这里选择JSON类型的数据,上传的GPS有经纬度两个数据,方便保存。
创建成功。
点击下方,阅读学习完整实验步骤~~
华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云
广超1,马尚昌1,刘钧2
(1.成都信息工程大学 电子工程学院,四川 成都 610225; 2. 华云升达(北京)气象科技有限责任公司,北京 102200)
:针对目前在气象研究领域中日照采集系统作业质量效果和实时性差、系统智能化程度低以及科技含量低等问题,对日照采集系统的通信方式、传输平台、通信形式、位置定位及数据存储等方面进行了研究,提出了一种基于 GPRS 的远程无线采集日照数据系统。该系统以 GPRS 网络和Internet作为远程信号的传输平台,采用了 STM32 处理器和 SIM900A 作为基本的硬件平台。日照传感器采用良好的感应元件和材料,其感应部件和数据采集处理单元集成在光筒内;计算机端软件实现了对日照数据的定时接收处理和查询历史数据操作等功能。
:TP399文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.10.024
引用格式:张广超,马尚昌,刘钧.日照数据采集系统设计与实现[J].微型机与应用,2017,36(10):85-88.
0引言
*基金项目:国家重大科学仪器设备开发专项(2012YQ110205)
世界气象组织对日照时数的定义是:在给定时段内直接太阳辐照度达到或超过120 W/m2的各分段时间的总和[12]。日照时长数据的测量是太阳辐射时间分布测量的重要组成部分。日照时数资料的主要用途是表征当地的气候和描述过去的天气状况,可以认为日照时数较长的地区有强烈的太阳光,产生使人可以保持良好状态的心理效应;另外,合理利用气候资源,研究每日的日照时长数据的变化趋势,在农业上也有很大用途。同时日照时长数据的采集有助于了解太阳、地球表面和大气间的辐射过程、能量转换规律以及各辐射量的时空分布,研究大气成分如悬浮微粒、水汽、臭氧等的分布和变化,满足医学、农业、建筑、工业和家庭等对太阳能技术和辐射资料的要求。此外,辐射的分光谱测量可用来取得气溶胶的光学厚度和大气浑浊度,在农业生物和医疗卫生方面有着广泛的用途。
1系统总体设计
日照数据采集系统研究主要针对硬件平台的建立、通信系统的搭建、上位机的编写三大部分来展开,其中硬件平台核心采用STM32处理器[3],通用分组无线服务技术 (General Packet Radio Service, GPRS)通信芯片采用客户识别模块(Subscriber Identification Module,SIM900A),SIM900A是紧凑型、高可靠性的无线模块,采用表面贴装技术(Surface Mount Technology,SMT)封装的双频全球移动通信系统(Global System for Mobile Communication,GSM)/GPRS模块,上位机框架采用WinForm[4]形式编写,主要负责日照数据、全球定位系统(Global Positioning System,GPS)数据的远程采集以及终端设备的定位,并且对数据进行分析处理。数据传输(含日照数据和GPS数据)的设计采用Socket通信方式完成数据通信,由于传输的数据量不是很大,但要求数据可靠,故采用传输控制协议(Transmission Control Protocol,TCP)进行数据传输,保证传输的可靠性。采集数据时,输入的端口号与IP(Internet Protocol)配置正确时,上位机启动,等待接收数据。数据库采用SQL Server 2008设计。系统总体设计框图如图1所示。
2系统硬件设计
2.1GPRS模块
系统选择了SIMCOM公司的SIM900A作为GPRS数据传输的核心模块,SIM900A模块传输速度一般在20 kb/s左右,本系统采集数据的速率大概为2 kb/s,所以SIM900A可以很好地满足需求。SIM900A出厂默认设置TCP/IP协议,用户可以通过扩展的标准指令集轻松地使用该模块进行基于TCP/IP协议的数据传输。同时,SIM900A模块在低功耗和高度节能方面也非常出色,当模块处于待机状态时,系统电流仅为1 mA。SIM900A支持标准的8线制串行接口,同时也支持2线制串行接口,便于调试测试。SIM900A模块支持外部SIM卡,直接与3.0 V SIM卡或1.8 V SIM卡连接。模块自动检测和适应SIM卡类型。SIM卡电路如图2所示。
2.2GPS模块
由于日照采集站点要布设多个,分布广且数量多,因此需要将采集站点位置信息发送给监控中心。同时日照数据分析时也需要采集站点经纬度信息。基于成本、开发难度及产品现状的考虑,系统中采用美国GPS定位系统作为采集系统的定位模块。其中,本系统采用UBLOX公司的NEO6M作为日照采集系统GPS模块接收芯片,这款芯片能够在偏远或信号较弱的地区接收到卫星信号,定位精度最高可达2.5 m,能够很好地满足本系统的需要;能够提供较高的时间脉冲,其提供的脉冲时间精度能够达到15 ns,同时能够接收GPS完整信号;具有接收50个卫星信号通道的功能,能够接收不同系统的定位信号;接口通信协议简单,易于集成。GPS与STM32模块的通信[5]是通过串口实现的,本系统利用USART接收GPS模块的经纬度信息。GPS模块及其外围电路如图3所示。
2.3日照采集设计
2.3.1采集模块设计
日照采集模块是基于总辐射散射辐射测量原理实现日照的自动观测。日照采集模块要实现两大功能:一是感应太阳辐射的变化;二是完成数据的采集运算处理[6]、存储和传输,与STM32芯片进行通信。
数据采集核心控制电路板以TI公司的MSP430F1611低功耗微处理器为控制核心。MSP430F1611内部具有一个强大的16位RISC CPU、16位的寄存器以及常数发生器,能够最大限度地提高代码效率;系统在短时间内采集到一定量的数据需要缓存,而MSP430F1611的RAM达到10 KB,足够提供缓存空间;MSP430F149内部带有12位ADC模块,可以用来实现对光电感信号的采集;MSP430F1611系列微控制器工作环境温度范围为-40℃~80℃,能够适应气象探测所需求的外界环境。综上,其性能指标能够很好地满足系统需求。
2.3.2光电传感器原理
光电感应元件由滨松高性能光电二极管和特殊透光材料组成。光电二极管能够将光信号转化为电流信号,而且成一定比例关系。基于总辐射散射辐射测量原理测量日照,对三个光电感应器件排布有特殊要求。三个光电感应元件应安放于一个透明玻璃罩内,避免外界环境影响;其中一个光电感应器件用于测量总辐射,另外两个光电感应器件分别用于测量上午和下午的散射辐射,其遮光罩采用特殊的全分天空方式,使二者不能同时暴露于阳光下。
3系统上位机设计
3.1软件设计与流程
上位机数据接收软件是在Visual Studio环境下开发的[78],用户可在该环境下运用不同的程序语言进行开发。本设计选用了Visual C#2010,它是一种面向对象的编程语言,它编写的应用程序可运行于.NET Framework上。本设计的上位机软件希望能够利用多线程去处理下位机发来的日照数据和GPS数据并且显示到不同的接收窗口中,在GPS信息窗口通过将定位的坐标转换后调用百度地图API实现位置的显示,同时将显示在上位机界面的数据存放本地计算机,也可以上传数据库,本系统采用SQL Server建立数据库及数据表[9]。整个软件系统流程图如图4所示。
3.2上位机通信
目前大部分的网络数据通信都是采用上位机端和客户端的形式完成的。这种数据通信方式一般通过两个不同的应用程序实现,它们运行于不同的机器上并且通过建立网络连接实现数据传输。通常客户端与上位机的通信方式一般有两种形式,一种是HTTP的形式,另一种是基于Socket的方式。HTTP通信方式是客户端先向上位机发起连接请求,然后等待上位机对其做出应答,此时客户端才能与上位机传输数据,一旦这次数据传输结束后就会自动释放本次连接,下次传输数据时客户端还需要重新与上位发起连接,再次等待上位机的应答。而Socket通信形式是客户端发起与上位机建立连接的请求后,上位机处理请求并与之建立连接,一旦连接建立好了之后即可以进行数据的传输,免除了许多拆包、封包等复杂的网络数据传输过程,采用数据流的格式进行数据的发送,一旦建立连接后不需要每次向上位机建立连接请求,并且具有数据传输准确率高的优点,因此 Socket 这种通信模式被广泛地运用于网络数据的传输。本系统就是采用基于Socket通信方式来完成数据通信。本系统服务器与客户端之间的通信模型如图5所示。
Socket的通信模型有两种[10]:TCP和UDP。TCP(面向连接方式)采用IP流的形式数据发送,数据的传输过程当中丢包少,传输可靠。UDP(无连接服务)采用数据报文的方式实现数据的收送,不保证数据的可靠性。由于本系统传输的数据量不是很大,但是要求数据可靠,因此为了确保传输的可靠性,减少丢包,本系统采用了TCP的形式进行数据的传输。
3.3Socket编程
由于本设计选用的GPRS模块内部包含TCP协议,只需要通过AT指令操作GPRS模块以TCP客户端的方式发送数据,因此只需要完成上位机数据接收的应用程序编写即可。由于本系统采用的是C#语言来编写应用程序,里面包含许多网络编程所需的类和方法,在编程的过程中可调用这些类和方法。首先要实例一个Socket对象[11],设置其传输的格式和其传输协议,然后创建一个网络节点对象要包含其IP地址和端口号,再把实例好的套接字绑定到对应的IP和端口号上,并开始监听来自下位机的连接,此处要设置一下监听队列长度即同时处理请求连接的个数,由于本次只实现了一个客户端,但是上位机软件监听的客户端数量可以自由设置(为了以后组网,方便扩展),最后调用Accept函数处理客户的连接,当有客户向服务器发起连接的时候,就会分配一个新的套接字,通过Send和Recv函数实现与客户端之间的通信,循环接收和送数据,为了防止掉线,收到数据后自动回复内容,相当于系统已经做了心跳处理。
3.4上位机数据存储系统
本系统不仅能够把数据实时显示到界面系统上,同时还能够把显示的数据实时存储起来,因此需要设计一个数据库来存放日照数据。本设计选用微软公司SQL Server数据库[12]来存放数据。本程序采用SQL Server 2008R2版本设计日照存储数据库Sundata。同时能将数据库的数据同步到上位机软件的DataGridView控件中,能够按照时间查询历史数据,并且实现了数据导出至Excel表格。导出表格并没有采用官方提供的Excel专门类库,在试验中发现用此种方法与Office版本及其卸载残留有很大关系,经常出错,移植性不好,所以采用了第三方的NPOI.dll,这样不会因计算机的Office的不同版本而出现问题,便于程序的移植和分析数据。
3.5地图功能实现
3.5.1GPS坐标解析
GPS坐标解析输出数据采用的是ASCII码,内容包含了纬度、经度、高度、速度、日期、时间、航向以及卫星状况等信息,常用语句有6 种,包括GGA、GLL、GSA、GSV、RMC 和 VTG。根据设计的需求来选择不同的格式,这里采用了常见的GPRMC格式的语句,$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>各个字符依次代表着不同的信息,根据需要提取了重要的经度、纬度信息,由于上述经度、纬度数据格式采用的是:度度分分.分分分分(ddmm.mmmm)格式,在程序中通过编写函数将其转化为度的格式,为后面的坐标转换提供方便。
3.5.2地图显示
上位机地图是是利用百度地图API来实现的[13],由于GPS模块传来的GPS信息中的经度、纬度信息是真实的坐标,利用地图服务商提供的地图显示偏差会很大,因为受到国家一些法律法规限制,所有的电子地图服务提供商都需要给地图数据加上偏移和加密。所谓的地图数据加密偏移,其实就是用一个偏移算法对地图的经纬度做一个加减偏移量,从而达到与实际地图不一致。偏移算法本身是没有什么规律可言的,每家地图服务商都有一套自己的加密偏移算法,国内地图应用显示的都不是真实的GPS坐标,所以百度对外提供的坐标系是百度自己的坐标系,而GPS获得的是原始坐标,两者不在一个坐标系上,所以有很大的误差,误差在千米之外,这显然不能满足需要。所以必须进行坐标转换,把两者换成统一坐标系。换成原始GPS坐标在国内原则上是违法的,所以只能统一成各个地图运营商自己的坐标系,本文选择百度坐标系。
4结论
针对目前日照采集作业通信方式单一、作业场景有缺陷的问题,本文以嵌入式系统为平台,提出了一种基于 GPRS 的远程无线采集日照数据系统,对当地经纬度、直接辐射辐照度、日照分钟累计、小时累计、日累计等信息采集获取技术进行了研究,建立了一套现代化的、适合多场合的数据采集和处理系统。整个作业数据采集系统由ARM中央处理器、采集作业数据的相关传感器、供电管理电路及GPS模块、GPRS通信模块组成。采集的日照数据通过GPRS通信传送至计算机,用计算机当作数据中心对获取的数据信息整合处理。用计算机不仅可以实时获取所需要的信息,而且提供了对已有历史数据查询的功能。
参考文献
[1] CARTER E A, CHRISTENSEN D L, 李丽. 全球太阳辐射测量的概况[J]. 气象科技, 1982,6(5):73-75.
[2] 谢伟. 太阳辐射计技术分析[J]. 红外, 2003,12(3):9-15.
[3] 刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社,2013.
[4] SOLIS D M.C#4.0图解教程[M].苏林,朱晔,等,译.北京:人民邮电出版社,2011.
[5] 郑杰,赵敬凤,王海江,等.基于 STM32 的多功能抄表机[J].微型机与应用,2016,35(8):79-81, 85.
[6] 杨宁, 惠晓强. 微弱信号高精度数据采集技术研究[J]. 现代电子技术,2013,24 (9):71-73.
[7] MACDONALD M, FREEMAN A, SZPUSZTA M. Pro ASP.NET 4.0 in C#2010[M]. New York: Apress, 2012.
[8] 金旭亮.NET4.0面向对象编程面谈应用篇[M].北京:电子工业出版社,2010.
[9] 秦婧.SQL Server 2012王者归来[M].北京:清华大学出版社,2014.
[10] 刘蓓莉,刘大红.基于Visual C#的网络通信编程技术[J].电子科技,2013,26(11):151-153.
[11] 谢斌. MS.Net Visual C#在Socket网络开发上的应用化计算机与网络[J].计算机与网络,2002,24(10):74-79
[12] 刘俊强.SQL Server 2008入门与提高[M].北京:清华大学出版社,2014.
[13] GPS坐标换算为百度坐标[EB/OL].(2014-11-17)[2016-11-17]http://www.cnblogs.com/soundcode/p/4104281.html.
*请认真填写需求信息,我们会在24小时内与您取得联系。