第一篇:单片机与GPRS模块通讯开发的注意事项
单片机微控制器以其体积小、功耗低、使用方便等特点,广泛应用于各种工业、民用的嵌入式系统中;而随着互联网(Internet)的兴起与普及,使微控制器通过互联网传送数据就变得非常有意义。目前使微控制器上网的解决方案一般有两种:一种是采用微控制器驱动网卡,通过以太网连接Internet;另一种是使微控制器直接驱动调制解调器(MODEM)通过电话线向ISP拨号上网。这两种方案的缺点在于都要使用有线的网络,无法应用于在边远地区或可移动系统中。
针对这一问题,提出一种基于GPRS的单片机上网的解决方案,即在单片机中实现PPP协议,并通过驱动GPRS模块经过GPRS无线网连接到Internet实现上网。这种方案的优点在于:① 覆盖面广,适用于广大偏远地区;② 无线上网,适用于可移动目标;③使用廉价的微控制器实现简单、成本低;④ 安装简便,维护
方便。GPRS技术及其特点
GPRS(General Packet Radio Service)是通用分组无线业务的简称,是在GSM基础上发展起来的一种分组交换的数据承载和传输方式。与原有的GSM比较,GPRS在数据业务的承载和支持上具有非常明显的优势:通过多个GSM时隙的复用,支持的数据传输速率更高,理论峰值达115kb/s;不同的网络用户共享同一组GPRS信道,但只有当某一个用户需要发送或接收数据时才会占用信道资源。这样,通过多用户的业务复用,更有效地利用无线网络信道资源,特别适合突发性、频繁的小流量数据传输,很好地适应数据业务的突发性特点;GPRS计费方式更加灵活,可以支持按数据流量来进行计费;与无线应用协议(WAP)技术不同,GPRS能够随时为用户提供透明的IP通道,可直接访问Internet中的所有站点和资源;采用信道复用技术,每一个GPRS用户都能够实现永远在线;另外,GPRS还能支持在进行数据传输的同时进行语音通话等等,而且相对于短消息等其它无线数据通信业务,GPRS的价格优势比较明显。目前,我国移动推出的GPRS上网业务最高每千字节也只有3分钱,而且用户可以根据自己的需要,以月租、包月等多种形式进一步降低GPRS通信的费用。
因此使用GPRS实现远程数据的传送是非常经济实用的,特别是对于不易架设有线网络的边远地区和可移动装置。硬件连接和GPRS模块设置
通过GPRS网进行数据传输一般需要使用GPRS模块。目前,GPRS模块一般是指带有GPRS功能的GSM模块,可以利用GPRS网进行数据通信。
其中比较流行的有法国Wave公司的WISMO系列和西门子公司的S系列等等。WAVECOM的WISMO模块接口简单、使用方便且功能非常强大
其中GPRS模块与单片机间是通过串行口进行通信的,通信速率最快可以达到115 200b/s。模块与控制器间的通信协议是AT命令集,其中大部分命令是符合协议“AT command set for GSM Mobile Equipment(ME)(GSM 07.07 version 6.4.0 Release 1997)”的,但也有一些是Wavecom自己定义的AT命令。除了串口发送(TX)、串口接收(RX)之外,微控制器与GPRS模块之间还有一些硬件握手信号,如DTR、CTS、DCD等。为了简化微控制器的控制,硬件设计时不要使用全部的硬件握手信号,而只使用
数据载波检测(Data Carrier Detect, DCD)和终端准备(Data Terminal Ready, DTR)信号。
DCD信号可以检测GPRS模块是处于数据传送状态还是处于AT命令传送状态。DTR信号用来通知GPRS模块传送工作已经结束。
硬件连接完成后,在进行GPRS上网操作之前,首先要对GPRS模块进行一定的设置。主要的设置工作有:
① 设置通信波特率,可以使用AT+IPR=38400命令,把波特率设为38 400b/s或其它合适的波特率,默认的通信速度为9600b/s。
② 设置接入网关,通过AT+ CGD CONT=“1”, “IP”, “CMNET”命令设置GPRS接入网关为移动梦网。
③设置移动终端的类别,通过AT+CGCLASS=“B”设置移动终端的类别为B类,即同时监控多种业务;但只能运行一种业务,即在同一时间只能使用GPRS上网,或者使用GSM的语音通信。④ 测试GPRS服务是否开通,使用AT+CGACT=1,1命令激活GPRS功能。如果返回OK,则GPRS连接成功;如果返回ERROR,则意味着GPRS失败。这时应检查一下SIM卡的GPRS业务是否已经开通,GPRS模块天线是否安装正确等问题。
中国移动在GPRS与Internet网中间建立了许多相当于ISP的网关支持节点(GGSN),以连接GPRS网与外部的Internet网。GPRS模块可以通过拨“*99***1#”登录到GGSN上动态分配到Internet网的IP地址。其间GPRS模块与网关的通信要符合点对点协议(Point to Point Protocol, PPP),其中身份验证时用户名、密码都为空。使用PPP协议登录上之后,就可以通过GGSN接上Internet了。软件整体结构
程序中的所有代码最好采用C语言编写,并采用分层的结构,从底到上分别为:串口驱动层、GPRS模块驱动层、PPP协议层、IP协议层、UDP协议层与应用层。上层函数的实现需要应用到底层函数,而底层函数的任务就是为上层函数提供服务,最终完成应用层任务——传送数据。驱动程序编写
首先是串行口驱动层。它实现打开串口、关闭串口、读串口数据、写串口数据等函数。然后,在这些串口函数的基础上编写GPRS模块的驱动函数。单片机通过串行口控制GPRS模块,进行拨号、设置等操作。控制的方法是采用AT命令。在控制GPRS模块拨打移动梦网GGSN的登录号码“*99***1#”之后,GPRS模块就转入在线模式(On-Line)。此时单片机向串行口发送的所有数据都透明地传送给了GGSN,同样GGSN的回答也传回单片机的串行口。
当数据传送完成后,单片机需要通知GPRS模块结束会话,并从在线模式转回普通的命令模式,这可以通过置高DTR线完成。同时,如果线路由于异常断开,CD线会回复到平常的低电平,所以处于在线模式下也要不断检测CD线是否处于高电平。根据这些操作,可以编写GPRS驱动函数:初始化GPRS模块函数、拨号函数、断开连接函数、检测是否处于在线状态函数。
这些底层的驱动函数将会使上层协议的编写很方便,更重要的是,它为我们提
供了一个驱动抽象层。当底层硬件做出改动的时候,只需要对底层的驱动函数进行改动,而上层函数的代码不变。PPP协议的实现
由于移动梦网的GGSN与GPRS模块通信时遵循PPP协议,所以要在单片机中也实现一部分PPP协议才能与之对话。GPRS模块在拨号后首先要与GPRS网关进行通信链路的协商,即协商点到点的各种链路参数配置。协商过程遵守LCP(Link Control Protocol)、PAP(Password Authentication Protocol)和IPCP(Internet Protocol Control Protocol)等协议。其中LCP协议用于建立、构造、测试链路连接;PAP协议用于处理密码验证部分;IPCP协议用于设置网络协议环境,并分配IP地址。协商机制用有限状态机的模型来实现。一旦协商完成,链路已经创建,IP地址已经分配就可以按照协商的标准进行IP报文的传输了。根据应用的不同,IP报文中可以携带UDP报文,也可以是TCP或ICMP报文。本系统正是采用UDP报文传送数据信息的。数据传输完成之后,单片机会向GGSN发送LCP的断开连接报文,以终止网络连接。
PPP协议的帧结构(图略)。单片机的串口中断接收程序首先以包起始和结束符来判断是否有完整的PPP包,并对PPP包的内容进行校验,以确定数据包的完整性和正确性。然后,在主循环中进入PPP报文解析模块。登录GGSN的过程
系统的一个难点是单片机登陆GPRS网关(GGSN)并与网关通过LCP、PAP、IPCP协议进行协商的过程。LCP、PAP与IPCP协议的帧结构大同小异,最常用的为请求(REQ)、同意(ACK)和拒绝(NAK)三种帧。单片机与GGSN各为一方进行协商,任何一方都可以发送REQ帧请求某方面的配制,另一方觉得配置不能接受会回应NAK帧,如果可以则回应ACK帧。为了节省资源,我们只处理这三种数据帧,其它链路问题都由单片机在程序控制下自己重新拨号解决。
协商过程大致描述如下:在拨号成功连接后,GGSN首先会返回一个PAP REQ数据帧。我们发送一个空LCP REQ帧,以强迫进行协议协商阶段。随后,GGSN发送LCP设置帧,我们拒绝所有的设置并请求验证模式。GGSN选择CHAP或PAP方式验证,我们只接受PAP方式。然后,进行PAP验证用户名和密码过程,在GPRS中用户名与密码都为空,如果成功,GGSN会返回IPCP报文分配动态IP地址。此时,就完成了与GGSN的协商过程。协商过程的状态转换如图4所示。
协商完成后进入IP数据报通信阶段。此时,单片机向GGSN发送的所有包含IP报文的PPP报文都会被传送给Internet网中相应的IP地址;而远端所有向单片机IP地址发送的报文也都会经GPRS网传送到单片机上,从而完成单片机与远程主机通过互联网的数据传输。
适应角色转变,扎实开展团的工作
———共青团铁东区委书记的述职报告
2011年是适应角色转变、思想进一步成熟的一年。这一年,自己能够坚持正确的政治方向,紧紧围绕党的中心,立足本职岗位,较好地完成本线的工作任务。自己政治觉悟、理论水平、思想素质、工作作风等各方面有了明显的进步和提高。总的来说,收获很大,感触颇深。
一、以德为先,进一步提升个人思想素质
过去的一年,我以一个共产党员的标准,以一个团干部的标准严格要求自己,在个人的道德修养、党性锻炼、思想素质上有了很大的进步。一是道德修养进一步提高。作为一个团干部,我的一言一行、我的自身形象将直接影响到团委各成员,甚至更广大的青少年。因此,在日常的工作和生活中,我每时每刻提醒自己,从小事做起,注重细节问题,做到干净做人、公正做事,以平常心看待自己的工作,要求自己在工作中诚实、守信、廉洁、自律,起好表率作用。二是党性锻炼得到不断加强。不断加强自己的党性锻炼,我严格按照《党章》和《中国共产党党员纪律处分条例》来要求和约束自己的行为,牢记党的宗旨,在团的工作中,以广大青少年的权益为出发点,务求时效。三是政治思想素质不断提高。一年来,我继续加强学习,积极参加理论中心组学习,经常自发利用休息时间学习,积极参加团省委组织赴井冈山革命传统与理想信念教育专题培训班、区委区政府组织赴清
华大学县域经济培训班,通过“看、听、学、思”,进一步加深了对马列主义、毛泽东思想、邓小平理论、“三个代表”重要思想的理解,进一步系统掌握了党在农村的路线、方针、政策以及对共青团工作的要求。特别是党的十七届六中全会以来,我通过学习原文、听专家讲课等,开拓了思想新境界,政治思想素质有了新的飞跃。
二、以能为先,进一步加强组织工作能力
在上级领导的信任和支持下,我本人也自加压力,抓住一切机会学习,注重与同事、与兄弟单位团委书记的交流,虚心请教,不耻下问,使各项工作都有序地开展。一是工作的统筹安排能力不断加强。我尽量做到工作提前一步,有计划、有安排、有预见性,保持思路清晰和决策的科学,力求操作有序,顺利开展。二是工作的协调能力不断加强。在工作中,我注重与上级的及时衔接、汇报,同时也注重与基层的交流沟通,听取多方意见和建议,从大局出发,对上做好配合,对下做好团结。三是有创新地开展工作。在工作中,我注重不断创新,使工作保持生机,使管理不断趋向人性化、合理化。
三、以勤为先,进一步提高团的业务水平
担任团委书记以来,认真了解情况、掌握知识,积极向团委领导、向前任书记学习、请教,了解团情、团史,努力掌握团的基本运作方式程序,便于更好地开展工作。加强沟
通了解,增加感情,深入基层,了解基层团组织和团员青年的有关情况,以“活动”来强化自己的知识和水平。一年来,我立足以活动来促使自己尽快适应角色,迎接挑战。今年五四,团区委以全区人居环境整治为依托,以“五四火炬传承九十二载生生不息,铁东青年投入人居环境立志强区”为引领,积极开展了“共青团路,红领巾街”,“铁东青年林”等一系列活动。在活动中,增长了知识,深化了理解,使自己对团务工作有了全面的、系统的提高,为今后更好地提高团的业务水平打下了坚实的基础。
四、以绩为先,进一步完善团的组织建设
把《关于进一步深化“党建带团建”工作的实施意见》落到实处,把党的要求贯彻落实到团的建设中去,使团的建设纳入党的建设的总体规划。依托党建,从政策层面来解决和落实基层团组织存在的问题和困难。一是基层团干部的待遇问题。积极争取党组织在团干部配备上的重视和支持,基层团干“转业”得到了很好的安排(叶赫的荣威,住建局遇良,卫生局王国宴等);二是解决好基层团组织活动的经费问题。积极争取专项,今年为每个乡镇街道从团省委争取经费三千元,共计三万六千元;三是团的基层组织格局创新工作。按照“1+4+N”模式,通过换届调整选配了大批乡镇(街道)团干部,变原有的“团干部兼职”模式为现在的“兼职团干部”模式,提升了基层团组织的凝聚力和战斗力。此
次工作得到了团市委的充分认可,2011年四平市组织部班工作会议在我区召开。
以服务青年需求为目的,从单一组织青年开展活动转到生产环节,开展就业培训、创业交流、贫富结对;以服务党政中心为目的,发挥团组织自身优势,引导青年树立市场意识和投资意识,强化科技意识和参与意识,投身知识化、信息化和现代化、文明创建、环境整治、植绿护绿、社会治安等活动,把党政思路实践好。突出做好当前新兴的农村、社区和非公经济组织建团工作,延长团的工作手臂,丰富团的组织形式。先后与农联社、吉林银行等多家金融机构积极协调,为青年创业就业提供帮扶支持。特别是吉林银行的“吉青时代”小额贷款项目更得到团省委的无偿贴息。
五、以廉为先,进一步保持清正廉明形象
作为新任职的年轻干部、党员干部,我既感受到了组织的信任与关怀,同时也感受到了责任重大。我区在党委和政府的带领下,励精图治、奋发图强,取得了辉煌的成绩。越是这种时候,就越需要我们这些干部保持清醒的头脑,保持共产党员的先进本色。深知,作为一级干部,应该努力做到“清正廉洁”。古人说“物必自腐而虫生”,腐败现象表现上看来是经济问题、道德问题,但深层次的原因却是理想信念出了问题。要不断加强实践锻炼,要结合党的历史经验、改革开放和社会主义建设的实践以及自己的工作和思想实际,来刻苦磨炼自己。勇于剖析自己,积极开展自我批评,净化自己的灵魂。不断增强拒腐防变意识。在思想上、在行动上、生活中争作表率。在团区委开展“争做勤廉表率,竭诚服务青年”主题教育,召开机关党风廉政建设宣传教育活动动员会,全面启动党风廉政建设宣教活动。按照学习贯彻区委、区纪委关于党风廉政建设和反腐败工作的部署和要求,学习党的十七届六中精神,强化组织领导,制定工作计划。我们根据2011年党风廉政建设责任制考评要求,为了做好党风廉政建设和反腐败工作,成立了团区委党风廉政建设领导小组,并由我任组长。按照“一岗双责”的责任要求,明确了单位正职领导作为第一责任人,每年约谈团干部一次,就有关廉洁从政个人“不准”和“禁止”行为适时对所管的团干部进行廉政谈话。
在2012年即将到来之际,共青团区委迎来组织部考核组,对共青团区委一年来的工作进的实地测评,感谢组织的帮助与关怀,今后我们更要自觉地接受组织的监督与考核。铁东区的发展已经取得了令人瞩目的成就,而今又开始了新的征途。广大青年有幸成为亲历者,成为追随者,同时我们也是共享发展成果的受益者。我们应该心怀感恩,心存畏惧,“做一个组织和群众信赖的人,做一个同事和朋友敬重的人,做一个亲属子女可以引以为荣的人,做一个回顾人生能够问心无愧的人”。我们要牢记党的宗旨,全面贯彻党的方
针路线,高举中国特色社会主义伟大旗帜,弘扬“攻坚克难、求富图强”的四平精神,坚定不移的实施 “五区”战略的发展规划,为建设富裕和谐新铁东的伟大目标而不懈奋斗。
第二篇:GPRS公网通讯[推荐]
GPRS公网通讯
GPRS应用中TCP/IP/PPP基本概念:(CDMA的原理与此差不多)
实际上GPRS DTU上实现的是协议栈是TCP/IP Over PPP。我们在使用时必须要有一些相应的概念。因此在下面我们就与SARO-3130P使用相关的一些事项作一些简要的说明,如果您想详细了解这些协议,请参见相关书籍:
1. 每一次SARO-3130P拨ATD*99***1#(或ATD*99***1#)之后其实都在采用PPP协议和移动的接入设备(一般是移动公司的一台特殊的GGSN路由器)进行握手,当PPP协议握手成功后,SARO-3130P都会获得一个动态IP地址。一般来说,每一次SARO-3130P下线后(挂断连接或者直接断电后)在重新进行拨号和PPP握手后取得的动态IP地址都是不一样的。但是移动公司可以通过为客户开通特定的APN和发行特殊的SIM卡,使得用这张SIM卡获得的动态IP地址每一次都不变。也就是说可以做到SIM卡和IP地址绑定。
2.我们在做测试时,应当注意到如下事实:在采用公网的Apn(“cmnet”)的条件下,如果我们用SARO-3130P主动向公网上的一个静态公网IP地址发起TCP连接,只要这个公网上的机器确实有侦听相应的端口,这样是可以连上的;但是相反地,如果是由公网上的静态IP向SARO-3130P动态获得的IP地址主动发起的TCP连接将不会成功。这个现象的原因是:实际上SARO-3130P获得的动态IP地址是移动的一个特殊的内部网段上的地址,这个特殊内部网段里的地址如果要和外部网(公网)的地址进行TCP通信,必须通过一个类似于TCP代理(或者NAT)的设备进行通信的转发。换句话说,这个动态地址对于网络上的其他机器来说是不可访问的。
3. 标准AT命令+CGDCONT的主要作用是指定Apn。Apn是Access Point Name(访问接入点)的缩写,移动通过开通特殊的Apn为行业客户提供Vpn(Virtual Private Net)服务。比如说,如果是要上公网(Internet),应当使用“cmnet”作为Apn。又如,某企业向移动公司申请了Vpn服务,移动公司为其开通了一个Apn为“hxsw.gd”,则我们就应当用这个Apn来设置Gprs模块,格式如下: AT+CGDCONT=1,“IP”,“hxsw.gd”
4.确定一条TCP连接有4个要素,这4个要素是双方的IP地址和双方的TCP端口号,这也就是SARO-3130P为什么将本地端口、目的端口和目的IP地址结合起来作为连接的ID号(SARO-3130P在PPP握手成功后获得的动态地址只要不断线重连就不会改变)的原因。
5.使用TCP协议进行数据通信时,必须要经过三个阶段,第一个阶段是连接建立阶段,第二个阶段是数据收发阶段,第三个阶段是连接释放阶段:
1).连接建立阶段:连接的建立又有主动连接和被动连接之分,一般来说客户机都是主动发起连接的,而服务器是被动接受连接的。
所谓的主动连接是指本方主动向远端发起连接请求,而被动连接指的是本方侦听一个端口,等待远端及其主动向自己发起一个连接请求并且进行回应并且最终握手建链成功。
在连接成功,切换到数据态后,我们可以通过OPEN命令帧控制SARO-3130P 进行主动连接。
当然,连接时要指定对方的IP地址和端口号。至于被动连接,SARO-3130P也可以支持,目前的程序只支持侦听一个端口。对方主动连接(SARO-3130P被动连接)成功后将建立一条新的通信连接,SARO-3130P将把这个被动连接成功的事件通知给上位机。
2).数据收发阶段:当一条连接建立之后,我们就可以在这条连接上进行数据收发了。
我们可以使用SEND命令帧控制SARO-3130P进行数据发送。当然,发送时要指定连接号(通过本地端口、目的地址和端口唯一确定)。
对于对方发送过来的数据,SARO-3130P首先将其存储在自身的数据缓冲区中,然后将数据已到达此事件通知给上位机,上位机读取到数据已到达事件后,应当及时使用RECV命令帧控制SARO-3130P将相应连接上的所有数据通过串口读出,当数据读出后,这些数据原先占用的数据缓冲区空间将会被释放。注意,由于SARO-3130P的数据缓冲区有限(总量仅有25K Bytes),所以,对于对方发来的数据,上位机一定要及时读出,否则数据越积越多,可能会导致数据缓冲区溢出,丢失数据。
3).挂断连接阶段:当一条连接上的所有数据都已经收发完成了,不再需要这条连接时,就可以把连接给挂断了。
和连接建立阶段相类似,挂断也分为主动挂断和被动挂断。
我们可以使用RSET命令帧控制SARO-3130P进行连接的主动挂断。
如果连接被对方主动挂断,SARO-3130P将会把这个事件通知给上位机进行处理。
GPRS/CDMA行业应用中的TCP与UDP的比较!
中国移动、中国联通推行的GPRS网络、CDMA网络已覆盖大量的区域,通过无线网络实现数据传输成为可能。无线Modem采用GPRS、CDMA模块通过中国移动、中国联通的GPRS、CDMA网络进行数据传输,并通过TCP/IP协议进行数据封包,可灵活地实现多种设备接入,工程安装简单,在工业现场数据传输的应用中,能很好的解决偏远无网络无电话线路地区的数据传输的难题。同传统的数传电台想比较,更具有简便性、灵活性、易操作性,同时还降低了成本,无线Modem传输方案是现代化工业现场数据传输最好的选择方案。
目前中国移动、中国联通提供的GPRS网络、CDMA网络的数据传输带宽在40Kbps左右,且受带宽的限制,数据采集方案最好采用于主动告警、数据轮巡采集、告警主动回叫等对传输带宽占用较少的采集方式。同时考虑对前置机实时采集方案的支持,无线Modem传输方案只能作为目前传输方案的补充。
随着无线通讯技术的不断发展,无线传输数据带宽将不断提高,采用3G无线网络,数据传输带宽将达到2M,无线传输方案将逐渐成为监控传输组网的主要应用方案。
目前,由于GPRS和CDMA固有的特性,在各个领域中GPRS和CDMA的应用也越来越广泛,但是关于传输中使用TCP/IP协议还是UDP协议,却争论很多。
这里先简单的说一下TCP与UDP的区别:
1。基于连接与无连接
2。对系统资源的要求(TCP较多,UDP少)
3。UDP程序结构较简单
4。流模式与数据报模式
5。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证
另外结合GPRS网络的情况具体的谈一下他们的区别:
1。TCP传输存在一定的延时,大概是1600MS(移动提供),UDP响应速度稍微快一些。
2。TCP包头结构
源端口16位
目标端口 16位
序列号 32位
回应序号 32位
TCP头长度 4位
reserved 6位
控制代码6位
窗口大小16位
偏移量16位
校验和16位
选项 32位(可选)
这样我们得出了TCP包头的最小大小.就是20字节.UDP包头结构
源端口16位
目的端口16位
长度 16位
校验和 16位
UDP的包小很多.确实如此.因为UDP是非可靠连接.设计初衷就是尽可能快的将数据包发送出去.所以UDP协议显得非常精简.3。GPRS网络端口资源,UDP十分紧缺,变化很快;而TCP采用可靠链路传输,不存在端口变化的问题
工业场合的应用一般都有以下特点,1。要求时时传输,但也有一些场合是定时传输,总的来说在整个传输过程中要求服务器中心端和GPRS终端设备能相互的、时时的传输数据。
TCP本身就是可靠链路传输,提供一个时时的双向的传输通道,能很好的满足工业现场传输的要求。但是GPRS网络对TCP链路也存在一个限制:此条链路在长时间(大概20分钟左右,视具体情况而定)没有数据流量,会自动降低此链路的优先级直至强制断开此链路。所以在实际使用中也会采用心跳包(一般是一个字节的数据)来维持此链路。
UDP由于自身特点,以及GPRS网络UDP端口资源的有限性,在一段时间没有数据流量后,端口容易改变,产生的影响就是从服务器中心端向GPRS终端发送数据,GPRS终端接收
不到。具体的原因就是移动网关从中作了中转,需要隔一定时间给主机发UDP包来维持这个IP和端口号,这样主机就能主动给GPRS发UDP包了并且我在测试中发现,这个间隔时间很短,我在1多分钟发一次UDP包才能够维持,但是再长可能移动网关那边就要丢失这个端口了,此时如果主机想主动发数据给GPRS,那肯定是不行的了,只有GPRS终端设备再发一个UDP包过去,移动重新给你分配一个中转IP和端口,才能够进行双向通讯。
2。要求数据的丢包率较小。有些工业场合,例如电力、水务抄表,环保监测等等,不容许传输过程中的数据丢失或者最大限度的要求数据的可靠性。
从这一点来看,很显然在无线数据传输过程中,TCP比UDP更能保证数据的完整性、可靠性,存在更小的丢包率。在实际测试中也是如此。以厦门桑荣科技有限公司提供的GPRS终端设备为例:TCP的在千分之9,UDP的在千分之17左右。
3。要求降低费用。目前有很大部分GPRS设备的应用都是取代前期无线数传电台,除了使用范围外,其考虑的主要问题就是费用。能降低费用当然都是大家最愿意接受的。和费用直接相关的就是流量了,流量低,费用就低了。
虽然TCP本身的包头要比UDP多,但是UDP在实际应用中往往需要维护双向通道,就必须要通过大量的心跳包数据来维护端口资源。总的比较起来,UDP的实际流量要比TCP还要大。很多使用者在初期的时候并不了解UDP需要大量心跳包来维持端口资源这个问题,往往都认为UDP要比TCP更节省流量,实际上这里存在着一个误区。
4。在某些特定的应用场合,例如一些银行的时时交互系统,对响应速度要求很高,此时数据传输频率较快,不需要大量心跳包维持UDP端口资源,采用UDP就比较有利了。
5。在目前的1:N的传输模式中,既有多个GPRS终端设备往一个服务器中心传输数据,此时采用UDP会比TCP要好的多,因为UDP耗用更少的系统资源。但是在实际应用中却发现,很多用户还是采用TCP的传输方式,建立二级中心1:A(1:N),即每一个分中心对应N/A台设备,独立处理数据,再统一将数据传送到主中心。这样既能保证了传输过程中采用了TCP的传输协议,又能很好处理了中心服务器的多链路的系统耗用的问题。
总的来说,TCP/IP协议更能满足目前各行业对远程数据传输的要求,它提供更稳定更便利的传输通道,很好的满足了远程数据传输的要求。桑荣公司所有DTU产品都支持TCP和UDP协议,客户可以自行选择.
第三篇:单片机开发经验总结
单片机开发经验总结 单片机开发 2010-07-20 00:54:19 阅读77 评论0字号:大中小 订阅
1、与发光二极管串联的电阻(排阻)的计算和选取,一般发光二极管的正常发光的电流是3~10mA,在发光二极管上产生的压降是1.7
V(轨管)R=(5-1.7)/3~10(k)
2、单片机TTL电平高电平:+5V;低电平:0V。
RS232串口电平高电平:—12V ;低电平:+12V。可以通过MAX232电平转换芯片,转换之间的电平。
3、单片机上电IO口的寄存器为高电平,其余寄存器为低电平。
4、三极管的开关作用:在B、E间接正向电压,E、C是导通的。
5、蜂鸣器:
1)有源蜂鸣器直接接上额定电压就可以连续发声。
2)无源蜂鸣器和电磁扬声器一样,需要接在音频输出电路中才能发声。
3)有源蜂鸣器带振荡源,无源的不带。
4)有源蜂鸣器的理想信号是直流电。
5)无源蜂鸣器的理想信号为方波信号。
方波发声函数:void beep()
{fmq=0;
delay 500us();
fmq=1;
delay 500us();
}
6、计算单片机指令周期:
指令周期(us)=12 /晶振频率(Mhz)
选用12M的晶振,一个指令周期为1us7、89C51的芯片最高支持24M的晶振
目前介绍单片机应用的文章很多,但介绍单片机开发工具制作的文章却较少。由于单片机是一门实践性很强的课程,如果采用传统的开发模式,则要购买价格昂贵的仿真器、编程器等开发工具来作实验。其实由于芯片功能的日益完善,我们可以利用芯片的在系统编程(ISP)功能制作出实用而低价的开发工具。本文旨在帮助DIY爱好者开发制作出适合自己的开发工具。
1当前常用开发模式
目前,基本上有两种开发模式可供选择:用仿真器、用编程器。
①用仿真器。优点:方便,可以设置断点,可以观察存储器及寄存器的内容。缺点:价格昂贵,不同类型的单片机要购买不同的仿真器;仿真器终究不是单片机,有时代码在仿真器上能通过,但在单片机中不能正常工作,反而增加了调试的难度。
②用编程器。优点:价格相对便宜,通常一款编程器可编程多种器件。缺点:操作相当不便,每次要将芯片在目标板与编程器之间转移,并且还要在编译操作界面与编程器操作界面之间切换,大部分时间在做简单的重复工作。
2新的开发模式介绍及芯片选择
本文介绍的开发工具采用一种新的开发模式(类似于编程器开发模式)。由于利用了芯片的在系统编程功能,因此不需要移动芯片。在软件设计时设计成:一旦代码文件被重新编过,即自动下载到芯片,并自动复位运行,是真正的“所编即所得”。
目前很多单片机都支持在系统编程。8051系列单片机支持在系统编程的也很多,但大多数是支持通过PC机的串口对单片机进行编程。这样有四个不方便的地方:一是项目本身与PC机串行通信不方便;二是要增加1片MAX232电平转换芯片;三是有的芯片要按特定的步骤进入下载模式,编程过程需要手工干预;四是有的芯片需要固件(定制的程序)的支持,如果不小心损坏了固件,则芯片的在系统编程功能也没有了。
经过比较,Atmel公司生产的AT89S8252是一种比较理想的芯片,适合制作开发工具。此芯片有如下特点:
◆ 与8051兼容;
◆ 内含8KB可擦写1000次的程序存储器,2KB可擦写超过100 000次的数据存储器及256字节8位宽内部RAM;
◆ 可通过SPI接口在系统串行编程,与8051兼容
◆ 串行编程时有自动擦写周期,在调试大程序时可以分段下载,节约时间;
◆ 低电压下载,无需12V编程电压。
3AT89S8252串行编程
(1)AT89S8252串行编程模式
当芯片的RST引脚置高电平时,所有程序和数据存储器可以通过SPI总线接口[SCK,MOSI(input),MISO(output)]编程。RST变高以后,在编程或擦除操作之前必须首先发送一条编程允许命令。在串行编程模式下,芯片会在字节编程之前自动插入一个擦除周期。因此,除非芯片的代码保护位被编程,编程之前不需要执行全片擦除命令。SPI接口之SCK时钟频率须低于晶振频率的1/40。
(2)AT89S8252串行编程步骤
①在XTAL1与XTAL2之间连接一个3~24MHz的晶振;在VCC与GND之前加上电源电压,将RST置高,等待10ms。
②发送串行编程允许命令。
③发送写/读/擦除等命令及数据,串行数据高位在前,低位在后,数据在时钟的上升沿锁定。④如果上一步是写命令,至少等待2.5ms。
⑤需要时重复③、④两步。
⑥将RST置低,芯片开始运行。
(3)AT89S8252串行编程命令
AT89S8252串行编程命令如表1所列。
表
(4)AT89S8252串行编程时序图
AT89S8252串行编程时序如图1所示。
图
14硬件设计
①通过计算机并口与单片机SPI口连接;
②为了保护计算机并口,需要增加1片74HC244作为隔离。
实用的原理图如图2所示。(已经过实践检验,可放心使用。)
图
25用VB编程进行并口控制
打印端口的基地址一般为0x278、0x378或0x3BC,可以从控制面板中查到。为了方便读者,表2列出了常用打印端口引脚及寄存器位元的说明。
表
在Windows环境下最简单易学的语言恐怕非VB莫属,所以我们的开发工具也选用VB作为编程语言。但由于Windows的保护,VB无法直接读写打印端口,因此我们需要另外的程序模块来实现打印端口的直接读写。在Internet网上可以找到许多此类模块,并且相当多的模块可以免费使用。经过试用,笔者推荐使用Winio v2.0。该模块支持Win9X/NT/2000/XP(http:// Yariv Kaplan),并且带有详细的帮助、例子程序及源码。使用时,将Winio.sys、Winio.dll、Winio.vxd
及Winio.bas四个文件拷贝到工作目录下,在VB中直接添加Winio.bas模块即可。本例中用到的函数有四个,分别说明如下。
①Initialize():允许端口控制函数。在使用端口输入输出函数之前调用一次,成功返回“1”,失败返回“0”。
②Shutdown():关闭端口控制函数。在退出程序时执行一次,成功返回“1”,失败返回“0”。③GetPortVal(ByVal PortAddr As Integer, ByRef Portval As Long, ByVal bSize As Byte)As Boolean:读取端口函数,PortAddr 为端口地址, Portval为端口值,bSize为要读取的字节数。读取成功时返回“1”,失败时返回“0”。
④SetPortVal(ByVal PortAddr As Integer, ByVal Portval As Long, ByVal bSize As Byte)As Boolean:写端口函数。PortAddr 为端口地址, Portval为要写的值,bSize为要写入的字节数。写入成功返回“1”,失败返回“0”。
四个函数在Winio.bas模块中的声明如下:
Declare Function InitializeWinIo Lib “WinIo.dll”()As Boolean
Declare Function ShutdownWinIo Lib “WinIo.dll”()As Boolean
Declare Function GetPortVal Lib “WinIo.dll”(ByVal PortAddr As Integer, ByRef Portval As Long, ByVal bSize As Byte)As Boolean
Declare Function SetPortVal Lib “WinIo.dll”(ByVal PortAddr As Integer, ByVal Portval As Long, ByVal bSize As Byte)As Boolean
6Intel HEX 格式文件
由于一般编译软件产生的用于写入芯片的文件都是Intel HEX格式的文件。Intel HEX文件属于文本文件,可以用记事本查看。一个Intel HEX文件的一行称为一个记录,每个记录都是由十六进制字符组成的,两个字符表示一个字节的值。Intel HEX文件通常由若干条记录组成,每个记录都具有如下的形式:
:LLAAAATTDD...DDCC
“:”——记录的起始标志;
LL——记录长度,表示该记录中的数据字节数;
AAAA——数据装入的首地址(16位);
TT——记录类型,00表示数据记录,01表示文件结束;(注意:有的编译软件会产生大于01的记录类型,本应用中对大于01记录类型的记录忽略掉即可。)
DD——数据值(字节);
CC——校验和。(将其本身与记录中除起始标志外的所有字节相加应为0,不为0则有错。)
VB编程详细说明见本刊网络补充版(http://.cn)。(由于各子程序的流程都较简单,所以直接给出源码,而未画出流程图。程序采用由底至顶的设计方法。)
结语
虽然上述程序能实现各种基本的功能,但并不完善,并未考虑各种异常情况,读者可根据实际情况进行完善。编程功力较差的朋友可直接到笔者的网站(http: //)下载相对较完善的应用程序。如果充分理解了上述程序,那么DIY一个AVR或PIC单片机的开发工具也非难事。在笔者的网站也有制作完成的“MCS51/AVR/PIC三合一下载器资料”供爱好者下载。
由于AT89S8252的价格还是较贵,所以现在市场上较难买,不过Atmel公司推出的替代
AT89C51/52的AT89S51/52也有在系统编程功能,且价格便宜。其在系统编程的实现方法与
AT89S8252类似,对本例部分程序稍作修改即可支持该器件。笔者制作的“MCS51/AVR/PIC三合一下载器”增加了对AT89S51/52的支持。
文章来源:http:///wz_17380.htmPowerd by laogu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
再来几点:
先从最简单的AT89C5X(51,52,55等等)说起吧,做这个的时间最长,知道的可能多些,书本上的东西这里我不多说,主要谈些实际应用中的经验与教训。书可以参看北航出的一本专门讲AT89系列的,还不错,建议大家购买。
AT89C51我认为是一个非常标准的51单片机了,4个P口,1个串口,RAM只有标准的128Byte,Flash也只有4K,功能还算齐全,我就以它为基础,所以开发过程中遇到的问题吧。
第一个问题:复位源的问题
大家最常用的复位方式就是电阻加电容吧,AT89C51是高电平复位,这种方式不稳定,在产品调试时可以使用,因为在调试时我们一般使用了仿真器,而许多仿真器都会自己输出复位信号,而屏蔽掉目标板产生的复位信号,所以调试时复位信号是没有问题的,我们公司使用的是长沙菊阳的仿真器,用的是比较先进的技术,还算可以,仿真AT89系列的芯片一点问题没有,还很稳定的说。这里有一个非常重要的问题要说下,大家有时候会遇到这样的一个问题:自己的程序在仿真时运行一点问题也没有,但烧录后却不行了。结合我的经验有两种原因。一是时序可能变了,这个大家都知道,我不多说,还有一个原因就是复位信号的问题。具体情况如下:
(1)复位电路有问题,不能正常产生复位信号。因为调试时仿真器可能给你提供了复位信号,而脱离仿真器后就没有了;
(2)看门狗的问题。有些51芯片带有看门狗复位功能,如At89c55WD,当程序开启了看门狗后,有时候程序的初始化内容太多了,往往会产生了复位信号,特别是用C语言编程功能时,有时候虽然你明明在程序开始时某个地方关闭了看门狗,但程序依然会复位,这是因为C语言执行效率比汇编低,看似几行代码,有时候要很长时间的,所以在使用开门狗时一定要注意这个问题。而这个问题在使用仿真器时容易被忽视,因为即使你的程序里看门狗复位了,但是仿真器(菊阳仿真器可以开启/屏蔽这个功能)往往会屏蔽了这个复位信号,所以程序仍然会正常运行的。当你把程序烧好后再运行时,你却为发现刚调试好的程序却无法正常运行了,那是因为你的程序一直在不停复位了,注意用示波器观察RST脚可能看不到复位信号的,因为看门狗复位并不影响RST脚的电平。再一种情况就是芯片内部不带看门狗,但是电路中有CPU监控芯片的,它往往是可以提供复位信号的,而且是多种原因的复位信号,如果你发现上述情况,就可以用示波器查看RST脚看是否有电平变化。
所以建议大家做51产品开发时尽量使用CPU监控芯片,向X5045就是非常好用的,因为它还带有Eprom功能,这在很多场合使用的到的,也可以用MAX708等专用复位芯片了,既稳定又方便。
第四篇:51单片机与三菱PLC通讯实例
51单片机与三菱PLC无协议通讯成功
我用了两个晚上的时间查阅一些资料,利用三菱PLC的扩展RS485通讯板与其51单片机连接通讯,可写PLC任意的地址。长度可达1000米,看见网上写的都很烦且对三菱和单片机不是很熟的朋友来说有一定的阅读难度,今天将它与大家分享。希望在此基础上大家能扩展出自己想要的功能,过些时间有空我在写个半双工的程序。硬件部分:
我用的是天祥单片机实验板,由于没有RS485接口,我利用ADM485芯片自制了一个485接口与三菱PLC的扩展RS485通讯如图,但如果要进行半双工通讯,须将P3.0口到下载程序的RS232芯片的线断开可用一个跳线,用RS485的时候断开RS232,用RS232的时候插上跳线帽。硬件连接如图
PLC程序:
通讯我用单片机做主机(只发送指令),PLC做从机(只接收指令),单工单向,以便初学着掌握。
格式:1位启始,8位数据,一位停止。所以PLC寄存器D8120:0C81.plc程序很简单不懂的可以看下三菱PLC的通讯手册。如下图:
三:单片机程序:
#include
/*单片机的头文件*/ unsigned char code tab[]={0x17,0xff};/*PLC输出的Y点数,PLC输出Y灯0125678亮*/ sbit led=P1^1;
/*将RS485置为发送数据模式*/ unsigned char i;void init(){ SCON=0x50;
/*串口中断开*/ TMOD=0x20;
/*定时器设置*/
TH1=0xfd;
/*定时时间的高位*/ TL1=0xfd;
/*定时时间的低位,速度为9600BPS*/ TR1=1;
/*定时器开*/ EA=1;
/*开总中断*/ TI=0;
/*复位串口中断*/ led=1;
/*将RS485置为发送数据模式*/ } void main(){ init();
/*调用子程序*/ for(i=0;i<2;i++){ SBUF=tab[i];
/*将数据发送到串口*/ while(!TI);
/*等待串口数据发送结束*/ TI=0;
/*复位串口中断*/ } } 四:注意点。
1:RS485的线不能接反,否则数据将不正确。
2:单片机的晶振要选择11.0592MHZ,否则PLC接收到数据也不正确。
3:RS485芯片的电源不能接反,否则要烧坏芯片。
今天要去山东调试机器,现在正在高铁上,刚好有空把这篇心得写好,有错误的地方还请大家指正,也希望有共同爱好的一起交流心得。
QQ:79814563 注明时工控交友
电话:***
姓名:黄辉 2011年12月17日 Saturday
第五篇:单片机开发工程师求职简历
基本简历
姓名: 李先生
国籍: 中国
目前所在地: 广州
民族: 汉族
户口所在地: 广东省
身材: 172 cm?56 kg
婚姻状况: 未婚
年龄: 25 岁
求职意向
人才类型: 普通求职?
应聘职位: 嵌入式软件开发(单片机/DLC/DSp):单片机开发工程师、工作年限: 2 职称: 无职称
求职类型: 全职
可到职日期: 一个星期
月薪要求: 3500--5000
希望工作地区: 广州
工作经历
公司名称: 番禺致丰微电器有限公司起止年月:2008-03 ~ 2009-09
担任职务: 测试工程师
工作描述: 进行MCS51单片机(STC系列、AT89系列等)、ARM(LpC21XX)编程和硬件设计,熟悉uc/os和small rtos嵌入式实时操作系统。
教育背景
毕业院校: 韶关学院
最高学历: 本科
获得学位: 工学学士
毕业日期: 2008-06-0
1所学专业: 自动化
语言能力
外语: 英语优秀
国语水平: 精通 粤语水平: 优秀
工作能力
嵌入式系统开发应用技术(MCS51、ARM),熟练掌握汇编语言,C语言,熟悉C++.精通常用通信协议及相关总线:1-wire、I2C、SpI、UART、RS232、RS485等;以KEIL, RealView-MDK/ ADS1.2 , platform Builder 5.0和 eMbedded Visual C++ 4.0为程序开发平台,进行嵌入式系统开发;掌握uc/os和WINCE5.0嵌入式操作系统。熟悉模拟电子技术、数字电子技术和电力电子技术,硬件设计平台为ORCAD和 protel99SE.个人自传
能吃苦耐劳,工作积极肯干,自学能力和动手能力强,能进行MCS51单片机(STC系列、AT89系列等)、ARM(LpC21XX)编程和硬件设计,熟悉uc/os和small rtos嵌入式实时操作系统。
联系方式
通讯地址:
联系电话: ***
电子邮件: diyifanwen@glzy8.com
个人主页: http://www.xiexiebang.com