1、本科毕业设计(20届)基于RS485通信的主从式激光器控制系统的设计所在学院专业班级电气工程及其自动化学生姓名学号指导教师职称完成日期年月II摘要【摘要】本文研究的是基于RS485总线通信的主从式激光器远程控制系统,核心工作是实现上位机(控制器)与下位机之间的远程通信。系统采用上位机控制、下位机应答的主从式控制方案,通过自定义串行通信协议,实现了上位机与多个单片机系统的交互式通信及控制的功能,通信波特率为9600BPS。系统可同时连接128个下位机,每个下位机可支持214种操作,每种操作均由控制器上唯一的按键进行控制。系统中每个下位机被赋予唯一的本机地址(ID),当且仅当接收到符合自己ID的数
2、据信息时才予以应答,控制激光器模拟器件动作,具体表现为控制相应通道的LED点亮、将该下位机地址信息回发至上位机。本系统设计成本低、稳定性好、实时性强,具有可扩展性、很好的实际应用价值。【关键词】单片机;RS485差分总线;通信协议;主从式结构。IIIABSTRACT【ABSTRACT】THISSTUDYISBASEDONTHERS485BUSCOMMUNICATIONMASTERSLAVEREMOTECONTROLSYSTEMOFLASERS,THECOREWORKISTOACHIEVETHEREMOTECOMMUNICATIONBETWEENHOSTCOMPUTERCONTROLLERAND
3、LOWERMACHINESTHESYSTEMADOPTEDTHEMASTERSLAVECONTROLSCHEMEOFHOSTMACHINEPOLLSANDLOWERMACHINESANSWERTHROUGHACUSTOMSERIALCOMMUNICATIONPROTOCOL,TOACHIEVETHEINTERACTIVECOMMUNICATIONANDCONTROLFUNCTIONSBETWEENCONTROLLERANDMULTIPLESINGLECHIPSSYSTEMS,COMMUNICATIONSBAUDRATEIS9600BPSTHENUMBEROF128LOWERMACHINESCA
4、NBECONNECTEDTOTHESYSTEMATTHESAMETIME,ANDEACHLOWERMACHINECANSUPPORT214SPECIESOPERATIONS,EACHOPERATIONARECONTROLLEDBYTHEONLYBUTTONONTHECONTROLLEREVERYLOWERCOMPUTERISASSIGNEDAUNIQUEADDRESSNUMBERID,THENEXTCREWRESPONSESIGNALWASGIVENONLYIFTHERECEIVEDIDOFTHECOMMANDWITHHISOWNID,WHILETHELASERANALOGACTIONS,SP
5、ECIFICPERFORMANCECONTROLTHELEDLIGHT,THELOWERMACHINEADDRESSINFORMATIONBACKTOCONTROLLERTHESYSTEMISLOWCOST,GOODSTABILITY,REALSTRONG,SCALABILITYANDGOODPRACTICALVALUE【KEYWORDS】SINGLECHIP;RS485DIFFERENTIALBUS;COMMUNICATIONPROTOCOL;MASTERSLAVESTRUCTUREIV目录1引言111选题的背景和意义112本文内容简介12系统设计方案的选择321通信方案的选择322上位机3
6、23下位机424电源425系统总体设计框图43系统硬件设计631电源电路632上位机6321按键模块6322单片机主控模块7323TTL电平转RS485电平模块8324上位机工作原理933下位机94系统软件设计1041通信协议的制定10411串口通信协议10412数据帧结构10413波特率的设置1142上位机控制程序的设计1143下位机控制程序的设计145通信的可靠性分析1751信号传输问题1752多机分时复用问题176系统测试与总结18V61系统调试18611硬件调试18612软件调试1862测试结果2263总结与展望22参考文献24致谢错误未定义书签。附录251、产品实物图252、电路原理
7、图263、PCB板图274、程序清单2811引言11选题的背景和意义激光器的发明是20世纪科学技术的一项重大成就,它使人们终于有能力驾驶尺度极小、数量极大、运动极混乱的分子和原子的发光过程,从而获得产生、放大相干的红外线、可见光线和紫外线(以至X射线和射线)的能力。激光科学技术的兴起使人类对光的认识和利用达到了一个崭新的水平。由于激光器具备的种种突出特点,被很快运用于工业、农业、精密测量和探测、通讯与信息处理、医疗、军事等各方面,并在许多领域引起了革命性的突破。如在通信领域,一条用激光柱传送信号的光导电缆,可以携带相当于2万根电话铜线所携带的信息量。今后,随着人类对激光技术的进一步研究和发展,
8、激光器的性能和成本将进一步降低,但是它的应用范围却还将继续扩大,并将发挥出越来越巨大的作用。随着激光器技术的发展,其控制方面的研究也随之引起重视,本课题就将对这方面的问题进行研究。就现阶段来讲,单片机技术日益成熟、性价比不断提高,现已在工业现场测试及控制领域得到广泛应用;在通信领域传统的“点对点”通信方式已经远不能满足各种设计的需要,多机通信便应运而生(多机通信是指由两台以上单片机组成的网络系统,可通过串行通信实现对某一过程的控制),并已成为通信控制领域的主流。紧随单片机和微机技术发展的步伐,单片机的应用已不再局限于传统意义上的自动监测、控制,而是形成了以网络为核心的分布式多点系统发展的趋势,
9、以达到经济性、方便性和时效性等方面的要求。单片机的多机通信是在单片机的发展与行业标准的提高上发展起来的一个研究方向。单机控制已逐渐不能满足设计的需要,多机协调工作是一个非常重要的发展趋势。多机应用的关键在于各个终端之间的互相通信、数据传输。单片机多机通信在未来的工业控制、通信、家用电器等领域都将得到很大的发展,而单片机依靠其体积小、性价比高等优势一定会在未来的各个控制领域得到更好的发展。综上所述,设计单片机控制激光器控制器之间的多机远程通信的课题具有一定的应用价值,该系统同时还可以应用于其他设备的控制,并且具有很好的扩展性。12本文内容简介本课题研究的是基于RS485差分总线的主从式激光器远程
10、控制系统,采用上位机与下位机的架构,该系统需要完成的核心工作是实现控制器(上位机)与下位机之间的远程通信,正文主要由四大部分组成,下面将对各部分的主要内容进行简单的说明。第一部分,系统方案选择,包括通信方案的确定,系统的总体规划。系统采用上位机(控制器)和下位机(激光器系统)的结构,二者之间通过RS485总线网络进行远程通信,实现对激光器设备的远程控制。第二部分,硬件电路设计,这是系统设计的关键,硬件设计过程中需要注意RS485通信2中硬件在抗干扰等方面的设置,如本系统中采用在总线末端跨接120终端电阻的方式来实现系统的阻抗匹配以减少干扰,芯片电源与地脚之间串接去耦电容,消除高频信号干扰,电源
11、采用12V直流稳压电源直接供电等方法,以保证系统稳定工作。第三部分,系统软件设计,RS485总线标准对其电气特性做了具体规定,但并未对通信协议做具体的设定,为保证系统通信安全可靠的进行,系统需要有完善的通信协议予以协助,文章在该部分,给出了系统自定义的串口通信协议、数据帧格式、编码方式及各模块的软件控制程序的设计过程。最后,系统调试与总结。该部分针对调试过程中遇到的种种问题以及解决的方法进行总结分析,并给出调试结果,最后指出系统有待完善的地方。32系统设计方案的选择21通信方案的选择方案一采用RS232总线RS232串口总线标准是一种用于低速率串行通信、可以增加通信距离的单端通信标准,采取非平
12、衡传输方式,其收发端数据信号均以地信号作为参考。RS232总线具有以下不足首先,接口电平较高且与TTL电平不兼容,因此需使用电平转换电路才可与TTL电路连接;其次,传输速率较低,在异步传输时,波特率为20KBPS;再次,接口由一根信号线和一根信号返回线构成共地形式,这种共地传输形式容易产生共模干扰;传输距离有限、共模抑制能力差、双绞线的分布电容,导致其传输距离最大约15M,且不支持多机通信。方案二采用RS485总线RS485是在RS422基础上制定的串行数据接口标准,采用平衡式发送、差分式接收的数据收发器来驱动总线,其接口组成半双工网络,一般只需二根数据线和一根接地线(在距离较短的情况下可不接
13、,采用屏蔽双绞线传输。下面对该RS485总线的具体特性作如下说明电气特性,逻辑“1”两线间的电压差为26V表示,逻辑“0”当两线间的电压差为2V6V表示,该特性因选用的RS485芯片的不同而异;数据的最高传输速率为10MBPS;接口采用平衡驱动器、差分接收器,抗共模干扰、抗噪声干扰能力大大提高;最大传输距离为1200M(标准值),总线上允许连接多达256个收发器即具有多站能力,这样用户可以比较方便地建立系统网络。综上所述,本设计选用RS485总线通信方案。由于RS485具有良好的抗噪声干扰能力、传输距离长、多站能力,使其成为串行接口的首选,而在“一对多”的通信模式中,考虑到系统中各个设备之间的
14、物理位置相距较远、运行环境复杂、干扰较大,RS232串行通信方式远不能满足系统的要求。22上位机要实现通过RS485总线通信方式对多个激光器系统进行集中控制的功能,控制器是系统控制的核心部分,本设计中控制器的结构框图如图21所示,这里所讲的控制器也称为系统的上位机。该部分电路主要由以下三个主要电路模块组成控制按键模块、单片机主控模块、TTL电平转RS485电平模块。操作者通过操作按键发送控制信号,主控单片机模块检测到控制信号并进行处理,根据按下按键的功能发出相应控制下位机的信号,并将信号由TTL电平信号转换为RS485电平信号传给下位机,符合要求的下位机将给予应答,从而达到控制激光4器模拟器件
15、动作并回传信号的效果。单片机主控模块按键模块RS485总线TTL电平转RS485电平模块图21上位机(控制器)结构框图23下位机下位机主要完成与上位机的通信工作,并根据上位机发送的控制信息,控制激光器模拟器件动作并返回本机地址。这部分电路主要由以下三部分组成RS485电平转TTL电平模块、单片机主控模块和激光器模拟器件模块,图22为下位机的结构框图。RS485电平转TTL电平模块RS485总线单片机主控模块激光器模拟器件图22下位机结构框图24电源系统采用12V直流稳压电源作为供电电源,该供电方式在功率上可以满足系统需要,使用安全可靠,该供电方式的选择最关键的一点在于确保电源经过长距离传输后,
16、可以保证各下位机5V供电电源的稳定性。因为电源经长距离传输后必然会造成一定的损耗,这里选用12V电源供电,电源输送到下位机后完全可以满足下位机工作的需求。25系统总体设计框图图23为系统总体设计框图,上部为控制器部分;下部由RS485收发芯片及N个单片机控制的激光器模拟器件构成了系统的N个下位机。上位机与下位机之间通过串行口进行数据通信,当然网络系统中下位机的数量并不是无限的,其数量会因采用的RS485收发芯片的类型而异,图23为系统总体设计框图,系统中RS485接口芯片选用德州仪器(TI)公司生产的SN75HVD3082E,最多可连接256个收发器,若选用SN75176作为收发器,则最多可接
17、32个下位机,用户可根据系统实际情况进行选择。系统中RS485总线被各下位机所共享,为了避免总线冲突,系统采用“主从式控制方案”,具体表现为系统为每一个下位机提供唯一的本机地址(ID),正常工作时采用上位机控制、下位机应答的主从式通信方案,通信波特率为9600BPS。5按键模块RS485电平转TTL电平模块单片机主控模块1单片机主控模块RS485电平转TTL电平模块2单片机主控模块TTL电平转RS485电平模块RS485电平转TTL电平模块N单片机主控模块RS485总线激光器(LASER)激光器(LASER)激光器(LASER)图23系统总体设计框图63系统硬件设计31电源电路为了给系统提供稳
18、定的电源,在设计和使用电源供电时要十分注意电源电压能否满足电路元器件对电压幅度、稳定性和极性的要求,否则电路将无法正常工作,且当电源电压高于电路所需要的电压或所使用的电源极性不对时,将会烧坏电路,严重时甚至会烧坏电源。12J2CON2123LM7805U2C8104C91045VC2100UFC310UFR101KD8LEDD101N4007VIN12V图31电源电路原理图图31所示为系统的电源部分原理图,系统采用三端稳压器LM7805来进行稳压,LM7805的输入、输出电压差应不小于25V,采用12V的稳压电源为系统供电。经过LM7805稳压及并联电解电容和瓷片电容进行滤波后得到一个约为5V
19、的直流电,即为系统的工作电源。电路中二极管D1的作用是防止系统因电源反接导致电路造成损坏。32上位机上位机即系统的控制器部分,主要由按键模块、单片机主控模块及TTL电平转RS485电平模块三部分组成。按键用于发送控制信号,TTL电平转RS485电平部分用于实现RS485总线与单片机之间的连接,这里单片机主控模块起到过渡连接的作用,实现了按键控制、RS485总线传输的效果。321按键模块S1KEYS2KEYS3KEYS4KEYC1C1C2C2C3C3C4C4S5KEYC5C5S0S1S2S3S4123456J1CON6S0S1S2S3S4图32按键电路原理图7按键部分用于发送控制信号,原理图见图
20、32所示,每个按键并联一个100NF(104)电容,进行硬件去抖。每个按键均有属于自己的控制对象,模拟系统设有5个按键,具体设置的控制对象见表31,这里仅列出本模拟系统用到的5个按键的情况,系统的下位机个数及每个下位机支持的操作功能,由通信协议中规定的地址、数据位信息决定,具体情况将在软件设计部分进行详细说明。表31按键设置及控制对象安排表按键名称控制对象S00号下位机激光器0通道S10号下位机激光器1通道S21号下位机激光器0通道S31号下位机激光器1通道S41号下位机激光器2通道322单片机主控模块该模块是上位机工作的核心部分,控制器的功能主要就是通过这部分电路实现的。该部分电路比较简单,
21、其电路原理图如图33所示,包括单片机主控芯片、时钟电路、复位电路三个主要部分。主控芯片选用宏晶公司生产的单片机STC11F02E,结合基本的外围电路,构成单片机的最小系统电路。VCC20P36/RST1P17/TXD19INT/RXD/P302P16/RXD/INT18TXD/P313P1517XTAL24P1416XTAL15P1315INT0/P326P1214INT1/P337P1113CLKOUT0/INT/T0/P348P10/CLKOUT212CLKOUT1/INT/T1/P359P3711GND10U5STC11F02C1620PFC1520PFY2110592MHZR210KC
22、1010UF5V5V1234J2LOAD5VP30P31RXDTXDP15S0S1S2S3S4图33单片机主控模块原理图STCL1F02E单片机采用增强型8051内核,具有2KB片内FLASH程序存储器、2KB的EEPROM存储器、256B的片内SRAM数据存储器。电路采用上电复位方式,晶振选用110592MHZ,该值的选取与系统通信时通信设备之间的波特率紧密联系,为保证通信的稳定性,发送方和接收方的数据帧格式、通信波特率要设置一致,而要实现相同的波特率,本系统中上位机与下位机选用了相同型号的时钟芯片。电路中J2为下载口,下载端口包括VCC、GND、P30、P31四个引脚。8323TTL电平转
23、RS485电平模块5VR9120R1RE2DE3D4GND5A6B7VCC8A1SN75HVD3082E1234J3CON412VRXDTXDP15图34TTL电平转RS485电平模块原理图该模块的电路图如图34所示,其中RS485收发芯片选用了TI公司生产的SN75HVD3082E,该芯片具有15KV静电放电冲击保护功能,可以减少电磁干扰和终端电缆反射的影响,允许高达200KBPS速率的无差错数据传输。该芯片采用5V的单电源供电,在一条总线上可同时连接多达256个收发器(理论值),该芯片的应用在很大程度上简化了单片机和RS485总线接口电路的设计。信号在总线上传送时,若遇到阻抗不连续的情况下
24、,容易导致电磁干扰及终端反射等现象,从而影响了信号远距离传输的效果,导致有效信号与干扰信号在总线上相互叠加,严重时甚至将导致系统瘫痪。因此在电路设计中要充分考虑线路中信号干扰、阻抗匹配等方面的问题。RS485总线通信情况下,信号的传输介质为双绞线,常用双绞线的特性阻抗一般在110130的范围内,因此本设计采取在RS485总线末端跨接120电阻的方式来减少传输线上信号的反射效应。图35SN75HVD3082E典型应用电路由原理图34可以发现,通过设置P15(_RE、DE)引脚的状态,可以达到控制总线收发状态的目的,设计电路时要特别注意一点“接收”指信号从总线上收回(即单片机接收总线上的数据信号)
25、,“发送”指信号发送至总线之上(即单片机发送信号到总线)。这是设计SN75HVD3082E与单片机连接线的理论依据,图35为SN75HVD3082E收发器的典型应用电路图,图中信号的传输方向也说明了该特性。鉴于此,电路中收发器与单片机的串口收发端连接应设置为SN75HVD3082E的D、R分别接单片机的TXD、RXD引脚。9324上位机工作原理上位机部分电路原理图见附录(上位机原理图),该部分主要由按键电路、单片机最小系统电路、TTL电平转RS485电平电路、电源电路四部分组成。现对上位机的基本工作原理阐述如下上位机通过按键发送控制命令,STC11F02E检测到按键命令后对信号进行处理后,通过
26、P16和P17串口发送数据帧信息至RS485总线,以广播形式发送给各个下位机,下位机接收到控制命令后,判断命令中地址信息是否为本机地址,是,则动作并发送应答信息,否,则不予应答。33下位机下位机部分电路原理图见附录(下位机电路原理图),它主要由单片机最小系统、RS485电平转TTL电平转模块和激光器模拟器件模块、电源模块四部分组成。下位机的基本工作原理是下位机初始状态设置为接收,待上位机发出控制命令,下位机接收到信号后,判断其中地址信息是否属于本机地址信息,是则根据命令中数据信息控制LED灯动作,并将本机地址信息回发给上位机,若不是本机控制命令,则该下位机将不予应答。104系统软件设计41通信
27、协议的制定本系统选用STC11F02E作为主控芯片,系统设计方案确定之后,需要解决的关键问题是如何实现“一对多”的主从式控制方案。RS485总线标准对电气特性做了具体规定,但并未对通信协议作出具体的规定。鉴于以上原因,在上位机与下位机的通信过程中,为保证数据传输的可靠性,除了在硬件设计时考虑到一些抗干扰措施之外,还需在软件设计和通信协议的制订上采取必要的措施,下文将对系统软件设计部分作详细介绍。411串口通信协议本系统通信协议规定如下(1)通信波特率设置为9600BPS,串口采用工作方式1;(2)采用上位机控制、下位机应答的主从式控制方案;(3)各下位机置初态为接收,当接收到上位机发送来的数据
28、帧后,判断数据帧中的地址信号与本机地址是否相符,是,则动作;否则该下位机将继续处于等待状态。412数据帧结构上位机与下位机在通信的过程中,以数据帧的形式发送信息,本系统设置数据帧由地址信息和数据信息两部分组成,数据帧格式如表41所示。表41数据帧结构地址数据8位16位其中“地址”信息用于确定将要与上位机进行通信的下位机;“数据”信息用于指示下位机要执行的操作。根据地址信息与数据信息设置的位数不同,控制对象的数量及支持的操作可以进行变动,因此该系统具有很好的可扩展性。如本系统设置有效地址信息为8位,数据信息为16位,采用ASC码编码方式(见表42),该编码方式规定当最高位为1时,表示后面的7为数
29、据为地址信息,而当最高位为0时,表示后面的7为数据为数据信息。该编码方式决定了本系统理论上最多可以连接27个下位机,每个下位机可支持214个激光器通道,即可以进行214种操作。同时该编码方式的使用还有助于在通信过程中判断当前发送的是地址信息还是数据信息,从一个侧面保证了通信的可靠性。表42ASC编码规则地址最高位为11D6D0数据最高位为00D6D0表43为本系统按键与其控制对象的地址信息及数据信息对照表,由表可知系统中的128个下位机,每个下位机具有214种功能,这些功能分别受不同的按键控制。11表43系统按键、控制对象、数据帧信息对照表按键名称控制对象地址(ADDR)数据(DATA)S00
30、号下位机激光器0通道0X800X0000S10号下位机激光器1通道0X800X0001S21号下位机激光器0通道0X810X0000S31号下位机激光器1通道0X810X0001S41号下位机激光器2通道0X810X0002SN127号下位机激光器2141通道0XFF0X7F7F413波特率的设置为了通信的正常进行,通信双方要确保具有相同的波特率,本系统上位机、各个下位机的时钟芯片均选用110592MHZ,通信波特率均设置为9600BPS,串口采用工作方式1,下面对系统初始化设置做如下计算开始UART初始化定时器初始化DRE1置为发送状态I/O口初始化有无按键按下设置地址、数据信息调用发送子程
31、序YN延时按键释放YN(41)开始UART初始化定时器初始化DRE1置为发送状态I/O口初始化有无按键按下设置地址、数据信息调用发送子程序YN延时按键释放YN(42)开始UART初始化定时器初始化DRE1置为发送状态I/O口初始化有无按键按下设置地址、数据信息调用发送子程序YN延时按键释放YN(43)将以上(41)、(42)、(43)三式联合,设置系统通信波特率为9600BPS,串行口采用工作方式1,定时器工作方式为方式2(8位可自动重装),SMOD设置为0,将相关数据带入式中,并做如下计算开始UART初始化定时器初始化DRE1置为发送状态I/O口初始化有无按键按下设置地址、数据信息调用发送子
32、程序YN延时按键释放YN根据计算结果可知定时器初值应设置为0XFD。42上位机控制程序的设计上位机控制程序主要由主程序、发送子程序两大部分组成,下面将分别对这两部分进行具体介绍。(1)主程序,其主要任务是完成系统初始化、按键扫描、设置控制信息(包括地址和数据信息)、发送控制命令,注意置上位机初始状态为发送。系统初始化完成后将进行按键扫描,根据所按下按键的情况设置需要控制的下位机地址及数据信息,并完成数据的发送工12作,主程序流程图如图41所示。开始UART初始化定时器初始化DRE1置为发送状态I/O口初始化有无按键按下设置地址、数据信息调用发送子程序YN延时按键释放YN图41上位机主程序流程图
33、其中系统初始化包括了串口初始化、I/O口初始化、定时器初始化等方面的设置。串口初始化具体又包括串口(UART)引脚初始化、通信波特率设置、开启串口中断和总中断,下面是串口初始化的一段程序/函数功能初始化UART/VOIDINIT_UARTVOIDSCON0X50/工作方式1,10位异步收发,波特率由定时器控制PCON0X00/波特率设置为9600、4800,波特率不加倍EA1/开总中断ES1/串行口允许中断UART0_P1/UART在P1口13定时器初始化程序主要完成定时器工作方式的选择、波特率的设置、启动定时器等工作,下文是一段定时器初始化的程序/函数功能初始化TIME1,方式2自动重载8位
34、定时器/VOIDINIT_TIME1VOIDTMOD0X20/定时器T1,方式2自动重载8位定时器AUXR|0X00/时钟12分频,和普通C51时钟匹配TH10XFD/波特率9600TL10XFDTR11/启动定时器按键扫描是按键控制实现的关键,按键端口作为输入信号在初始化时要设置为高电平,判断按键信号时需要设置软件去抖动,具体方法是判断按键有无按下,有按键按下则进行延时操作,之后待按键放下后,才进行相关设置。下面是系统中“SBITSLAVE2_CHANNEL4P14/1号下位机的通道4”按键的设置程序IFSLAVE1_CHANNEL40DELAY_1MSIFSLAVE1_CHANNEL40W
35、HILESLAVE1_CHANNEL4ADDRESS0X81DATA0X0003CONTROL_FUNCTIONADDRESS,DATA上一段按键扫描程序中设有CONTROL_FUNCTIONADDRESS,DATA函数,其任务是完成数据包的发送工作,该函数的程序如下/函数功能数据包发送函数14入口参数ADDRESS地址DATA数据出口参数无备注地址8位数据16位/VOIDCONTROL_FUNCTIONUNSIGNEDCHARADDRESS,UNSIGNEDCHARDATASENDONEBYTEADDRESS/发送地址DELAY_1MS/延时SENDONEBYTEDATA/256/发送数据高
36、8位DELAY_1MS/延时SENDONEBYTEDATA256/发送数据低8位这里需要注意的是STC11F02E单片机为8位机,每次只能处理8位数据,本系统数据帧规定为8位地址位、16位数据位,需要经过三次发送工作才可完成,为保证信息传输的安全性,每次发送中间都需要设置一定时间的延时,这里取1MS的延时时间。(2)串口中断子程序,其功能是接收下位机发来的应答信号,该部分程序流程图如下中断入口接收应答信号RI0返回图42上位机串口中断子程序流程图43下位机控制程序的设计下位机控制程序主要包括主程序、串行口中断服务子程序两大部分,下文将分别加以说明。(1)主程序,其主要任务是完成系统初始化工作,
37、其程序流程图如图43所示。15开始UART初始化置为P1口定时器初始化DRE0置初态为接收状态等待图43下位机主程序流程图(2)串行口中断服务子程序,其功能主要是完成指定格式数据帧的接收及应答工作,该部分程序流程图如图44所示。中断入口从SBUF读取数据是否为本机命令根据数据信息控制LED动作返回YNDRE1置为发送状态RI0延时发送应答信息DRE0置为接收状态延时图44串口中断服务子程序流程图16下位机接收到上位机(控制器)的控制命令之后,一方面根据数据信息控制LED动作,另一方面向上位机发送本机地址作为应答信号。下面是一段控制某下位机动作的程序,首先判断是否为本机地址信息,是本机地址,则按
38、数据信息执行相应操作,否则,该下位机不予应答。/函数功能激光器接收数据后,判断地址,是本机地址,则按数据执行相应功能入口参数无出口参数无备注无/VOIDDISPLAYVOIDIFADDRESS0X02IFDATA0X0000LED11/熄灭1号灯LED21/熄灭2号灯LED31/熄灭3号灯LED41/熄灭4号灯LED51/熄灭5号灯LED61/熄灭6号灯LED71/熄灭7号灯为确保系统工作的可靠性,在对RS485总线状态进行切换时需要设置适当的延时,具体表现为在发送状态下,控制信号先置为有效状态即置“1”(DE有效),然后进行延时,之后再进行数据的发送工作,待数据发送完成后,再将控制端置为低电
39、平(_RE有效),再进行延时操作,此时系统才算完成了由“发送”到“接收”状态的转换。该措施的应用将使总线在进行状态切换时,系统通信保持一个较稳定的状态。175通信的可靠性分析51信号传输问题在通信过程中传输线路阻抗不匹配将会引起信号的反射,反射信号与原信号叠加将导致数据误码率增加,严重时甚至使系统陷入瘫痪状态。解决的方法是在总线的末端添加终端电阻(即匹配电阻),以达到减少反射信号、吸收噪声的目的。由于RS485总线通信一般采用双绞线,双绞线的特性阻抗一般在120左右,因此,在差分端口之间跨接的匹配电阻一般选用120,以此减少反射与干扰信号的影响。同时还需注意系统在复位状态下所有下位机都应设置为
40、接收状态,同时还需注意SN75HVD3082E的_RE、DE控制端发出控制信号的有效脉宽应大于发送或接收一帧数据信号的时间。52多机分时复用问题在多机通信情况下,要能够有效地协调总线分时复用的效果。在某一时刻总线只可能呈现出一种状态,因此连接在RS485总线上的多个下位机,在任一时刻只有一个下位机在“发送”,而其它下位机只能处于“接收”状态。若出现多个下位机都在“发送”的情况,结果将必然导致数据在通信总线上发生冲突,导致通信以失败而告终。因此在RS485总线通信中需要对总线的使用权进行合理分配,以此来协调每个下位机“接收、发送”的状态,做到各下位机发送的控制信号在时间上完全隔离,这是保证及时、
41、正确传输数据的前提。要做到时序上的协调配合,各下位机必须遵从以下规则(1)复位时各下位机均应处于接收状态;(2)SN75HVD3082E的接收、发送控制端_RE,DE控制信号的有效脉宽应大于发送或接收一帧数据信号的时间;(3)总线上所连接的各下位机的控制信号在时序上应做到完全隔开;(4)通信方式采用上位机控制,下位机应答的方式,各下位机都有唯一的本机地址作为自己的网络通信识别码,当上位机发出的控制信息中包含自己的地址信息时,该下位机就要对此做出应答,其它下位机则不予应答。186系统测试与总结61系统调试611硬件调试系统设计完成之后,最主要的任务就是系统调试。就本系统而言最主要的部分就是对单片
42、机系统程序进行调试,一般应首先采用仿真器进行程序运行仿真,然后利用下载器下载程序进行硬件测试。具体调试可分为两个主要部分进行硬件调试、软件调试,以下将分别从这两个方面就本设计系统调试中所遇到的问题加以分析说明。硬件调试的主要任务是根据电路原理图排除电路中的设计错误和工艺性故障。一般方法是利用万用表进行检测,选择欧姆挡合适的量程,按照电路原理图逐个检查印制板中各元器件的电源以及各引脚的连线是否正确,是否出现线路短路、断路等情况。电源电路的检查很重要,前面已经分析过电源对电路功能的实现起着重要的作用,若电源的供电电压未达到电路要求,应避免接入电路,否则将会导致电路元器件和重要芯片损坏,本系统采用直
43、流12V电源直接接入电路的方法,为确保网络中的各设备电源稳定,硬件设计时每个端机模块均设置有12V电源接口,从直流电源直接取电。除采用万用表进行检测外,还可以采用上电测试的方法,将电源接入待测电路进行测试,此时应选用万用表合适的电压挡进行检测,主要检测对象是电路的重要节点的电压值是否符合要求。这里特别注意SN75HVD3082E的R,D引脚与单片机的TXD、RXD脚的连接方法,“发送”D指信号由单片机发送到总线上,因此应有TXD与D连接;“接收”R指数据信号由总线上传给单片机,因此应有RXD与R相连。612软件调试这一节我将对软件调试过程中KEILVISION2编程软件的使用中遇到的问题、ST
44、CISP软件的使用、系统应遵循的规则、软件调试中遇到的其他问题及解决方法等方面的问题进行下分享。1KEILVISION2编程软件使用中遇到的问题该软件的使用已经不再陌生,这里值得提出的一点是,在调试过程中编译器的优化问题,程序编写好后,进行编译、链接、下载,但总是得不到预期的设置效果,即使是简单的I/O口控制程序,也是如此,百思不得其解。经过同学的提醒,发现是编译器优化方面的问题,将相关信息设置设为“默认”,程序终于有效了,然而好景不长,后来这个问题又反复出现,后又经一位学长的提示,还是编译器优化问题,这里应设置为“0”级优化,该问题得到了最终的解决,在这里与大家进行分享,具体设置界面见图61
45、所示。19图61编译器优化设置为“0”级界面2STCISP下载软件的使用图62STCISP软件界面图62为软件的整体操作界面,使用方法如下该软件使用前提是安装USB下载线驱动,安装完后即可使用,以后下载需要注意USB下载线所占的COM端口;使用中打开ISP下载软件,操作为A选择MCU型号;B然后选择要下载20的HEX文件;C选择对应COM口号(最重要);D点击DOWNLOAD下载;D将5芯ISP线与目标板对接。下面对应用中需要特别注意的信息总结如下COM口必须选择正确;在下载时,目标板不能有电源在工作,即处于无电状态,之后再上电;注意ISP线的连接;烧录时必须选择外部时钟信号,以确保通信双方波
46、特率一致。3调试经验半双工通信对上位机和下位机的发送和接收时序有严格的要求,RS485通信就是一种半双工通信方式,发送和接收工作均通过同一总线完成,在任意时刻只允许某一台下位机处于发送状态。因此要求下位机必须在侦听到总线上呼叫信号已经发送完毕,并且判定属于本机地址的情况下方可发出应答信号,其他下位机不予应答。倘若各下位机在时序上配合不好,将发生总线冲突,严重时将导致整个系统通讯瘫痪。要做到总线上的设备在时序上的严格配合,首先必须要遵循以下几项基本规则复位时,各从机均应该处于接收状态。SN75HVD3082E芯片的发送和接收功能的转换是由芯片的_RE,DE两个引脚控制的,当_RE1,DE1时,S
47、N75HVD3082E处于发送状态;当_RE0,DE0时,SN75HVD3082E处于接收状态,本系统中使用单片机的一个引脚来接_RE和DE端。在上电复位情况下,考虑到硬件电路的稳定需要一定的时间限制,复位后单片机的各管脚为高电平,这样就会使总线上各个下位机处于发送状态,加之上电时各电路的不稳定性,可能会导致向总线误发信息。因此,在使用一个单片机端口作为控制信号的情况下,应在软件初始化中将其设置为接收状态,或硬件设计中将该信号反相后接到SN75HVD3082E的控制引脚,使上电后SN75HVD3082E处于接收状态。控制信号_RE,DE的有效脉冲宽度应大于发送或接收一个数据帧的延时。RS485
48、半双工通信中,收发芯片SN75HVD3082E的发送和接收状态都是通过同一器件、同一物理链路来实现的,因此在通信过程中必须对控制信号进行切换。控制信号由单片机的TI,RI信号作为参考信号,具体表现为在信号发送时,TI应为低电平,当检测到TI转为高电平时,控制信号应由发送状态转为接收状态;在信号接收时,RI应为低电平,当检测到RI转为高电平时接收完毕,此时控制信号转为发送状态。调试的效果却不尽如人意,经常出现传输数据出错的情况,参考51单片机串口时序图,如图63所示,会发现一个值得注意的问题。21图63串口工作方式1发送时序图单片机在运用串口发送数据时,只要将8位数据位传送完毕,发送中断标志TI
49、被置位,但此时停止位还未被发出。若此时停止发送,必然导致发送数据不完整。如果通信波特率较高,几个操作指令的延时就可能超过1位数据的发送时间,或许不会出现异常。但若采用的波特率较低,如波特率为9600BPS,发送一位数据大约需要104S左右,若靠操作指令的延时是远远满足不了要求的,这样以来将导致通信出错。图64串口工作方式1接收时序图同理,该现象在接收数据时也会出现,图64为串口工作方式1的接收时序图,单片机在接收完8个数据位后,接收中断标志RI被置位,但此时停止位尚未接收。因此,作为发送和接收端都至少需要留有发送1位数据位时间的延时(发送1位数据位所需时间1/波特率),之后再作应答,否则将导致总线冲突的产生。总线上所有发送控制信号在时序上应做到完全隔离。为保证发送和接收数据信息的准确性与完整性、避免总线上信号发生冲突,必须对总线的使用权进行合理分配,连接在总线上的所有终端单片机,其发送控制信号在时间上要做到完全隔离。调试工作从最初调试时RS485接口芯片SN75HVD3082E的_RE,DE引脚与单片机的TXD、RXD引脚连接错误,造成通信无法进行;下载时时钟信号的选择不一致导致通