CAN总线应用
CAN总线的结构特点及应用

CAN总线的结构特点及应用CAN是Controller Area Network的缩写(以下简称CAN),是ISO国际标准化的串行通信协议,CAN总线是基于OSI模型的。
本文简介CAN 总线的结构、优点和应用,关心大家对CAN总线技术有个初步的了解。
在当前的汽车产业中,出于对平安性、舒适性、便利性、低公害、低成本的要求,各种各样的电子掌握系统被开发了出来。
由于这些系统之间通信所用的数据类型及对牢靠性的要求不尽相同,由多条总线构成的状况许多,线束的数量也随之增加。
为适应“削减线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面对汽车的CAN通信协议。
此后,CAN通过IS011898及IS011519进行了标准化,CAN现在在欧洲已是汽车网络的标准协议。
1、CAN总线的结构CAN总线的物理层是将ECU(Electronic Control Unit-电子掌握单元,又称“行车电脑”、“车载电脑”等)连接至总线的驱动电路。
ECU的总数将受限于总线上的电气负荷。
物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据的编码/解码、位定时和同步的实施标准。
理论上,CAN总线上的节点数几乎不受限制,可达到2000个,实际上受电气特性的限制,最多只能接100多个节点。
CAN的数据链路层是其核心内容,其中规律链路掌握(LOagie Link Control,LLC)完成过滤、过载通知和管理恢复等功能,媒体访问掌握(Medium Access Control,MAC)子层完成数据打包/解包、帧编码、媒体访问管理、错误检测、错误信令、应答、串并转换等功能。
这些功能都是围绕信息帧传送过程绽开的。
2、CAN总线的优点①CAN为多主方式工作,网络上任一节点均可在任一时刻主动地向网络上其他节点发送信息,而不分主从。
②在报文标识符上,CAN上的节点分成不同的优先级,可满意不同的实时需要,优先级高的数据最多可在134μs内得到传输。
CAN总线原理与技术应用

CAN总线原理与技术应用CAN(Controller Area Network,控制器局域网络)总线是一种常用于车辆电子系统的通讯协议。
由于CAN总线具有速度快、可靠性高、数据传输安全等优点,因此在汽车、工业自动化等领域得以广泛应用。
物理层:CAN总线使用双绞线作为传输介质,支持两种传输速率,即高速CAN和低速CAN。
高速CAN的传输速率可达1 Mbps,主要用于大部分车辆内部的通信;低速CAN的传输速率为100 kbps,主要用于外部设备和主机之间的通信。
数据链路层:数据链路层负责确保数据的正确传输。
CAN总线采用了一种基于确认应答的传输机制,发送端发送数据后,接收端需要返回一个确认应答,以确保数据的正确接收。
如果发送端没有收到应答,将重新发送数据,直到收到正确的应答位置。
网络层:网络层对发送的数据进行优先级处理,以确保重要数据的传输和处理。
CAN总线使用了CID(CAN Identifier,CAN标识符)来标识不同数据的优先级。
CID的长度为11位或29位,优先级高的CID具有更短的标识符,从而能够获得更高的发送优先级。
应用层:应用层是CAN总线与上层系统(如ECU,Electronic Control Unit)之间的接口。
ECU是车辆电子系统的核心部分,用于控制发动机、转向系统、车身电子系统等。
CAN总线通过与ECU的连接,实现了系统之间的数据共享和通信。
在汽车领域,CAN总线被用于连接车内各种控制单元,实现整车系统的数据共享和协调控制。
通过CAN总线,不同的控制单元可以相互通信,从而提高整车系统的可靠性和性能。
例如,发动机控制单元可以通过CAN总线与车速传感器和氧传感器等外部设备进行通信,实时控制发动机工作状态。
在工业自动化领域,CAN总线被用于连接各种工业设备,实现设备之间的数据传输和控制。
通过CAN总线,不同的设备可以实现数据共享和协同工作。
例如,生产线上的传感器和执行器可以通过CAN总线与PLC (Programmable Logic Controller,可编程逻辑控制器)进行连接,实现自动化控制。
浅谈can总线在汽车上的应用

浅谈can总线在汽车上的应用
CAN总线是指控制器区域网络总线,是一种基于串行通信的短距离通信协议,通常应用于汽车电子系统中,使得车辆内部的各种设备可以进行互联,从而实现车辆的智能化控制。
在汽车上,CAN总线可以应用于如下几个方面:
1. 发动机控制:汽车的发动机是最核心的部分,通过CAN总线连接发动机控制模块,可以实现发动机的高效控制,比如更好的加速和燃油经济性。
2. 刹车控制:刹车是汽车行驶中重要的控制部分,通过CAN 总线,可以实现刹车的智能控制,比如自动制动和紧急制动等功能。
3. 灯光控制:汽车灯光是行驶中的重要信号,通过CAN总线连接灯光控制模块,可以实现灯光的自动控制和节能减排,比如自适应大灯等功能。
4. 仪表板控制:汽车仪表板是车辆状态的直观反馈,通过CAN总线连接仪表板控制模块,可以实现多种状态的显示,比如车速、油量、排气等级等。
5. 座椅和空调控制:汽车座椅和空调是车内舒适性的重要组成部分,通过CAN总线连接座椅和空调控制模块,可以实现个性化的控制,比如温度和座位调节等功能。
总的来说,CAN总线在汽车中的应用非常广泛,可以实现车辆内部设备之间的互联和智能控制,从而使得车辆更加安全、节能、环保和舒适。
(完整)CAN总线及应用实例

CAN总线及应用实例(1)CAN特点●CAN为多主方式工作,网络上任意智能节点均可在任意时刻主动向网络上其他节点发送信息,而不分主从,且无需站地址等节点信息,通信方式灵活。
利用这特点可方便地构成多机备份系统。
●CAN网络上の节点信息分成不同の优先级(报文有2032种优先权),可满足不同の实时要求,高优先级の数据最多可在134,us内得到传输。
●CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低の节点会主动地退出发送,大大节省了总线冲突仲裁时间.●CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式收发数据,无需专门“调度”.●CANの直接通信距离最远可达l 0km(速率5kbp以下):通信速率最高可达Mbps(此时通信距离最长为40m)。
●CAN上の节点数主要取决于总线驱动电路,目前可达110个;报文标识符可达2032种(CAN2.0A),而扩展(CAN2.0B)の报文标识符几乎不受限制.(2)CAN总线协议CAN协议以国际标准化组织の开放性互连模型为参照,规定了物理层、传输层和对象层,实际上相当于ISO网络层次模型中の物理层和数据链路层。
图3.9 为CAN总线网络层次结构,发送过程中,数据、数据标识符及数据长度,加上必要の总线控制信号形成串行の数据流,发送到串行总线上,接收方再对数据流进行分析,从中提取有效の数据。
CAN协议の一个最大特点是废除了传统の站地址编码,而代之以对通信数据块进行编码,数据在网络上通过广播方式发送。
其优点是可使网络内の节点个数在理论上不受限制(实际中受网络硬件の电气特性限制),还可使同一个通信数据块同时被不同の节点接收,这在分布式控制系统中非常有用。
CAN 2。
0A版本规定标准CANの标识符长度为11位,同时在2.0 B版本中又补充规定了标识符长度为29位の扩展格式,因此理论上可以定义2の11次方或2の19次方种不同の数据块。
遵循CAN 2.0 B协议のCAN控制器可以发送和接收标准格式报文(11位标识符)或扩展格式报文(29位标识符),如果禁止CAN 2.0B 则CAN控制器只能发送和接收标准格式报文而忽略扩展格式の报文,但不会出现错误。
CAN总线应用简介

CAN总线应用简介CAN,全称为“Controller Area Network”,即控制器局域网,采用串行通信,是国际上应用最广泛的现场总线之一。
CAN总线最早在1986年由德国Bosch公司最先提出,使用CAN连接发动机控制单元、传感器、防刹车系统等,解决日益复杂的汽车电子装置之间的连线问题,其传输速度可达1Mb/s,能有效地支持具有很高安全等级的分布实时控制。
一、CAN总线技术规范1、CAN通信模型CAN技术规范(CAN-bus规范V2.0版本)的目的是为了在任何两个CAN 仪器之间建立兼容性。
为了兼容CAN2.0,要求CAN的仪器应兼容A部分或B 部分。
CAN-bus规范V2.0版本由两部分组成:(1)A部分在这部分中,CAN的报文格式说明按CAN1.2规范定义。
为了达到设计透明度以及实现柔韧性,CAN被细分为以下层次:对象层、传输层、物理层。
物理层定义不同节点间的信号根据电气属性进行位信息的传输方法。
同一网络内,物理层对于所有的节点必须是相同的。
A部分没有定义物理层,以便允许根据实际应用,对发送媒体和信号电平进行优化。
传输层是CAN协议的核心。
她把接收到的报文提供给对象层,以及接收来自对象层的报文。
传输层负责位定时及同步、报文分帧、仲裁、应答、错误检测和标定、故障界定。
对象层的功能是报文过滤以及状态和报文的处理。
CAN节点的层结构及其开发系统互联模型OSI之间的对应关系如图所示。
(2)B部分B部分包含了报文标准格式和扩展格式的说明。
B部分的目的是定义数据链路层中MAC子层和一小部分LLC子层,以及定义CAN协议于周围各层当中所发挥的作用。
根据ISO/OSI参考模型,CAN被细分为数据链路层和物理层。
CAN总线的层结构及其与开发系统互联模型OSI之间的对应关系如图所示。
物理层定义信号是如何实际地传输的,因此涉及位时间、位编码、同步的解释。
B部分没有定义物理层的驱动器/接收器特性,以便允许根据它们的应用,对发送媒体和信号电平进行优化。
can总线案例

can总线案例
CAN总线(Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。
以下是一些CAN总线的应用案例:汽车控制系统:CAN总线最初就是为了解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的。
在现代汽车中,CAN总线已经成为一种标准配置,用于连接各种控制单元,如发动机控制单元、制动系统控制单元、车身控制单元等。
这些控制单元之间通过CAN总线进行实时数据交换,以实现协同工作和优化车辆性能。
工业自动化:在工业自动化领域,CAN总线被广泛应用于各种传感器、执行器、控制器等设备之间的通信。
例如,在生产线上,可以通过CAN总线连接各种PLC、电机控制器、温度控制器等设备,实现自动化控制和监测。
船舶控制系统:在船舶控制系统中,CAN总线也被用于连接各种传感器、执行器和控制器。
由于船舶环境的特殊性,要求控制系统具有高度的可靠性和稳定性,而CAN总线的优秀性能和特点使其成为船舶控制系统的理想选择。
医疗设备:在医疗设备中,CAN总线也被用于连接各种传感器、执行器和控制器,如心电图机、呼吸机、输液泵等。
这些设备之间需要实时交换数据,以确保患者的安全和治疗效果。
以上案例仅供参考,如需更专业的信息,建议咨询CAN总线领域的专业人士或访问相关论坛。
同时,在使用CAN总线进行系统设计时,应充分考虑系统的实际需求和特点,选择合适的通信协议和硬件设备,以确保系统的稳定性和可靠性。
can总线通讯实例

can总线通讯实例Can总线通讯实例一、引言Can总线是一种常用于工业控制系统中的通信协议,具有高可靠性和抗干扰能力。
本文将以一个实际的Can总线通讯实例为例,介绍Can总线的工作原理以及在实际应用中的优势和应用场景。
二、Can总线的工作原理Can总线采用了CSMA/CD(载波监听多点接入/碰撞检测)的工作方式,可以实现多个设备之间的高效通信。
Can总线由两根线组成,分别是CAN_H和CAN_L,通过这两根线实现数据的传输和通信。
Can总线中的设备分为两类,分别是Can控制器和Can节点。
Can控制器负责控制总线的传输速率和数据的发送和接收,而Can节点则是实际的设备,可以是传感器、执行器等。
Can节点通过Can控制器与Can总线进行连接。
当Can节点需要发送数据时,首先会监听总线上是否有其他节点正在发送数据,如果没有,就可以将数据发送到总线上。
如果多个节点同时发送数据,会发生碰撞。
Can总线会检测到碰撞的发生,并根据一定的算法进行冲突解决,以保证数据的准确传输。
三、Can总线的优势1. 高可靠性:Can总线具有很高的抗干扰能力,能够在噪声较大的环境下正常工作。
这使得Can总线广泛应用于工业控制系统等对可靠性要求较高的领域。
2. 高效性:Can总线采用了CSMA/CD的工作方式,可以实现多个设备之间的高效通信。
Can总线的通信速率可以达到几百kbps甚至几Mbps,满足了大部分实时通信的需求。
3. 灵活性:Can总线支持多主机的工作方式,可以实现多个设备之间的灵活通信。
同时,Can总线还支持节点的热插拔,方便系统的维护和升级。
4. 成本低廉:Can总线的硬件成本相对较低,同时由于其高可靠性和抗干扰能力,可以减少系统的维护成本和故障率。
四、Can总线的应用场景Can总线广泛应用于工业控制系统、汽车电子控制系统等领域。
以下是一些Can总线的典型应用场景:1. 汽车电子控制系统:Can总线在汽车电子控制系统中被广泛应用,例如发动机控制模块、制动系统、空调系统等。
can总线应用层协议实例解析

can总线应用层协议实例解析一、简介CAN总线(Controller Area Network)是一种广泛应用于汽车、工业自动化、家庭等领域的现场总线技术。
它是一种串行通信协议,可以在短距离和长距离传输中实现高可靠性的数据传输。
本篇文章将通过一个简单的CAN总线应用层协议实例来解析CAN总线的物理层、数据链路层和应用层。
二、物理层CAN总线的物理层包括传输介质、收发器和信号电平。
其中,传输介质可以是双绞线、同轴电缆等;收发器负责将数字信号转换为模拟信号或反向转换;信号电平采用差分电压进行数据传输,具有抗干扰能力强、传输距离远等优点。
三、数据链路层CAN总线的数据链路层定义了数据传输的规则和机制,包括数据帧、远程帧和错误控制。
数据帧由标识符、数据段和控制段组成,用于传输实际的数据;远程帧用于请求发送数据,但没有数据段;错误控制包括位错误检测和错误帧发送等功能。
四、应用层CAN总线的应用层定义了实际应用中需要的数据格式和协议。
例如,在汽车中,应用层可以定义车辆控制指令、传感器数据等的数据格式和协议。
应用层还提供了应用程序接口,使得用户可以轻松地使用CAN总线进行通信。
五、协议实例下面是一个简单的CAN总线应用层协议实例,用于控制车辆的灯光系统:1. 数据帧格式:每个数据帧包括标识符、控制段和数据段。
在此实例中,标识符表示灯光控制指令,控制段包括指令类型和指令参数,数据段包括指令的具体参数值。
2. 指令类型:指令类型包括打开前大灯、关闭前大灯、打开尾灯等。
每个指令类型都有一个唯一的标识符。
3. 指令参数:指令参数根据指令类型的不同而变化。
例如,打开前大灯的指令参数包括亮度等级和闪烁频率,关闭尾灯的指令参数为空。
4. 数据传输:当车辆的灯光控制系统接收到一个数据帧时,它会根据标识符判断指令类型和参数,然后执行相应的控制操作。
同时,控制系统还可以将传感器数据或其他信息封装成数据帧发送到CAN总线上。
5. 错误控制:如果数据传输过程中出现错误,控制系统会自动发送错误帧,通知其他节点出现错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计(论文)题目:基于CAN总线的楼宇温度检测系统前言基于单片机实现传统温度检测技术的特点,提出了基于CAN总线的楼宇温度检测系统方案。
该系统方案的硬件平台主要包括温度检测模块和主控平台,并详细介绍了其硬件实现、软件设计思想及流程。
实验表明:该系统可实现对楼宇温度的实时检测,并由数码管显示检测结果,对异常情况进行处理,从而实现对楼宇房间温度的有效检测。
在传统的检测技术中,温度检测基本采用单片机系统为主,且大多数都针对工业需要,日常生活中的应用并不多;而通信多基于落后的485总线,不能进行远距离的实时数据传输,更不能与因特网相连,可靠性也不高。
因此,本文提出一种基于CAN总线的温度测控技术,该技术适合远距离控制与传输,具有非常高的可靠性。
控制器局域网(Controller Area Network,CAN)是国际上应用最广泛的现场总线之一。
CAN总线最早出现在20世纪80年代末的汽车工业中,由德国BOSCH公司最先提出,其主要特性为低成本,且总线利用率高。
CAN采用串行通信方式工作,所提供的最高数据传输速率为1Mbit/s,最大通信距离为10km。
CAN还具有可靠的错误处理和检错机制,极强的错误检测能力,发送信息遭到破坏后可自动重发;可在高噪声的干扰环境中只用,能够检测出产生的任何错误,当数据的传输距离达到10km时,CAN仍能提供5kbit/s的数据传输速率。
正是基于CAN总线的上述优点,目前CAN总线在众多领域被广泛应用,其应用范围不再局限于原先的汽车行业,而向过程工业、机械工业、纺织工业、数控机床、医疗器械及传感器等领域发展,CAN总线已经形成国际标准,并已被公认为是几种最有前途的现场总线之一。
考虑到CAN总线的高可靠性和远距离传输优点,结合目前温度检测技术的技术瓶颈,即距离短和实时性差的特点,本系统CAN总线应用于传统的温度检测中,也是一种新的尝试。
1 基于CAN 总线楼宇温度检测系统的实现本设计的总体方案如图1所示,有主控平台、报警系统、键盘控制、数码管显示、温度检测模块即电源接口电路等部分组成。
主控平台的主要功能是连接和控制各个接口,并根据操作命令完成相应数据的处理、传输。
本方案系统结构如图图1总体方案总线图2 系统结构1.1 温度检测节点的硬件设计温度检测模块是本方案的核心模块,该模块的技术关键在于温度检测节点的传感器图3 温度检测模块的检测模块图3 中DS18B20为数字温度传感器,主要用于组网温度测量,它是I-Wire 总线通信协议数字式温度传感器,测温范围为-55~+125℃,分辨率0.5℃。
SJA1000控制器是PHILIPS公司生产的符合CAN2.0B协议的协议转换器。
TJA1050是CAN协议控制器的物理总线之间的接口,对总线提供差动发送能力,对CAN控制器提供差动接受能力,使用TJA1050可以增大通信距离、提高系统的瞬间抗干扰能力、保护总线及降低射频干扰。
光耦则是高速光电隔离器件,使用已经非常普遍。
1.2 主控平台设计系统中的主控平台主要完成人机对话和系统管理功能,如各温度检测点的温度上下限设定,对由温度检测模块采集的温度进行数据库管理,实现温度的实时图4中的键盘驱动,数码管显示及报警部分均有成熟的电路可用选用,核心PC机可以采用单片机——A T89S51。
2 软件设计2.1 主控台软件设计主控台软件分为初始化和主调度。
初始化部分仅在上电启动或复位时运行;主调度主要包括CAN信息帧处理、键盘按键处理、显示处理和警报、数据和时间处理、中断控制等部分。
软件框图如图5所示。
图5 主控机软件框图主调度始终不停地在多个子任务之间巡查和调用。
主调度负责管理多个子任务的运行,巡查各个子任务,当外部事件触发主调度的相关子任务时,则此子任务被激活,进行子任务处理,否则主调度跳过这一子任务。
任何系统在使用之前都要对系统进行初始化,此系统的初始化包括CAN总线接口的初始化、时钟芯片的初始化等。
键盘扫描电路及按键处理程序则用来实现键盘的输入按键的识别及相关处理。
CAN信息帧处理模块主要实现基于CAN总线的控制台和个控制节点间的通讯协议。
显示处理和报警模块则实现将数据和时间处理模块的结果进行数码管显示,并控制报警系统。
2.2 节点软件设计此系统包含多个节点,分布在各自需要的位置,每个节点都是通过CAN总线接受主控台控制,处理后得到该节点所控制的每个房间温度极限值。
同时,每个节点配有各自的温度传感器DS18B20,节点系统能够读取该节点的温度值,与该房间的温度极限值进行比较,如果超过极限值则通过控制模块控制发出相应信号。
此信号通过CAN总线将节点位置和相应温度值送往主控制台。
节点软件框图如图6所示。
2.3 CAN接收与发送数据程序发送数据程序把数据存储区中待发送的数据取出,组成数据帧,然后将数据帧发送到CAN控制器的发送缓冲区。
在接收到发送模块发送请求后,发送程序启动发送命令。
数据从CAN控制器发送到总线是由CAN控制器自动完成的。
数据从CAN总线到CAN控制器的接收缓冲区也是由CAN控制器自动完成的。
接收程序只需从接收缓冲区读取数据,并将其存储在数据存储区。
接收和发送数据的中断程序流程如图7、图8所示。
图7 接收数据流程图 图8发送数据流程图3 设计原理本系统主要由三部分组成,分布在现场的节点,即温度检测模块;主控台,是所有节点的控制核心;还有就是连接主控台和各个节点通讯的CAN 总线。
温度检测模块是系统构成的基础与关键,它直接与温度采集机构相连接,实现对温度的检测与控制,如温度超限报警等。
虽然该模块是系统的一个组成部分,但它也可以独立工作,即在系统其它部分停止工作的情况下,自动温度测控模块仍可以独立控制执行机构来实现基本的温度测控功能,提高了系统工作的可靠性。
同时由于系统对主控台的依赖并不是绝对的,因此就降低了各个节点独立工作的风险。
这样就算是由于年久失修使总线失去通讯功能时,温度检测模块仍可根据以前的设定对相应事件做出反应。
系统工作时,首先主控台将各个温度检测点的温度设定值及极限温度设定值通过CAN 总线发送给相应的温度检测模块,各个节点的温度检测模块将接收到的各个设定值保存,这样在不更新设置的情况下,温度检测模块可以脱离主控台而独立工作。
各个节点的温度测控模块与主控台之间通过CAN 现场总线通讯。
与其它网络不同,在CAN 总线的通信协议中,没有节点地址的概念,也没有任何与节点地址相关的信息存在,它支持的是基于数据的工作方式。
即,CAN 总线面向的是数据而不是节点;因此加入或撤销节点设备都不会影响网络的工作,这样的结构十分适用于控制系统要求快速、可靠、简明的特点。
同时,CAN 总线的直接通讯距离最远可以达到10Km ,通过CAN 总线中的中继器可以使通讯的距离进一步延长。
本系统使用的温度采集模块是数字温度传感器DS18B20,它的温度测量范围为-55~+125℃,精度为0.5℃,测量的温度值用9~12位数字表示,最大转换时间为750ms,温度超标报警的上、下限值,DS18B20的转换分辨率均可由用户设定,并能长期保存。
改变了传统温度测量的方法,能在现场采集温度数据,并直接将温度物理量变换为数字信号并以总线方式传送到主控台进行数据处理。
可应用于各种领域、各种环境的自动化测试和控制系统,使用方便灵活,测试精度高,优于任何传统的温度数字化、自动化测控设备。
本系统使用的显示器是数码管。
本系统在设计时主要考虑的是使用CAN总线进行主控制台和各个节点之间通讯控制。
因此在设计时使用的报警器只是用简单的蜂鸣器替代,而在现实应用中则应选择合适的报警器。
不同的报警器有不同的报警方式,因人使用的区别而异。
如果要将此系统应用到实际之中,只需用合适的报警器替代本系统中的蜂鸣器。
实现原理相同,只需稍加改变。
显示部分使用的则是人们日常使用的数码管,它的功耗极低,抗干扰能力强,因而在低功耗的单片机系统中能够得到广泛的应用。
数码管的显示方法是动态扫描方式,通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口。
4 结束语楼宇温度检测系统不仅具有基本的温度测控功能,而且通过CAN总线将分布在各处的节点连接起来,可以在主控台上进行集中监控以及查询和统计等数据的管理,具有结构灵活、集中控制和管理于一体等优点,克服了人工方式控制精度差,劳动强度大,且集中综合管理更加困难等缺点,降低了各种损耗,管理手段实现了现代化。
在本设计方案中硬件电路主要由微处理器、CAN控制器、温度芯片DS18B20、显示数码管、按键键盘、复位电路、蜂鸣器等几部分组成。
单片机AT89S51是硬件电路的核心,承担CAN控制器的初始化、数据收发控制等任务;CAN总线控制器用于同主控台进行远程通讯,能够独立完成CAN总线上数据的接收和发送工作;DS18B20芯片用于检测和发送温度数据。
温度测控模块是系统构成的基础与关键,它直接与温度采集机构相连,实现对温度的检测与控制,如温度超限报警等。
基于CAN总线的智能测温系统具有测量范围广、精度高、环境适应能力强等特点。
该系统通过CAN总线控制器和主控台连接,可以方便地构成分布式测控系统。
此外,该智能测温系统可以应用于其它远距离分布式控制场合,而且该智能测温系统在电力、油田、楼宇、冶金等工业自动化领域也具有广泛的应用前景。
在此,需要说明的是本系统测得的温度误差是DS18B20芯片的测量误差及单片机的处理误差,而系统传输过程中不会增加新的误差,但有时也有可能由于CAN总线协议编写不对,会引起丢失数据现象的情况存在。
本系统基本可以实现对楼宇房间温度的有效检测,达到城市用电高峰时的电能耗主动控制检测。
5.1 主控台原理图5.2 节点原理图6.1 主控台程序#include <reg52.h> #include <intrins.h>#include <can_showdef.h>void CAN_init( void ); // 初始化CAN 总线芯片void CAN_TXD( void );//CAN 发送子函数 void Rxd_deal(void);//接收处理函数 void Txd_deal(void);//发送处理函数 void Delay(uchar delay_time);//延时子函数void fasong();//显示子函数void jieshou();//接收显示子函数 void shezhi();//设置子函数 void bojing(); sbit key1 = P3^0; sbit key2 = P3^1; sbit key3 = P3^3; sbit bao = P3^4; sbit key4 = P3^5; sbit p2 = P2; sbit p22 = P2^2; sbit p24 = P2^4; sbit key5 = P2^6;sbit key6 = P2^7;uchar shi=3,ge=0,shezhishi; //CAN_init();/********延时1MS 函数***/ void delay(uchar x) { uchar i,j;for(i=0;i<x;i++) for(j=0;j<120;j++); }void main(void) {//CPU 初始化 SJA_RST = 0;delay(10);SJA_RST = 1;//CAN 总线复位管脚 SJA_CS = 0;//CAN 总线片选有效 EX1 = 1;//外部中断1使能;CAN 总线接收中断IT1 = 0;//低电平触发IT0 = 1;//脉冲方式触发,外部中断0负边沿触发EX0 = 1;//打开外部中断0EA = 1; //打开总中断SJA_CS = 1;//CAN 总线片选无效,保证数据线上的变化不会影响SJA1000 //CPU 初始化CAN_init( ); //SJA1000初始化,对 SJA1000寄存器的读写是采用外部寄存器寻址方式,所以不需要程序单独控制片选有效无效 _nop_(); _nop_(); while(1) {_nop_();_nop_();////////显示/////////////// if(key5==0) {if( TXD_flag == 1 )Txd_deal();//发送处理程序while(!key5);//按下5键,将设置好的数据发送 fasong(); }if(key6==0) {if( RXD_flag )Rxd_deal();//接收处理程序while(!key6);//按下6键,接收到来的数据jieshou(); }bojing(); }}//***********接收处理函数************ void Rxd_deal(void) {EA = 0;//关闭CPU 中断RXD_flag = 0;Rxd_data = RX_buffer[5];EA = 1;}//*************发送处理函数********* void Txd_deal(void){_nop_();TXD_flag = 0;TX_buffer[5] = Txd_data;// CAN_TXD();_nop_();_nop_();}///中断处理程序//////////////void CAN_RXD( void ) interrupt 2{//接收数据函数,在中断服务程序中调用 uchar data Judge;EA = 0;//关CPU中断IE0 = 0;Judge = IR;if( Judge & 0x01){//IR.0 = 1 接收中断RX_buffer[0] = RBSR;RX_buffer[1] = RBSR1;RX_buffer[2] = RBSR2;RX_buffer[3] = RBSR3;RX_buffer[4] = RBSR4;RX_buffer[5] = RBSR5;RX_buffer[6] = RBSR6;RX_buffer[7] = RBSR7;RX_buffer[8] = RBSR8;RX_buffer[9] = RBSR9;RX_buffer[10] = RBSR10;RX_buffer[11] = RBSR11;RX_buffer[12] = RBSR12;RXD_flag = 1;//置有接收标志CMR = 0X04;Judge = ALC;//释放仲裁随时捕捉寄存器Judge = ECC;//释放错误代码捕捉寄存器}IER = 0x01;// .0=1--接收中断使能; EA = 1;//打开CPU中断}//--------按键中断发送处理---/////////////////////SJA1000 的初始化///////void CAN_init( void ){uchar bdata Judge;uchar ACRR[4];uchar AMRR[4];ACRR[0] = 0x11;ACRR[1] = 0x22;ACRR[2] = 0x33;ACRR[3] = 0x44;//接收代码寄存器,节点1AMRR[0] = 0xff;AMRR[1] = 0Xff;AMRR[2] = 0xff;AMRR[3] = 0xff;//接收屏蔽寄存器。