Dnssas无线网络产品在证券网络的应用(合集5篇)

时间:2019-05-13 18:56:36下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Dnssas无线网络产品在证券网络的应用》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Dnssas无线网络产品在证券网络的应用》。

第一篇:Dnssas无线网络产品在证券网络的应用

生活需要游戏,但不能游戏人生;生活需要歌舞,但不需醉生梦死;生活需要艺术,但不能投机取巧;生活需要勇气,但不能鲁莽蛮干;生活需要重复,但不能重蹈覆辙。

-----无名

无线网络产品在证券网络的应用

证券公司的数据采集和发送目前主要采用三种方式:

最重要的一种方式,就是各营业部通过各自的地面卫星信号收发装置,直接与当地上空的同步卫星进行通信。这种方式是目前最为稳定、准确、安全、高速的通信方式,也是证券公司日常进行数据采集和发送的主干系统。

第二种方式,是各个证券公司的营业部为了预防地面卫星信号收发装置出现问题,无法采集和发送数据而配备的第二套通信系统,这套系统被称为备用系统。现在使用这套系统的大多数证券公司都采用租用DDN、T1、ISDN等专线的方式。

第三种方式是专为大户和各操盘公司提供的。因为股市大户和操盘公司的每笔交易金额都很大,对买卖的时间要求也非常高,因此各营业部为大户建立了大户室,为操盘公司提供了网络接口。大户和操盘公司可以利用营业部的主干系统或备用系统进行买卖活动。

针对证券公司数据采集和传输系统的应用现状,建议采用无线网络产品,该系列产品特别适用于上述的第二种和第三种应用情况。

在第二种方式中,各营业部间的通信采用的是专线方式,专线的带宽不仅很低,一般只有512K,而且费用也很高,128K ISDN的月租费为5000元,也就是说每个营业部每年的线路租用费用都要在六、七万元。另外各营业部还要另外购置高端路由设备,这个设备的费用通常高达几万元。而无线网络产品可提供11M的带宽,采用这种方式,各营业部只需在第一年投资几万元用于设备安装,之后就不用再交纳任何租费,既能提高速度又能节省投资。

对于第三种方式来说,现在的很多股市大户不愿意在大户室内进行操作,而选择从营业部到所住的宾馆或自己的公司直接拉专线进行交易,一般都采用双绞线、同轴电缆或光纤的方式进行远程联网,这样的做法铺设费用高,施工周期长,无法移动,维护成本也很高。而无线网络产品可以提供比专线更快、费用更低、安装使用更灵活方便的连接方案。

应用案例

某证券公司由于业务的扩大,需要在现有营业部的对面增加一个新的营业部。由于中间有一条马路阻隔,无法将原有的布线延伸过去,因而采用了室外无线网络产品。他们在原来的证券营业部大楼上架设了一个无线网桥天线发射装置,在新开的营业部大楼上架设了无线网桥天线接收装置,接收对面营业部大楼发射的信号。新的营业部大楼内采用室内无线网络,每台电脑间均采用无线网卡进行连接。

第二篇:无线传感网络研究应用

无线传感网络研究应用

应用前景

无线传感网络是面向应用的,贴近客观物理世界的网络系统,其产生和发展一直都与应用相联系。多年来经过不同领域研究人员的演绎,无线传感网络技术在军事领域、精细农业、安全监控、环保监测、建筑领域、医疗监护、工业监控、智能交通、物流管理、自由空间探索、智能家居等领域的应用得到了充分的肯定和展示。

在环境监控和精细农业方面,WSN系统最为广泛。2002年,英特尔公司率先在俄勒冈建立了世界上第一个无线葡萄园,这是一个典型的精准农业、智能耕种的实例。杭州齐格科技有限公司与浙江农科院合作研发了远程农作管理决策服务平台,该平台利用了无线传感器技术实现对农田温室大棚温度、湿度、露点、光照等环境信息的监测。

在民用安全监控方面,英国的一家博物馆利用无线传感器网络设计了一个报警系统,他们将节点放在珍贵文物或艺术品的底部或背面,通过侦测灯光的亮度改变和振动情况,来判断展览品的安全状态。中科院计算所在故宫博物院实施的文物安全监控系统也是WSN技术在民用安防领域中的典型应用。

现代建筑的发展不仅要求为人们提供更加舒适、安全的房屋和桥梁,而且希望建筑本身能够对自身的健康状况进行评估。WSN技术在建筑结构健康监控方面将发挥重要作用。2004年,哈工大在深圳地王大厦实施部署了监测环境噪声和震动加速度响应测试的WSN网络系统。

在医疗监控方面,美国英特尔公司目前正在研制家庭护理的无线传感器网络系统,作为美国“应对老龄化社会技术项目”的一项重要内容。另外,在对特殊医院(精神类或残障类)中病人的位置监控方面,WSN也有巨大应用潜力。

在工业监控方面,美国英特尔公司为俄勒冈的一家芯片制造厂安装了200台无线传感器,用来监控部分工厂设备的振动情况,并在测量结果超出规定时提供监测报告。西安成峰公司与陕西天和集团合作开发了矿井环境监测系统和矿工井下区段定位系统。

在智能交通方面,美国交通部提出了“国家智能交通系统项目规划”,预计到2025年全面投入使用。该系统综合运用大量传感器网络,配合GPS系统、区域网络系统等资源,实现对交通车辆的优化调度,并为个体交通推荐实时的、最佳的行车路线服务。目前在美国的宾夕法尼亚州的匹兹堡市已经建有这样的智能交通信息系统。

无线传感网络应用前景广阔,特别是我国西部地区的一些山区,需要对山地滑坡、泥石流、大桥位移、景区环境监测,但是无线传感器网络的生存时间却要求长达数月甚至数年,因此,如何在不影响功能的前提下,尽可能节约无线传感器网络的电池能量成为无线传感器网络软硬件设计中的核心问题,也是当前国内外研究机构关注的焦点。本文研究基于分布式压缩感知算法的无线传感网络节能模型研究,用以降低无线传感网络的耗电量,具有极高的应用价值。

第三篇:无线wifi网络的应用和效益调研报告

关于无线wifi网络的应用和效益的调研报告

无线网络技术很早就已经产生了,但近期才引起了人们的特别关注,一方面,随着互联网的普及及应用,其潜在用户正在不断增加;另一方面,人们对数据业务的重视程度也在不断增加。

WiFi(Wireless Fidelity,无线保真技术)即IEEE802.11协议。是一种短程无线传输技术,能够在数百英尺范围内支持互联网接入的无线电信号。近年来,随着无线局域网的应用范围越来越广泛,品种繁多的产品也相继出现,于是wifi无线设备和产品的应用成为了一个新的关注点。无线局域网一般占用免费频段,应用主要包括4个方面:一是室内办公环境或家庭用户;二是室外无线网桥之间相连;三是公共热点接入;四是企业行业应用。根据接入距离的远近可以分为:个人网络、局域网络、城域网络、广域网络。目前无线局域网的标准已相对成熟,主要标准有802.11b、802.11g802.11a等,市场应用较为广泛,部分国家已经能够实现跨国漫游。早起的无线微波、蓝牙等技术,其实也属于无线技术家族,只是这些无线技术传输速度和距离不能满足日益增长的网络数据传输需求,所以没有得到长足的发展。

同时,随着无线局域网越来越广阔的前景,WiFi不再是无线宽带接入的边缘应用,其重视程度得到大幅提升,无线wifi能带来的效益也越来越可观。

一、无线网络的应用范围

人们生活在“移动”的世界中,越来越多的移动产品的出现,标志着人们对快捷数据访问的需求在不断增加。近年来无线WiFi网络得到了很大的发展与普及,无线WiFi网已成为提高工作效率不可缺少的工具。用过无线WiFi网络可以实现许多新的应用,这表明WiFi的时代已经来临。

1、无线办公网的应用

今天的企业开始向扁平化发展。企业的职员更多的是使用笔记本电脑和跨组织、跨地区的其他员工在一起工作,其产出不仅发生在他们的工作台旁,而且还发生在不断地开会、沟通和交流之中,所以他们需要一种手段,可以使他们在离开工作台后还能够连接到网络中。无线WiFi网络正迎合了这种需求。无线办公的应用可以解决有线网络可能面临的亟待解决的问题:

(1)逐个房间布线花费大,或原有布线系统资源不足或完全作废。

(2)经常性的移动办公,特别是在会客室与会议室。

(3)异地分公司人员商务访问中需要使用计算机系统。

(4)一些无法布线的生产、控制等重要领域。

2、计算机互联网络的桥接

网络系统中许多信息点由于距离很远使得网络布线成本很高,还有一些信息点由于周边环境比较恶劣,无法进行布线。这时可采用无线桥接中继,连接两段网络,常见的情况时:

(1)缺乏经济规模的中小型企业无法在短时间内部署多条专线于中心网点。

(2)申请多条EI专线的费用目前还很昂贵。

(3)多路由器的管理费用和复杂度高。

3、无线移动宽带接入WISP

WISP是指使用WLAN产品来提供公共互联网接入服务的运营商。无线网络让人摆脱了有线线缆的束缚,使任何时间、任何地点的高速网络访问成为现实。这种与地域无关的移动性信息访问将能够大幅提高用户信息访问的及时性和有效性,WISP与目前移动运营商提供的移动数据接入业务的最大区别在于其高速性,可以提供11Mbps-54Mbps的链路速度,为多媒体业务的应用提供了高性能的传输平台,应用在机场、火车站、酒店、咖啡店、办公室、会议中心、会展中心、工业科技园区等。

4、企业应用

在电力企业中,无线网能发挥极大的作用,典型应用包括:生产环境及安全的远程监控、远程数据采集及传送、生产数据查询、自动化生产过程远程控制、库存管理及仓库盘点、企业工地应用、故障处理以及临时性连接等。在交通运输、医疗、教育、零售等行业也有巨大的应用。

二、无线WIFI网络的具体应用

1、高等学校校园无线网络

随着信息技术的飞速发展和我国国民经济信息化的推进,在教育系统内全面实现信息电子化交换和信息资源共享成为必要。在教育系统互联网建设中,使用无线网络产品可以实现建筑群网络连接、宽带互联网络接入以及移动获取网络服务等功能。无线网络产品具有传输距离远、可以在建筑物之间或建筑物内施工困难的环境下使用、支持移动漫游等特点,因此可以使用它来代替传统的电信线缆来构建未来的教育网络,实现“任何人在任何时候任何地方以任何方式与任何人通信”的硬性需求,在很大程度上弥补传统校园有线网络存在的缺陷与不足。

分校区之间的联网。对于地理位置分布较远的多个校区之间或布线不方便的校园建筑物之间的校园联网,采用无线网络产品是最佳选择。它可以实现学校内所有校区之间的资源共享,为学校师生提供高质量的教学、科研和综合信息服务。

临时性活动中的应用。随着学校的办学层次的提高,学校的学术氛围也日益浓厚,对外交流日趋频繁,各种学术活动越来越多地在学校举行。除此之外,学校每年也都会举办一些其他的活动,如运动会、人才交流活动等。由于这些应用的特殊性和灵活性,有线局域网将不能满足校园网的需求。所以很有必要使用无线局域网技术对原有的有线网络进一步扩充,使校园的每个角落都处在网络中,形成真正意义上的校园网。

为学生和员工提供移动网络服务。学校为学生和员工提供了像互联网接入、图书馆和数据中心等服务设施,但是人们为了使用它们不得不整天在它们之间奔波。如果学生与员工使用了配有无线网卡的便携式计算机,他们就可以在学校任何时间、任何地点来使用这些校园提供的服务设施,可以很方便地建立虚拟教室和调研项目,为学生提供方便及时的无线上网服务。

无线网络弥补了传统有线局域网中网络接入点不足、不能随时随地上网、开放式电子图书资源访问受限等问题,方便了扩容和调试,便捷了网络管理,使我们能更充分的利用本校已有的网络资源,解决“信息孤岛”等问题

2、无线网络在家庭中的应用

无线路由器是无线局域网的基础,目前大多数主流产品都是直接具备宽带网接入功能,并集成多个RJ45有线网络端口。如此一来用户不仅可以方便地实现有线局域网,还可以使用更为简洁的WiFi技术,非常适合家庭用户以及中小型办公用户。固网运营商也结合所提供的服务,把无线路由的功能集成在ADSL的综合接入设备IAD上。比较经典的应用如图1.2、无线网络产品在银行系统中的应用

随着我国信息化进程的不断推进,各商业银行已普遍建立了自己的计算机通讯网络,银行业正在进入一个依靠信息技术改造业务流程、提高业务经营和管理科技含量为主要特征的快速发展阶段。无线网已经应用在远程储蓄网点、分离处于中心业务主机的计算机网络通信系统、银行办公自动化网络的高速通讯线路、银行视频会议系统、远程图像监控系统、流动银行、移动售卡车的移动与漫游通信系统、银行城域范围内DDN通信线路的替代或者备份中。

无线数据通信不仅可以作为有线数据通信的补充及延伸,而且还可以与有线网络环境互为备份。在某种特殊环境下,无线通信是主要的甚至是唯一的可行的通信方式。无线数据通信中,有两种通信方式:一是使用微波频段的无线网络产品,二是使用200M-800MHz频段的无线电台。无线网络电台已经在银行业务系统中得到广泛的应用,可以实现多个远程终端与中心处理用户请求的主设备之间的无线连接,实现“移动银行”业务。通过无线数传信道传送数据而不依赖公用电话系统或其他有线通信介质,不仅节省用户线路租费并且网络管理员能直接控制整个系统。

3、无线网络产品在医院系统的应用

无线网络可以应用在医院管理网络系统中的查房系统。医院的计算机管理系统中,多数部门的计算机放置在固定的位置。病房中虽然可以设置固定的计算机,并通过计算机综合布线工程达到网络连接。但如果在每个病房设置一台计算机终端,在资源的合理使用方面就会造成较大的浪费。所以移动的查房计算机将是简单可行并且相对廉价的解决方案。

4、无线网络在铁路系统的应用

为了突破传统的售票模式,提高售票效率及便利性,为客户提供更为细致周到的服务,解决售票大厅拥挤的问题,移动售票车被采用。移动售票车联机售票,即在车站广场和车站附近配备可移动的售票车,该车在车站广场内灵活移动,车上配置联网售票所需的计算机、打印机等相关设备,使该车变成一辆移动售票车。考虑到售票车的移动性,排除有线连接的方式,使用了无线方式将售票车和中心网连接。

5、无线网络在证券领域的应用

因为股市大户和操盘公司的每笔交易金额都很大而且对买卖时间要求也非

常高。因此各营业部为大户建立了大户室,为操盘公司提供了网络接口。大户和操盘公司可以利用营业部的主干系统或备用系统进行买卖活动。但现在很多股市大户不愿意在大户室内进行操作,而选择从营业部到所住的宾馆或自己的公司直接拉专线进行交易,一般采用双绞线、同轴电缆或光纤的方式进行远程联网。这样的做法铺设费用高,施工周期长,无法移动,维护成本也很高。无线网络产品可以提供比专线更快、费用更低、安装使用更灵活方便的连接方案。

各营业部间的通信采用的是专线方式,专线的带宽不仅很低,一般只有512K,而且费用也很高,128K ISDN的月租费为5000元,也就是说每个营业部每年的线路租用费用都要在六、七万元。而无线网络产品可以提供11M的宽带,采用这种方式,各营业部只需在第一年投资设备安装,之后就不用再缴纳任何租费,既能提高网速又能节省投资。

当证券公司由于业务的扩大,需要新增一个新的营业部,但由于一些原因无法将原有的布线延伸过去,这时就可以采用室外无线网络产品在原来的证券营业部大楼上架设一个无线网桥天线发射装置,在新开的营业部大楼上架设无线网桥接收装置接收对面营业部大楼发射的信号。新的营业部大楼采用室内无线网络,每台电脑间均采用无线网卡进行连接。

6、WiFi技术的无线POS服务系统应用

WiFi移动POS系统提供了一站式购物体验,将货品与付款结合在一起,它快速而安全的数据操作缩短了结账时间。与固定的POS系统相比,WiFi移动POS系统可以节省近40%的POS硬件成本和30%的管理成本。

作为无线局域网,WiFi与传统局域网的不同之处在于:整个局域网络是无线连接的。传统的POS系统通过以太网连接所有的POS终端,再经由网络交换设备与电信网络相连来进行收单。使用WiFi的无线POS省去了不显得繁琐,只需添加一台AP设备,POS终端即可与广域网建立通讯联系,而且后端接入方式有极大的灵活性,只需以一个路由器作为网关,多台WiFi移动POS终端即可通过AP以共享的方式接入广域网,与银联中心或者银行数据服务器进行通讯。此外也可与多种通讯方式配合使用,来达到最佳的通讯效果。在交易量大、对交易速度有较高要求的地方,使用高带宽的后端接入方式,可大大提升交易速度。

三、无线网络的效益

由于WiFi的频段在世界范围内是无需任何电信运营执照的免费频段,因此WLAN无线设备提供了一个世界范围内可以使用的,费用极其低廉且数据带宽极高的无线空中接口。用户可以在WiFi覆盖区域内快速浏览网页,随时随地接听拨打电话。而其它一些基于WLAN的宽带数据应用,如流媒体、网络游戏等功能更是值得用户期待。有了WiFi功能我们打长途电话(包括国际长途),浏览网页、收发电子邮件、音乐下载、数码照片传递等,再无需担心速度慢和花费高的问题。

1、全球WiFi芯片出货量大幅上升

随着带无线功能的设备越来越流行,以及企业级应用越来越普及,全球市场

WiFi芯片出货量大幅上升,802.11n标准将是WiFi芯片市场的主要动力。未来5年内,移动手持设备仍将是增长最快的带WiFi功能的设备,从2009年至2015年的年复合增长率将达到25%。到2015年时,这类设备在手持设备市场的占有率将达到40%。此外,笔记本、上网本和移动互联网设备将是另一个增长较快的领域,这一趋势将在未来几年中持续。在消费电子产品中,WiFi芯片的普及率将继续稳健增长。到2015年,带WiFi功能的消费电子产品的总出货量预计将超过5.3亿,从2009年至2015年的年复合增长率将达到26%。到2015年,带WiFi功能的数码相机、电视机和DVD播放器的出货量将比2009年增长10倍。” 对带WiFi功能的家用娱乐产品,例如联网的游戏机和掌上游戏机的需求同样将出现增长,从2009年至2015年,年复合增长率将分别达到8%和6%。

2、用户WiFi移动上网不断增加

美国WiFi服务商JiWire公司2010年2月发布调查报告称,使用WiFi功能的移动设备连接WiFi热点的用户数量正在不断增加。56%的受访者会使用他们的智能手机或其他移动设备登入WiFi网络。有14%的受访者表示,移动设备是他们连接到公共WiFi热点的主要媒介。随着移动设备的普及,越来越多的人会利用手机、上网本,甚至是游戏设备在家和办公室之外的地方连接到网络。而来自摩根士丹利的数据显示,在今年,具有上网功能的无线设备出货量将超过8.9亿。这不仅会革新人们将媒体融入自己日常生活的方式,还会使媒体广告的性质发生转变。

第四篇:无线传感器在数字化油田的应用

无线传感器在数字化油田的应用

前言

井口数字化建设是油田地面工程数字化建设最底层、范围最广、最关键的现场部分,主要完成对现场井口、站点的数据采集和控制。包括:抽油机油井、螺杆泵油井、电潜泵油井、注水井等。在数字化油田井口建设中,使用无线传感器可以减少建设周期、维护方便,适合于规模施工,全面建设数字化油田。下面以中石油青海油田为例,介绍无线传感器在油田中的应用。

1.背景介绍

中石油青海油田公司是集油气勘探、开发、研究、生产、销售为一体的大型石油公司。作业区域在素有“聚宝盆”之称的柴达木盆地。石油资源量达21.5多亿吨,天然气资源量近25000亿立方米,目前油气勘探程度较低,具有广阔的发展前景。

自2000年以以来,青海油田在部分区块已经建立了井网自动化系统,典型系统如尕斯区块、跃进区块、七个泉区块,覆盖约500多口油井。但是原有系统的覆盖面小,对于整个油田而言,仍有一半以上的井口、站点尚未实现自动化监控;另一方面,随着电子技术、通信技术的发展,在已有系统中,早期建成的部分系统采用的产品和技术已经逐渐失去了先进性,在使用维护过程中暴露出的一些问题。

2011年青海油田的数字化油田项目,完成对现场的抽油机油井、螺杆泵油井、电潜泵油井、注水井的数字化建设。最终要在2011年底建立起覆盖整个油田的、技术先进、质量可靠、便于使用维护的基于物联网的油田数据采集和监控(SCADA)系统,实现数字化油田的建设目标。

在实时监控方面,实现对油井的远程示功图、电流图、功率图采集,三相电参数采集和中控室远程启停控制;在生产管理方面,通过抽油机示功图对油井工况进行诊断分析,通过电量数据掌握油井耗电情况和采取节能措施,通过功图计产分析制定油井管理措施;在生产信息方面,在钻采院室设置数据库服务器和WEB发布服务器,实现油田生产信息在油田范围内的信息共享。

1.1数字化油田项目

既包括新建区块(对原来没有实现自动化的区块进行自动化建设),也包括老区块改造(对已有自动化的区进行改造和完善)。其中新建区块的抽油机井约1000口、螺杆泵井约100口、电潜泵井约20口,此外还包括600多口注水井;老区块改造的油水井总数约数百口。这些油水井隶属于3个采油厂12个区块。

各种井口要实现的功能如下:

2.数字化油田的总体结构设计和产品选型

井口数字化建设主要由井口控制终端(RTU)、现场检测设备、通讯链路组成的一套(SCADA)数据采集控制系统。如何选用功能完备的RTU和检测仪表、如何选用可靠的通讯方式进行井口数据通讯以及如何使数据稳定准确及时的传输到中控室,都决定了系统的稳定性、实用性和可靠性。

在2011年的新系统建设和老区块改造项目中,尽管各种油水井的功能同以前建设的已有系统类似,但是在井站系统的通信系统设计和产品、技术选型方面,却发生了本质的变化。

在产品选型方面,选用北京安控科技股份有限公司最新生产的高性能一体化无线RTU产品和无线传感器,安控产品既保留了其传统的高性能、高可靠性等特点,同时又全面支持最新的ZigBee无线技术。对于该油田已有系统的老RTU,也采用北京安控公司的ZigBee无线通信模块进行改造,扩充出无线通信接口。

在井站系统通信设计方面,井口仪表与井口RTU之间采用先进的ZigBee无线技术,具备大容量、低功耗、高可靠性、高安全性的优点,代表了短距离无线通信技术的发展趋势,并由此带来施工简化、调试维护简单、建设周期短等优点。井口RTU与上级监控中心之间的数据通信,则采用了CDMA通信网络。

2.1井站自动化系统的总体结构

在高标准、高性能、高稳定性的原则指导下,青海油田数字化油田系统结构如下图所示,包括数据采集部分、网络通讯部分和采集驱动WEB发布三大部分

●每个井口通过无线传感器采集所需数据;

●充分利用ZigBee网络特点,一个平台井口的所有无线仪表接入到同一个无线RTU,组成Mesh网络,提高通讯可靠性;每个RTU可以带64块仪表;

●所有无线仪表和无线RTU支持手操器调试,方便现场维护;

●无线RTU采集到的无线传感器数据,通过CDMA 1X网络上传到监控中心,并在本地存储历史数据,支持数据补传功能;

●监控中心搭建油气水井数字化生产信息平台,通过WEB方式发布井口实时数据;

2.2产品选型

在油田井口数字化建设中,相关产品选用了北京安控科技股份有限公司的采集和控制设备。这些设备均支持ZigBee技术。ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。ZigBee技术是基于IEEE802.15.4物理层、MAC层和数据连接层上制定出的标准,具有高可靠、高性价比、低功耗的网络应用规格。

北京安控科技股份有限公司(简称“安控科技”),是专业从事工业级RTU产品研发、生产、销售和系统集成业务的高新技术企业,是行业领先的工业级RTU产品供应商和系统集成服务商,拥有完善的远程控制终端(RTU)产品链,拥有完善的油气田自动化和环保在线监测专用产品。

2.2.1无线电量模块

抽油机井、电潜泵井的数据采集设备,选用的是安控科技的SZ308无线电量模块,可实现三相电压、三相电流、有功功率、功率因数、有功电能等电参数采集,实现抽油机启停状态采集,实现抽油机的启停控制,与SZ902N配合实现抽油机井电流图、功率图的采集。模块具备6路AI、4路DI、4路DO通道。在通信接口方面,具备1个RS232接口、1个RS485接口,内置了高性能的ZigBee通信芯片,并配套提供2.4G高增益天线。

SZ308无线电量模块采用先进的32位处理器,不仅能完成电参数的采集,还能实现数据处理、通讯联网等功能;强大的通讯组网能力和卓越的环境指标特性,能够适应各种恶劣工况环境。通过无线通讯协议与井口RTU进行数据通讯。

2.2.2无线功图传感器

抽油机井示功图采集选用安控科技的SZ902N无线功图传感器,可自动测量抽油机井地面示功图(冲程、冲次等),实现对有杆泵示功图的采集。示功图数据以ZigBee无线通信方式,传输到井口无线RTU中。

SZ902N无线功图传感器,设备简单,只有一个与传统载荷传感器相似的终端组成;安装方便,与传统的载荷传感器安装方法相同,但是免去了有线仪表电缆敷设的施工量,安装简化快捷;运行稳定,使用电池供电,可消除外界电网干扰;安全防盗,示功仪与卡锁一起上下运动,不易被人为破坏;技术先进,可设置多个频点,避免同频干扰;方法新颖,利用加速度传感器获取位移量;绿色产品,利用太阳能充电安全环保。通过无线通讯协议与井口RTU进行数据通讯。

2.2.3无线数字压力表

井口油压、套压采集选用安控科技的SZ903D无线数字压力表,实时监测油压、油套的压力和注水井注水压力。SZ903D无线数字压力表,就地显示配置液晶显示器;采用防H2S腐蚀设计;适用于各种恶劣的使用环境;具有功能强、可靠性高、应用灵活、操作方便等特点。通过无线通讯协议与井口RTU进行数据通讯。

2.2.4无线扭矩传感器

螺杆泵井口扭矩、负荷、转速采集选用安控科技的SZ904无线扭矩传感器,实时监测螺杆泵井口扭矩、负荷、转速。SZ904无线扭矩传感器,采用防H2S腐蚀设计;适用于各种恶劣的使用环境;具有功能强、可靠性高、应用灵活、操作方便等特点。通过无线通讯协议与井口RTU进行数据通讯。

2.2.5无线数字温度表

井口温度采集选用安控科技的SZ905D无线数字温度表,实时监测井口油温和注水井注水温度。SZ905D无线数字温度表,就地显示配置液晶显示器;采用防H2S腐蚀设计;适用于各种恶劣的使用环境;具有功能强、可靠性高、应用灵活、操作方便等特点。通过无线通讯协议与井口RTU进行数据通讯。

2.2.6无线RTU

井口无线RTU选用安控科技的SZ932无线网关产品。该设备具有1个ZigBee无线接口、1个RS485接口、1个RS232接口、1个TCP/IP网络接口,因此可以广泛用于以下场合:

(1)接收SZ90X无线仪表的数据;

(2)实现有线通信和无线通信之间的转换;

(3)实现第三方产品的协议转换;

(4)作为网关设备,将有线RS232/RS485或者无线通信转换为网络数据传输;

在油田井口数字化建设中,SZ932无线RTU可以通过ZigBee接口接收井口无线仪表的数据,并通过ZigBee或其他通信方式将井口数据上传到监控室。主要支持的通信方式为

1)GPRS/CDMA DTU通信

2)无线网关通信

3)SCDMA大灵通通信

4)数传电台通信

5)有线RS485通信

2.3网络通信设计

从系统结构图可以看出,通信设计采取了ZigBee+CDMA 1X方式,达到实时数据采集、传输、远程控制等效果,并将相应数据传输至后台网络,实现后台信息共享,信息管理等应用。

2.3.1 ZigBee无线应用部分

每个丛式井场,一般有3、4口井相对比较集中,采用短距离无线技术可以节省成本同时也降低了施工强度。无线技术采用的是ZigBee的无线网络协议,ZigBee是一种无线连接,可工作在2.4GHz(全球流行)、868MHz(欧洲流行)915MHZ(美国流行)3个频段上,分别具有最高250kbit/s、20kbit/s和40kbit/s的传输速率,它的传输距离在10-250m的范围内,但可以继续增加。

2.3.2 CDMA应用部分

井站是分散的,且与作业区监控中心的距离相对较远。井口采集数据要统一传送到中控室,采取了抗干扰能力强、传输距离远的CDMA作为媒介,以保证数据传输的实时性、可靠性和稳定性。

3.系统实现的功能

数据采集包括井口数据采集、作业区监控中心。

3.1井口数据采集部分

1)功图法量油

在井场,井场配套无线功图传感器SZ902N,实现油井功图全天候采集。在作业区监控中心则安装专门的示功图量油诊断软件,及时掌握油井产量情况和分析故障原因。

2)电流图、功率图采集

无线电量模块与无线功图传感器配合,实现油井电流图、功率图全天候采集。在作业区监控中心则安装专门的分析诊断软件,及时掌握油井电机运行情况和分析故障原因。

3)电参采集、油井压力、温度采集

在抽油机控制箱配套无线电量模块SZ308,监测抽油机上下行过程中三相电流和三相电压的变化情况;监视抽油机运行状态,对电机缺相、过载、空转等故障实现自动报警,并能根据控制中心命令实现启停控制。

在油井上安装无线数字压力表SZ903D,实时监测油压和套压的变化。

在油井上安装无线数字温度表SZ905D,实时监测井口出油温度的变化。

3)螺杆泵井

在螺杆泵井井口安装无线扭矩传感器,实时采集光杆的扭矩、负荷、转速。在作业区监控中心则安装专门的螺杆泵量油诊断软件,及时掌握螺杆泵井产品情况。

无线RTU SZ932提供了标准的RS485接口,能够与螺杆泵控制变频进行通讯。采集变频实时数据,了解三相电压、三相电流、电功率、功率因数和电能等参数,并据此制定节能降耗措施。

4)电潜泵井

在电潜泵井控制箱内配套无线电量模块SZ308,通过电流互感器对电泵井的三相电流进行实时监控。

5)注水井

在注水井安装无线数字压力表SZ903D,实时监测注水井压力的变化。

3.3监控中心部分

建立油气水井数字化生产信息平台,通过WEB方式实现流程监控、功图分析、生产曲线、报表生成、操作日志和报警等功能。有着信息完整、提高工作效率、正确掌握系统运行状态、加快决策、能帮助快速诊断出系统故障状态等优势。提高了油田油井系统运行可靠性、安全性与经济效益,减轻了调度员的负担,实现了油田调度自动化与现代化,在提高调度人员的工作效率和操作水平方面有着不可替代的作用。

4.无线传感器在油气田数字化建设中的优点、效益分析

与传统的产品选型和系统设计相比,无线传感器在油气田数字化建设和使用中均显示出了独特的优点:

4.1施工简便、低成本,节省材料和人工

油田传统的井站自动化系统的建设方式,以某油田原有的老区块为例,采用的是模拟仪表和有线通信传输。模拟仪表传输和有线通信方式,在施工安装过程中不可避免地需要敷设信号电缆、通信电缆(如RS485电缆),涉及到在井场挖沟和安装电缆护管等。人工费用和材料费用造成施工成本高。

而在无线传感器应用的系统中,这一部分的施工费用不存在了,信号传输和通信传输均简化为无线通信的调试,施工成本被降到了最低。

4.2施工快捷,建设周期短,便于后期维护

由于新系统的建设省略了在井场动土挖沟、动火电焊等施工,因此施工速度提高了数倍。

以安控科技生产的无线功图传感器的安装为例,传统的信号电缆敷设和传感器安装需要至少半小时以上,而该传感器减少了安装抽油机光杆卡子和电缆敷设的时间,因此正常的安装时间缩短到了10分钟以内。

井场内自动化设备的安装施工中,都需要对油井停机停电,而停机就意味着油井减产。因此从这个意义而言,施工速度的提高就等于是生产效益的提高。

在系统的后期维护方面,某油田老区块原有的信号和通信电缆,在修井作业中经常被重型车辆轧断和遭到人为破坏。而无线传感器则免除了这一问题。

4.3适合于规模施工,全面建设数字化油田

随着电子技术、计算机技术的进步,特别是国产设备的推陈出新,油田专用的RTU、PLC产品的采购成本已经逐渐降低;而无线技术的应用,则带来了施工费用的大大降低。

仅仅在数年以前,油田数字化建设的投资还只能针对重点区块、建设重点工程。而目前最新的技术和产品,则为全面建设数字化油田创造了条件。

第五篇:无线传感网络课程设计

无线传感网络 课程设计报告

姓名:胡韶辉 胡衎

2017

学号:139074377 139074376 班级:物131班 指导教师:卫琳娜

年1月1日

无线传感网络课程设计

实验

一、无线传感网络点对点通信实验

1.实验内容

此实验为验证实验,根据实验步骤进行实验,观察结果是否与预期相符

2.实验步骤

用IAR8.1打开路径:C:UsersxsDesktop无线传感器网络课程设计无线传感网实验资料201604感知RF2-2530WSNV1.2代码和例子程序Light_SwitchIDELight_Switchsrf05_cc2530IarLight_Switch.eww分别编译并下载至两个节点上,打开节点,左右键选择/,选择完成后按中间键确认,观察LED灯显示情况。3.实验代码及分析

/* 功 能:查找字符在索引中的哪一个位置 */ /**************************************************************************************************/ static u16 lookforChar(u8 ch){ uint16 i;for(i = 0;i < FONTLISTCOUNT;i ++){

if(fontList[i] == ch)

return i;} return i;}

//查中文

static u16 lookforChar16(u16 ch){ uint16 i,j;u16 temp16;for(i = 0;i < fontChar16ListCount;i ++){

j = i*2;

temp16 = fontChar16List[j + 1];

temp16 <<= 8;

temp16 |= fontChar16List[j];

if(temp16 == ch)

return i;} return i;}

/**************************************************************************************************/ /* 功 能:在指定位置输出8*8 */ /**************************************************************************************************/ static void LcdPutChar8(u8 x,u8 y,u8 ch){ LcdBuf[y][x] = ch;} /**************************************************************************************************/ /* 功 能:在指定位置输出16*16 */ /**************************************************************************************************/

/*static void LcdPutChar16(u8 x,u8 y,u16 ch){ LcdBuf[y][x] =(u8)ch;

//低前高后

LcdBuf[y+1][x] =(u8)(ch>>8);}

void LcdPutString8(u8 x,u8 y,u8 *ptr u8 len,u8 op){

u8 i,*tptr = ptr,xx = x,yy = y;u16 m;if(x > 95)

return;if(y > 1)

return;for(i = 0;i < len;i ++){

m = lookforChar(*tptr ++);

if(m!= FONTLISTCOUNT)

{

m = m * 8;

}

else

return;

xx += 8;

if(xx > 88)

return;} } */

void LcdClearRam(void){ u8 i;for(i = 0;i < 96;i ++){

LcdBuf[0][i] = 0;} for(i = 0;i < 96;i ++){

LcdBuf[1][i] = 0;} } void LcdClearScrean(void){ LcdClearRam();PutPic((void *)LcdBuf);}

void LcdPutString16_8(u8 x,u8 y,u8 *ptr,u8 len,u8 op){ u8 i,j,*tptr = ptr,xx = x,yy = y;u16 m;if(xx > 95)

return;if(yy)

return;

for(i = 0;i < len;i ++){

m = lookforChar(*tptr ++);

if(m!= FONTLISTCOUNT)

{

m = m * 16;

for(j = 0;j < 8;j ++)

{

if(op)

{

LcdPutChar8((xx + j),yy,font[m+j]);

LcdPutChar8((xx + j),yy+1,font[m+j+8]);

}

else

{

LcdPutChar8((xx + j),yy,~font[m+j]);

LcdPutChar8((xx + j),yy+1,~font[m+j+8]);

}

}

}

else

break;

xx += 8;

if(xx > 96)

return;} PutPic((void *)LcdBuf);} //显示16*16字符

void LcdPutString16_16(u8 x,u8 y,u8 *ptr,u8 len,u8 op){ u8 i,j,*tptr = ptr,xx = x,yy = y;u16 m;if(xx > 95)

return;if(yy)

return;

for(i = 0;i < len;i ++){

m = lookforChar(*tptr ++);

if(m!= FONTLISTCOUNT)

{

m = m * 32;

for(j = 0;j < 16;j ++)

{

if(op)

{

LcdPutChar8((xx + j),yy,font[m+j]);

LcdPutChar8((xx + j),yy+1,font[m+j+16]);

}

else

{

LcdPutChar8((xx + j),yy,~font[m+j]);

LcdPutChar8((xx + j),yy+1,~font[m+j+16]);

}

}

}

else

break;

xx += 16;

if(xx > 80)

return;} PutPic((void *)LcdBuf);}

static void LcdPrint8(u8 x,u8 y,u8 vl,u8 op){ u8 j;u16 m;m = lookforChar(vl);if(m!= FONTLISTCOUNT){

m = m * 16;

for(j = 0;j < 8;j ++)

{

if(op)

{

LcdPutChar8((x + j),y,font[m+j]);

LcdPutChar8((x + j),y+1,font[m+j+8]);

}

else

{

LcdPutChar8((x + j),y,~font[m+j]);

LcdPutChar8((x + j),y+1,~font[m+j+8]);

}

} } } static void LcdPrint16(u8 x, u8 y, u16 val, u8 op){ u8 j;u16 m;m = lookforChar16(val);if(m!= fontChar16ListCount)

{

m = m * 32;

for(j = 0;j < 16;j ++)

{

if(op)

{

LcdPutChar8((x + j),y,fontChar16[m+j]);

LcdPutChar8((x + j),y+1,fontChar16[m+j+16]);

}

else

{

LcdPutChar8((x + j),y,~fontChar16[m+j]);

LcdPutChar8((x + j),y+1,~fontChar16[m+j+16]);

}

}

} }

void LcdPutDispBuf(u8 x,u8 y,OledCodeDataType *ptr,u8 op){ u8 tcount = x;OledCodeDataType *tptr = ptr;u16 temp16;if(x > 88)

return;if(y > 1)

return;while((*tptr!= '')&&(tcount <= 88)){

if(*tptr < 127)

//显示ASIC码

{

}

else //显示汉字

{

LcdPrint8(tcount,y,*tptr,op);tptr ++;tcount += 8;

temp16 = tptr[1];temp16 <<= 8;temp16 |= tptr[0];LcdPrint16(tcount,y,temp16,op);tptr += 2;

tcount += 16;

} } PutPic((void *)LcdBuf);}

//实现中英文混合显示

void LcdPutDisp(u8 x,u8 y,OledCodeDataType *ptr,u8 op){ u8 tcount = x;OledCodeDataType *tptr = ptr;u16 temp16;if(x > 88)

return;if(y > 1)

return;while((*tptr!= '')&&(tcount <= 88)){

if(*tptr < 127)

{

LcdPrint8(tcount,y,*tptr,op);

tptr ++;

tcount += 8;

}

else

//显示汉字

{

temp16 = tptr[1];

temp16 <<= 8;

temp16 |= tptr[0];

LcdPrint16(tcount,y,temp16,op);

tptr += 2;

tcount += 16;

} } PutPic((void *)LcdBuf);} //从右往左输出一组字符并移运显示

void LcdPutScDispRtoL(OledCodeDataType *ptr,u8 op,u16 dl){ OledCodeDataType *tptr = ptr;u16 temp16;// LcdClearRam();

//显示ASIC

while(*tptr!= ''){

if(*tptr < 127)码

//显示ASIC

{

memcpy(LcdBuf[0],&LcdBuf[0][8],88);

memcpy(LcdBuf[1],&LcdBuf[1][8],88);

LcdPrint8(88,0,*tptr,op);

tptr ++;

}

else

//显示汉字

{

memcpy(LcdBuf[0],&LcdBuf[0][16],80);

memcpy(LcdBuf[1],&LcdBuf[1][16],80);

temp16 = tptr[1];

temp16 <<= 8;

temp16 |= tptr[0];

LcdPrint16(80,0,temp16,op);

tptr += 2;

}

PutPic((void *)LcdBuf);

LcdDelay(dl);} }

void LcdPutScDispRtoL12(OledCodeDataType *ptr,u8 op,u16 dl){ OledCodeDataType *tptr = ptr;u16 i,temp16;for(i = 0;i < 12;){

if(*tptr < 127)

//显示ASIC码

{

memcpy(LcdBuf[0],&LcdBuf[0][8],88);

memcpy(LcdBuf[1],&LcdBuf[1][8],88);

LcdPrint8(88,0,*tptr,op);

tptr ++;

i ++;

}

else

//显示汉字

{

memcpy(LcdBuf[0],&LcdBuf[0][16],80);

memcpy(LcdBuf[1],&LcdBuf[1][16],80);

temp16 = tptr[1];

temp16 <<= 8;

temp16 |= tptr[0];

LcdPrint16(80,0,temp16,op);

tptr += 2;

i +=2;

}

PutPic((void *)LcdBuf);

LcdDelay(dl);} }

//从左往右

void LcdPutScDispLtoR12(OledCodeDataType *ptr,u8 op,u16 dl){ OledCodeDataType *ttptr,*tptr = ptr;u16 temp16;u8 i,len,tempbuf[2][96];

len = 12;

tptr = ptr+11;for(i = 0;i < len;){

if(*(tptr)< 127)

ASIC码

{

memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);

memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);

memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);

memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);

LcdPrint8(0,0,*tptr,op);

tptr--;

i ++;

}

else

//显示汉字

{

memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);

memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);

memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);

memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);

ttptr = tptr;

//显示

temp16 = *ttptr;

temp16 <<= 8;

ttptr = tptr-1;

temp16 |= *ttptr;

LcdPrint16(0,0,temp16,op);

tptr-= 2;

i += 2;

}

PutPic((void *)LcdBuf);

LcdDelay(dl);} } void LcdPutScString(OledCodeDataType *ptr,u8 op,u8 rl,u16 dl){

switch(rl){

case LIFT_SC:

LcdPutScDispLtoR12(ptr,op,dl);

break;

case RIGHT_SC:

LcdPutScDispRtoL12(ptr,op,dl);

break;

default:break;

} }

void LcdPutPic(u8 x, u8 y,u8 w,u8 h,OledCodeDataType *ptr,u8 op){ u8 i;OledCodeDataType *tptr = ptr;if((x > 95)||((x + w)> 96))

return;if((y > 1)||((y + h)> 2))

return;

for(i = 0;i < w;i ++)

{

if(op)

{

LcdBuf[y][x + i] = *tptr;

if(h == 2)

LcdBuf[y+1][x + i] = *(tptr+w);

tptr ++;

}

else

{

LcdBuf[y][x + i] = ~*tptr;

if(h == 2)

LcdBuf[y+1][x + i] = ~*(tptr+w);

tptr ++;

} } PutPic((void *)LcdBuf);}

//整屏滑动显示

void LcdPutScPic(OledCodeDataType *ptr, u8 op,u8 qp,u16 dl){ u8 i,j;u8 tempbuf[2][96];if(qp){

for(i = 0;i < 96;i ++)

{

tempbuf[0][i] = *ptr++;

}

for(i = 0;i < 96;i ++)

{

tempbuf[1][i] = *ptr++;

}

} else {

for(i = 0;i < 96;i ++)

{

tempbuf[0][i] = ~*ptr++;

}

for(i = 0;i < 96;i ++)

{

tempbuf[1][i] = ~*ptr++;

}

}

switch(op){

case RIGHT_SC:

//右边

for(i = 0;i < 8;i ++){

for(j = 0;j < 84;j ++)

{

LcdBuf[0][95-j] = LcdBuf[0][83j];

}

for(j = 0;j < 12;j ++)

{

LcdBuf[0][11-j] = tempbuf[0][95j];

}

for(j = 0;j < 84;j ++)

{

tempbuf[0][95-j] = tempbuf[0][83j];

}

PutPic((void *)LcdBuf);

} LcdDelay(dl);break;case LIFT_SC:

//左边

for(i = 0;i < 8;i ++){

for(j = 0;j < 84;j ++)

{

LcdBuf[0][j] = LcdBuf[0][j + 12];

LcdBuf[1][j] = LcdBuf[1][j + 12];

}

for(j = 0;j < 12;j ++)

{

LcdBuf[0][95-j] = tempbuf[0][11-j];

LcdBuf[1][95-j] = tempbuf[1][11-j];

}

for(j = 0;j < 84;j ++)

{

tempbuf[0][j] = tempbuf[0][j+12];

tempbuf[1][j] = tempbuf[1][j+12];

}

PutPic((void *)LcdBuf);

} LcdDelay(dl);break;default:

break;} }

void LcdPutString16_8_R(u8 *ptr,u8 op){ u8 i,x=0;

for(i=0;i<12;i++){ x=88-i*8;LcdPutString16_8(x,0,ptr,i+1,op);LcdDelay(100);} } 4.实验总结

此实验室实现两个节点间的通信,可以输出中文或英文,或中英文混合输出。其主要原理是通过ASIC将中英文转换,通过字符串的拼凑输出。

实验

二、光照传感器实验

1.实验内容

1.了解光照采集的原理

2.学习CDS 光照传感器从而掌握光照传感器的原理 3.掌握“传感器节点板”模块的原理和使用方法。2.实验步骤

第一步:把“代码和例子程序Zigbee2007 多传感器”内文件夹 “ZStack-CC2530-2.2.0-1.3.0MS”“”复制至 IAR 安装盘根目录(如 C: Texas Instruments)下。使用 IAR7.51 打开“ProjectszstackSamplesSampleAppCC2530 DB”中工程文件“SampleApp.eww”。

第二步:打开工程后选择对应的设备类型 打开工程后如下右图所示选择当前要烧写设备的类型。

打开后的工程文件 工程名称 ZigBee 网络功能 CC2530-WSN 节点功能 CoordinatorEB-Pro 协调器 网关 RouterEB-Pro 路由器 路由器节点、传感器节点 EndDeviceEB-Pro 终端节点 传感器节点

第三步:编译工程并下载到目标板。点击菜单 Project,选择“Rebuild All”,等待一会儿工程文件编译完成。等 待一会儿工程文件编译完成把仿真器与网关通过仿真器下载线连接起来。确保仿 真器与计算机、仿真器与网关底板连接正确,ZigBee 无线模块正确地插在网关 底板后。点击菜单 Project,选择“Debug”,或点击如下图标,等待一会儿即完成程 序下载 重复进行第二步和第三步,将“RouterEB-Pro”设备对应的程序下载到带传 感器模块的传感器节点底板中(SMBD-V11-1)第四步:修改 IEEE 地址。在物理地址烧写软件中首先通过“Read IEEE”把物 理地址(IEEE 地址)读出来,如果节点物理地址为“0XFF FF FF FF FF FF FF FF” 或在网络中有相同地址,则需要通过“Write IEEE”修改 ZigBee 网络节点的物 理地址,在此例中,我们把网关的物理地址修改“0x31,0x30,0x30,0x30,0x30,0x30, 0x30,0x30”。按照第二步至第四步的方法下载传感器节点模块的程序,选择 “RouterEB”或“EndDevice”,如有多组在同一实验室进行实验,请修改为各 不相同的 IEEE 地址。第五步:获取和查看光照传感器数据 用 USB 线连接上 PC 机跟网关,打开“代码和例子程序Zigbee2007 多传感 器无线龙 ZigBee 演示软件 V1.21(串口用)”目录下“无线龙 ZigBee 演示软件 V1.21(串口用).exe”软件。通过设备管理器查看对应设备的串口号是多少,如图所示为 COM3。在监控 软件中选择“COM 端口”COM3,波特率:38400,点击“打开串口”。正确打开串口后,选择网络拓扑图,确保网关与计算机的正确连接。3.实验代码与分析

case 4://普通温度、光敏、蜂鸣器 if(DispState == 0){ LcdPutString16_8(0, 0,(void*)“ Temp/Light ”, 12 , 1);} else if(DispState == 1){ temp = ReadTc77();//读取温度 sprintf(msg,“TEMP:%2d ”,temp);LcdPutString16_8(0, 0,(void*)msg, 12 , 1);} else if(DispState == 2)//读取光照 { temp = ReadSensorAdc(1);sprintf(msg,“Light:%03d ”,temp);LcdPutString16_8(0, 0,(void*)msg, 12 , 1);}

break;通过 ADC 读取光敏传感器值:

temp = ReadSensorAdc(1);//读取光敏传感器值

ReadSensorAdc 子函数位于“ ComponentshaltargetCC2530EB”目录下的 Sensor.c 文件中

temp = HalAdcRead(channel,HAL_ADC_RESOLUTION_8);channel 光敏传感器对应的 AD 通道 P01

HAL_ADC_RESOLUTION_8 采集分辨率 8Bit

ADC 采 集 子 函 数 在 在 “ComponentshaltargetCC2530EB ” 目 录 下 的

“ hal_adc.c”文件

/****************************************************************************** ******************** * @fn HalAdcRead * * @brief Read the ADC based on given channel and resolution * * @param channelthe resolution of the value * * @return 16 bit value of the ADC in offset binary format.* Note that the ADC is “bipolar”, which means the GND(0V)level is mid-scale.******************************************************************************* *******************/ uint16 HalAdcRead(uint8 channel, uint8 resolution){ int16 reading = 0;#if(HAL_ADC == TRUE)uint8 i, resbits;uint8 adctemp;volatile uint8 tmp;uint8 adcChannel = 1;/* * If Analog input channel is AIN0..AIN7, make sure corresponing P0 I/O pin is enabled.The code * does NOT disable the pin at the end of this function.I think it is better to leave the pin * enabled because the results will be more accurate.Because of the inherent capacitance on

* pin, it takes time for the voltage on the pin to charge up to its steady-state level.If * HalAdcRead()has to turn on the pin for every conversion, the results may show a lower voltage * than actuality because the pin did not have time to fully charge.*/ if(channel < 8){ for(i=0;i < channel;i++){ adcChannel <<= 1;} } /* Enable channel */ ADCCFG |= adcChannel;/* Convert resolution to decimation rate */ switch(resolution){ case HAL_ADC_RESOLUTION_8: resbits = HAL_ADC_DEC_064;break;case HAL_ADC_RESOLUTION_10: resbits = HAL_ADC_DEC_128;break;case HAL_ADC_RESOLUTION_12: resbits = HAL_ADC_DEC_256;break;case HAL_ADC_RESOLUTION_14: default: resbits = HAL_ADC_DEC_512;break;} /* read ADCL,ADCH to clear EOC */ tmp = ADCL;tmp = ADCH;/* Setup Sample */ adctemp = ADCCON3;adctemp &= ~(HAL_ADC_CHN_BITS | HAL_ADC_REF_BITS);adctemp |= channel | resbits | HAL_ADC_REF_VOLT;/* writing to this register starts the extra conversion */ ADCCON3 = adctemp;/* Wait for the conversion to be done */ while(!(ADCCON1 & HAL_ADC_EOC));/* Disable channel after done conversion */ ADCCFG &=(adcChannel ^ 0xFF);/* Read the result */ reading =(int16)(ADCL);reading |=(int16)(ADCH << 8);/* Treat small negative as 0 */ if(reading < 0)reading = 0;switch(resolution){ case HAL_ADC_RESOLUTION_8: reading >>= 8;break;case HAL_ADC_RESOLUTION_10: reading >>= 6;break;case HAL_ADC_RESOLUTION_12: reading >>= 4;break;case HAL_ADC_RESOLUTION_14: default:

HAL_ADC_DEC_BITS |

break;} #else // unused arguments(void)channel;(void)resolution;#endif return((uint16)reading);}

4.实验总结

通过串口助手,配置正确的串口号和波特率,填入测试的数据指令,点击发送就可以获取网关返回的读取到节点的数据。

实验

三、气压传感器实验

1.实验内容

1.了解气压采集的原理

2.学习MPX5010 气压传感器从而掌握气压传感器的原理 3.掌握“ 传感器节点板” 模块的原理和使用方法。2.实验步骤

同“实验二十四 光照传感器实验 实验步骤第一步至第四步”

第五步:获取和查看大气气压传感器数据用 USB 线连接上 PC 机跟网关,打开“ 软件工具及驱动无线龙 ZigBee 演示软件 V1.11”目录下“无线龙 ZigBee 演示软件 V1.11.exe”软件。通过设备管理器查看对应设备的串口号是多少,如图所示为 COM3。在监控软件中选择“ COM 端口” COM3,波特率: 38400,点击“打开串口”。在 RSS 曲线部分中的下拉选择框中选择节点压力(如下图),鼠标左键单击选中要查看的节点模块。点击“开始”按钮,就可开始显示节点空气压力的曲线了(注:这时“开始”

按钮将变为“关闭”按钮)。为了使显示曲线效果明显,可以通过电扇吹气方式来达到明显效果。点击“关闭”按钮,则曲线停止,但曲线不会消失,这时“关闭”按钮将变为“开始”按钮,这时在点击“开始”按钮会弹出一格对话框,选择“是”则不清空曲线,继续在图上画曲线。选择“否”则清空曲线,再 在图上画曲线。点击“保存”按钮,可将曲线图以 RSS 格式的数据保存在电脑上,点击“载入”按钮,可以载入保存了曲线数据的 RSS 文件,将曲线显示在曲线图上。3.实验代码与分析

传感器采集的函数在 void SampleApp_MessageMSGCB(afIncomingMSGPacket_t *pkt)中

if((RfRx.RXDATA.HeadCom[1] == 'P')&&(RfRx.RXDATA.HeadCom[2] == 'R'))//压力传感器 { if(SensorNum == 5)//压力传感器板 { memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);temp = ReadSensorAdc(0);RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;temp = temp%100;RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;RfHaveTxDara = 1;} } //调用子函数 ReadSensorAdc 完成读取

//---------------------------//Read Sensor ADC value //读取 AD 值 //输入:通道名

//返回: 8 位 AD 值

//---------------------------INT8U ReadSensorAdc(INT8U channel){ INT8U temp;temp = HalAdcReadSen(channel,HAL_ADC_RESOLUTION_8);return temp;} 通过 ADC 读取大气压力传感器值:

temp = HalAdcReadSen(channel,HAL_ADC_RESOLUTION_8);/读取空气压力传感器值 channel 气体压力传感器对应的 AD 通道

HAL_ADC_RESOLUTION_8 采集分辨率 8Bit

ADC 采 集 子 函 数 在 在 “ComponentshaltargetCC2530EB ” 目 录 下 的 “ hal_adc.c”文件

/****************************************************************************** ******************** * @fn HalAdcRead * * @brief Read the ADC based on given channel and resolution * * @param channelthe resolution of the value * * @return 16 bit value of the ADC in offset binary format.* Note that the ADC is “bipolar”, which means the GND(0V)level is mid-scale.******************************************************************************* *******************/ uint16 HalAdcRead(uint8 channel, uint8 resolution)int16 reading = 0;#if(HAL_ADC == TRUE)uint8 i, resbits;uint8 adctemp;volatile uint8 tmp;uint8 adcChannel = 1;/* * If Analog input channel is AIN0..AIN7, make sure corresponing P0 I/O pin is enabled.The code * does NOT disable the pin at the end of this function.I think it is better to leave the pin * enabled because the results will be more accurate.Because of the inherent capacitance on the * pin, it takes time for the voltage on the pin to charge up to its steady-state level.If * HalAdcRead()has to turn on the pin for every conversion, the results may show a lower voltage * than actuality because the pin did not have time to fully charge.*/ if(channel < 8){ for(i=0;i < channel;i++){ adcChannel <<= 1;} } /* Enable channel */ ADCCFG |= adcChannel;/* Convert resolution to decimation rate */ switch(resolution){ case HAL_ADC_RESOLUTION_8: resbits = HAL_ADC_DEC_064;break;case HAL_ADC_RESOLUTION_10: resbits = HAL_ADC_DEC_128;break;case HAL_ADC_RESOLUTION_12: resbits = HAL_ADC_DEC_256;break;case HAL_ADC_RESOLUTION_14: default: resbits = HAL_ADC_DEC_512;break;} /* read ADCL,ADCH to clear EOC */ tmp = ADCL;tmp = ADCH;/* Setup Sample */ adctemp = ADCCON3;adctemp &= ~(HAL_ADC_CHN_BITS | HAL_ADC_DEC_BITS | HAL_ADC_REF_BITS);adctemp |= channel | resbits | HAL_ADC_REF_VOLT;/* writing to this register starts the extra conversion */ ADCCON3 = adctemp;/* Wait for the conversion to be done */ while(!(ADCCON1 & HAL_ADC_EOC));/* Disable channel after done conversion */ ADCCFG &=(adcChannel ^ 0xFF);/* Read the result */ reading =(int16)(ADCL);reading |=(int16)(ADCH << 8);/* Treat small negative as 0 */ if(reading < 0)reading = 0;switch(resolution){ case HAL_ADC_RESOLUTION_8: reading >>= 8;break;case HAL_ADC_RESOLUTION_10: reading >>= 6;break;case HAL_ADC_RESOLUTION_12: reading >>= 4;break;case HAL_ADC_RESOLUTION_14: default: break;} #else // unused arguments(void)channel;(void)resolution;#endif return((uint16)reading);} 4.实验总结

打开“ EXPLORERF-CC2530 增配传感器光盘 V1.1软件工具及驱动” 中工具 “ 串口调试助手.exe”配置正确的串口号和通讯波特率,填入测试的数据指令,点击发送就可以获取网关返回的读取到节点的数据。

实验

四、综合实验

1.实验原理

以一LED灯,LED显示屏作为工具。当LED灯显示时,LED显示屏上也显示信息灯亮。将LED灯作为协调器,LED显示屏作为终端,当LED灯亮时,会通过组网将信息传给终端,即此时LED显示屏显示灯亮,即LED显示屏给予LED灯亮的一个信息反馈。2.实验步骤

选择烧取设备的类型为CoordinatorEB-pro, 点击菜单 Project,选择“ Rebuild All”,等待一会儿工程文件编译完成。等待一会儿工程文件编译完成把仿真器与网关通过仿真器下载线连接起来。确保仿真器与计算机、仿真器与网关底板连接正确,ZigBee 无线模块正确地插在网关底板后。点击菜单 Project,选择“ Debug”,或点击如下图标,等待一会儿即完成程序下载.将烧取设备类型改为EndDeviceEB-pro,重复上述步骤。当LED亮时,此时显示屏也将有相应反应。4.实验代码

#include “OSAL.h” #include “ZGlobals.h” #include “AF.h” #include “aps_groups.h” #include “ZDApp.h”

#include “SampleApp.h” #include “SampleAppHw.h”

#include “OnBoard.h”

/* HAL */ #include “hal_lcd.h” #include “hal_led.h” #include “hal_key.h” #include “string.h” #include #include “MT_UART.h” #include “HAL_ADC.h”

#include “sensor.h” #include “SHT10.h” #include “ugOled9616.h” #include “LcdDisp.h” #include “TMP006.h” #include “hal_timer34.h” /********************************************************************* * MACROS */

/********************************************************************* * CONSTANTS */ /********************************************************************* * TYPEDEFS */

/********************************************************************* * GLOBAL VARIABLES */

// This list should be filled with Application specific Cluster IDs.const cId_t SampleApp_ClusterList[SAMPLEAPP_MAX_CLUSTERS] = { SAMPLEAPP_PERIODIC_CLUSTERID, SAMPLEAPP_FLASH_CLUSTERID };

const SimpleDescriptionFormat_t SampleApp_SimpleDesc = { SAMPLEAPP_ENDPOINT, // int Endpoint;SAMPLEAPP_PROFID, // uint16 AppProfId[2];SAMPLEAPP_DEVICEID, // uint16 AppDeviceId[2];SAMPLEAPP_DEVICE_VERSION, // int AppDevVer:4;SAMPLEAPP_FLAGS, // int AppFlags:4;SAMPLEAPP_MAX_CLUSTERS, // uint8 AppNumInClusters;(cId_t *)SampleApp_ClusterList, // uint8 *pAppInClusterList;SAMPLEAPP_MAX_CLUSTERS, // uint8 AppNumInClusters;(cId_t *)SampleApp_ClusterList // uint8 *pAppInClusterList;};

// This is the Endpoint/Interface description.It is defined here, but // filled-in in SampleApp_Init().Another way to go would be to fill // in the structure here and make it a “const”(in code space).The // way it's defined in this sample app it is define in RAM.endPointDesc_t SampleApp_epDesc;

/********************************************************************* * EXTERNAL VARIABLES */ extern unsigned char SensorNum;extern INT8U DispNum;unsigned char DispState = 0;unsigned char Relay1State = 0;unsigned char Relay2State = 0;extern INT16U LEDDispNum;/********************************************************************* * EXTERNAL FUNCTIONS */

/********************************************************************* * LOCAL VARIABLES */ uint8 SampleApp_TaskID;// Task ID for internal task/event processing // This variable will be received when // SampleApp_Init()is called.devStates_t SampleApp_NwkState;

uint8 SampleApp_TransID;// This is the unique message ID(counter)uint8 *ieeeAddr;//物理地址

unsigned char LCDUPDATA = 0;//LCD刷新标致位 unsigned char Shakeflag = 0;unsigned char InfraredState = 0;unsigned char InfraredCount = 0;unsigned char InfraredInitFlag = 0;unsigned char HallState = 0;union f1{ uint8 RxBuf[32];struct UARTCOMBUF { uint8 Head;//头 uint8 HeadCom[3];//命令头 uint8 Laddr[8];//物理地址 uint8 Saddr[2];//网络地址 uint8 DataBuf[16];//数据缓冲区 uint8 CRC;//校验位

uint8 LastByte;//帧尾 }RXDATA;}UartRxBuf;//从串口接收到的数据帧

union e{ uint8 TxBuf[32];struct UARTBUF { uint8 Head;//头 uint8 HeadCom[3];//命令头 uint8 Laddr[8];//物理地址 uint8 Saddr[2];//网络地址 uint8 DataBuf[16];//数据缓冲区 uint8 CRC;//校验位

uint8 LastByte;//帧尾 }TXDATA;}UartTxBuf;//从串口发送数据帧

union h{ uint8 RxBuf[32];struct RFRXBUF { uint8 Head;//头

uint8 HeadCom[3];//命令头 uint8 Laddr[8];uint8 Saddr[2];uint8 DataBuf[16];//数据缓冲区

uint8 CRC;//校验位

uint8 LastByte;//帧尾 }RXDATA;}RfRx;//无线接收缓冲区

union j{ uint8 TxBuf[32];struct RFTXBUF { uint8 Head;//头

uint8 HeadCom[3];//命令头

uint8 Laddr[8];uint8 Saddr[2];uint8 DataBuf[16];//数据缓冲区

uint8 CRC;//校验位

uint8 LastByte;//帧尾 }TXDATA;}RfTx;//无线发送缓冲区

uint16 Ultrasonic_Count;//超声波计数

/***************************************************************************** void WaitUs(uint16 microSecs)

延时uS函数.*****************************************************************************/ void WaitUs(uint16 microSecs){ while(microSecs--){ /* 32 NOPs == 1 usecs */ asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);asm(“nop”);} }

/***************************************************************************** uint8 SendData(uint16 addr, uint8 *buf, uint8 Leng)

发送一组数据.*****************************************************************************/ uint8 SendData(uint16 addr, uint8 *buf, uint8 Leng){ afAddrType_t SendDataAddr;

SendDataAddr.addrMode =(afAddrMode_t)Addr16Bit;SendDataAddr.endPoint = SAMPLEAPP_ENDPOINT;SendDataAddr.addr.shortAddr = addr;if(AF_DataRequest(&SendDataAddr, &SampleApp_epDesc, 2,//SAMPLEAPP_PERIODIC_CLUSTERID, Leng, buf, &SampleApp_TransID, AF_DISCV_ROUTE, // AF_ACK_REQUEST, AF_DEFAULT_RADIUS)== afStatus_SUCCESS){

return 1;} else {

return 0;// Error occurred in request to send.} } case 1://DAC 输出

if(DispState == 0)

{

DAC_OUT_CON(0x07ff, 0x07ff);

LcdPutString16_8(0, 0,(void*)“ DAC-OUT ”, 12 , 1);

}

else if(DispState == 1)

{

DAC_OUT_CON(0x03ff, 0x03ff);

sprintf(msg,“OUT:0.5MA/V ”,temp);

LcdPutString16_8(0, 0,(void*)msg, 12 , 1);

}

else if(DispState == 2)

{

DAC_OUT_CON(0x0Bff, 0x0Bff);

sprintf(msg,“OUT:1.5MA/V ”,temp);

LcdPutString16_8(0, 0,(void*)msg, 12 , 1);

}

break;case 2://高亮LED控制

if(DispState == 0)

{

ChangT3Cmp0Val(0xff);

P1_6 = 0;

LcdPutString16_8(0, 0,(void*)“ LED-LIGHT ”, 12 , 1);

}

else if(DispState == 1)

{

ChangT3Cmp0Val(230);

LcdPutString16_8(0, 0,(void*)“LEVEL:10% ”, 12 , 1);

}

else if(DispState == 2)

{

ChangT3Cmp0Val(25);

LcdPutString16_8(0, 0,(void*)“LEVEL:90% ”, 12 , 1);

}

break;

} void SampleApp_Init(uint8 task_id){ SampleApp_TaskID = task_id;SampleApp_NwkState = DEV_INIT;SampleApp_TransID = 0;

// Device hardware initialization can be added here or in main()(Zmain.c).// If the hardware is application specificThis app will handle all key events RegisterForKeys(SampleApp_TaskID);

#ifdef WXL_COORD

MT_UartRegisterTaskID(SampleApp_TaskID);

#endif } void SampleApp_Init(uint8 task_id){ SampleApp_TaskID = task_id;SampleApp_NwkState = DEV_INIT;SampleApp_TransID = 0;

// Device hardware initialization can be added here or in main()(Zmain.c).// If the hardware is application specificThis app will handle all key events RegisterForKeys(SampleApp_TaskID);

#ifdef WXL_COORD

MT_UartRegisterTaskID(SampleApp_TaskID);

#endif }

/********************************************************************* * @fn SampleApp_ProcessEvent * * @brief Generic Application Task event processor.This function * is called to process all events for the task.Events * include timers, messages and any other user defined events.* * @param task_idevents to process.This is a bit map and can * contain more than one event.* * @return none */ uint16 SampleApp_ProcessEvent(uint8 task_id, uint16 events){ afIncomingMSGPacket_t *MSGpkt;uint16 temp1;

#if(defined(WXL_ROUTER)|| defined(WXL_RFD))//ROUTER OR RFD uint16 SrcSaddr;#endif

(void)task_id;// Intentionally unreferenced parameter

if(events & SYS_EVENT_MSG){

MSGpkt =(afIncomingMSGPacket_t *)osal_msg_receive(SampleApp_TaskID);

while(MSGpkt)

{

switch(MSGpkt->hdr.event)

{

// Received when a key is pressed

case KEY_CHANGE:

SampleApp_HandleKeys(((keyChange_t *)MSGpkt)->state,((keyChange_t *)MSGpkt)->keys);

break;

// Received when a messages is received(OTA)for this endpoint

case AF_INCOMING_MSG_CMD:

SampleApp_MessageMSGCB(MSGpkt);

break;

// Received whenever the device changes state in the network

case ZDO_STATE_CHANGE:

SampleApp_NwkState =(devStates_t)(MSGpkt->hdr.status);

if((SampleApp_NwkState == DEV_ZB_COORD)

||(SampleApp_NwkState == DEV_ROUTER)

||(SampleApp_NwkState == DEV_END_DEVICE))

{

HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);#ifdef WXL_COORD

ugOled9616int();LcdPutString16_8(0, 0,(void*)“ COORD ”, 12 , 1);

//osal_start_timerEx(SampleApp_TaskID,//SAMPLEAPP_RUN__EVT,//SAMPLEAPP_RUN_TIMEOUT);//启动超时定时器

#endif

#ifdef WXL_RFD

memset(RfTx.TxBuf,'x',32);

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'J';

RfTx.TXDATA.HeadCom[1] = 'O';

RfTx.TXDATA.HeadCom[2] = 'N';

ieeeAddr = NLME_GetExtAddr();

memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);

SrcSaddr = NLME_GetShortAddr();

RfTx.TXDATA.Saddr[0] = SrcSaddr;RfTx.TXDATA.Saddr[1] = SrcSaddr>>8;

RfTx.TXDATA.DataBuf[0] = 'R';

RfTx.TXDATA.DataBuf[1] = 'F';

RfTx.TXDATA.DataBuf[2] = 'D';

NLME_GetCoordExtAddr(&RfTx.TXDATA.DataBuf[3]);temp1 = NLME_GetCoordShortAddr();RfTx.TXDATA.DataBuf[11] =(unsigned char)(temp1>>8);RfTx.TXDATA.DataBuf[12] =(unsigned char)(temp1);

RfTx.TXDATA.DataBuf[13] = SensorNum;

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送自己的节点信息到主机

if((SensorNum == 1)||(SensorNum == 2))//点阵屏或数码管屏

{

init_T3();//打开定时器3开始扫描

}

else if(SensorNum == 9)//振动传感器

{

IEN1 |= 0x20;//Port 0 interrupt enable

}

osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_1000MS_TIMEOUT);//每秒检测一次红外传感器 #endif

#ifdef WXL_ROUTER

memset(RfTx.TxBuf,'x',32);

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'J';

RfTx.TXDATA.HeadCom[1] = 'O';

RfTx.TXDATA.HeadCom[2] = 'N';

RfTx.TXDATA.Saddr[1] SrcSaddr>>8;

temp1 NLME_GetCoordShortAddr();RfTx.TXDATA.DataBuf[11](unsigned char)(temp1>>8);RfTx.TXDATA.DataBuf[12](unsigned char)(temp1);

RfTx.TXDATA.DataBuf[13] SensorNum;

RfTx.TXDATA.LastByte = '*';

息到主机

if((SensorNum == 2))//点阵屏或数码管屏

ieeeAddr = NLME_GetExtAddr();memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);SrcSaddr = NLME_GetShortAddr();RfTx.TXDATA.Saddr[0] = SrcSaddr;= RfTx.TXDATA.DataBuf[0] = 'R';RfTx.TXDATA.DataBuf[1] = 'O';RfTx.TXDATA.DataBuf[2] = 'U';NLME_GetCoordExtAddr(&RfTx.TXDATA.DataBuf[3]);= = = = SendData(0x0000, RfTx.TxBuf, 32);//发送自己的节点信== 1)||(SensorNum { init_T3();//打开定时器3开始扫描 } else if(SensorNum == 9)//振动传感器 { IEN1 |= 0x20;//Port 0 interrupt enable }

osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_1000MS_TIMEOUT);//每秒检测一次红外传感器

#endif

}

break;

case SPI_INCOMING_ZTOOL_PORT:

UartRxComCallBack();//串口收到一帖数据的处理

break;

default:

break;

}

// Release the memory

osal_msg_deallocate((uint8 *)MSGpkt);

// NextThis event is generated by a timer //(setup in SampleApp_Init()).if(events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT)//发送数据超时

{

if(SensorNum == 8)

{

if(InfraredInitFlag == 0)//人体红外传感器需要初始化20秒

{

if(++InfraredCount > 20)

{

InfraredInitFlag = 1;

}

}

else

{

if(P0_0 == 1)

{

if(InfraredState == 0)

{

InfraredState = 1;

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'A';

RfTx.TXDATA.HeadCom[1] = 'I';

RfTx.TXDATA.HeadCom[2] = 'N';

ieeeAddr = NLME_GetExtAddr();

memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);

temp1 = NLME_GetShortAddr();

RfTx.TXDATA.Saddr[0] = temp1;

RfTx.TXDATA.Saddr[1] = temp1>>8;

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送报警数据

}

}

else

{

InfraredState = 0;

} if(DispState!= 0)//每一秒自动采集一次传感器

{

LCDUPDATA = 1;

}

}

}

else if(SensorNum == 9)//振动传感器

{

if(Shakeflag)

{

Shakeflag = 0;

P0IEN |= 0x01;//Port 0, inputs 0 interrupt enable.P0IFG &= 0xfe;//Clear any pending interrupts

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'A';

RfTx.TXDATA.HeadCom[1] = 'S';

RfTx.TXDATA.HeadCom[2] = 'H';

ieeeAddr = NLME_GetExtAddr();

memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);

temp1 = NLME_GetShortAddr();

RfTx.TXDATA.Saddr[0] = temp1;

RfTx.TXDATA.Saddr[1] = temp1>>8;

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送报警数据

BEEPState2 = 2;} if(BEEPState2 == 1){

BEEPState2 = 2;

P1_4 = 1;} else if(BEEPState2 == 2){

BEEPState2 = 1;

P1_4 = 0;} } else if(SensorNum == 16)//霍尔传感器板 { if(P0_0 == 0){

if(HallState == 0)

{

HallState = 1;

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.HeadCom[0] = 'A';

RfTx.TXDATA.HeadCom[1] = 'H';

RfTx.TXDATA.HeadCom[2] = 'A';

ieeeAddr = NLME_GetExtAddr();

memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8);

temp1 = NLME_GetShortAddr();

RfTx.TXDATA.Saddr[0] = temp1;

RfTx.TXDATA.Saddr[1] = temp1>>8;

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送报警数据

}

}

else

{

HallState = 0;

}

}

else if(SensorNum == 4)

{

if(DispState!= 0)//每一秒自动采集一次传感器

{

LCDUPDATA = 1;

}

if(BEEPState1 == 1)

{

BEEPState1 = 2;

P1_6 = 1;

}

else if(BEEPState1 == 2)

{

BEEPState1 = 1;

P1_6 = 0;

}

}

else if((SensorNum == 3)||(SensorNum == 5)||(SensorNum == 7)||(SensorNum == 10)||(SensorNum == 11)||(SensorNum == 13))

{

if(DispState!= 0)//每一秒自动采集一次传感器

{

LCDUPDATA = 1;

}

}

LCDDispFun();

// Setup to send message again in normal period(+ a little jitter)

osal_start_timerEx(SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_1000MS_TIMEOUT);

return(events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);} // Discard unknown events return 0;} void SampleApp_HandleKeys(uint8 shift, uint8 keys){(void)shift;// Intentionally unreferenced parameter

if(keys & HAL_KEY_UP){

P1_1 =!P1_1;

if(++DispState >= 3)DispState = 0;

LCDUPDATA = 1;} if(keys & HAL_KEY_DOWN){

P1_1 =!P1_1;

if(--DispState >= 200)DispState = 2;

LCDUPDATA = 1;} }

/********************************************************************* * LOCAL FUNCTIONS */

/********************************************************************* * @fn SampleApp_MessageMSGCB * * @brief Data message processor callback.This function processes * any incoming data-probably from other devices.So, based * on cluster ID, perform the intended action.* * @param none * * @return none */ void SampleApp_MessageMSGCB(afIncomingMSGPacket_t *pkt){ #ifdef WXL_COORD uint8 i;

memcpy(RfRx.RxBuf,pkt->cmd.Data,32);//读出无线按收到的数据

osal_stop_timerEx(SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT);//停止超时计数器

if((RfRx.RXDATA.Head == '&')&&(RfRx.RXDATA.LastByte == '*')){

memcpy(UartTxBuf.TxBuf,RfRx.RxBuf,32);

for(i=0;i<8;i++)

{

UartTxBuf.TXDATA.Laddr[i] = RfRx.RXDATA.Laddr[i];//长地址

}

for(i=0;i<2;i++)

{

UartTxBuf.TXDATA.Saddr[i] = RfRx.RXDATA.Saddr[1-i];//短地址

}

UartTxBuf.TXDATA.CRC = CheckUartData(&UartTxBuf.TxBuf[1],29);

HalUARTWrite(HAL_UART_PORT_0, UartTxBuf.TxBuf, 32);//从串口输出

} #endif

#if(defined(WXL_ROUTER)|| defined(WXL_RFD))//ROUTER OR RFD uint8 temp;uint16 temp1,temp2;uint8 RfHaveTxDara = 0;//无线有数据需要发送

ieeeAddr = NLME_GetExtAddr();memcpy(RfRx.RxBuf,pkt->cmd.Data,32);memset(RfTx.TxBuf,'x',32);switch(RfRx.RXDATA.HeadCom[0]){

case 'R'://读

if((RfRx.RXDATA.HeadCom[1] == 'A')&&(RfRx.RXDATA.HeadCom[2] 'S'))//读传感器

{

if(SensorNum == 4)//高精温湿度传感器

{

==

memcpy(RfTx.TxBuf, RfRx.RxBuf, 16);

if((RfRx.RXDATA.DataBuf[0] == 'G')&&(RfRx.RXDATA.DataBuf[1] == 'M'))//读光敏

{

temp = ReadSensorAdc(1);//显示值转换

RfTx.TXDATA.DataBuf[2] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[3] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[4] = temp%10 + 0x30;

RfHaveTxDara = 1;;

}

else if((RfRx.RXDATA.DataBuf[0] == 'W')&&(RfRx.RXDATA.DataBuf[1] == 'D'))//读温度

{ //WriteTc77(1);//唤醒温度传感器

//Sensor_Delay(10000);//必须延时后才能读

temp = ReadTc77();//读取温度

//WriteTc77(0);//温度传感器休眠

//显示值转换

RfTx.TXDATA.DataBuf[2] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[3] = temp%10 + 0x30;

RfHaveTxDara = 1;

}

}

}

else if((RfRx.RXDATA.HeadCom[1] == 'S')&&(RfRx.RXDATA.HeadCom[2] == 'H'))//读取高精温湿度传感器

{ // 读取的温湿度为16位浮点数,在上位机上转换。if(SensorNum == 3)//高精温湿度传感器 { memcpy(RfTx.TxBuf, RfRx.RxBuf, 16);SHT1X_INT();if((RfRx.RXDATA.DataBuf[0] == 'W')&&(RfRx.RXDATA.DataBuf[1] == 'D'))

{

temp1 = Read_SHT1X(3);

RfTx.TXDATA.DataBuf[2] =(uint8)(temp1>>8);

RfTx.TXDATA.DataBuf[3] =(uint8)(temp1&0xff);

RfHaveTxDara = 1;

}

else if((RfRx.RXDATA.DataBuf[0] == 'S')&&(RfRx.RXDATA.DataBuf[1] == 'D'))

{

temp1 = Read_SHT1X(5);

RfTx.TXDATA.DataBuf[2] =(uint8)(temp1>>8);

RfTx.TXDATA.DataBuf[3] =(uint8)(temp1&0xff);

RfHaveTxDara = 1;

}

}

}

else if((RfRx.RXDATA.HeadCom[1] == 'P')&&(RfRx.RXDATA.HeadCom[2] == 'R'))//压力传感器

{ if(SensorNum == 5)//压力传感器板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = ReadSensorAdc(0);

RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;

RfHaveTxDara = 1;} }

else if((RfRx.RXDATA.HeadCom[1] == 'R')&&(RfRx.RXDATA.HeadCom[2] == 'A'))//雨滴传感器

{ if(SensorNum == 7)//雨滴传感器板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = ReadSensorAdc(0);

RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;

RfHaveTxDara = 1;} } else if((RfRx.RXDATA.HeadCom[1] == 'A')&&(RfRx.RXDATA.HeadCom[2] == 'D'))//控制加速度传感器

{

if(SensorNum == 10)//加速度传感器板 { //P1_4 = 1;if(RfRx.RXDATA.DataBuf[0] == 'X')

{

temp = ReadSensorAdc(XOUT);

}

else if(RfRx.RXDATA.DataBuf[0] == 'Y')

{

temp = ReadSensorAdc(YOUT);

} else if(RfRx.RXDATA.DataBuf[0] == 'Z')

{

temp = ReadSensorAdc(ZOUT);

}

//P1_4 = 0;

memcpy(RfTx.TxBuf, RfRx.RxBuf, 15);RfTx.TXDATA.DataBuf[1] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[2] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[3] = temp%10 + 0x30;

RfHaveTxDara = 1;

}

}//end

else if((RfRx.RXDATA.HeadCom[1] == 'G')&&(RfRx.RXDATA.HeadCom[2] == 'A'))//可燃气体传感器 { if(SensorNum == 11)//可燃气体传感器板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = ReadSensorAdc(0);

RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;

temp = temp%100;

RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;

RfHaveTxDara = 1;} } else if((RfRx.RXDATA.HeadCom[1] == 'U')&&(RfRx.RXDATA.HeadCom[2] == 'L'))//超声波传感器 { if(SensorNum == 14)//超声波传感器板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

P1_4 = 1;

WaitUs(20);

P1_4 = 0;

Ultrasonic_Count = 0;

while(!P0_0)//等待返回高电平 {

WaitUs(20);

if((++Ultrasonic_Count)>= 1000)//超时自动退出

{

break;

} }

Ultrasonic_Count = 0;while(P0_0)

{

WaitUs(20);

Ultrasonic_Count++;

if(Ultrasonic_Count >= 600)//超时退出

{

Ultrasonic_Count = 0;

break;

}

}

temp1 = Ultrasonic_Count;

if((temp1 > 1)&&(temp1 <550)){

RfTx.TXDATA.DataBuf[0] = temp1/100 + 0x30;

temp = temp1%100;

RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;

RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;

}

else

{

RfTx.TXDATA.DataBuf[0] = 'E';

RfTx.TXDATA.DataBuf[1] = '0';

}

RfHaveTxDara = 1;} }

else if((RfRx.RXDATA.HeadCom[1] == 'N')&&(RfRx.RXDATA.HeadCom[2] == 'S'))//读模块连接状态

{

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = pkt->LinkQuality;

RfTx.TXDATA.DataBuf[0] = temp/100 + 0x30;temp %= 100;RfTx.TXDATA.DataBuf[1] = temp/10 + 0x30;RfTx.TXDATA.DataBuf[2] = temp%10 + 0x30;NLME_GetCoordExtAddr(&RfTx.TXDATA.DataBuf[3]);temp1 = NLME_GetCoordShortAddr();RfTx.TXDATA.DataBuf[11] =(INT8U)(temp1>>8);RfTx.TXDATA.DataBuf[12] =(INT8U)(temp1);

RfHaveTxDara = 1;

}//end 读模块连接状态 break;

case 'T'://测试

if((RfRx.RXDATA.HeadCom[1] == 'L')&&(RfRx.RXDATA.HeadCom[2] == 'D'))//LED测试

{

if(RfRx.RXDATA.DataBuf[0] == 'C')

{

if((RfRx.RXDATA.DataBuf[1] == 'D')&&(RfRx.RXDATA.DataBuf[2] == '1'))

{

if(RfRx.RXDATA.DataBuf[3] == '1')

{

HalLedSet(HAL_LED_1, HAL_LED_MODE_ON);//开

}

else if(RfRx.RXDATA.DataBuf[3] == '0')

{

HalLedSet(HAL_LED_1, HAL_LED_MODE_OFF);//关

}

}

else if((RfRx.RXDATA.DataBuf[1] == 'D')&&(RfRx.RXDATA.DataBuf[2] == '2'))

{

if(RfRx.RXDATA.DataBuf[3] == '1')

{

HalLedSet(HAL_LED_2, HAL_LED_MODE_ON);//开

}

else if(RfRx.RXDATA.DataBuf[3] == '0')

{

HalLedSet(HAL_LED_2, HAL_LED_MODE_OFF);//关

}

}

} else if(RfRx.RXDATA.DataBuf[0] == 'T'){ if((RfRx.RXDATA.DataBuf[1] == 'D')&&(RfRx.RXDATA.DataBuf[2] == '1'))//控制LED1

{

if(RfRx.RXDATA.DataBuf[3] == '1')

{ HalLedSet(HAL_LED_1, HAL_LED_MODE_FLASH);

}

else if(RfRx.RXDATA.DataBuf[3] == '0')

{ HalLedSet(HAL_LED_1, HAL_LED_MODE_OFF);

}

}

else if((RfRx.RXDATA.DataBuf[1] == 'D')&&(RfRx.RXDATA.DataBuf[2] == '2'))//控制LED2

{ if(RfRx.RXDATA.DataBuf[3] == '1')

{ HalLedSet(HAL_LED_2, HAL_LED_MODE_FLASH);

}

else if(RfRx.RXDATA.DataBuf[3] == '0')

{ HalLedSet(HAL_LED_2, HAL_LED_MODE_OFF);

}

}

}

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}//end LED测试

else if((RfRx.RXDATA.HeadCom[1] == 'D')&&(RfRx.RXDATA.HeadCom[2] == 'A'))//

{

if(SensorNum == 12)//DAC输出 { temp1 = RfRx.RXDATA.DataBuf[0];temp1 <<= 8;temp1 += RfRx.RXDATA.DataBuf[1];

temp2 = RfRx.RXDATA.DataBuf[2];temp2 <<= 8;temp2 += RfRx.RXDATA.DataBuf[3];

DAC_OUT_CON(temp1, temp2);

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;}

}//end DAC_OUT测试

else if((RfRx.RXDATA.HeadCom[1] == 'M')&&(RfRx.RXDATA.HeadCom[2] == 'O'))//

{

if(SensorNum == 15)//电机测试 {

if((RfRx.RXDATA.DataBuf[0] == 'M')&&(RfRx.RXDATA.DataBuf[1] == '1'))

{

if(RfRx.RXDATA.DataBuf[2] == '0')//停止

{

MOTOR_Con(1, 0x8F);

}

else if(RfRx.RXDATA.DataBuf[2] == '1')//正转

{

MOTOR_Con(1, 0x80);

}

else if(RfRx.RXDATA.DataBuf[2] == '2')//反转

{

MOTOR_Con(1, 0x88);

}

}

else if((RfRx.RXDATA.DataBuf[0] == 'M')&&(RfRx.RXDATA.DataBuf[1] == '2'))

{

if(RfRx.RXDATA.DataBuf[2] == '0')//停止

{

MOTOR_Con(2, 0x8F);

}

else if(RfRx.RXDATA.DataBuf[2] == '1')//正转

{

MOTOR_Con(2, 0x80);

}

else if(RfRx.RXDATA.DataBuf[2] == '2')//反转

{

MOTOR_Con(2, 0x88);

}

}

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}

}//end MOTOR电机测试

else if((RfRx.RXDATA.HeadCom[1] == 'E')&&(RfRx.RXDATA.HeadCom[2] == 'D'))//点阵屏测试

{

if(SensorNum == 1)//点阵屏板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

if((RfRx.RXDATA.DataBuf[0] >= '0')&&(RfRx.RXDATA.DataBuf[0] <= '9')){

LCDUPDATA = 1;

DispNum = RfRx.RXDATA.DataBuf[0]-0x30;

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';} else {

RfTx.TXDATA.DataBuf[0] = 'E';

RfTx.TXDATA.DataBuf[1] = '0';

} RfHaveTxDara = 1;} } else if((RfRx.RXDATA.HeadCom[1](RfRx.RXDATA.HeadCom[2] == 'U'))//数码管屏测试

{

if(SensorNum == 2)//数码管屏板 {

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp1 = RfRx.RXDATA.DataBuf[0];

temp1 <<= 8;

temp1 += RfRx.RXDATA.DataBuf[1];

if(temp1 <= 9999)

{

LEDDispNum = temp1;

LEDDISPFUN();//显示数据

LCDUPDATA = 1;

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

}

else

{

RfTx.TXDATA.DataBuf[0] = 'E';

RfTx.TXDATA.DataBuf[1] = '0';

} RfHaveTxDara = 1;}

== 'N')&& }

else if((RfRx.RXDATA.HeadCom[1] == 'B')&&(RfRx.RXDATA.HeadCom[2] == 'L'))//测试电池电压

{

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

temp = ReadSensorAdc(4);

RfTx.TXDATA.DataBuf[0] = temp;

RfHaveTxDara = 1;

} else if((RfRx.RXDATA.HeadCom[1] == 'B')(RfRx.RXDATA.HeadCom[2] == 'E'))//测试蜂鸣器

{

if((SensorNum == 4)||(SensorNum == 9))

{

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

if(RfRx.RXDATA.DataBuf[0] == '1'){

if(SensorNum == 4)

{

BEEPState1 = 2;

}

else

{

BEEPState2 = 2;

} }

else if(RfRx.RXDATA.DataBuf[0] == '0'){

if(SensorNum == 4)

{

BEEPState1 = 0;

P1_6 = 1;

}

else

{

BEEPState2 = 0;

P1_4 = 1;

} }

&&

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}

} else if((RfRx.RXDATA.HeadCom[1] == 'R')&&(RfRx.RXDATA.HeadCom[2] == 'E'))//控制继电器

{

if(SensorNum == 6)//继电器板

{

if((RfRx.RXDATA.DataBuf[0] == 'K')&&(RfRx.RXDATA.DataBuf[1] == '1'))

{

if(RfRx.RXDATA.DataBuf[2] == '1')

{

Relay1State = 1;

P1_4 = 1;

}

else if(RfRx.RXDATA.DataBuf[2] == '0')

{

Relay1State = 0;

P1_4 = 0;

}

}

else if((RfRx.RXDATA.DataBuf[0] == 'K')&&(RfRx.RXDATA.DataBuf[1] == '2'))

{

if(RfRx.RXDATA.DataBuf[2] == '1')

{

Relay2State = 1;

P1_5 = 1;

}

else if(RfRx.RXDATA.DataBuf[2] == '0')

{

Relay2State = 0;

P1_5 = 0;

}

}

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}

}//end 控制继电器

else if((RfRx.RXDATA.HeadCom[1] == 'L')&&(RfRx.RXDATA.HeadCom[2] == 'L'))//控制高亮LED

{

if(SensorNum == 17)//高亮LED板

{

memcpy(RfTx.TxBuf, RfRx.RxBuf, 14);

ChangT3Cmp0Val(RfRx.RXDATA.DataBuf[0]);

RfTx.TXDATA.DataBuf[0] = 'O';

RfTx.TXDATA.DataBuf[1] = 'K';

RfHaveTxDara = 1;

}

}//end 控制高亮LED

break;

}//end if(RfHaveTxDara)//如果有数据要发送

{

RfTx.TXDATA.Head = '&';

RfTx.TXDATA.LastByte = '*';

SendData(0x0000, RfTx.TxBuf, 32);//发送数据

RfHaveTxDara = 0;} #endif } 4.实验总结

主要是通过组网来使协调器与终端器进行数据的交流与反馈,当LED灯显示时,LED显示屏也会显示相应状态,进行信息反馈。

下载Dnssas无线网络产品在证券网络的应用(合集5篇)word格式文档
下载Dnssas无线网络产品在证券网络的应用(合集5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    无线传感网络学习心得

    无线传感器网络学习心得 初次接触这个课程时,我无意地在课本中看到了对于无线传感器网络的基本概述:无线传感器网络是一种全新的信息获取平台,能够实时监测和采集网络分布区域......

    无线光通信技术发展及其应用

    无线光通信技术发展及其应用 一、无线光通信技术发展历史 光在空气中直接传输的通信方式称之为无线光通信。也就是利用激光束作为信道在空间(近地或外太空)中直接进行语音、数......

    铁路行业无线应用

    铁路行业无线应用 双击自动滚屏 发布者:admin 发布时间: 阅读:34次 铁路是中国国民经济的大动脉,铁路运输长期以来起着举足轻重的作用。为有效降低列车运行中治安事故和意外事......

    无线应用通讯协议

    无线应用通讯协议 目录 概述 WAP(Wireless Application Protocol)为无线应用协议,是一项全球性的网络通信协议。WAP使移动Internet 有了一个通行的标准,其目标是将Internet的丰......

    网络证券营销

    网络环境下的证券经纪业务营销 网络化浪潮在20世纪中后期开始席卷整个世界,其发展速度是惊人的。以国际互联网为例,我国互联网从1999年到2002年发生了巨大变化,互联网用户群已......

    无线集群通信在地铁中的应用

    1无线集群通信简介 无线集群通信是一种智能化的无线颇率管理技术。集群系统的本质是允许大量用户共享理技术。集群系统的本质是允许大量用户共享少量通信信道和虚拟专网技术......

    无线传感器网络综述(网安).

    2008.2 80 网络安全技术与应用 无线传感器网络综述 唐启涛 陶滔 南华大学计算机科学与技术学院 湖南 421001 摘要:本文介绍了无线传感器网络的概念、特点、通信结构及其安......

    无线传感器网络实验报告[推荐阅读]

    桂林电子科技大学实验报告2015 5- - 2016 6 学年第 一 学期开 课 单 位 海洋信息工程学院 适用年级、专业 课 程 名 称 无线传感器网络 主 讲 教 师 王晓莹 课 程 序 号 15......