科技创新6-第03大组远程主系统设计报告_第1页
科技创新6-第03大组远程主系统设计报告_第2页
科技创新6-第03大组远程主系统设计报告_第3页
科技创新6-第03大组远程主系统设计报告_第4页
科技创新6-第03大组远程主系统设计报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FFFF摘要为了打破区域的限制,提高系统控制的灵活性,在测控系统中增设了控制主系统。控制主系统通过无线模块与本系统通信,完成对子系统状态的监测和控制。较为详细的阐述了控制主系统的软件与硬件的原理与实现方式。:Tomakethewholesystemmoreflexible,weaddtheremotecontrolsystemtothemassureandcontrolsystem.Theremotesystemcommunicatewiththelocalsystemwirelesslytomassureandcontrolthesubsystems.Thereportexinthehardwarestructureandsoftwaredesignoftheremotesystem.remotemainsystem;softwaredesign;hardware 概 编写说 名词定 1.2.1测控系 1.2.2主系统的嵌 主系统级的并发 系统总体说 课题任务规定的设计要 实际完成后的功 系统嵌套功 无线通信功 主系统级并发 主系统之间的信道及硬件设 无线信 无线通信模块描述 功能描 接口定 技术要 FC-201/VB(2.0)微功率数传模块介 无线模块电路设 主系统之间的通信方式及软件设 命令的转发与响应共 层次结构的识 实时的共 主系统之间通信测 5.1主系统层次结构的自动识 主系统级操作并发 实时的共 无线通信距 开发环 硬件开 软件开 致 参考资 附 主系统之间通信部分代 课程学习心得和建议意 概本文档主要介绍了作为测控系统控制终端的主系统的软件与硬件实现方式。测控在本文中,测控系统特指由主系统、本系统以及各个子系统共同组成的完成测量与控制功能的总系统,简称系统,包括上位机用户界面以及用以与本系统进行无线通信的主系统具有可套接性,即一个系统可以通过另一个主系统间接与本系统建 系统总体说主系统可实现本系统的全部功能,具体功能可参见本系统设计报告相关章节。本通过串口直接相连可实现各层嵌套的主系统之间的通信。每层主系统在实现本系成的系统开销,尽量的在各层系统之间共享信息,我们又实现了实时的共享,即在开启实时控功能后,只由最系统发送状态查询命令,其他各层系统共享该信息,从而避免了各层系主系统,层次主系统,层次本无线通信模块通过相应的接口电路与最低一级的主系统相连,各层嵌套的主系统的信息逐级下达到最低一层系统进行发送;类似的,通过无线模块接收到的信息同样从最底层主系统开虽然通信协议需要各系统之间传递信息严格的顺序性,但是这一点应做到对用户透明。即用户不必关心是否应该发送命令,而由各层嵌套的和本系统进行合理调度,保证多个用主系统之间的信道及硬件设各层之间主系统直接通过串口线相连,而第一层主系统与本系统之间为无线信道,采用FC-201/VB(2.0)微功率数传模块为主要功能部件。本部分主要介绍无线信道与无线通信模块的图3-1第一层主系统与本系统的无线信无线通信模块描述本模块实现的是本系统和主系统之间的无线通信,实现数据块的无线传输,可以有效的提升主系统控制的距离,并且能够减少连接线缆,在一定程度上允许本系统以及各个子系统具有移动性,使得本地部分具有一定的灵活性。无线模块我们使用的是市友讯达科技发生产的FC-201/VB(2.0)微功率数传模块,所以后以此为基础进行介绍;TTL电平转换PCUSB接口。该模块(-21V(2.)微功率数传模块)是半双工的通信模块,因而有三个接口,分别是数据输数据输口和模控制口其中模控口是为了制实现据的接还是发。微功率发射:为10高能力和低误码率:基于FSK的调制方式,采用高效前向纠错信道编码技术,提高中FC-201/VB8FC-201/VBTTL可,其它如空中收/发转换,控制等操作,FC-201/VB能够自动完成. 3-2FC-201/VB(2.0)微功率数传模块图[1](a结构框图(b)外形结构63-1。3-1FC-201/VB123TxD45直流电源63-2FC-201/VB1234无线模块电路设1122334456USB转换接USB转换接在本次实验中用到了FC-201/VB(2.0)微功率数传模块和USB转换口两个器件,其他的是电3-3所示。USBTTLUSB通用格式,并在PC1,2,3USBPC3,4LED灯相接则可以显示数据发送的状态和数据接收状态。主系统之间的通信方式及软件设主系统的软件在PC上用C#实现,复用了本系统的用户界面以及信息帧解析、编码等基本程序,因此也具有命令级操作并发性(详见本系统报告软件设计部分)。这里着重介绍主由于主系统的正常工作需要本系统进行参与,我们为本系统也增加了相关代码。各层主系统与本系统统称为“主系统”,在必要时再加以区分。主系统向从机发送令帧与本系统一致,符合主从通信协议。主系统发送令有两种,一种是面向从机令,目标地址为01~03;另一种是处理主系统之间事务令,目系统之间的通信方式仿照主从通信的问答方式:主系统向下发送命令,低层主系统进行响应回本主系统,层次发送响图4-1多层主系统令转发与响应共一条命令后,如果得到正常响应,需要及时通知到其他主系统进行更新。而由于与低层之间以问答形式通信,处于低层的主系统无法将更新信息主动告知0(当前层),1(上层)。当一层主系统接收到上层下发令时,应当将该队列送入命令队列,并将1送入命令源标志队列;如果当前层用户发送命令,则将命令入队的同时将0送入命令源标志队列。当收到响应时,根据命令源标志队列队首的01,将响应向上回发。命令的4-2。命令转 响应共接到上层命命令源标志列队首为否是结处理响处理响向上回发响收到响结结4-2publicvoidcmdEnqueue(stringcmd,intsender){}主系统具有识别自身所处层次的功能,这涉及到主系统之间事务的处理。某层主系统可以向下发送查询层次结构命令,正常的结果是自该层向下所有主系统都可以识别出自身所处层次结构的识别按照如下方式进行:某层主系统发送命令帧;该命令一直向下转发到本地主系统;本系统回发响应帧,参数段为0;每层主系统收到响应后,将参数段信息加1即得到所处层次;如果命令由上层主系统发送,将参数1后的响应帧回发给上层。关于层次结构识别令帧与响应帧格式见表4-1。表4-1检测系统层次令与响命~无程序自动计响~层程序自动计对于本系统,接收到命令后,只需要返回参数段内容为“00”的响应帧。而对于主系收到收到响命令源标志列队首为是否向上回发响(参数段已结通知用户界图4-3结通知用户界用户界面相关部分如图4-4所示,主要是在Paint响应代码中实现。Paint在调用Invalidate4-3Invalidate函实时的共多层次主系统的实时问题:实时要求主系统周期地发送命令。假设系统中存在n-1层主系统和一层本系统,如果不采取措施,n层主系统将在一个周期内总共发送n次相同的层主系统可以共享所获得的从机响应,从同一次响应中获取从机的当前状态。为了实现实 共享,各层主系统之间需要沟通信息。这涉及到另外两条主系统之间事务处理令:请求实时、释放实时,其格式如表4-2与表4-3所示。表4-2请求实时令与响命~查询周(短/中/长程序自动计响~(允许/程序自动计表4-3释放实时令与响命~无程序自动计响~无程序自动计该层拥有实权该层拥有实权否是收到命结结回发响将命令向下转放弃实 是是否开启了 功能否是收到命结结为了防止出现这种情况,我们规定了实时权的超时处理:对于任一层次的主系统,在放弃实时的时候启及时如果15秒之内有接到上层查命令,么由该向下请实时测试方法:将第一层主系统通过无线模块与本系统连接,然后将第二层主系统与第一层主系统通过串口连接。在第二层主系统上发送“检查主系统层次”命令。主系统级操作并发性:各层主系统与本系统之间的操作不受影响,可同时进行,不必测试方法:3层主系统上对各子系统进行操作。实时的共测试方法:1.在3层主系统上均开启对水温测控子系统的实时功能;2.关闭第2层主系统的实时功能;3.开启第2层主系统,然后退出。预期正常现象:1.的主系统向低层的主系统请求实时,得到响应后只有第2层主系统发送命令,第1层主系统和本系统共享水温测控子系统的响应;2.第2层主系统释放实时,第1层主系统接到通知后开始发送命令;3.第2层主系统获得实时权,退出15秒之后第1层主系统重新获得实时权。开发环

VisioStudio.NETFramework2.0 致首先,要感谢的是老师给我们开展的PPT讲座,讲座上耐心和详尽给了我们科创教学辅导,们一些咨询和帮助,让我们少走了一些弯路,在此表示诚挚的感谢!同时也感谢科创里的每一位指导老师,感谢在我们的设计和实践中给与的指导、答疑和帮助,让我们逐步走出疑惑,逐步查错排难,也拾起了信心,同时感想给了我们参与项目设计的机会,让我们的理论学习与再者,感谢同在做科创的认识的、不认识,在我们遇到问题时他们给了许多经验EE的科创的团队精神与同学之间的淳朴的友爱。而这次与的一同奋斗与以往的科创1,2,5然后,感谢的每一位助教老师,感谢每天中午早早的到来,晚上被我们拖的那么晚回去,在傍晚的时候甚至只能吃外卖,感谢给与我们的时间上的方便,同时也感谢总是努作的,它让我们认识到在以后的工作和学习中如何才能更好地融入团队之中。不仅是期过程中这些问题都是对这个团队的,尤其是对大组长的。但是我们团队成员之间互相鼓励,在大组长的带领下,我们以集体的力量战胜了,顺利完成了实验的要求。在这个过程中,我们的组后经过我们的共同努力,最终的完成了任务。在此也要特别提出感谢我们的大组长同学,参考资附主系统之间通信部分代//#defineusingusingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO.Ports;usingSystem.Threading;usingSystem.Windows.Forms;namespace{publicclass{privateQueue<string>cmdqueue=newpublicQueue<int>cmdsenderqueue=new//表示刚刚发送令已经有响publicobjectgotrespond=newobject();publicboolwaitingrspd=false;publicobject Opened=newobject();public Opened=newpublicSerialPort =newSerialPort();publicSerialPort =newSerialPort();publicThreadpublicUltraSoundSysultraSoundSys;publicMotorSysmotorSys;publicTemperatureSystemperatureSys;MainFormmainform;publicSystem.Timers.Timerdowntimeout=new

publicSystem.Timers.Timerdowntimeout=newSystem.Timers.Timer(1500);publicSystem.Timers.Timeruptimeout=newSystem.Timers.Timer(15000);publicstringcurrentcmd="";publicCommunications(MainFormmf){mainform=mf;sender=newThread(newThreadStart(cmdSend));gotrespond=true;downtimeout.AutoReset=false;downtimeout.Elapsed+=newuptimeout.AutoReset=uptimeout.Elapsed+=new.DataReceived+=new .DataReceived+=new ultraSoundSys=newUltraSoundSys(mf);motorSys=newMotorSys(mf);temperatureSys=newTemperatureSys(mf);}public (stringcomname,int{.PortName=.BaudRate=.Parity=}public (stringcomname,int{#if

.PortName=.BaudRate=.Parity= }publicvoidcmdEnqueue(stringcmd,intsender){}privatevoidcmdSend(){while{if(cmdqueue.Count==0)Monitor.Wait(cmdqueue);if( {mainform.Invoke(newnoArg( }waitingrspd=true;if{bytech=(byte)uint.Parse(currentcmd.Substring(currentcmd.Length-3,2),ch=(byte)(ch-currentcmd="~2"+currentcmd.Substring(2,currentcmd.Length-}if{bytech=(byte)uint.Parse(currentcmd.Substring(currentcmd.Length-3,2),bytecd=(byte)uint.Parse(currentcmd.Substring(5,2),ch=(byte)(ch-32+currentcmd=currentcmd.Substring(0,5)+"20"+currentcmd.Substring(7,currentcmd.Length-10)+InfoFrame.toDoubleChar(ch)+'\r';}if{bytech=(byte)uint.Parse(currentcmd.Substring(currentcmd.Length-3,2),bytecd=(byte)uint.Parse(currentcmd.Substring(9,2),ch=(byte)(ch-240+currentcmd=currentcmd.Substring(0,9)+"F0"+currentcmd.Substring(11,currentcmd.Length-14)+InfoFrame.toDoubleChar(ch)+'\r';}if{charch=(char)(currentcmd[currentcmd.Length-2]+1);if(ch=='G')ch='0';if(ch=='9'+1)ch=currentcmd=currentcmd.Substring(0,currentcmd.Length-2)+ch+'\r';}intcmdsender=cmdsenderqueue.Dequeue();mainform.Invoke(mainform.recorddownsend,newstring[]{(cmdsender>0?"()":"(本地)")+currentcmd});downtimeout.Enabled=true;waitingrspd=false;}}privatevoidhandleDownTimeOut(objectsource,System.Timers.ElapsedEventArgse){InfoFramecmd=newInfoFrame();stringerror="";cmd.parseFrame(currentcmd,referror);switch(cmd.adr){caseultraSoundSys.ready=false;casemotorSys.ready=false;casetemperatureSys.ready=false;default:}mainform.Invoke(mainform.recordtimeout,newstring}//上级系统长时间没有命令,取消其实时权privatevoidhandleUpTimeOut(objectsource,System.Timers.ElapsedEventArgs{mainform.Invoke(new}privatevoidhandle_up_time_out(){mainform.timer_controlled_by_distant=false;#if(DISTANT)//还要通知下ifcmdEnqueue(newInfoFrame((byte)uint.Parse(Properties.Resources.CurrentVersion,0x00,0x01,0x01,0x00,newbyte[0]{}).encodeToString(),

}privatevoid NotOpen(){temperatureSys.ready=false;motorSys.ready=false;ultraSoundSys.ready=false;}private _DataReceived(objectsender,SerialDataReceivedEventArgs{//收到系统的信intlen= stringcmd_str="";inttimes=while(len0&×11)//接收最多持续{char[]buffer=new.Read(buffer,0,len);cmd_str+=newstring(buffer);len= }mainform.Invoke(newhandleRespond(handle_distant_call),newstring[]{cmd_str}private _DataReceived(objectsender,SerialDataReceivedEventArgs{intlen= stringrspd="";inttimes=while(len0&×<11)//接收最多持续{char[]buffer=new.Read(buffer,0,len);rspd+=newstring(buffer);len= }mainform.Invoke(mainform.hdrspd,newstring[]{rspd});downtimeout.Enabled=false;}publicvoidhandle_distant_call(string{//对消息的响uptimeout.Enabled=if(mainform.timer_controlled_by_distant)uptimeout.Enabled=InfoFramecmd=newInfoFrame();stringerror="";byteiferror=cmd.parseFrame(cmd_str,refif(iferror>6)return;if(iferror>0){newInfoFrame((byte)uint.Parse(Properties.Resources.CurrentVersion,0x00,cmd.cmd1_rspd,iferror,0x00,newbyte[0]).encodeToString());}if(cmd.adr>{cmdEnqueue(cmd_str,1);}if(cmd.cmd1_rspd==1&&cmd.cmd2_rtn=={//请求实时if(cmd.length!=newInfoFrame((byte)uint.Parse(Properties.Resources.CurrentVersion,0x00,cmd.cmd1_rspd,4,0x01,newbyte[1]{1}).encodeToString());}if([0]!=1&&[0]!=2&&[0]!={//或无效参newInfoFrame((byte)uint.Parse(Properties.Resources.CurrentVersion,0x00,cmd.cmd1_rspd,0x05,0x01,newbyte[1]{1}).encodeToString());}mainform.recordSendOrReceive("请求实时

mainform.timer_controlled_by_distant=true;switch([0]){casemainform.optform.enqInterval=OptionsForm.SHORT_INTERVAL;mainform.rtsvTimer.Interval=OptionsForm.SHORT_INTERVAL;casemainform.optform.enqInterval=OptionsForm.MID_INTERVAL;mainform.rtsvTimer.Interval=OptionsForm.MID_INTERVAL;casemainform.optform.enqInterval=OptionsForm.LONG_INTERVAL;mainform.rtsvTimer.Interval=OptionsForm.LONG_INTERVAL;}newInfoFrame((byte)uint.Parse(Properties.Resources.CurrentVersion,0x00,0x01,0x00,0x01,newbyte[1]{0}

cmdEnqueue(cmd_str,1);elseif(cmd.cmd1_rspd==1&&cmd.cmd2_rtn=={//停止实时if(cmd.length!=newInfoFrame((byte)uint.Parse(Properties.Resources.CurrentVersion,0x00,cmd.cmd1_rspd,0x04,0x00,newbyte[0]{}).encodeToString());}mainform.recordSendOrReceive("停止实时mainform.timer_controlled_by_distant=false;uptimeout.Enabled=false;newInfoFrame((byte)uint.Parse(Properties.Resources.CurrentVersion,0x00,0x01,0x01,0x00,newbyte[0]{#if(DISTANT)//还要通知下if(!mainform.enabledSV())cmdEnqueue(cmd_str,

}elseif(cmd.cmd1_rspd==2&&cmd.cmd2_rtn=={//停止实时if(cmd.length!=newInfoFrame((byte)uint.Parse(Properties.Resources.CurrentVersion,0x00,cmd.cmd1_rspd,0x04,0x00,newbyte[0]{}).encodeToString());}

new0x00,cmd.cmd1_rspd,0x00,0x01,newbyte[1]{0

new0x00,cmd.cmd1_rspd,cmd.cmd2_rtn,0x00,newbyte[0]{

}

new0x00,cmd.cmd1_rspd,0x03,0x00,newbyte[0]{}publicvoidhandl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论