标签目录:摩登3下载

摩登3测速代理_C/C++中关于局部函数中更新实参指针的方法

在C++” target=”_blank”>C++语言中因为参数的传递方式属于值传递,局部参数在函数内部的改变并不会影响实参的值,有时候为了保存对在函数中的修改,往往采用返回值或者指向指针的指针的形式来实现,我就采用简单的内存分配来说明。其中很多初学者都会犯的错误就是第一种实现方式,那是因为我们没有搞清楚C语言的参数传递方式。 本文引用地址:http://www.eepw.com.cn/article/201612/324508.htm /*错误的实现*/ void getmemory(int *ptr,int size) { ptr = (int *)malloc(sizeof(int)*size); } /*返回值类型*/ int * getmemory(int size) { int *temp = (int *)malloc(sizeof(int)*size); if(temp != NULL) { return temp; } return NULL; } /*指向指针的指针*/ void getMemory(int **buf,int size) { *buf = (int *)malloc(sizeof(int)*size); } 上面的实现是C语言中关于指针更新的两种方式,这两种方式在一些结构体中使用的也比较多,比如链表,队列等常用的数据结构操作中。这两种实现方式有各自的优缺点,比如返回值类型,因为在C语言中只能返回一个值,当然也可以采用结构体的形式采用保证实现多类型返回。这时候如果返回了一个指针操作,往往也不便于返回其他重要的信息,比如有时候要返回操作是否成功的标志等,这时候就显得特别不方便,最典型的例子就是在链表头中插入新的数据时,这时候链表头被更新了,如果直接返回链表头就不能观察当前操作是否完成,而且如果没有都需要返回值来更新链表头,也显得特别不方便。 /*返回值式的链表更新表头操作*/ head = insert_listnode(head,value); /*自动更新的操作*/ insert_listnode(*head,value); 一般而言,我在写程序的过程中更加喜欢用第二种形式,这时候就显得第一种特别的不舒服。但是第二种写法也存在一些缺点,特别是当很多人对指针处于懵懂的期间,很容易出现错误,因为在函数内部一般操作的对象不是传递进来的参数,而是对参数的解引用,如果对函数调用和指针不是很清楚的情况下,这种写法很容易出现错误,因为不知道何时是采用(*head)何时采用head,不清楚这一点,代码自然而然就出现了错误。第一种往往是很多入门级程序员(我之前一般采用的方式)比较喜欢的方式。 在C++中关于函数参数的传递比C语言中有了更多的选择,其中比较重要的就是引用的引入,引用是一段内存区域的别名,对别名的操作实质上就是对内存本身的操作,这和传值的方式有着本质的区别,有了这种意识。我觉得采用引用的方式实现指针的更新就会更加的方便,也就能够克服前面两种方法的缺点。即占用返回值和在函数内部合适使用指针合适使用解引用。 采用简单的例子说明: bool getMemory(int * &a, int size) { /*本应该采用new实现,但是为了和前面一直,采用malloc实现*/ a = (int *)malloc(sizeof(int)*size); if(a != NULL) return true; else return false; } 这时候就很好的实现了在函数内部实现实参指针参数的更新,简要的分析一下,由于变量a是一个指针对象的引用,在函数的调用时就发生了引用对象的绑定操作,绑定一旦完成就不会更改了,这时候对变量a的操作实质上就是对指针的操作,如下所示: int *b; /* 在调用该函数的时候,相当于发生了绑定操作 int *&a = b; 这时候对a的操作就是对b的操作 在函数内部将a指向了一个新的对象 实质就是将b指向了这个对象 这样就实现了实参指针的更新操作 这种操作不需要注意解引用,而且不会占用返回值 */ getMemory(b,10); 所以说在C++ 中,多考虑引用的方式作为参数,不仅仅能够避免大数据结构的复制,有时候也能起到恰到好处的作用。我认为这也是C++中推荐使用引用作为参数的原因之一。

摩登3注册登录网_CC-Link的通信模块

CC-Link通信方式的常用网络模块有CC-Link通信模块(FX2N-16CCL-M、FX2N-32CCL)、CC-Link/LT通信模块(FX2N-64CCL-M)、Link远程I/O链接模块(FX2N-16Link-M)和AS-i网络模块(FX2N-32ASI-M)。本文将介绍FX2N-16CCL-M、FX2N-32CCL模块。 FX2N-16CCL-M FX2N-16CCL-M是FX系列PLC的CC-Link主站模块,它将与之相连的FX系列PLC作为CC-Link的主站。主站是整个网络中控制数据链接系统的站。 远程I/O站仅处理位信息,远程设备站可以处理位信息和字信息。当FX系列PLC为主站单元时,只能以FX2N-16CCL-M作为主站通信模块,整个网络最多可以连接7个I/O站和8个远程设备站。 特点: 用FX系列的PLC作为主站,构成高速、经济的 现场总线系统,可以连接支持CC-Link的本公司产品和合作厂商的 工控设备,所以可以选择适合客户要求的设备,构成高速的现场 总线网络。 由于实现了网络的省接线、省空间,所以在提高布线工作效率的同时,还减少了安装费用和维护费用。 FX2N-32CCL FX2N-32CCL模块是将PLC连接到CC-Link网络中的接口模块,与之连接的PLC将作为远程设备站。它在连接CC-Link网路时,必须进行站号和占用站数的设定。站号由2位旋转开关设定,占用站数由1位旋转开关设定,站号可在1~64之间设定,占用站数在1~4之间设定。 特点: FX2N-32CCL作为FX系列PLC的特殊扩展模块连接, 每个站的远程输入输出点数为:输入32点、输出32点。 每个站的远程寄存器点数为:RWw写入区域4点,RWr读出区域4点。 站数设定在1~4个站之间可选,因此可以根据控制规模构建系统。

摩登3注册网址_基于CC1101的分布式节能测控网络设计

摘要:设计并实现了一种基于无线收发器芯片CC1101的测控网络,简要介绍了网络中链路层协议的工作机制及相应硬件电路设计;详细分析了使用CC1101进行无线通信时的节能设计和防冲突设计原理,计算并给出了CC1101的有关内部寄存器的取值,同时也说明了使用PIC单片机PIC18F66J60进行局域网互连的软硬件设计方法;介绍了最终系统的实现情况及应用前景。关键词:CC1101;节能;网络;PIC18F66J60 本文引用地址:http://www.eepw.com.cn/article/195105.htm 引言 CC1101是TI公司生产的一种单片、低成本的UHF频段无线收发器,基于IEEE 802.15.4标准开发,主要应用领域为低功耗无线测控。芯片具有无线电唤醒(WOR)、数据包处理、数据缓冲、突发数据传输、清晰信道评估、链接质量指示等功能,内部的参数寄存器和数据传输FIFO可通过SPI接口控制,所需的周边器件很少,使用简单。受限于发射功率和天线结构,CC1101的视距传输距离一般在400~800 m范围内,超出此距离范围则必须由中继设备对无线信号进行放大、转发。本文设计的一种分布式无线测控系统通过局域网对中继设备进行互连,大大降低了系统的无线通信协议复杂性,同时达到了使用无线通信时伴随的低功耗设计要求,具备很强的实际工程应用价值。 1 总体设计方案 测控网络采用3级结构,网络拓扑结构如图1所示。 最底层的测控基站负责进行工作现场的数据采集和控制指令的执行,测控基站上安装有无线收发器芯片CC1101和天线,通过空中无线信道与中继节点通信。测控基站采用电池供电。 中间层的中继节点负责接收中心计算机发出的控制指令,向底层的测控基站转发,或者接收底层测控基站发出的测量数据,向中心计算机转发。中继节点上安装有无线收发器芯片CC1101和天线,通过空中无线信道与底层的测控基站通信;同时中继节点也具备访问局域网的功能,可以通过外部局域网与中心计算机通信。中继节点采用市电经AC—DC模块变换出的直流电压供电。 中心计算机负责采集所有测控基站的测量数据,进行数据管理,也可以向测控基站发出控制指令。中心计算机通过网络接口连接到外部局域网,与中继节点通信。中心计算机采用市电交流供电。 2 通信协议总体设计 中继节点与中心计算机通过有线局域网通信,类似协议工程上有比较成熟的方案,本文不再详述。 中继节点与测控基站的无线链路层协议涉及到防冲突、节能等问题,直接关系到系统可靠性、可用性指标最终实现,是系统通信协议设计的重点。 系统中依靠无线信道传输的数据归结为4种,简述如下: ①命令帧。当中继节点向测控基站下传控制指令时发出。 ②基站应答帧。当测控基站收到中继节点下传的控制指令后,需要向中继节点返回一个基站应答帧,告知指令执行情况。 ③中继应答帧。当测控基站向中继节点上传状态信息后,中继节点需要向测控基站返回一个中继应答帧,告知已经收到状态信息。 ④测量帧。当测控基站测量到的工作现场数据发生改变后,必须向中继节点发出测量帧,通知中继节点向中心计算机声明更新对应测控基站的记录信息。 为了简化处理流程,系统中传输的所有的数据的帧格式统一采用如下所示的固定长度12字节的格式。 tcp/ip相关文章:tcp/ip是什么 上一页 1 2 3 4 下一页

摩登3测速代理_BOPP薄膜生产线的CC-Link现场总线集散控制系统

1 引言 BOPP是Biaxial Oriented PolyPropylene (双向拉伸聚丙烯)的缩写,BOPP薄膜具有拉伸强度大,透明度高,保鲜性好、光泽明亮、彩印鲜艳、外观装饰华贵等优点,而且还具有很高的机械强度和附着力以及极好的化学性和良好的化学稳定性(与名种酸、碱、盐不发生化学反应),耐水耐热,是一种高级塑料包装材料,广泛应用于香烟、服装、食品、印刷品等、也可做粘胶带基及电容器的电介质。 BOPP薄膜生产线工作原理是:根据薄膜生产工艺要求,将挤出机及机头的各节筒体分别加热到不同的工作点,按配方通过料斗不断地注入料粒;熔融状的物料由机头挤出后,经过冷却辊冷却,形成窄而厚的薄膜厚片;薄膜厚片经过储片架整理后,被送入纵向拉伸区,根据工艺要求由慢速辊和快速辊进行2.5~5.0倍的纵向拉伸处理;横向拉伸区用于实现薄膜的第二次拉伸,即横向拉伸,该区域涉及薄膜的横拉分区加热控制、同步传动控制、破膜检测及其处理等问题,是实现有效成膜的关键之一;薄膜经过双向拉伸(即纵拉和横拉)后,被送入后处理区域进行后续工艺的处理,再经过上卷辊整理,由两台收卷辊轮换进行恒张力收卷,最终形成成品膜。 BOPP薄膜生产线全长约80米,如图1所示,其中主要包括1:挤出机及机头系统;2:冷辊装置;3:前扫描测厚装置;4:储片架;5:纵向拉伸区域;6:横向拉伸区域;7:横拉辊装置;8:后处理区域;9:后扫描测厚装置;10:上卷辊装置;11:收卷区域。 为了进一步提高控制系统的可靠性和自动化程度,便于系统功能的扩充,提出在原有生产设备的基础上采用CC-Link现场总线等技术对控制系统进行改造。建立起由PLC、分布式控制模块、工控机、单片机及智能仪表组成的集散控制系统,以实现对生产线的集散控制、工艺曲线的实时显示、关键参数的存储等,便于生产管理和提高产品质量。2 集散控制系统结构设计 2.1 CC-Link开放式现场总线 CC-Link是Control Communication Link(控制与通信链路系统)的简称,是三菱电机于1996年推出的开放式现场总线,其数据容量大,通信速度可多级选择,最高达10Mbps。它是一个复合的、开放的、适应性强的网络系统,能够适应于较高的管理层网络到较低的传感器层网络的不同范围[1]。CC-Link是一个以设备层为主的网络,整个一层网络可由一个主站和六十四个从站组成。网络中的主站由PLC担当,从站可以是远程I/O模块、特殊功能模块、带有CPU和PLC本地站、人机界面、变频器及各种测量仪表、阀门等现场仪表设备。采用第三方厂商生产的网关还可以实现从CC-Link到ASI总线的连接。 CC-Link的底层通信协议遵循RS485,一般情况下,CC-Link主要采用广播轮询的方式进行通信,CC-Link也支持主站与本地站、智能设备站之间的瞬间通信[2]。具体方式为:主站将刷新数据RY/RWw发送到所有从站,与此同时轮询从站1;从站1对来自主站的轮询作出响应RX/RWr,并将该响应同时告知其它从站;然后主站轮询从站2(此时并不发送刷新数据),从站2给出响应,并将该响应告知其它从站;依次类推,不断循环,图2所示为广播轮询时的数据传输帧格式。除了广播轮询式的循环通讯方式外,CC-Link还提供主站、本地站及智能设备站之间的信息瞬时传送功能。信息从主站传递到从站,信息数据将以150字节为单位分割,并以150字节传递。若从从站传递到主站,每批信息数据最大为34字节。瞬时传送需由专门指令来完成,但不会影响循环通讯的时间。 2.2 集散控制系统结构 考虑到BOPP薄膜的生产工艺特点及其复杂性等因素,本文设计并构造的集散控制系统结构如图3所示。在该CC-Link现场总线网上,Q02CPU是主站,QJ61BT11作为接口模块。从站有两大类:一类是远程I/O站,由AJ65BTB2-16R和AJ65SBTB1-16D远程I/O模块组成,共8个模块,每个模块占用1个逻辑从站资源,主要用于实现对各直流调速电机的起停、切换、联锁、故障等控制和检测;另一类由FX2N-32CCL和A80BDE-J61BT13远程设备模块构成,共5个模块,考虑到所要传输的信息量较大,在这里每个模块被设计成占用4个逻辑从站资源,主要用于实现与FX2N-80MR PLC和工控机的连接[3]。因此,整个CC-Link网络由一个主站和28个逻辑从站构成。 该集散控制系统除了应用CC-Link网络外,还采用了其它通讯网络方式对系统各局部区域进行控制,如RS-422、RS-485等。 上一页 1 2 3 下一页

摩登3注册平台官网_基于CC-Link总线的变频器管理系统

1 引言   随着国民经济的发展,越来越多的汽车品牌选择在中国建厂。据不完全统计,中国现有汽车厂家六十几家,主要分布在华东、华南沿海地带。华南地区特别是广州,汇集了日本主要的汽车品牌。中国汽车工业自动化水平不断提高,但与发达国家相比,其自动化水平还有距离。fa产品的使用,是实现中国汽车工业自动化和电气化的关键。汽车制造的主要工艺可分为冲压、焊装、涂装、总装四大车间。冲压车间内,钢板被冲成汽车的各个部分,并运送到焊装车间进行车体焊接,初步成型的车体在涂装车间进行预处理、密封和喷涂,再到总装车间,安装其余的座椅、轮胎等部件。贯穿四大工艺,实施钢板传送、车体运输的就是输送设备。输送设备上使用了大量的变频器,这些变频器分布在车间的各处,而且变频器型号、种类不同,变频器的参数设置项目和内容也往往不同。以往的状况是,需要耗费大量人力物力,进行变频器运行状态监视和变频器的参数管理,到每一台变频器前记录运行参数以及更改状况。一旦出现某个变频器参数设置异常,且不能及时发现并改正,可能影响整个输送设备运行,进而影响正常生产。为了解放劳动力,提高自动化水平,对各个变频器实行总线连接,分散放置,集中管理。同时考虑到变频器的控制特点,引进变频器参数管理系统。利用这套系统,可以在人机界面上查看各个变频器的运行状态,对变频器参数设定管理权限,防止与生产操作无关人员随意改动变频器参数,被更改的参数内容,更改后的数值及标准的参数数值,在人机界面上会以特殊的字体及颜色显示出来,方便管理人员跟踪查看。下面将从系统组成、变频器参数设置、plc程序书写、人机界面画面设计等几个方面进行介绍。 2 变频器参数管理系统硬件设计   2.1 plc产品选择   q系列plc是采用模块化的结构形式的中大型plc产品,这里使用了具备5个i/o插槽的主基板q35b,用来安装模块,并提供给模块间电力信号和数据信号的传输。   q61p,电源模块。输入电源采用100-240伏交流电压,转换为5v/6a直流电,供给各模块。   q02hcpu,高性能cpu模块,28k步程序,约合112kb的程序容量,最大8192输入/输出点数,可以满足大规模设备的控制要求。模块本身配置了通用usb接口,可以方便连接电脑,实现cpu同电脑间高速的数据传输。   qj61bt11,cc-link总线主站/本地站模块。cc-link采用屏蔽双绞线连接,156kbps到10mbps五种传输速,t形中继器扩展后的距离最大可达13.2km,最多可以连接64个物理节点,包括远程i/o站,远程设备站,智能设备站多种站类型。由于cc-link这些卓越的特点,使得cc-link总线在工厂应用中,起到至关重要的作用。   2.2 变频器产品选择   高性能通用型变频器a700系列产品具有高水平的运行性能、广泛的使用环境、便利的维护特点及各类简易操作的实用功能。强大的网络通信功能,使a700支持多种通信方式和现场总线。这里选加了a7nc选件卡,从而使变频器可以作为远程设备站,连接到cc-link总线中。一个cc-link主站模块,可以连接最多42个变频器,从而实现各个车间多台变频器的远程控制。   2.3人机界面产品选择   gt15是三菱1000系列人机界面中的高性能产品,15英寸高亮度、宽视角tft显示设备,65536真色彩显示,使画面的表现力更加丰富;更多高级附加功能,可扩展到存储容量,满足客户设计复杂工程的需求。   2.4系统连接   将a7nc安装在a740变频器第三个安装口上,用cc-link专用三芯屏蔽电缆,da-da(蓝色线),db-db(白色线),dg-dg(黄色线),sld同fg内部短接,sld连接屏蔽层,fg接地,按照图1的接线方法,连接安装了cc-link选件变频器和cc-link主站模块qj61bt11。在da-db之间,需连接110欧姆、1/2瓦的终端电阻。   q系列高性能cpu通过基板上的总线接口,以q总线形式连接人机界面产品gt1575,通过q总线连接,可是实现数据高速传输,连接距离可达13.2米。变频器、人机界面和plc的连接完成示意图如图2所示。 上一页 1 2 3 下一页

摩登3登录_TinyOS在CC2530下的移植及AODV路由协议的实现

摘要:首先介绍了以TI的无线传感器网络芯片CC2530为核心部件的节点硬件实现,接着介绍TinyOS操作系统的运行机制及其在CC2530平台下的移植过程;并在此基础上以nesC语言实现了AODV路由协议,最后对系统进行组网测试,测试结果表明平台各功能正常运行并且实现AODV协议的基本功能。关键词:无线传感器网络;TinyOS;CC2530;AODV 0 引言 无线传感器网络(Wireless Sensor Network)是由具有感知、计算和通信能力的大量微型传感器节点组成,被广泛地应用于国防军事、环境监测等领域。加州大学Berkeley分校设计的基于事件驱动、组件模块化的无线传感器网络操作系统TinyOS具有核心程序小、对硬件要求低等优势,但它不支持功能强大的无线传感网络芯片CC2530,为此需要将TinyOS移植至CC2530平台,以使其得到更好的应用。同时为了节省传输能量,需要采用相应的路由协议,以多跳中继的方式将数据经由多个节点组成的路由传回汇聚节点或基站。 本文选用TI的CC2530作为传感器节点的核心部件,采用Tiny OS操作系统作为软件平台,成功将Tiny OS移植至CC2530平台,并添加了Tim er、UART、RF等组件;在移植的平台上,以nesC语言实现了AODV路由协议,并且实现了传感器节点的组网,数据包的多跳转发;为TinyOS和AODV的研究和应用奠定基础。 1 无线传感器网络系统结构1.1 传感器节点硬件结构 传感器节点一般由供电单元、数据采集单元、数据处理单元(由微控制器和存储器组成)、无线通信单元组成。其中,数据处理单元中的微控制器负责对其他三个单元的控制。 本文的系统采用无线传感器网络节点芯片CC2530作为微控制器。CC2530使用了增强型8051CPU,运行时钟频率为32 MHz,具有8 KB RAM;包括一个普通16位定时器和两个8位定时器,21个可编程程I/O引脚,两个支持多种串行通信协议的USART,一个符合IEEE 802.15.4标准的2.4 GHz无线收发器和MAC定时器。CC2530是用于IEEE.802.1 5.4,ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案。本文节点核心部分的硬件设计如图1所示。 本文引用地址:http://www.eepw.com.cn/article/202256.htm TinyOS采用基于事件驱动、两层调度的并发模型。内核支持两种执行线程,即中断处理和任务,主控构件维护两个数据结构支持内核的两层调度:中断向量表和任务队列。TinyOS系统采用组件化思想,其应用程序都是由若干个模块组件和配置组件构成的,其组件有四个相互关联的部分:一组命令处理程序句柄,一组事件处理程序句柄,一个经过封装的私有数据帧,一组简单任务。每一个组件声明自己使用的接口及其需要用信号的通知的事件。一个应用程序的组件结构图如图2所示,高层次的组件通过命令调用低层次组件,低层次组件发送信号事件给高层次组件,最低层次组件直接与硬件相互作用。1.3 TinyOS操作系统移植1.3.1 修改编译工具链 TinyOS开发环境为Unix,若要为TinyOS开发应用程序,首先要使用nesC进行编程,产生以“.nc”为扩展名的源文件;然后再调用Unix的NCC(nesC Compiler)编译器将源文件编译成硬件可以执行的二进制/十六进制机器码,如图3(a)所示。 但nesC的编译器NCC调用的是Unix的GCC(GNU Compiler Collection)编译器,而GCC编译器并不支持CC2530所使用的8051处理器。为此,需要在编译过程使用Perl语言,转换C语言编译器不能识别的nesC关键字,将nesC语言编写的“.nc”文件编译为常规的C语言源文件,然后绕过Unix的GCC编译器,改由支持8051的Keil进行编译,其过程如图3(b)所示。具体的实现为编写脚本文件mangleAppC.pl,在编译规则文“.rules”中添加该Perl脚本的引用,以生成中间文件App.preMangle.c,并通过建立批处理文件CC2530F256.bat,调用Keil程序编译生成目标文件App.hex。1.3.2 TinyOS平台搭建 TinyOS应用程序的编译是以平台为对象的,但TinyOS并不支持CC2530平台,因此必须先建立能被TinyOS承认的平台。根据TinyOS最小平台的定义,需要创建的目录及编写的文件为: (1)/tos/platforms/cc2530目录,及其下的“.platform”文件、platform.h、PlatformC.nc和PlatformP.nc文件,这些文件包含平台初始化的实现代码和平台的环境变量; (2)/tos/support/make下的CC2530em.target文件,包含移植代码的目标平台的识别信息; (3)/tos/support/make/mcs51下的“.rules”文件,包含生成目标平台二进制/十六进制可执行代码时的编译说明; (4)/tos/chips/mcs51下的hardware.h和McuSleepC.nc文件,包含平台硬件体系必备的宏定义和低功耗机制实现代码。1.3.3 基于CC2530的组件编写 TinyOS应用程序是由一系列组件链接而成,其中包括用于实现应用程序功能的组件、系统提供的用于实现常用功能的组件和针对不同芯片的硬件表达和抽象组件。由于TinyOS本身并不含有针对CC2530平台的硬件表达和抽象组件,因此需要编写直接与硬件相互作用的组件来完成移植。编写以下几个重要的组件: (1)IO口组件,通过建立HplCC2530GeneralIOC组件来提供两类系统接口GeneralIO和Init。 (2)Timer组件,主要由TimerMilli组件、HilTimerMilliC配置组件、HplCC2530TimerlAlarmCounterP组件等组成,用于产生以毫秒为单位的计时器。 (3)Uart组件,由StdOut组件、PlatformSerialC配置组件、HalCC2530SimpleUartP组件等组成,用于实现串口收发功能。 (4)RF组件,主要由ActiveMessageC配置组件、CC2530ActiveMessageP模块组件、CC2530TransmitP模块组件、HalCC2530Radio模块组件和HplCC2530InterruptsC模块组件构成,用于实现基本无线数据传输功能。 2 TinyOS下的AODV路由实现 AODV是一种适用于无线传感器网络的按需路由协议,采用最短路由选路,注重网络吞吐量和网络服务质量,实现简单。本文以TinyOS作为系统的软件平台,根据TinyOS操作系统的应用程序结构,以nesC语言实现了AODV路由协议。2.1 AODV路由协议的基本思想 AODV(Ad hoc On-demand Distance Vector)借用了DSR中路由发现和路由维护的基础程序,以及DS-DV的逐跳(Hop-by-Hop)路由、顺序编号和路由维护阶段的周期更新机制。 当源节点需要和目的节点通信时,如果在路由表中已经存在了对应的路由时,AODV就不会进行任何操作,而是直接进行通信。当原路由失效或者需要和新的目的节点通信时,它就会发起路由发现过程,广播RREQ信息。当RREQ到达目的节点本身,或者是一个拥有“足够新”的到目的节点路由的中间节点时,目的节点或者中间节点通过RREQ的反向路径向源节点返回一个RREP消息。所谓“足够新”就是通过目的序列号来判断的,每个节点进行节点序列号的管理,维护自身的序列号和保存目的节点序列号。AODV使用了分布式的、基于路由表的路由方式,建立路由表项以后,在路由中的每个节点都要执行路由维持、管理路由表的任务。节点会监视一个活动路由(Active Route)中下一跳节点的状况。当发现有链路断开的情况时,就向该路由的前驱节点发出RERR消息通知。在RRER消息中,指明了由于链路断开而导致无法到达的目的节点。每个节点都保留了一个“前驱列表”(Precursor List)来帮助完成错误报告的功能。2.2 AODV路由实现的软件结构 AODV路由协议的实现主要包括两个组件:MulitHopEngineM和MulihopAodv,如图4所示。其中MultiHopEngineM组件负责转发分组,Multi HopAodv是AODV路由功能的实现组件,通过配置组件MultiHopAodvRouter将两个组件写通(write)起来。 MultiHopAodv使用TimerMilliC提供的Timer接口作为路由协议所需的定时器,实现了AODV的路由发现、路由维护、Hello消息等机制,为MulitHopEngineM提供路由的下一跳地址。MultiHopEngineM通过两个接口(RotlteControl,RolneSelect)和MultiHopAodv交互,它的实现独立于任何路由协议实现,这非常有利于基于TinyOS平台的第三方路由协议的开发。AodvQueueTransmitP为MultiHopEngineM和MultiHopAodv提供了AMSend和Receive接口,同时提供了FIFO机制。 3 系统测试 采用6个节点进行组网测试,使用16位的短地址作为节点地址,如表1所示。系统测试时,PC端使用串口与节点连接,然后通过串口查看节点的路由信息和数据的转发情况。 3.1 路由发现机制 源节点发起寻找目的节点的路由发现过程,中间节点收到RREQ后,检查自身是否有到达目的节点的有效路由,如果有,则回复RREP;如果没有,则继续广播RREQ,如图5所示。 如图6和图7所示,节点2在收到节点4发来的RREQ后,更新到源节点(节点4)的路由,同时在路由表查找到目的节点的有效路由,然后向节点4回复RREP。节点4收到节点2返回的RREP,添加相应路由,将节点2作为到目的节点(节点1)的下一跳节点。该测试表明本系统实现了AODV路由协议的RREQ转发机制和中间路由回复机制,节点4获得到达目的节点的路由。 3.2 数据包的发送和转发 将6个节点隔开一定距离布置,节点1作为sink节点,其余5个节点建立到达节点1的路由,向sink节点发送数据,中间节点同时负责转发其他的节点的数据,图8是组网完成后的拓扑图。 源节点(节点3)发起查找目的节点(节点1)路由发现过程,在建立路由之后(3→4→2→1),向下一跳节点(节点4)发送数据包,如图9所示,中继节点(节点2,节点4)转发数据包如图10~图12所示。在图12中,目的节点收到节点2转发的来自节点3的数据。从该测试结果看出系统具备AODV协议的路由发现、路由表查找、数据包的转发等基本功能。 4 结语 本文介绍了无线传感器网络硬件节点和TinyOS操作系统的结构,根据系统所采用的硬件将TinyOS操作系统移植至8051平台,同时添加系统所需的IO,Timer,UART,RF等组件。这些组件提供了AODV路由协议所需要的IO控制、定时器、射频收发等功能。通过测试AODV协议的路由发现和多跳转发等机制验证了所移植组件和路由协议实现的正确性。 c语言相关文章:c语言教程

基于CC2420的无线传感器网络节点的设计

引 言 网络是当今国内外通信领域的一大研究热点,它在军事、民用及工商业领域都具有广阔的应用前景。在军事领域,通过网络,隐蔽地分布在战场上的传感器可将获取的信息回给指挥部;在民用领域,网络可在家居智能化、环境监测、医疗保健、灾害预测等方面得到广泛应用;在工商业领域,无线传感器网络在工业自动化、空间探索和其他商业用途卜得到广泛应用。 本文引用地址: 考虑到无线传感器网络在通信上消耗能量较大,故选用功耗较小的芯片作为通信芯片来设计节点。 1 无线传感器的特征 无线传感器网络由大量体积小、能耗低、具有无线通信、传感和数据处理功能的传感器节点组成。因此,传感器节点是尤线传感器网络的基本单元,节点设计的好坏直接影响到整个网络的质量。无线传感器主要负责对周围信息的采集和处理,并发送自己采集的数据给相邻节点或将相邻节点发过来的数据转发给基站或更靠近基站的节点。它一般由传感器模块(传感器、A/D转换器)、处理器模块(微处理器、存储器)、无线通信模块(无线收发器)和能量供应模块(电池)组成,如图1所示。 所有无线传感器都具有相同的功能,但在某一时刻,各个节点可能正在执行不同的功能。根据功能,可以把节点分成传感器节点、簇头节点和汇聚节点3种类型。当节点作为传感器节点时,主要是采集周围环境的数据(温度、光度和湿度等),然后进行A/D转换,交由处理器处理,最后由通信模块发送到相邻节点,同时该节点也要执行数据转发的功能,即把相邻节点发送过来的数据发送到汇聚节点或离汇聚节点更近的节点;当节点作为簇头节点时,主要是收集该簇内所有节点所采集到的信息,经数据融合后,发往汇聚节点;当节点作为汇聚节点时,其主要功能就足连接传感器网络与外部网络(如Internet),将传感器节点采集到的数据通过互联网或卫星发送给用户。 2 芯片的性能和结构特点 是Chipcon公司开发的首款符合Zigbee标准的2.4 GHz射频芯片,集成了所有Zigbee技术的优点,可快速应用到Zigbee产品中。Zigbee是建立在IEEE 802.15.4定义的可靠的PHY(物理层)和MAC(媒体访问控制层)之上的标准,它定义了网络层、安全层和应用层。Zigbee的协议架构如图2所示。 Zigbee技术的特点如下: a) 数据传输速率低:只有20~250 kbit/s,专注于低传输速率的应用。 b) 时延短:休眠激活时延和活动设备接入信道时延均为15 ms,典型的搜索设备时延为30 ms,这便可以使系统有更多的睡眠时问,从而大大降低能量消耗。 c) 功耗低:由于Zigbee的传输速率低,且采用了休眠模式,因此大大降低了功耗。单靠两节5号电池便可维持6到24个月,这是其他无线通信技术望尘莫及的。 d) 安全性高:Zigbee提供了基于CRC(循环冗余校验)的数据包完整性检查功能,支持鉴权和认证,采用高级加密标准(AES-128)的对称密码,以灵活确定其安全属性。 e) 免执照频段:采用直接序列扩频在ISM(工业、科学、医疗)频段,2.4 GHz(全球)、915 MHz(美国)和868 MHz(欧洲),均为免执照频段。 f) 网络容量大:Zigbee可采用星状、树状和网状网络结构,并采用IEEE标准的64-bit编址和16 bit短编址。由一个主节点管理若干子节点,最多一个主节点可管理254个子节点;同时,主节点还可由上一层网络节点管理,最多可组成65 000个节点的大网。 g) 可靠性高:采用了CSMA-CA技术来避免发送数据的竞争和冲突。MAC层采用了完全确认的数据传输模式,每个发送的数据包都必须等待接收方的确认信息。 h) 低成本:由于Zigbee数据传输速率低,协议简单,因此大大降低了成本。 CC2420芯片除了拥有以上Zigbee的所有优点外,还具有与微控制器的接口配置容易(四线SPI串行口)、接收与发送采用不同存储空间、所需外部元件较少以及采用QLP-48封装,外形尺寸只有7 mm×7 mm等性能特征。 CC2420芯片的内部结构如图3所示。天线接收的信号经低噪声放大器放大,并通过I/Q降频转换为2 MHz的中频信号。该信号再经滤波、放大、A/D转换、自动增益控制、终端信道过滤以及信号修正等,最终得到正确数据。当要发送数据时,先把要发送的数据放入容量为128字节的发送缓冲区。报头和起始帧由硬件自动生成。根据IEEE 802.15.4标准,将数据流的每4个比特扩展为32码片,然后送到D/A转换器。最后,经过低通滤波和上变频混频,并在能量放大器中进行放大后,交由天线发送。 3 节点设计 由于在设计中用到的传感器较少(主要是温度传感器和光传感器),因此将传感器模块集成到处理器模块中。所以对节点设计的描述将分为处理器模块、通信模块和供电模块3部分。其中处理器模块选用ATmega128L作为处理器芯片,通信模块选用CC2420作为通信芯片,在电源方面,采用2节5号电池提供3V供电。 3.1 处理器模块 处理器是整个节点的中心,其他模块都要通过处理器来联系,因此处理器性能的好坏决定了整个节点的性能。ATmega128L芯片是ATMEL公司开发的一款高性能、低功耗的8位AVR微处理器。它有128 kB的系统可编程Flash存储器,4 kB EEPROM,以及4 kB的片内SRAM,同时还可以扩展外部存储器;采用先进的RISC结构,大部分指令在一个时钟周期内完成;有64个10引脚,都与通用单片机兼容;片内提供1个串行外围接口SPI、1个两线串行接口TWI和2个通用同异步串行接口,用于与外部元件的通信;并提供8通道10位采样精度的A/D转换器,该器件同时支持16路差分电压输入组合。 处理器与传感器的连接如图4所示。因为光传感器与温度传感器的工作原理相似,因此它们可采用同样的电路图。图中的R1为光敏电阻或热敏电阻,R2为10kΩ电阻,用于保护电路,加入电容C1是为使A/D转换器采样所得到的数据更精确。 电路的工作原理是:用ATmega128L的一个引脚给电路提供电源,从图中的电源端输入电路。R1的阻值根据光(R1为光敏电阻)或温度(R1为热敏电阻)的变化而发生变化,从而引起其压降的变化。将R1的负端与处理器的一个A/D转换器端口连接,处理器即可收到一个电信号,然后处理器启动A/D转换功能,将电信号转换为数字存入寄存器,当MCU需要处理或发送该数据时便可来取。利用下式可计算出十位二进制A/D转换器读数DADC。 式中:Vin为A/D转换器引脚的输入电压;Vref为参考电压。 上一页 1