基于can总线的数据采集、传输及监控系统设计

基于can总线的数据采集、传输及监控系统设计

ID:14056764

大小:152.00 KB

页数:118页

时间:2018-07-25

上传者:jjuclb
基于can总线的数据采集、传输及监控系统设计_第1页
基于can总线的数据采集、传输及监控系统设计_第2页
基于can总线的数据采集、传输及监控系统设计_第3页
基于can总线的数据采集、传输及监控系统设计_第4页
基于can总线的数据采集、传输及监控系统设计_第5页
资源描述:

《基于can总线的数据采集、传输及监控系统设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

基于can总线的数据采集、传输及监控系统设计基于CAN总线的液位数据采颦、传输及监控系统设计摘要摘要随着信息化及网络化的发展,越来越多的工业现场过程参数的传输控制采用现场总线技术,其中CAN总线由于其优越的性能已被广泛地采用。本文根据泵站水池液位连锁问题,提出并设计了一种采用CAN协议总线作为数据传输手段,对泵站水池液位进行实时采样和显示,超出水位上下限时发出自报警信号,从而达到对水泵电机进行控制目的。本设计为一个分靠式CAN网络旨中现场数据采集、 监控节点,利用CAN可以很容易扩充以实现分布式数据采集传输系统,为企业进一步实现网络化管理奠定了基础。该系统在结构上主要包括现场液位数据采集、单片机、数据显示及报警、CAN总线协议转换等单元。液位数据经A/D转换送单片机处理,并实时显示。若超出设定的液位安全限,则产生报警信号,同时对采集数据进行CAN协议格式转换,经CAN驱动送到CAN总线上传输。CAN网络上其它节点可以接收本节点发出的数据,同时本节点也可以接收其它节点送来的数据,即在CAN网络上实现多主传送方式。为了减小体积,提高运行的稳定性和可靠性,本系统在电路设计、器件类型制版 方面都做了精心的考虑,如采用“看门狗”对系统运行监控,软件上采用了数字滤波等方法。系统软件用C语言编写,采用模块化结构,在减小软件体积,提高代码效率和运行可靠性方面都有了保证。关键词:CAN总线,数据传输,数据采集,A/D转换,单片机基于CAN总线的液位数据采集、传输及监控系统设计AbstractAbstractWiththeofinformationandnetwork,themoreandmoredevelopmentinusetheFieldBusof arametersofcontrolindustrytechnique,oneprocesswideusebecauseofitshascomeintosuperiorityproperties.that,CAN―busactualofwaterlevelatatoanmonitoringstation,Accordingproblempumpausedtheofdata thisthesisandsystemCAN―busasthemeandesignsproposesdoreal―timecollectandwaterlevelofansmission.ThecandisplaysystemanexceedsainstationandalsoalarmifthewaterlevelpoolampgivesignalIimitofwaterthatelectricat theorlowerlevel,sopumpuppersafetypumpoflocalcanbecontrolIedonoroff.ThisisusedasanodestationsysteminadistributedCANitisdataandnetwork,andeasyacquisitionmonitoringtobeCAN―busfordistributeddataexpandedbyusingcomposingacquisition, leadsthebasisoffurthertransmissionnetworkingsystem.Thisrealizingformanagemententerprises.Thisconsistsoflocalwaterleveldatasystemmainlynodewaterunit,etc.Thechipcomputer,datadisplay,alarm,CAN―busprotocol leveldatainmicrocontrollerAT89C5212bitsserialA/DprocessedthroughLED。Iftheconversionandinreal―timewaterlevelexceedsdisplayedbysafetyofwateranalarmandthendatalimitlevel,thesystemgivessignalsampledconvertedinwillbetransmittedonCAN―buswhenformatCANnetworkothernodes CANconversionchipSJAl000.Inusingprotocolnodeandthisnodecanreceivedatafromothercanreceivedatasentfromthisalso.Somulti-hosttransmitmodeisrealizedinCANnetwork.nodesInordertodecreasevolunleofhardwareandstabi1andsystemimproveitycircuitandPCBofstructure,devices reliabilitysystemoperation,thedesignusedinthisareconsideredsystemcarefully,suchfiltersoftware.ThesoftwareCaandprogrammedbyadoptsdigitallanguagevolumeofcodemodularstructureforefficiencyincreasingsoftware,improvingandof reliabilityoperationDataCAN―bustransmissionDataKeywords:acquisitionA/DConversioncomputerSingle―chip2基于CAN总线的液位数据采集、传输及监拧系统设计第一牵绪论第一章绪论本课题设计研究了内蒙古某一泵站液位连锁系统。该液位连锁系统的结构如图l ―l所示。图卜i液位连锁系统WaterlevellockedFig.1一lsystem当黄河水量不足时,启用该储水系统为电厂供水。一级泵站将黄河水源泵到距离为500米左右的低位水池,二级泵站再泵到距离为600米左右高位水池。要求若高位水池高于或低于规定高度,产生报警这一点尤其重要,并通知二级泵站电机停止或启动,从而保持高位水池的容量在一定范围内。随着低位水池向高位水池供水,要求 其容量也要保持在一定限度内,即一旦超过规定上下限,报警并通知一级泵站电机停止或启动,这就要求建立高位与低位水池间的液位连锁系统。同时为了实现集中管理,设立一中心监控机房,负责收集各点的设备的运行状态等数据,包括液位、电机轴温、流量等参数,为将来综合统一管理提供数据。根据实地考察及与企业人员的交流,希望选择一种经济可靠,维护方便,连接线路少,具有将来容易扩充采集多个过程参数的能力,且具有一定抗干扰的通信方式。考虑到水池液位由于容量巨大,其液位变化并不剧烈,对传输速率要求不高,因此选择CAN总线方式来传输各节点间数据,利用性能稳定可靠,价格低廉的51系列单片 机构成现场液位采集、报警及数据转发单元。进行本课题的研究一方面是利用目前广泛使用的现场总线中CAN总线技术解决具体问题,开发一种基于CAN总线的数据采集、监控与传输系统。同时为迸一步开展现场总线技术在煤矿企业中的应用做准备。整个液位连锁系统设计分两部分完成,一部分为中心机房上位机控制,另一部分为现场数据采集监控转发。本课题负责后一部分。设计制作以单片机为核心,将前端由现场液位仪采集并转换来的液位信号O一5V进行A/D转换,经单片机处理,用LED数码管实时显示液位高度,并根据设定的水池液位上下限临界值,若超出该临 界值就在现场产生报警信号,同时采集数据经CAN协议格式转换,通过CAN总线向中基于CAN总线的液位数据采集、传输及监控系统设计第一章绪论心机房的上位机传递。根据要求目前只需向上位机发送数据,暂不需要接收。另外该系统有11路模拟信号输入通道,系统中暂时使用一个通道用于液位数据的输入,其它通道可用于未来参数采集的扩展。因此本系统可以作为基于CAN总线上的一个标准采集,传输模块,应用于其它相关场合,有很大的扩展空间。课题的主要工作具体有:①设计制作以单片机为核心的数据采集、处理、显示及报警电路: ②数据通信协议的转换及相关硬件电路的制作以及相关软件的编写。课题中拟解决的技术难题①合理设计整体电路,保证系统运行的可靠性、稳定性;②仔细研究CAN总线协议,选择合适的协议转换芯片,设计CAN总线通信电路;③由于功能较多,因而编制程序需要仔细考虑,保证各程序模块执行流畅,维护方便;④由于处于现场环境,要求系统具有一定的抗干扰能力,这在电路设计及软件编写上要加以考虑。4 基于CAN总线的液位数据采集、传输及监拄系统设计第_二章系统的硬件设计第二章系统的硬件设计本课题设计的内容是整个基于CAN总线的液位连锁系统中的一个节点。系统的功能框图如图2-i。图2―1系统总体框图BlockofFig.2一ldiagra|llsystem功能结构上主要包括现场液位数据采集,单片机,数据显示及报警,CAN总线协议转换及驱动等单元。液位数据经12位串行A/D转换送单片机AT89C52处理,并用 数码管显示液位实时高度,若超出设定的液位高度安全限,则产生报警信号,同时利总线上传输。系统电路原理图如图3―2所示。2.1CAN总线的简介AreaCANControllerNetwork~控制器局部网是一种由带CAN控制器组成的高性能串行数据局部通信网络,是国际上应用最广泛的现场总线之一。CAN协议最初是由德国Bosch公司在20世纪80年代初为解决现代汽车内部大量的控制测试仪器与传感器、执行机构之间的数据交换而开发的一种串行数据通信协议,其总线规范己被ISO 标准组织制定为国际标准。CAN是一种多主总线系统,通信介质可以是双绞线、同轴电缆或光纤,其传输距离在通信速率为5kbps下可达lOkm,且具有抗干扰能力强等诸多优点,因而CAN总线被认为是最有发展前途的现场总线之一。由于CAN总线本身的优点,它的应用范围已不再局限于汽车行业,且前已广泛应用于工业自动化、各种控制设备、交通工具、医疗仪器以及建筑、环境控制等领域。2.1.1、CAN总线的性能特点Ⅲ01基于CAN总线的液位数据采集、传输及监控系统设计第二章系统的硬件设计 CAN协议是建立在国际标准组织的开放系统互连模型ISO-OSI基础上的。考虑到现场总线的应用特点,CAN协议规定的网络系统结构由ISO-OSI七层中的物理层、数据链路层和应用层组成。“】【2’CAN总线的主要特点如下:①CAN是一种串行数据通信协议,是一种多主机局部网。通信介质可以是双绞线、同轴电缆或光纤,常用的是第一种。CAN网络上任意节点均可在任意时刻主动的向网络上其它节点发送信息,而不分主从,通信方式灵活。CAN的直接通信距离在速率5kbps以下最远可达IOKM,通信速率最高可达IMbps,此时通信距离最长40m。②cAN协议废除了传统的站地址编码,而代之以对通信数据块进行编码。 @CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。④cAN网络上的节点信息分成不同的优先级,可满足不同的实时要求,高优先级的数据最多可在134us内得到传输。⑤CAN通过报文滤波可实现点对点、一点对多点及全局广播等几种方式传送接收数据。⑧CAN上的节点数主要取决于总线驱动电路,目前可达ii0个;报文标识符If 可由ll位CAN2.OA或29位CAN2.OB二进制数构成,从而可定义的数据块数量为2H和229。⑦cAN协议采用短帧数据结构,数据块长度不超过8个字节,传输时间短,受干扰的几率低,保证了通信的实时性。⑧CAN协议采用CRC检验并提供相应错误处理功能,保证了数据通信的可靠性。2.1.2、OAN总线的技术规范。11.连接和传递方式CAN是一个多主机的局部网,各单元可同时挂到总线上。理论上单元数目是无限 的,但由于总线的负载及数据延迟,其数目是有限的。总线结构广泛采用的是差分驱动的平衡双绞线,采用的数据具有两种互补的逻辑值之一:显性dominant和隐性recessive。6基于CAN总线的液位数据采集、传输及监审系统设计第一二章系统的硬件设计图2―2CAN总线的传输电平Fig.2―2LevelonCANbus“隐性”表示逻辑“1”,“显性”表示逻辑“0”。在“隐性”状态下VCAN-H和VCAN―L被固定在平均电压电平,VDIFF近似为0,而“显性’’ 状态以大于最小阈值的差分电压表示,如图2―2所示。但需要注意的是当“隐性位”和“显性位”同时发送时,最后的值将为“显性”,这也是故障界定和错误检测的根本基础。2.报文及帧结构CAN总线以报文为单位进行信息传送。报文中包含标识符ID,它代表了报文的优先权。CAN系统中,一个CAN节点不使用有关系统结构的任何信息,如站地址等。报文中的标识符ID并不指出报文的目的地址,而是描述数据的含义。网络中的所有节点都可以由ID来自动决定是否接收该报文。每个节点都有ID寄存器和屏蔽寄存器, 接收到的报文只有与该屏蔽的功能相同时,该节点才开始正式接收报文,否则不会理睬后续的报文。CAN支持4种不同类型的报文帧结构。由于CAN协议有A和B两种版本,所以也就有相应的两种帧格式,一种含有1l位标识符,称为标准帧,而另一种含有29位标识符,则称为扩展帧。本课题CAN协议中采用的是29位的扩展帧格式。在报文的传输中,报文具体分为数据帧DataFrame、远程帧RemoteFrame、错误帧ErrorFrame和超载帧OverloadFrame。①数据帧 数据帧用于在各个节点之间传送命令和数据。它由7个不同的位场组成:帧起始ofStartFrame、仲裁场ArbitrationField、控制场ControlField、数据场DataField、CRC场CRCofField、应答场ACKField和帧结尾EndFrame。其结构如图2―3。??帧起始SOF标志数据帧和远程帧的起始,仅由一个显性位组成,只有在总线空闲时才允许站点开始发送数据。所有的站同步于首先开始发送报文站点的帧起始前沿。图2--3扩展报文的数据帧结构 FormatofDataFrameFig.2―3Extended??仲裁场在扩展帧格式里,包括29位标识符ID.SRR位、IDE僚和RTR位。标识符ID;ID决定了报文的优先权。标准格式中的标识符长度为Il位,相当于扩展豁的基本ID。7基于CAN总线的液位数据采集、传输及监控系统设计第二章系统的硬件设计8位扩展ID。基本ID有11位,扩展格式的标识符由29位组成,包含两个部分:11位基本lD和1了扩展帧的基本优先权。扩展ID有l8位,它按lD― 17到ID一。顺序发送。SRR位:隐性位SSR代替远程请求倪是为了版本的兼容性而代替前版本的RTR伉位置来区分标准帧和扩展帧的优先权。IDE位:IDE位为“标识符扩展位”,扩展格式里为隐性。RTR位:RTR位为“远程发送请求位”,可根据RTR分辨数据帧还是远程帧,显性则为数据帧,反之则为远程帧。??控制场控制场由6个位组成,包括数据长度代码DLC和两个保留位Io和rl,其结构如图2-4所示aIr1r0DLC3DLC2DLClDLC0图2―4控制场结构 Of1StructureContrOlFieldFig.2.~4数据长度代码DLC3~DLC0:数据长度码为4位,指示了数据场包含的字节数目。其编码与数据字隐性数据字节数目数据长度码DLc3DLc2BLClDLcOOdddd1dddr2ddrd 3ddrr4drdd5drdr6drrd7drrr8rddd??CRC场应用比较广泛的检错措施,通过位流的二进制数代码除以多项式列基于CAN总线的液位数据采集.传输及监挖系统设进第一章系统的硬件设计图2―5CRC场结构 OfCRCFieldFig.掷Structure??答应场AcK答应场长度为2位,包括应答间隙和应答界定符.如图2―6所示,在应答场中,发送站发送两个隐性位,图2-喝应答场结构OfACKStructureFieldFig.2―_6应答间隙:所有接受到匹配CRC序列的站会在应答间隙间用一显性位写在发送 器的隐性位置上来做出回应。应答定界符:应答定界符是应答场的第二位,并且必须是一个隐性位。因此,应答闻隙被两个隐性位所包围,也就是CRC界定符和应答界定符。??帧结尾每一个数据帧和远程帧均由一标志序列界定,这个标志序列由7个隐性位组成。②远程帧作为数据接收器的站,通过发送远程帧可以启动其它节点传送它们各自的数据。远程帧由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结尾。与数据帧相反, 图2―7远程帧结构OfRemoteFrameStructureFig.2~7远程帧的RTR位是隐性的。它没有数据场,所以数据长度代码的数值没有意义。远程帧的结构如图2―7。③错误帧错误帧由两个不同的位场组成,第一个场是不同站提供的错误标志的叠加;第二个场是错误定界符。错误帧结构如图2―8。9 基于CAN总线的液位数据采集,传输及监控系统设计第二章系统的硬件设计图2-8错误帧结构ofErrFrameStructureFig.2-8接收站发现总线上的报文出错时,将自动发出“活动错误标志”,为6个连续的显性位。由于各个接收站发现错误的时间可能不同,总线上的实际错误标志可能由6--一12位显性位组成。在错误标志后为8个隐性位组成的错误界定符。每个站发 送错误标志后,开始发送隐性电平,并监视总线,检测到出错误条件时,将发送“认可错误标志”,它为6个连续的隐性位。④超载帧??超载帧包括两个位场:超载标志和超载界定符,其结构如图2―9。图2―9超载帧结构Structureof0verloadFrameFig.2-9超载帧只能在一个帧的结束开始。在一个接收站要求延迟下一个数据帧或远程帧,或在帧空间的间歇场的第l、2位检测到显性位及在错误、超载界定符的最后一位采样到显性位,开始发送超载帧。超载标志由6个显性位组成,而总线上的实际超 载标志为6一一7位。超载界定符为8个隐性位。⑤帧间空间数据帧和远程帧与前面的任何帧用帧间空间的位场分隔开。它包括间歇场和总线空闲场。间歇场由3个隐性位组成。总线空闲场可为任何长度,此时总线处于空闲状态,允许发送站发送报文.3.错误检测CAN为了提高抗干扰能力和数据传输的可靠性,采用了多种错误检测手段。??位错误:发送站时刻检测发送的每一位数据,如检测到总线数值与发送的不同,则在该位时刻检出一个位错误。 ??填充错误:在应用位填充方法进行编码的报文字段中,出现第6个连续相同的10基于CAN总线的液位数据采集、传输及监控系统设计第-章系统的硬件设计位电平。,CRC错误:接收站计算得出的CRC序列与接收到的不同。??格式错:固定格式的位场格式与规定不同。??应答错误:在应答期间,发送站未检测到显性位。发现错误时,接收站将发送活动出错标志,而发送站将发送认可出错标志。2.2单片机及定时复位单元 系统核心控制由单片机来完成,包括人机接口、启动A/D转换,数据处理,显示并产生报警信号,同时将数据送CAN接口进行协议转换和总线驱动等,因此单片机模块相当于应用层。1.微处理器AT89C52[3]该单片机与MCS一5l系列单片机兼容;在单片机内部有8K字节的Flash程序存储器,个16位定时/计数器,1个全双工串行接口。在本系统中全部程序写到内部FLASH中,不需要外扩程序存贮器,从而减小了系统硬件的体积。2.“看门狗”X5045组成定时复位电路 由于单片机自身的抗干扰能力较差,在工作环境恶劣的场合,很容易造成单片机因外界干扰大致”死机”现象,造成系统不能正常工作。设置“看门狗”电路是防止单片机系统死机,提高单片机系统抗干扰能力的一条重要途径。此处选用XICOR公司的专用可编程芯片X5045作为“看门狗”,引脚见图2―10。f‘专。:,矗建磐一‘~。。’。爹薯辎删喜幸葵磐,||5X5045引脚图2一10 ofPinconfigurationX5045Fig.2.一10电压监控和存储器块锁Block和L4US。…工作时在程序的适当位置定时安排一条,“喂狗”指令,要求其时间间隔小于X5045的预置,这样只要系统死机或程序“跑飞”,X5045会自动发出溢出脉冲,使单片机复位,从头开始执行程序。由于单片机没有SPI接口,在硬件上要利用I/0口线通基于CAN总线的液位数据采集、传输及监控系统设计第二章系统的硬件设计 过软件来产生SPI接口协议的操作时序,X5045与单片机的连接见下图。12茎王曼垒婪璺丝笪堕笪墼堡墨壅:篮笪墨堕鳖墨丝堡盐墨三童墨丝盟壁堡堡盐2.3数据采集单元该系统主要是采集水池5米高液位的数据。已经安装在现场的超声波液位仪传送来反映液位高度的0’5V的电压模拟信号已标定,处理前首先要进行A/D转换。这里选用的A/D转换芯片为TI公司的TLC2543。TLC2543为CMOS12位开关电容逐次逼近A/D转换器,片内含有一个14通道多路 选择器,可从1i个模拟输入或3个内部自测电压中选择一个编码。片内还包括采样保持电路,系统时钟由片内产生并由I/0CLOCK同步。它与单片机相连时只需4条连接线:/CS、I/0源,这在本系统显得尤为重要。通过对其内部8位状态寄存器的编程,可以定义输出数据的长度和格式,TLC2543的引脚排列见图2一11。图2―1ITLc2543:JI脚1PinofTLC2543Fig.2―1configurationTLC2543的主要特点:嘲??11个输入通道,12位串行输出; s转换时间;??工作温度范围内10’t??3路内置自测方式;??采样率为66kbps;??线性误差4―1LSB;??可编程单、双极性输出;??可编程idSB或LSB前导输出,可编程输出数据长度8、12、16bit。选用的理由是:①由于水池容积很大,同时对液位测量精度要求不太高,液位变化不剧烈,因此采样速率不需要很高;② 考虑到该系统还会用于采集其它工业设备控制参数,如压力、温度、流量等,因此TLCCl2543的11个模拟输入通道满足以后扩展要求。基于CAN总线的液位数据采集、传输及监控系统设计第二幸系统的硬件设计只需4条I/0线和单片机连接,大大节省了I/0资源,因此也满足要求。TLC2543与单片机的连接见图3―2。2.4、键盘输入、数据显示及报警单元这部分完成报警临界值输入、液位数据在4位数码管实时显示以及若超出规定限度产生报警信号的功能。1.键盘输入由于本系统中单片机的I/0资源紧张,因而只设了三个按键:换位键s瑚孵、 运行键RUN和递增键INCC。换位键SHIFT:指定4位数码管中对某一位操作;递增键RUN:对指定的某一位数码管进行循环加l操作;运行键@I哪:接受某一位设定值,并脱离该位设定过程转向下一位操作。电路连接见图3-2,键盘处理程序见后续设计流程。2.数据显示本系统中要求将采集到的液位数据以十进制高度形式在4位数码管实时显示。经过分析决定采用静态显示方式。之所以这么设计是因为本系统为一个实时数据采集、传输、显示系统,这些操作不能间断,而单片机以顺序结构执行各程序模块,因此单 片机的机时显得非常紧张。若采用动态显示方式,就要求单片机必须在一个适当循环周期内对数码管动态扫描,才能不出现明显的闪烁感,这对整个系统工作频率提出了苛刻的条件。为了节省单片机机时,使程序结构简单,同时考虑到本系统还用于除液BCD码输入位选择输入功能B3B2B1B0DlD2D3D40000不变1001D000000位4BCD码锁存100ID0D1 00O0位3BcD码锁存10O1DDl00000位2BCD码锁存l001DlD30000位lBCD码锁存1O0113D0D000BCD码全部锁存1001l11l基于CAN总线的渡位数据采囊、传输及监拧系统设计第一二章系统的硬件设计图2―12ICM7212日I脚和功能PinandfunctionOfICM7212 Fig.2―12configuration位以外其它高频率过程参数的采集,因此采用静态显示方式。为芯片的功能表和引脚排列。带4位位选择输入,采用4位BCD码译码,具有亮度外部调节。其中位选择输入D卜一D4电路连接见图3-2,显示程序设计流程见后续。”’3.报警单元系统中利用无源蜂鸣器和三极管构成了一个简单的报警电路,当液位超出规定的上下限时报警输出。其输入接单片机P2口的P2.7,报警时单片机送出一定频率的脉冲,经三极管构成的放大器驱动可产生报警,电路连接见图3-2,报警程序设计流 程见后续。这里需要说明的是本系统为实验样品,在实际中为了能产生功率更大的声光报警效果,应采用可控硅或继电器设计报警电路。2.5、CAN总线协议实现及总线驱动单元2.5.1、CAN总线协议实现单片机将采集的液位数据输出显示的同时,还要将数据通过CAN总线通信接口以符合CAN协议的数据形式发送到总线上供其它总线单元使用。完成这一功能要利用CAN总线控控器,这也是本系统最重要的部分。1.CAN总线控制器及特性[7儿8] 基于CAN总线的渡位数据采集、传输及监控系统设计第二二章系统的硬件设计控制器SJAl000。它集成了CAN的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括填充、数据块编码、循环冗余检验、优先级判别等项工作。SJAl000有两种工作模式:BasicCAN模式和PeliCAN模式。其中PeliCAN模式较以前增添了很多新的特性,全面支持CAN2.OB协议规范。它具有以下主要特性:??在设计上其软件和硬件与PCA82C200CAN控制器兼容BasicCAN模式:??扩展接收缓存; ??支持CAN2.OB协议规范;??支持ll位与29位标识符:??位速率可达IIgops;??扩展PeliCAN;??时钟频率最高为24删z:??接口兼容多种微处理器:??CAN输出驱动配置可编程;??工作环境温度宽.40-+125℃。图2―13sJAl0009l脚PinofFig.2―13configurationSJAl000 CAN相比体现的特点如下:以下方面与Basic??接收和发送采用扩展帧格式;??接收FIFO为64字节;??双重验收滤波器:基于CAN总线的液位数据采瘫、传输及监控系统设计第二章系统的硬件设计??错误计数:??错误警告限制可编程??岩误代码捕捉寄存器:??针对每种CAN总线错误的错误中断;??自我测试。 2.SJAl000引脚及内部结构引脚说明。图2一14SJAi000内部结构框图BlockOfFig.2_一14DiagramSJAl000SJAl000内部包括接口管理逻辑、发送缓存器、接收缓存器、位流处理器、位定时逻辑、收发逻辑、错误管理逻辑、控制器接口逻辑等。SJAl000适合两种外部微控制器模式,本系统中采用Intel模式,因此对其的读写时序与单片机89C52对外部存口线上,具体电路连接见电路原理图3―2。 17基于CAN总线的液位数据采集.传输及jl茳控系统设计第_二章系统的硬件设计3.SJAl000的寄存器配置及地址分配[7][8]检验等功能,主要归功于其内部大量分工合作的寄存器。由于这些寄存器的存在,正确使用SJAl000进行行CAN通信,则必须了解这些寄存器的作用和初始化过程。表2―3为Pe]iCAN模式下的寄存器配置及CAN地址。各寄存器的初始化设置参数及含义见后面软件设计流程。引脚名称作用^D7~AD0分时复用地址/数据总线 ALE/ASINTEL方式:ALE信号;MOTOROLA??方式:AS信号/cS片选信号端,低有效|、囝EINTEL方式:/RD读信号;MOTOROLA方式:E使能/研iINTEL方式;来自微控制器的写信号端;MOTOROLA方式:读/写信号端。CLKOUT时钟输出信号端KTALl,XTAL2振荡器输入、输出端HODE.方式选择输入。高电平为INTEL方式,低电平为MOTOROLA方式。rxo,Txl输出驱动器o、驱动器l到物理总线的输山端RXO,Rxl由物理总线NSJAl000输入比较器的输入端。/INT中断输出端 /RST复位端,低有效。表2―_2SJAl000l脚说明Tab.2―2OfSJAl000Pinning名称地址766432lO方式寄存器O睡眠模验收滤波自检测只听模复位模式器模式试模式式凡命令寄存器l自接收清除数据释放数终止发发送请请求溢出据缓冲送 求器状态寄存器2总线状错误状发送状接收状发送完成发送缓数据溢接收缓态态态态状态冲状态出状态冲状态中断寄存器3总线错误仲裁丢错误认唤醒中数据溢出出错报发送中接收中中断失中断可中断断中断警中断断断中断使能寄存器4总线错误仲裁丢错误认唤醒中数据溢出出错报发送中接收中中断使能失中断可中断断使能中断使能警中断断使能断使能 使能使能使能保留56BRP.5BRP.4BRP.3BRP.2BRP.1总线定时寄存器0SJW.1SJW.0BRP.0总线定时寄存器17SAMTSEGTSEGTSEGTSEGTSEGTSEGTSEG2.22.12.01.31.21.11.0输出控制寄存器8OCTPlOCTNlOCPOOClPOOcTNOOCPOLOOCMO0C妍OLlDElDEO测试寄存器9保留 10仲裁丢失捕捉寄存器llALE.4-ALE.0侥.二进制标r中裁丢火能置识确定,错误代码捕捉器存器错误代码错误代方向段4阪3陋2殴l阪o1Z码OllI错误报警限额寄存器由CPU在复位模式中定义错误报警限额,当总线错误超过此值时,产生锗13误报警中断,在程序编配时同错误计数器使用。默认情况下,该寄存器的值为96。.1Ji】错误计数寄存器 Rx错误计数寄存器反映了接收错误寄存器的当前值14rx错误计数寄存器Tx错误计数寄存器记录发送错误计数器的当前值1516―RX缓冲读、Tx缓冲写28Rx报文计数器Rx报文计数器蹦C反映了RXFIFO中有效报文的数目.每接收一个完整报29文时该值加l,接到释放缓冲命令时减1。 f1缓冲开始地址30时钟分频器CD.2CD.1CD.031表2―3PeliCAN模式F的寄存器及地址分配Tab.2--3PetiCANaddreS$allocationandregisters①发送缓冲器发送缓冲器是SJAl000中比较重要也是占地址比较多的寄存器,CAN地址为16-28。所有的发送数据都在发送缓冲器内打包成数据帧格式。CAN2。OB下扩展帧信息 包含13个字节,分为描述符区和数据区,扩展帧结构如图2一15。19基于CAN总线的液位数据采集、传输及监控系统设计第二章系统的硬件设计墨8~獗械攘意”’l文?"L。”0;奠?,扎“47.i『l叛黼躺。,卜,;≯‘≯7j£秣嬲酾2≯。撰述褥“飞卜职称潲3l?一‖!o|1戳麟褥j。‘一谯数攒擘节l,I、…-。 l般数据挈繁2t4£,:,i参::,。l|协【数姑掌麓§。‘f。j■?。巧’‖√基然昂隐鬻lx教豢擘书#llt‘。‘?lZ一;∽,■“,£揍粥骅翩p雾:≮露。≥≯嘉;‖糍歙裕字帮8【≯。参薹7景。:蘩毛≥图2―15发送缓冲器扩展帧格式配置ExtendedfremeformatoftransmitbufferFig.2--15??Tx帧信息:由一个字节组成,TX帧信息结构如图2-16。BIT.dBIT.5BIT.4 l吼7811??3|8IT??2lBIT??1IBIT??1lFFRTR。。6。1。。。。1。。。??1lC?。乙l图2一16Tx帧信恩结构TXframeFig.2一16informationBIT.7位FF:为I代表CAN控制器将发送扩展帧格式,为0则代表标准帧:BIT.6位RTR:为l代表控制器将发送远程请求帧,为0则代表发送数据帧BIT.3一BIT.0OLc:数据长度编码。数据长度8XDLC.3+4XDLc.2+2XDLC.I+DLC.0 Tx标识码:由四个字节组成ID.28~ID.0,共29个标识符,见图2―17。BIT.7BIT.6BIT.5BIT.4BIT.3BIT.2BIT.1BIT.CID.28ID.27ID.26ID.25ID.24ID.23ID.22ID.2lID.2CID.19ID.18ID.17ID.16ID.15ID.14ID.13ID.12ID.11ID.10ID,9ID.8ID.7ID.6ID.5ID.4ID.3ID.2ID,lID.0图2―17Tx标识码TXidentifiersFig.2-一17 TX数据:O~8个字节组成,发送远程帧时无效。②接收缓冲器它是CPU和接收滤波器之问的接口,用来存储从CAN总线接收并通过了滤波的报文。接收缓冲器提供给CPU可访问的13字节的窗1:3,该窗口是64字节RXFIFO中可以访问的部分,位于CAN地址的16―28。它也分为描述符区与数据区,而描述符区和数据区的定义与发送缓冲器是一样的。这样CPU在处理一个报文的同时可以继续接收其它到来的报文。由于单片机处理前一数掘的同时,总线有可能再传来数据,所以SJAl000把接 收到的数据先放入RxFIFo中,根据先入先出的原则,RXFIFo把数据传递给接收缓冲器,再由单片机访问CAN的内部地址20一28读取。⑧验收滤波器SJAl000可以根据发送的内容而不是站地址方便的传输数据,这主要因为验收滤波器,当报文的标识符与验收滤波器定义的位值相等时,控制器才允许将收到的报文存入64字节的RXFIFO。6一l9和验收屏验收滤波器由验收代码寄存器ACR复位模式下CAN地址为1蔽寄存器AMR复位模式下CAN地址为20―23两部分定义。要接收报文的位模式在验 收代码寄存器中定义,而验收屏蔽寄存器定义验收代码寄存器的某些位为“无关”。如果总线传来数据除了验收屏蔽寄存器中定义的“无关”位外,与验收代码寄存器中定义的ID一一对应,则此数据可被接收至RXFIFO,否则,数据无效,不做任何处理。基于CAN总线的液位数据采集、传输及豁控系统设计第三章系统软件设计思想与编程实现2.5.2、0AN总线驱动单元为了增强CAN总线节点的抗干扰能力,82C250相连,电路连接见图3―2。 6N137为高速光耦,最高速度10Mbps,这旱主要起到保护CAN控制器的作用,避免CAN总线的干扰。收。82C250的主要特性如下:M??高速率最高可达IMbps:??具有抗汽车环境下的瞬间干扰,保护总线传输能力:??采用斜率控制,降低射频干扰;??过热保护及总线与电源之间的短路保护:??低电流待机模式;??未上电节点不会干扰总线;??总线可连接I10个节点。 其功能框图和引脚说明如图2―18。图2一1882C250功能框图及引脚说明BlockandOf8%250Fig.2一18diagrampinconfigurationRS引脚用于选择82C250的工作模式:高速、斜率控制和等待。在较低速度或较低总线长度下串接一个电阻到地,用于控制上升和下降斜率,减小射频干扰。若节点处于CAN总线的终端,须在总线接13部分加一个120的匹配电阻。基于CAN总线的液位数据采集、传输及监挖系统设计第三章系统软件设计思想与编程实现第三章系统软件设计思想及编程实现 由于本系统由于涉及到的功能较多,大部分模块均要求实时工作,相互配合密切,对软件设计提出了很高要求,因此软件设计就成为本系统能否成功实现的重点,也是难点。我们采用KEILC语言编写源程序,整个程序采用模块化结构,各部分子模块分工明确,具有代码效率高、维护方便,占用存储空间少等特点。3.1、系统总体程序流程系统软件设计思想为:系统上电复位后,AT89C52先对各模块初始化,包括单性等,然后从键盘输入液位高低安全限标定值,并显示。启动定时采样时序开始以一定频率采集液位数据,对采集数据进行数字平滑滤波处理,以减小随机干扰和测量误 图3―1总体程序流程GeneralFig.3―1programsequence转换成BCD码形式的液位高度值送数码管实时显示。若超出预定安全液位上下限,则立即产生报警。如图3一l为本系统总体流程结构。各部分子模块程序设计思想及流程见后续内容。3.2、主程序模块功能及程序设计思想系统上电对单片机、SJAl000硬件复位,然后执行初始化模块,对单片机本身, 基于CAN总线的液位数据采集、传输及监控系统设计;g_--帝系统软件设计思想与编程实现SJAl000、TLC2543和X5045初始化。1.初始化模块@AT89C52初始化主要对单片机的输出口、程序中使用的数组、变量、显示缓冲单元及定时器TO设置。系统数据循环采集间隔由单片机定时器TO以模式l定时中断设定,定时时间设为20ms50Hz,以后根据实际情况可以灵活更改。@X5045初始化“看门狗”X5045正常工作前,要对其进行正确初始化,这里只采用了其定时复 位功能。X5045内部有一个8位状态寄存器和一个8位的写使能锁存器可以编程。X5045指令设置及状态寄存器各位含义如表3一l。“1本系统中初步设定看门狗定时复位时间为600ms,即从接到单片机送来的“喂狗”时间算起,每隔600ms对系统复位。因此必须使得每两次“喂狗”间隔小于600ms,指令名称指令格式操作功能7D6D5D4D3D2D1DO峨EN06H写允许100帅lWD0BLIB乙01】IfELWlP盱RDl04H写禁止这在程序设计时必须加以注意。wEL:写使能锁存器复位 RDSR05H读状态寄存器WIP:写操作状态脓SROIH写状态寄存器岫1WDO溢出周期WEI’使能锁存器复位陋AD0000A80ll从选定地址单元中读数据01.4sD躲ITE0000A80100使能锁存器设置向选定地址单元中写数据 01表3―1X5045指令及状态寄存器l600msⅣlP0芯片没有在写andlInstructionsetTab.3一l1芯片正忙于写statusofX50450200msregisterX5045的内部状态寄存器的读写时序如图3―2。1禁ll,n,。 ^l,≯馕:;…孺搿t嘲醚^越斌鑫萎黻麓茂痿.犁?一。雄:蕊:蓬+臻a读时序b写时序图3―2X5045状态寄存器读写时序ReadandwritestatusFig.3―2registersequence基于CAN总线的液位数据采集、传输及监控系统设计第三章系统软件设计思想与编程实现X5045定时复位工作时序如图3-3所示。图3―3X5045的定时复位时序 ResetofX5045Fig.3--3timing时器的溢出脉冲宽度。编写程序时要注意指令的安排,严格按照以上时序关系编程。具体流程见图3―4,程序清单见附录。图3―4X5045初始化流程InitializationofX5045Fig.3―4sequence亘TLC2543初始化本系统采用12位串行A/D转换器对液位数据实时采集,输入为来自液位仪产生的0’ 5V的模拟信号。TLC2543内部包含一个8位的地址和控制寄存器,功能如表3-2所示。[5]功能D7D6D5D4D3D2D1DOMNOD000AINl3O.O1●l0.10●●A/NIO输出长度8位01输出长度12位×0 输出长度16位ll基于CAN总线的液位数据采集、传输及监控系统设计第三章系统软件设计思想与编程实现表3―2TLc2543状态寄存器Tab.3―2StatusofTLC2543register根据TLC2543内部结构特点,每次A/D转换对都将一个控制字串行移入,同时将转换后数据串行移出。本系统中的控制字为00000010,即选择通道。输入,12位单极性输出,LSB前导。程序中开始的TLC2543初始化部分是将第一次采集到的数据丢掉,因为TLC2543在每次I/0周期读取的数据都是上个I/0周期转换的结果,第 一次采集到的数据是不确定的。TC2543读写时序如图3―5。图3―5TLc2543读写时序TLC2543readandwriteFig.3―5timing④SJAl000初始化段中的一些寄存器送初始化参数,以保证系统的各部分之间能进行正确的数据交换。功取决于在充分理解CAN协议基础上,掌握SJAl000内部各寄存器的作用以及如何配置CAN通信参数。SJAl000的初始化及相关电路的调试工作是本课题中的一个重点,也是难点。 存储器读写相同。董±塑璺总堡盟堕篁錾据采;坠堕艳星监控系统设计第三章系统软件设计思想与编程实现图3―6Intel模式下读时序Fig.3―-6ReadunderInteltimingdiagrammode图3―7Intel模式下写时序WriteFig.3-一7underIntelmodetimingdiagram有一点需要注意,SJAl000在向下加载初始化后,验收码寄存器ACR、验收屏 能再改变,并且整个系统中各节点的SJAl000内的总线定时器0,i内容必须相同,否则通信无法进行。本系统只解决现场参数的采集和向网络上其它节点,包括上位机传送数据,暂不需要接收其它节点的数据,因此整个CAN通信软件设计相对简单,包括SJAl000的初始化及报文发送。其中初始化中仍然包括对涉及接收过程的参数定义。SJAl000的初始化程序流程见图3-8。下面对主要初始化寄存器中参数设置及含义做一说明,详细设置见附录程序清单。??方式寄存器MoDCAN地址0,片外地址3FOOH 主要用于复位操作时的模式选择。MOD09H:选择单向滤波,置复位模式。基于CAN总线的液位数据采集、传输及监控系统设计第三章系统软件设计思想与编程实现??时钟分频寄存器CDRCAN地址31,片外地址3F1FH用于CLOCKOUT频率控制,是否旁路输入比较器和CAN的工作模式选择。CDR88H:选择PeliCAN模式,关闭CLKOUT。??总线定时器0BTROCAN地址6,片外地址3F06H定义了波特率预分频因子BRP和同步跳转宽度sJw。??总线定时器lBTRlC州地址7,片外地址3F07H 定义了一个位周期的长度,采样点的位置和在每个采样点获取采样的数目。BTRO和BTRl共同决定了总线上的波特率等传输参数。位定时参数设置是CAN通信中关键参数之一,其设置需要考虑的因素很多,计算也较复杂,实际中要不断进行优化,以符合给定的系统要求。这里通过计算公式得出:BTROIFH,BTRITFH,在16MHz晶振下,波特率为10Kbps。图3―8SJAl000初始化流程initializationSJAl000sequence Fig.3―8??接收码寄存器ACRCAN地址16一19,片外地址3FIOH一3F13H用于信息接收过滤特征,需要将4个字节的接收码送到ACR中。ACR001XXXXXXXXXX0001l1XXXXXXXXXX基于CAN总线的液位数据采集,传输及监控系统设计第三章系统软件设计思想与编程实现??接收码屏蔽寄存器AMRCAN地址20―23,片外地址3F14H一3F17H用于信息接收过滤特征,需要将4个字节的接收屏蔽码送到AMR中。AMR0010.0010101.0001110l10010110??输出控制寄存器OCRCAN地址8,片外地址3F08H用于建立输出驱动器的不同配置。OCRAAH:Tx选择正常输出方式。 2.键盘输入、液位上下限设定模块①键盘输入该模块主要完成由键盘输入上下限的规定值,并在LED显示器上显示设定过程。首先程舅初始化时预先定义上下限值,这晕定义上限为4800mm,下限定义为200mm,然后进入按键处理模块,通过按键的操作可以更改预定值。按“SHIFT’’键选择最低位操作,按“INCC”键逐位加l设定到指定值,再按“RUN”键以中断方式结束本位的设定。再次按“SHIFT”键选择下一位,其它操作同上,直到全部规定值送完。所输入的上下限值各4位缓存到内存单元中,这里按单位null输入。程序流程如 图3―9所示,按键具体处理过程见附录程序清单。②液位上下限设定制数,这样才能和采集的结果比较运算。这里需要注意的是输入液位的BC9码不能直接按权转换成二进制数,因为从TLC2543的输入电压与输出12位编码关系看,每增加1.2mY,输出增加1个LSB,因此要将上或下限值除以1.2后的结果转换成对应的二进制数。图3―9键盘输入流程Fig.3―9KeyInputSequence基于CAN总线的液位数据采集、传输及监控系统设计第三章系统软件设计思想0编程实现3。3.定时器0中断处理模块 当TO定时器每隔20ms产生计数溢出中断后,程序进入到A/D采集、处理、发送、显及报警模块中。中断处理程序流程如图3一lO所示。1.数据采集图3―10定时器0中断处理模块Fig.3--10moduleoftimer0Interrupt进入采集定时中断后,顺序读出经TLC2543A/D转换的12位结果LSB在前。采集过程见图3一11。图3一11数据采集流程图3―12数字滤波流程 1DatafilterFig.3一lacquisitionsequenceFig.3~12Digitalsequence2.数据抗干扰处理干扰作用模拟信号之后,使A/D转换结果偏离真实值。如果仅采样一次不一定代表真实结果,因此需要多次采样后,对这些数据作某种处理才能得到一个可信度较基于CAN总线的液位数据采集、传输及盟羟系统设计第三章系统软件设计思想与编程实现高的结果,称之为软件数字滤波。数字滤波的方法很多,适合不同的采集对象,如极限值判别法、终值滤波法、算术平均法、去极值平均法、加权平均滤波法和滑动平均滤波法等。这里采用滑动平 均滤波法,因为该方法比较适合实时性强的系统。滑动平均滤波法的原理是:每次采样结果和过去若干次的采样结果一起求平均,从而得到有效的采样值。程序中先在内存中开辟一个长度N的类似FIFO先进先出的数据缓存区,新采集的数据送入该缓存区后,将最早送入的数据冲掉,这样保证该缓存区的N个数据为最新。显然N越大,结果越准确,但处理时间增加,占用内存空间也越大,程序的实时性难以保证。本系统在初始化中已经预先定义了1个整型数组存放每次采集的数据,用于进行滑动平均滤波算法,算法流程见图3-12。3.CAN总线数据发送 本系统中每采集一个数据2个字节,经过数字滤波后即送CAN总线发送。发送程序将CPU内存发送缓存区中2个字节1个样点的数据加上1个字节帧信息和4图3一13SJAl000发送数据流程transmitdataFig.3―13SJAl000sequence送。发送分为查询发送和中断发送,这里采用查询发送方式,即发送之前还需要对一基于CAN总线的液位数据采集、传输及监控系统设计第三章系统软件设计思想与编程实现系列发送状态判断。数据帧发送的具体流程如图3一13所示。4.LED数码管显示 本模块完成将经数字滤波处理后的二进制液位数据送4位LED显示器上实时显示。由于采用静态显示方式,因此,单片机按照ICM7212真值表要求送一次输入编码即可,不需要动态刷新,大大减轻了单片机负担。显示程序见附录。5.液位比较及报警将处理后的12位液位数据与存在内存单元中的上下限值进行大小比较,超出安全限范围后产生报警。本系统中报警部分由三极管和无源蜂鸣器模拟一个简单报警电路,实际中根据场地情况应该采用用可控硅控制的大功率声光报警器。程序中利用定时器0的定时周期产生一定频率的矩形脉冲至报警电路,若液位持续超出范围,则持 续报警。液位比较及报警程序见附录。3.4、外部中断1处理模块见附录。图3~14外部中断l处理模块moduleFi93―14Interruptof/INTl茎三!型璺丝堕蔓望塾塑墨壅:堡塑垒鉴篓墨堡堡生笙三主墨丝整堡堡生星翌!!塑堡壅翌程序清单:#includeREG51.h#defineLOW0xE0;//定时器0的定时长度,低字节//12MHz时定时29ras时的初始值 #defineHEl0xBl;//定时器0的高字节,定时器0作为基本时钟,20ms产生一次中断sbitCSP2^0:sbitCLKp2^1:sbitDINP2A2;sbitDOUTP2“3:sbitSHI兀’P2“4:sbitINCCP2^5:sbitSJACSP2“6:sbitAL】MP2^7;2 sbRP3^4;X5045_CSsbit2P3“5:X5045_SOsbitX5045一SIP3A0;sbn2X5045.SCKP3“l;voida;delaychar voidInitO;voidX5045_INIT0;voidTLC2543jNlT;voidSJAl000INIT0;voidXS054._Writechara;char X5054-ReadO;voidTimerIjnig;intDATA_ADC0;基于CAN总线的液位数据采集、传输及监控系统设计第三章系统软件设计思想与编程实现voida;Show_Dataintvoidd。charShowOncBCDcharset;void WriteCanLan;voidisAlarmO;voidKeyPorc0;int00buffer[16lO…00…00,0,0,0,0,0,0,0,0,O;intavemge._value;charHei[4]0x04,0x08,0x00,OxOO;char MinLow[4]OxOO,0x02,0x00,oxoobitisSerdng1;charindex0;charshi叩ownO;charincedowno;voidmain0 InitO;while1delay10;ifissetting―1KeyPoreO;voidInitO基于CAN总线的液位数据采集、传输及监控系统设计第三章系统软件设计思想与编程实现Timerl-In妖; X5045―INIT;TI上2543一INlTO;SJA'??000一INIT;voidTimerljnitEAI‖个中断的产生由各个中断位决定。ET0I‖定时器0中断开PT0I‖定时器0高优先级TMOD0x01;//定时器0在工作模式11LoLOW: voidX5045_INIT0chara:aOxFF;X5045_CS:0:X5054_WriteOx05;aX5054-Itead0;X5045―Cs―l;35苎±兰丛垒垡塑鎏垡鏊堡墨壅:堡塑墨鉴茎至篓堡生 墨三兰墨竺鉴堡堡盐曼塑兰堕堡壅翌X5045_CS0:X5054_Wdte0x06;X5045_CSl:X5045_CSO:X5054writeOx01;X5054_WriteOxlO;X5045―CSl;voidTLC2543jNiT0 voidSJAl000_INIT0voidaxs054_Writecharchari:fori7;i0;i_.X5045一Sla“i;X5045SCK0;detay1; X5045一SCKI;基于CAN总线的液位数据采集、传输及监挣系统设计第三市系统软件设计思想q编程实现charX5054_Read0chari,a;fori7;i-O;i-.XS04SSCK0;detay1;x5045.scKl; aa1lXS045_so;lreturna;imDATAADC0chari;charbdataa:intis;CLK0; CSI;CSO;aOx02;m--O;fori1l;.0;j一.ifi3基于CAN总线的渡位数据采集、传输及盟拧系统设计第三章系统软件设计思想‘o编程实现DINa^i-4;elseDIN0: i-srs1IDOUT;CLK1:delayI;CLK--O;retumrs,/延时程序,参数给定延时几毫秒voidtdelaycharcharijo;foriO;it;.++ for00;j76;j++voidShow_Dataintachard4,d3,d2,dl;d4a/1000;d3a-d4‘1000/100;d2a-d4’1000-d3‘100/lO;dla-d4"1000一d3+100一d2’10; ShowOneBCDdt,Ox01;ShowOneBCDd2,Ox02;38基于CAN总线的液位数据采集,传输及监控系统设计第二章系统软件设计思想々编程实现ShowOneBCDd3,0x04;voidShowOneBCDchard,charseldd4:dd&0xF0;selsel&OxoF ddlsel;Pld;voidWriteCanLanOvoidisAlarm0ifIt.rain; valueifaverage0average_valuerainTROO:while1ALM!ALM:delay100;39基于CAN总线的液位数据采集、传输及龉撺系统设计 第三章系统软件设计思想0编程实现voidKeyPorcOi坟SHIFT―Odelay10;if【SHlFll_0shiftdown1:ifsHIFl’_1delay10; ifSHlFT―l&&shif_down―1shifI__down2;ifshifi_down一2shi心own0;mdex十+:ifindex一8indexO;ifINCC:0delay10; ifINCC一---OiIlccdown1;ifrNCC―1delay10;ifINCC―l&&incc_down2。ninccdown2;ifinccdown2 基于CAN总线的液位数据采集、传输及监控系统设计第三章系统软件设计思想~编程实现switchinde:Oease0:MinLow[3]++;ifMinLow[3]9MinLow[3]-"O:ShowOnenCD州0],0x01;ShowOneBCDMinLow[1],0x02;Show0IleBCDMinLow[2],Ox04;ShowOneBCDMinLow[3],0x08; bremk;casel:MinLow【21++;ifMinLow[:2】9MinLow[2]0;ShowOaeBCDMinLow[《】,0x01;ShowOneBCDMinLow[1LOxO,2;ShowOneBCDMinLow[2],ox04;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭