工程实践与科技创新第12大组本地主系统设计报告_第1页
工程实践与科技创新第12大组本地主系统设计报告_第2页
工程实践与科技创新第12大组本地主系统设计报告_第3页
工程实践与科技创新第12大组本地主系统设计报告_第4页
工程实践与科技创新第12大组本地主系统设计报告_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、技术文件完成时间:2012-6-15项目名称: 本地实现主从多机测控主系统项目开发大组: 1 2小组名称: 本系统小组电子工程系工程实践与科技创新4A本系统设计第1页 共 4 页班级学号具体负责的工作吴行健F09030025090309155电路设计,通信程序调试,大组调试F09030335090309731通信协议设计、程序调试F090300250090309164撰写科技创新4A本系统小组设计摘要:本系统是主从多机测量控制系统,采用全双工的异步串行通信方式,通过RS422 总线和无线收发模块成功实现了与三个功能子系统以及全局控制总系统之间的通信。在物理层上以 MAX483 为接口统,通过无

2、线模块完成对控制指令的,双绞线为传输线。与全局主系,通过单片机的翻译,利用串行口,以帧为传输数据,完成对各个单片机测量控制子系统所的控制。介绍了本地,供大家交流主系统的设计原理及软硬件实现,同时给出了通信协议的设定参考。:本系统;通信协议;RS422 总线;物理层ABSTRACTThe local primary system is a master-slave multi-machine measured-control systemusing full-duplex asynchronous serial communication.It buildcsful communicationb

3、etn the subsystem and the global control system with three functions via RS422 busand wireless transceiver module.On the physical layer,MAX483 is used aserfacechip ,twisted-pairephone line for the transmisline. The present report describes thedesign principles of the local host system software and h

4、ardware realization and alsocommunication protocol settings.KEYWORDSLocal primary system; Communication protocol; RS422 bus; Physical layer第2页科技创新4A本系统小组设计目录概述1编写目的1:.11.21.2.1 RS-422:11.2.2 RS-232 :1TTL 电平信号:1单片机小系统:1网络通信协议:11.2.6 点对点通信 Peer To Pe2P1系统总体说明2系统总体设计概述2总体系统设计指标2人机接口:2从机检测延迟性能指标:22.2.3

5、通信与功能:2系统的硬件结构3硬件总体结构3简介33.23.2.1 MAX48333.2.2 MAX232C4集线板模块描述5功能描述5接口定义5技术要求5集线器 A5集线器 B6无线模块7第3页科技创新4A本系统小组设计单片机8子系统总线接口模块83.7 PC.9主从通信协议10信息帧的基本结构10起始和结束10通信协议版本号10目的地址10参数段长度 LENGTH11命令码与相应码11参数段 INFO11CHKSUM 的计算11下行命令帧形式11上行响应帧形式12通信时序特性13通信协议的程序实现15功能描述15常量定义15变量定义155.4 RS_422 结构体头文件定义及相关函数.15

6、总体设计165.5开发工具17硬件开发工具176.2开发工具177. 调试过程187.1 本系统调试设置18系统功能展示187.2 本7.3 通信协议调试197.4 7.3 调试总结21第4页科技创新4A本系统小组设计课程心得体会和建议22参考资料2310. 附录2410.1 程序.24munications.h24munications.c24slave.c29第5页1. 概述1.1 编写目的信息处理系统是以测量、信号处理和传输、控制和多系统通信等多领域为基础而实现的,是较为复杂和有一定层次结构的测量控制系统。从单片机系统控制的层面解释本地系统是如何工作的,以及本方案的具体实现方法,解释了系

7、统解决方案的整体情况和各模块的功能以及各自之间的协作关系。项目各子模块的开发可以从中了解到系统解决方案的整体情况和各模块的功能以及各自之间的协作关系。工程项目的布置监督也能从中抓住项目的全局概况和技术要点,预见和处理可能发生。1.2:1.2.1 RS-422:当以高数据速率或者长距离进行通信时,差分数据传输可在大多数应用中提供优良的性能。差分信号有助于消除在网络中作为共模电压出现的接地偏移和感应噪声信号的影响。RS-422 规约符合真正多点通信网络要求,并且该标准规定在一条单总线(2 线)上支持 32 个驱动器和 32 个接收器。1.2.2 RS-232 :个人计算机上的通讯接口之一,由电子工

8、业(Electronic Industries Assotion,EIA)所制定的异步传输标准接口。通常 RS-232 接口以 9 个引脚 (DB-9) 或是 25 个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。1.2.3 TTL 电平信号:TTL 电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V 等价于逻辑“1”,0V 等价于逻辑“0”,这被称做 TTL(晶体管-晶体管逻辑电平)信号系统,是计算机处理器控制的设备各部分之间通信的标准技术1.2.4 单片机小系统:包括 CPU(进行运算、控制)、RAM(数据行口、

9、并行输出口等)的一块集成电路。)、ROM(程序)、输入/输出设备(串1.2.5 网络通信协议:指信息网络中使用的通信语言。包括三个要素:(1)语法,即信息格式;(2)语义,某些信息组合的含义;(3)同步,即收、发双方能分辨出通信的开始和结束。1.2.6 点对点通信 Peer To Pe2P点对点通信是指在网络中数据的传输有且只有在两个独立节点中进行的一种通信方式。作为一种常见的网络连接方式,有多种传输协是符合点对点的通信规范的,例如 PPP 协议,Irda 协议等。点对点的通信可以是半双工,也可以是全双工的,视具体的传输链路而定。一般情况下信、红外通信都是点对点的。拨号通第1页2. 系统总体说

10、明2.1 系统总体设计概述本系统(信息处理系统/TS)由五大模块组成,即全局主系统、本系统、超声波测距子系统、水温测量控制子系统、电机转速测量控制子系统。全局主系统是整个通信系统的控制终端和数据处理终端,通过对本系统的控制,从而控制本地各子系统的工作。系统总体结构框图 2.1 所示:图 2.1 系统总体结构框图2.2 总体系统设计指标2.2.1 人机接口:用户可通过按键实现水温测控、电机测控以及超声波基本测距的基本控制与监视功能。通过双 PC 机可以切换主系统和本系统的操作模式,同时全局主系统的优先级要高于本系统。对于水温控制从机,能通过按键增减需要设定的温度以及反馈回的信息、温度的控制;对于

11、电机子系统,能通过按键增减设定的转速以及电机的正反转向和开启停止;对于超声波从子系统,能通过按键修改需要厚度的块数和对应的厚度。2.2.2 从机检测延迟性能指标:从机断开检测时间0.5S。从机接收到命令帧到响应时间0.2S。2.2.3 通信与功能:本系统能收到全局发来的设定命令并返回从机的数据。在控制方式下,采用无线局域网(WIFI)的方式通信,调用 windows 中的 socket 系统,实现轮询式无线数据传输,完成信息交换功能。在本地控制方式下,采用老师的 RS-422 总线集线板,将 PC 的 USB 口通过口连线与集线板上的COM 口对接,实现串口通信,完成对子系统的控制功能。第2页

12、3. 系统的硬件结构3.1 硬件总体结构本系统的结构框图如下:图 3.1 本系统全局框图由图可以看出,本地系统主要包括的硬件模块有集线板模块和无线通信模块。3.2简介3.2.1 MAX483MAX483 是公司生产的用于 RS-485 与 RS-422 通信的低功耗收发器。能够将标准的TTL 电平(05V)转换为满足 RS-422 总线的10V 差分电平。不同的连接方式使之既可以当做接收端电平转换,又可以当做发送端电平转换。MAX483 的引脚图如图 3.2 所示:第3页图 3.2 MAX483 引脚图表 3.1 MAX483 引脚名称及功能描述1第4页交通大学 电子信息与电气管脚名称功能各引

13、脚中,10,11 为 TTL 输入端,7,14 为 RS232 输出端;8,13 为 RS232 输入端,9,12 为TTL 输出端。3.3 集线板模块描述3.3.1 功能描述PC 的 USB 口经过转接线之后输出为标准的 COM 口电平,而单片机的串口为标准的 TTL(05V)电平。本硬件电路模块,为通信网络的子系统提供网络连接端口和通道,实现本地主系统与各个子系统的互联。3.3.2 接口定义本地子系统单片机通过串行口和该模块通信,并且通过 RS422 总线把发送给子系统令及数据传出以及接受各个子系统的反馈数据,三个子系统分别通过三个 RS422 总线接口和本地子系统通信。3.3.3 技术要

14、求集线板模块主要把从单片机发出的串行 TTL 电平信号转换为 RS-422 总线电平,分别传输到三个子系统。由于受到总线自身的限制,有线传输距离受限,约为 5m 左右。3.3.4 集线器 A图 3.4 多机通信RS8422 总线接口示意图该模块的功能为实现总线 RS422 和 RS232 电平的相互转换,并提供通向 PC 的总线通信和接口,只采用上位机 RS232 接口进行调试的接口。在实际的硬件电路中,将总线和调试工作。该电路使用两块 MAX483,先将总线的 RS422 电平转换为 TTL 电平,再通过 MAX232 将第5页TTL 电平转换为 RS232 电平,通向 PC 接口。该电路设

15、计可以使各子系统很方便的与 PC(全局主机)直接通信,但无法引入本机的单片机控制功能,也不能直接接入无线模块,故增加集线器B 以完善这部分功能。3.3.5 集线器 B图 3.5 集线器 B 模块示意图该模块的功能为实现 RS422 和 TTL 电平的相互转换,并实现本地单片机、无线模块、集线器 A 之间的互联:本地单片机可以和无线模块或集线器 A(通向各子系统)实现信息收发。为了节约单片机串口资源,将无线模块和集线器(通过 MAX483 转换成 TTL 电平)的数据接收线通过74HC02的与门合并成一条数据线,通往单片机。该部分的原理如图 3.6 所示。图 3.6 互联原理图第6页由于当总线和

16、无线模块无数据传送时,输出均为,故可以直接通过与门将信号连起来。通过时分复用的方法,只要全局主机和各子系统不同时向本机发送信息,该模块即可以正常通信。从 74HC02 输出的数据线直接与单片机的USART 接收口相连。单片机的 USART 输出端则直接和总线(经由 MAX483 转换)和无线模块的发射端相连。总线的发射使能由单片机的一个 I/O 口控制。当有信息需要发往全局主机时,该 I/O 口输出置 0,则此信,子系统接收不到该信息;当向子系统发送信息时,该 I/O 口输出置 1,则该信号可息与总线以通过总线进行发送。由于无线模块没有发射使能,此时全局主机也能收到发往从机的信息,但全局主机由

17、地址判断可以过滤此信息。需明的是,在 USART 发射信息的最后一个字节与总线使能置 0 之间需要有大约两个字节发射时间的时间间隔。具体处理办法是溢出发射两个字节,这一点将在部分予以说明。由此,集线器B 实现了将总线和无线模块与单片机相连的功能。3.4 无线模块图 3.7 无线模块实物图使用成品模块 SRWF-1021,该模块可以实现 GFSK/FSK 的调制方式,接口波特率为 9600bps,提供 2 个串口三种接口方式,分别为 TTL 电平UART 接口、RS232 接口,以及RS485 接口。该模块共有两个,分别接入于本地系统中的集线器B 和全局主机的RS232 接口。使用该模块的好处之

18、一是可以直接将接收数据以 RS232 输出,即可以直接和 PC 相连而不用再进行电平转换。但实际上发现当直接与 PC 相连时接收信号为乱码,故增加 RS232/TTL 转换电路,如图 3.8。第7页图 3.8 无线模块与 PC 机连接转换电路示意图无线模块的连线方式如图 3.9。图 3.94 无线模块连接方式3.5 单片机使用 ATmega16 单片机进行本机系统的管理。其功能为:空闲时无线模块和数据总线,当接收到完整数据帧时进行错误检查,在根据地址判断信息来源。当该信息是由全局主机向从机发送的指令时,将总线发射使能置 1,并转发该指令,之后关闭使能;若来自从机,则经由无线模块向全局主机发送。

19、串行接口使用USART 端口,波特率为 9600Bd。具体原理在部分中介绍。3.6 子系统总线接口模块第8页图 3.10 各子系统与总线接口示意图各子系统与总线的接口如图 3.10。使用 MAX483 将总线的 RS422 转换为 TTL 通往子系统单片机。该电路共有三组,分别安装于各子系统中。3.7 PC本系统实现中,只使用集线器 A 的上位机 RS232 接口进行调试及。正常时,可以从PC 端口使用串口调试工具(如虚拟主机)监视到本视端口只能监测到总线上的信号,如果需要观测本机向各子系统发射的指令信息。由于 PC 监机向全局主机发送的信息,需要本机在使用无线模块发送信息的同时打开总线使能,

20、使同样的信息也向总线发送(由于地址协议,各子系机的总线发射使能控制端直接接在 VCC 上。统将不对该信息做出回应)。实现方法为:将本由于系统协议的约束,本机向全局主机发送信息时子系统不会向本机发送响应信息,因而不会出现总线竞争。然而为了系统安全性的考虑,该方法仅能用在调试阶段。第9页4. 主从通信协议4.1 信息帧的基本结构通信主机和从机间信息传输,以信息帧方式进行,信息帧的组成结构应符合表 4.1。信息帧在传输时采用全ASCII 字符方式,使其具有较好的可显性和易读性。由通信主机发往从机的信息帧,称为命令帧;由通信从机发往主机的信息帧,称为响应帧。由通信主机发往某特定从机令帧,称为单播命令帧

21、;由通信主机发往所有从机令帧,称为广播命令帧。响应帧是对确定的单播命令帧的回复,两者有一一对应关系;从机收到广播命令帧,不回复任何响应帧。表 4.1 信息帧的基本结构4.1.1 起始和结束起始标志为,相应 ASCII 代码为 0 x7E。结束标志为r (回车符),相应 ASCII 代码为 0 x0D。4.1.2 通信协议版本号V1.0 对应为 0 x11。4.1.3 目的地址在本应用的通信系统中,通信主机和每一个确定的从机,都有唯一的地址应用于通信。按如下方式分配:第10页传输时字符(ASCII 代码)数编码段表示意义命令帧响应帧1SOI起始标识2注 1VER通信协议版本号2注 1ADR目的地

22、址2注 1CMD1RSPD命令码 1/响应标识码2注 1CMD2RTN命令码 2/返回码2注 1LENGTH参数段字节长度2注 1 LENGTHINFO参数段2注 1CHKSUM校验和1EOI结束标识注 1:传输时使用 2 倍的字符数,例如若编码段 VER 的编码为 0 x11,则传输时使用字符1和1表示,即 ASCII 代码 0 x31,0 x30( 数字对应的字符在先,低位在后)。0 x00:主机的地址码。1254(0 x010 xFE):各通信从机的地址码,从 ADR 的地址容量角度看,本应用中最多可同时容纳 254 个通信从机。255(0 xFF):保留,拟作通信主机向所有通信从机传输

23、广播信息时的地址标识。其中:0 x01:分配给水温控制系统。0 x02:分配给电机系统。0 x03:分配给超声波测距系统。4.1.4 参数段长度 LENGTH0254(00H0FFH)4.1.5 命令码与相应码在命令帧中,命令码 CMD1 和 CMD2 组合表示一条命令代码。CMD1 是主码,表示一类命令,一般同类命令的 CMD1 相同;CMD2 是辅码,与主码配合,命令的唯一性标识。在响应帧中,通过响应标识码 RSPD 指示所对应令帧情况,RSPD 取所对应命令帧的CMD1 的值。通信主机收到该响应帧时,可通过阅读 RSPD 段,检验是否是与所发命令帧相对应的响应,减少错误响应对通信系统正常

24、工作的影响。而 RTN 段中的信息则表示了上一个命令帧是否合法4.1.6 参数段 INFOINFO 段格式及编码,由协议使用者根据业务自行定义。信息帧可以没有参数段( 相应LENGTH 取 0)。4.1.7 CHKSUM 的计算除 SOI、EOI 和 CHKSUM 外,其他字节累加求模 256 和,取结果的补码(原码取反加 1)。换言之,除 SOI、EOI 外,其他字节(包括CHKSUM)的原码的模 256 和应为 0。4.2 下行命令帧形式在命令帧中,CMD1 和 CMD2 组合表示一条命令代码。CMD1 是主码,表示一类命令,一般同类命令的 CMD1 相同;CMD2 是辅码,与主码配合,命

25、令的唯一性标识。LENTH 表示数据位的字节长度,INFO 用以传递命令中必要涉及的数据,如设定水温目标值,设定电机转速,获取超电机转速命令)则 INFO 为空。下行命声测距的结果等,当命令中不必要传输数据时(如要求令帧(全局主系统对本系统,或本系统对子系统)中的 CMD1 和 CMD2 的编码方式,以及 LENGTH 和 INFO 的使用实例,本地系统命令帧详见表 4.2。表 4.2 本系统命令帧的格式和内容第11页序号通 信对 象功 能描 述命令帧S OIVE RAD DRCM D1CMD2LENG THINF OCHECKS UME OI1水 温控 制检 测状 态0 x 110 x010

26、 x0 00 x000 x00无程序自动计算/r设 定温 度0 x 110 x010 x0 10 x01 :开始加 热0 x01温度/r0 x00 :停止加 热0 x00无温度0 x 110 x010 x0 20 x000 x00无/r4.3 上行响应帧形式(某通信从机)正常接收命令帧(基本结构要素完整,即 SOI 和 EOI 存在,长度当目的符合要求),并正确命令后,应按要求回复响应帧,且在 RTN 段中指示“正常回复”。通信从机应按以下顺序,依次对命令帧进行:(1)(2)(3)(4)(5)(6)检查地址位是否针对本机检查VER 段;检验CHKSUM;判断CMD1、CMD2 的和有效性;检验

27、 LENGTH 与 INFO 段实际长度是否相符;判断 INFO 段中各参数的和有效性。结果确定响应帧的 RTN 位,若命令帧无错误,则执行该命令。无论命令帧是否从机根据合理,从机一定会根据命令帧给出相应的响应帧。从机给本系统响应帧结构如表 4.3 所示。对于本地给全局的上行数据帧,其格式与从机给本地的响应帧完全相同。表 4.3 从系统响应帧格式与内容第12页序号通 信对象功 能描述响应帧S O IV E RA D RR SP DRTNLE NG THINFOCHECK SUME O I重 启系 统0 x 110 x010 x0 30 x000 x00无/r2电 机转 速检 测状 态0 x 1

28、10 x020 x0 00 x000 x00无/r写 工作 方式0 x 110 x020 x0 10 x00:正转停转0 x00无/r0 x01:正转开转0 x00无0 x02:反转停转0 x00无0 x03:反转开转0 x00无控 制转 速0 x 110 x020 x0 20 x01 正转0 x02 反转0 x01转速/r重 启系 统0 x 110 x020 x0 30 x000 x00无/r3超 声波 测距检 测状 态0 x 110 x030 x0 00 x000 x00无/r测量值0 x 110 x030 x0 20 x00: 查询物块层数0 x00无/r0 x01:查询 1、2层厚度0

29、 x02:查询 3、4层厚度0 x03:查询 5、6层厚度0 x04:查询 7、8层厚度重 启系 统0 x 110 x030 x0 30 x000 x00无/r4.4 通信时序特性Tbb:帧内字节间隔时间; Tcr:命令帧-响应帧间隔时间;Trc:响应帧-下一命令帧间隔时间。表 4.4 通信时序特性第13页符号最小值 MIN最大值 MAXTbb020 msTcr0500 ms1电 机转速状 态检测0 x 110 x 000 x 000 x00 :无错 误0 x01 : VER错误0 x02:CHKSUM 错0 x03:命令0 x04: 参数段长度错 0 x05:或无效参数0 x0 10 x00

30、:程序自 动计算/r0 x01:不写 工作 方式0 x 110 x 000 x 010 x0 10 x00:设定成功/r0 x01:设定失败状态0 x 110 x 000 x 020 x0 10 x00: 正向停转不稳定转速/r0 x01: 正向停转稳定0 x02: 正向运转不稳定0 x03: 正向运转稳定0 x04: 反向停转不稳定0 x05: 反向停转稳定0 x07: 反向运转不稳定0 x08: 反向运转稳定2水 温控制状 态检测0 x 110 x 000 x 030 x0 10 x00:/r0 x01:不设 定温度0 x 110 x 000 x 040 x0 10 x01:设定成功/r0

31、 x00:设定失败温度0 x 110 x 000 x 050 x0 10 x00:温度/r3超 声波 测距状 态检测0 x 110 x 000 x 060 x0 10 x00:/r0 x01:不状态0 x 110 x 000 x 080 x0 2块数值或者厚度值/r图 4.1 显示了这部分的时序关系第14页交通大学电子信息与电气Trc05. 通信协议的程序实现本 们以本机的上、下行控制模块以及各个从机的接口模块通过通信协议进行数据通信。在这里我机下行通信控制模块的程序模板为例来阐述通信协议的实现方法。其他子系统通信协议参照此模板进行补全,从而实现各子系统的控制功能。5.1 功能描述本1.2.3

32、.系统下行通信控制模块可以实现以下几种功能:本地系统在不与全局主系统相连时可以向子系统发送一些命令帧。完成通信协议内容。对三个下属从机进行轮询操作,通过串行通信端口与从机通信,向下传递命令并获得相应响应帧4.5.可对命令帧及响应帧进行命令可以实现通信时序。5.2 常量定义#define BAUDRATE9600/波特率#define MAX_INFO_LENGTH_SEND 1/发送的 INFO 最大长度#define MAX_INFO_LENGTH_RECEIVE 1 /接收的 INFO 最大长度5.3 变量定义char str_received14+(MAX_INFO_LENGTH_REC

33、EIVE1); cursor_receive=0; /接收光标receive_length=0; /接收长度 is_recieved = 0; /是否接收 reset = 0; /是否重启/接收信息数组5.4 RS_422 结构体头文件定义及相关函数#ifndef #define#defineMUNICATIONS_H MUNICATIONS_HMAX_INFO_LENGTH 5struct InfoFramechar ver; char adr;char cmd1_rspd; char cmd2_rtn; char length;char info14+(MAX_INFO_LENGTH1);

34、第15页char chksum;void buildInfoFrame(struct InfoFrame* infoframe, char VER, char ADR, char CMD1_RSPD, char CMD2_RTN, char LENGTH, char* INFO);encode(struct InfoFrame* infoframe, char* encoded);char parseFrame(struct InfoFrame* infoframe, char* str,void send_rspd( struct InfoFrame* rspd );lengthOfStr)

35、;void send_rspd1( char* str_to_send,#endiflength);注:函数实现见附录。5.5总体设计总体设计如下:图 5.1 程序流程图第16页串行口发送子系统控制串行口中断:对读入数据进行处理。判断 SOI 和 EOI 以及长度,并将读入帧存入缓存查询命令并响应进入主循环初始化开始6. 开发工具6.1 硬件开发工具单片机小系统直流稳压电源示波器信号发生器6.2开发工具1PRO EDA99SE,看电路图,如电原理图 SCH(EMATIC) 或 印刷电路板图 PCB2AVR StudioATMEL AVR Studio 集成开发环境(IDE) ,包括了 AVR

36、Assembler 编译器、AVR Studio 调试功能、AVR Prog 串行、并行功能和 JTAG ICE 仿真等功能。它集汇编语言编译、仿真、程序、硬件仿真等一系列基础功能,与任一款高级语言编译器配合使用即可完高级语言的产品开发调试。3ISPlay用于单片机程序的。串口调试助手用于PC 上RS-232 串口收发信号调试的小虚拟主机和虚拟从机调试。第17页7. 调试过程为了实现本系统,大组对整个系统进行了周密的设计,并经过了长时间的调试,下面就是组的调试过程:7.1 本系统调试设置电机转速:任一范围内设定值,取值范围 5,70 r/s目标水温:任一范围内设定值,取值范围30,99 超声波

37、测距模式:任一范围内设定值,取值范围 0,1,测量范围 05 块厚度7.2 本系统功能展示图 7.1 本系统可视化界面如图7.1 所示,本地系统中包含了进度条来使操作更加方便用户可以进度条的比例直接读出水温、电机转速和超声波的信息。同时更有反馈信息,用户可以再接收端看到发送出的 16 进制字符串给回的响应帧字符串,也能在系统运行日志部分看出反馈信息的正误,若是错误会显示报错。同时增加了DEBUG 端口可以直接用此端口生成 CHECKSUM 的指令来进行发送。在通信部分可以通过创建服务器用于和服务器进行连接达到全局和本地之间的通信。第18页图 7.2 报错部分截图同时,如果当输入的设定水温、电机

38、转速等超出预定值时将会如图 7.2 所示报错,如在水温部分输入 123时,则超出了 3099的范围,将会显示出超出范围重新输入的提示。7.3 通信协议调试将本系统切换至本地控制模式,各子系统切换至互连模式;将本系统与总线断开,将本系统与总线集线板断开,将 PC 机通过串口线与总线集线板相连,PC 端使用“虚拟主机”进行下述测试:a. 三台从机能正确接收通信帧以下各测试项目均正常时,证明该子命题为真。1) 对各从机发送检测状态命令,查看各系统是否正常对水温控制子系统发送帧内容:1101000000EFr获得响应帧:110003000100ECr对电机控制子系统发送帧内容:1102000000EE

39、r获得响应帧:110000000100EFr对超声波测距子系统发送帧内容:1103000000EDr获得响应帧:110006000100E9r(分别表示向三个从机询问检测状态,返回系统正常)2) 对三个子系统发送设定指令对水温控制子系统发送帧内容:110101010130BBr (表示设定水温值为 48)获得响应帧:110001000100EEr (表示返回水温设定成功)对电机控制子系统发送命令帧内容:110201010130BAr (表示设定电机正向转速为 48r/s)获得响应帧:110001000100EEr (表示返回电机正向转速设定成功)对超声波测距子系统发送命令帧内容:1103010

40、10100E9r(表示设定的工作模式为自动触发)获得响应帧:110001000100EEr (表示返回工作模式设定成功)3) 对三个子系统发送命令第19页向水温控制子系统发送帧内容:1101020000ECr (表示水温当前状态)获得响应帧:11000200020330B9r (表示水温当前的温度)向电机控制子系统发送帧内容:1102020000ECr (表示电机当前转向及转速)获得响应帧:11000200020330B9r (表示电机当前状态)向超声波测距子系统发送帧内容:1103020000ECr(表示超声波子系统当前状态及所测厚度)获得响应帧:1100020002033001B9r (表

41、示超声波测距子系统的状态及厚度)4)向三个子系统发送重启名令向水温控制子系统发送帧内容:1101030000EBr (表示重启水温控制子系统)获得响应帧:110003000100EBr (表示水温控制子系统重启成功)向电机控制子系统发送帧内容:1102030000EAr(表示重启电机控制子系统)获得响应帧:110003000100EBr (表示电机控制子系统重启成功)向超声波测距子系统发送帧内容:1103030000E9r (表示重启超声波子测距系统)获得响应帧:110003000100EBr (表示超声波测距子系统重启成功)b. 三台从机能正确处理出错帧1) 给从机发送错误的版本号命令帧,从

42、机返回响应,显示出错类型发送帧内容:1001000000EEr应获得响应帧:1100030100ECr(表示正确返回协议中的错误响应帧)2) 给从机发送错误的 CHECKSUM 命令帧,从机返回响应,显示出错类型发送帧内容:1101000000EAr应获得响应帧:1100030200EBr(表示正确返回协议中的错误响应帧)3) 给从机发送错误令指令帧,从机返回响应,显示出错类型发送帧内容:1101050000EAr应获得响应帧:1100030300EAr(表示正确返回协议中的错误响应帧)4) 给从机发送错误的参数长度帧,从机返回响应,显示出错类型发送帧内容:1101020001ECr应获得响应

43、帧:1100030400E9r5) 给从机发送错误的参数帧,从机返回响应,显示出错类型发送帧内容:110101000103EAr应获得响应帧:1100030500E8r(表示正确返回协议中的错误响应帧)第20页7.4 7.3 调试总结调试的过程中还是遇到了很多,经常会碰到对子系统下达指令得到错误的反馈信息的情况,同时还会碰到电平转换电路过热,解决方法是加一个使能端使其的情况。其中诸多问题当中最主要还是怎么能把信道调通,然后在一个的状态下去调试每个子系统令帧。首先做的就是调试系统间的正常通信。采取发送一个字节的形式来调试,调试通顺了以后,接着调试每个子系统的每个命令帧及错误命令帧。调试的过程中还

44、是遇到了很多的的,不过经过大组成员一起的共同努力和以及对别的大组借鉴经验后,最终还是把难题都给解决了。第21页8. 课程心得体会和建议科创4A是大学科创系列课程的最后一站,为三年懵懂的科创画上了电子系每个学生都需要付出较多的时间和精力的一门课,每一次在调试程序,那些伴随着汗水、欢笑的时光终将成为每一个电子系学生心的。科创课程是焊接电路,每一次纠结的好的回忆。有位老师曾经这样说:电子系没有个人主义,对学生的团队合作能力有极高的要求。本次科创采用的是多团队协作的形式,这正是如今社会在工作和科研中普遍采用的一种工作形式。一个庞大的工程不是考一个人能独立完成的,于是如何与他人合作、沟通、协调,成为了须

45、面对的一个问题。因此,本次科创也让了解了一个团队是如何的,让认识到在以后的工作和学习中如何才能更好地融入团队之中。特别是到了最后的各组之间联调的过程中,各组之间在硬件上和上都难免会存在兼容性上,如何协调,如何让系统正常地,这些问题都是我们在以前的科创中没有碰到过的。这些问题给带来了不小的困扰,也曾迷茫过,失落过,但是团队成员之间互相鼓励,以集体的力量战胜了,顺利完成了实验的要求。科技创新作为电院和电子系的一门招牌课程,给留下了太多的回忆。这门课为的学习提供了一个全新的,让学会如何在未知世界中摸索着前进,充分发挥自己在学习研究中的能动性,以积极的主动的态度面对学习,面对锻炼。,对的实践能力和综合

46、素质都有很好的最后衷心感谢帮助的老师,助教以及学长们,祝愿电院科创课程越办越好。第22页9. 参考资料1 科创讲座资料 422 总线集线板Pro电路原理图2,科创4A RS422 主从通信协议第23页10. 附录10.1 程序munications.hMUNICATIONS_HMUNICATIONS_H#ifndef#define#include #include #define MAX_INFO_LENGTH 5struct InfoFramechar ver; char adr;char cmd1_rspd; char cmd2_rtn; char length;char info14+(

47、MAX_INFO_LENGTH1);char chksum;char calcChkSum(struct InfoFrame* infoframe);void buildInfoFrame(struct InfoFrame* infoframe, char VER, char ADR, char CMD1_RSPD, char CMD2_RTN, char LENGTH, char* INFO);encode(struct InfoFrame* infoframe, char* encoded);char parseFrame(struct InfoFrame* infoframe, char

48、* str, void send_rspd( struct InfoFrame* rspd );void send_rspd1( char* str_to_send,length);#endiflengthOfStr);munications.cmunications.h#include#include #include 第24页/计算 chksum,存在 infoframe 中(infoframe 为检测通信协议方便所做 InfoFrame 型变量) char calcChkSum(struct InfoFrame* infoframe)char temp = (char)(infofram

49、e-ver + infoframe-adr + infoframe-cmd1_rspd + infoframe-cmd2_rtn + infoframe-length);i = 0;for (; i length; i+)temp = (char)(temp +infoframe-infoi);return (char)(temp + 1);/初始化 infoframevoid buildInfoFrame(struct InfoFrame* infoframe, char VER, char ADR, char CMD1_RSPD, char CMD2_RTN, char LENGTH, c

50、har* INFO)infoframe-ver = VER; infoframe-adr = ADR;infoframe-cmd1_rspd = CMD1_RSPD; infoframe-cmd2_rtn = CMD2_RTN;infoframe-length = LENGTH;i = 0;for (; i length; i+)infoframe-infoi = INFOi;infoframe-chksum = calcChkSum(infoframe);/取出并转换char toDoubleChar_high(char b)第25页unsigned char high = b / 16;i

51、f (high 9) return (char)(A + high - 10);else return (char)(0 + high);/取出低位并转换char toDoubleChar_low(char b)unsigned char low = b % 16;if (low 9) return (char)(A + low - 10);else return (char)(0 + low);char toSingleChar(char high, char low)if(high=A) high-=(A-10);else high-=0;if(low=A) low-=(A-10);els

52、e low-=0; return (highver);encoded2=toDoubleChar_low(infoframe-ver);encoded3=toDoubleChar_high(infoframe-adr);encoded4=toDoubleChar_low(infoframe-adr);encoded5=toDoubleChar_high(infoframe-cmd1_rspd);第26页encoded6=toDoubleChar_low(infoframe-cmd1_rspd);encoded7=toDoubleChar_high(infoframe-cmd2_rtn);enc

53、oded8=toDoubleChar_low(infoframe-cmd2_rtn);encoded9=toDoubleChar_high(infoframe-length);encoded10=toDoubleChar_low(infoframe-length);i;for(i=0;ilength;i+)encoded11+(iinfoi); encoded12+(iinfoi);encoded11+(infoframe-lengthchksum);encoded12+(infoframe-lengthchksum);encoded13+(infoframe-length)length)ve

54、r = toSingleChar( str1,str2 ); infoframe-adr = toSingleChar( str3,str4 ); infoframe-cmd1_rspd = toSingleChar( str5,str6 ); infoframe-cmd2_rtn = toSingleChar( str7,str8 );infoframe-length = toSingleChar( str9,str10 );lengthOfStr)infoframe-chksum = toSingleChar( strlengthOfStr-3,strlengthOfStr-2 ); if

55、 ( ( lengthOfStr - 14 )/2 0 )i = 0;for ( ;iinfoi = toSingleChar( str11+2*i,str12+2*i );/从 char中信息帧,返回结果为错误代码char parseFrame(struct InfoFrame* infoframe, char* str,lengthOfStr )/struct Infoframe* infotemp = setFrame( str, lengthOfStr);setFrame( infoframe, str, lengthOfStr);if ( str0 != )return 255;el

56、se if (lengthOfStr 3 | toSingleChar( str7,str8 ) 3 ) return 3;else if ( ( lengthOfStr - 14 )/2 != toSingleChar( str9,str10 ) )return 4;/setFrame( struct InfoFrame* infoframe, char* str,lengthOfStr);return 0;void send_rspd( struct InfoFrame* rspd )/PORTD |= (1PD2);char str_to_send 14+(MAX_INFO_LENGTH

57、1) ;第28页count=0;length = encode( rspd,str_to_send ); PORTD |= 0 x04;dowhile(!(UCSRA&(1UDRE);UDR=str_to_sendcount;/while( !TXC ); count+;while( !TXC );while( length- );while(!(UCSRA&(1UDRE);/PORTD2 口发送使能信号 ;/PORTD &= (1PD2)PORTD &= 0 xfb;void send_rspd1( char* str_to_send,UCSRA |= 1UDRE;dolength)whil

58、e(!(UCSRA&(1UDRE);UDR=*str_to_send+;/str_to_send+;/count+;while( -length );slave.c/AVR application builder : 2012-04-06 12:01:38/: M16/ Crystal: 8.0000Mhz #include#include munications.h第29页#include #define BAUDRATE9600 /波特率#define MAX_INFO_LENGTH_SEND 1#define MAX_INFO_LENGTH_RECEIVE 1/变量定义/通信部分数据ch

59、ar str_received14+(MAX_INFO_LENGTH_RECEIVE1); cursor_receive=0;receive_length=0; is_recieved = 0;reset = 0;void control_cmd(lengthOfReceived)/对命令做出,并做响应帧struct InfoFrame frame_received; struct InfoFrame frame_to_send;char aMAX_INFO_LENGTH_SEND ;char errorinfo=parseFrame(&frame_received, str_received

60、, lengthOfReceived);if(frame_received.adr!=1) return;/地址不匹配,不是水温从系统if(errorinfo!=0) /失败buildInfoFrame(&frame_to_send, 0 x11, 0 x00, frame_received.cmd1_rspd, errorinfo, 0 x00,a );PORTD |= (1PD2);send_rspd( &frame_to_send ); PORTD &= (1PD2);return;第30页/检测状态 /if(frame_received.cmd1_rspd=0 x00 & frame_

温馨提示

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

评论

0/150

提交评论