CAN智能节点论文

2024-05-27

CAN智能节点论文(精选7篇)

CAN智能节点论文 第1篇

多台三菱FX系列PLC的组网方式可以采用RS485总线。由于RS485本身存在的许多局限性,随着科技的发展,RS485总线效率低、系统实时性差、通讯可靠性低、后期维护成本高、网络工程调试复杂、传输距离不理想、单总线可挂接的节点少、应用不灵活等缺点慢慢地暴露出来[1]。

CAN总线是被公认为几种最有前途的现场总线之一,已形成了国际标准,广泛地应用于汽车、电力系统等众多领域。CAN总线具有十分优越的特点:低成本,极高的总线利用率,很远的数据传输距离(长达10km),高速的数据传输速率(高达1Mbit/s),可根据报文的ID决定接收或屏蔽该报文,可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发,节点在错误严重的情况下具有自动退出总线的功能,报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息[1]。

因此,用CAN总线取代PLC的RS485网络是一种比较理想的方案,而其中的关键就是PLC智能节点如何设计的问题。

2 总体设计

如图1所示,PLC智能节点有1个RS485通道,1个CAN通道。微处理器和485BD之间采用RS485协议(具体是PLC计算机链接方式的协议格式1或格式4);微处理器和CAN总线之间采用基于CAN2.0B的CAN-PL协议。CAN总线数据的接收和发送由CAN协议控制器和CAN总线收发器完成。RS485数据的接收和发送由微处理器完成。微处理器负责RS485协议和CAN-PLC转换器协议之间的数据转换,以及处理键盘电路等。另外,添加了光电隔离模块,从而提高了系统的抗干扰能力和可靠性;还有键盘模块,这样可以随时设置CAN波特率、RS485波特率以及PLC智能节点的站号等。如图2所示,用PLC智能节点实现了基于CAN总线的PLC组网,能够通过PC机来远程监控PLC的运行状况。

3 硬件设计

3.1 CAN模块的设计

考虑到开发周期和性价比等问题,可以选择的方案是:不带CAN协议控制器的MCU(STC89C54RD+)+CAN协议控制器(SJA1000)+CAN总线收发器模(CTM1050T),如图3所示。这里需要注意以下几点。

(1)SJA1000的片选地址是7F00H。当TX1不使用时,RX1引脚的电位必须维持在0.5VCC以上,否则将不能形成CAN协议所需要的逻辑电平。

(2)CTM1050T是已集成了电源隔离、电气隔离、CAN收发器、CAN总线保护于一体的隔高速离CAN收发器模块,由此摒弃了以往繁琐、体积偏大、成本偏高的设计:高速光耦+电源隔离模块+CAN收发器。

3.2 PLC模块设计

如图4所示,RS485收发器件MAX491可以采用双对子布线方式与485BD相连接,从而组成RS485接线电路,实现PLC与MCU之间的通信。为了有效地抑制电气干扰,在电路中添加了光电耦合器6N137。使用6N137必须注意三点:第一,6N137光耦合器的电源管脚旁应有—个0.1μF的去耦电容;第二,第6脚输出电路属于集电极开路电路,必须上拉一个电阻;第三,第2脚和第3脚之间是一个LED,必须串接一个限流电阻。485BD的连线端子SDA和SDB以及和RDB和RDA之间必须接330Ω的终端电阻[2]。

另外,在电路图中,7.5V的瞬变电压抑制二极管IN4737A和680pF的电容可以避免RS485总线在受外界干扰时(雷击、浪涌等)产生的高压损坏RS485收发器,同时还提高了电路的EMI性能。

3.3 键盘电路模块设计

利用矩阵式键盘,能够用较少的端口实现较多的按键。如图5所示,在系统初始化时,P1.2~P1.4输出高电平,P1.5~P1.7输出低电平。一旦有相关功能按键按下,则通过与门输出一个低电平向MCU申请中断[3]。

4 协议和软件设计

4.1 MCU与PLC的通信格式

三菱PLC的计算机链接通信方式可以选择协议格式1或协议格式4;MCU对PLC的控制有读和写两种情况。MCU与PLC之间的通信是半双工通讯方式(MCU是主机,PLC是从机),任何时候的数据传送都是由MCU引起的。其中传送的数据形式是ASCII码。

4.2 CAN-PLC协议

CAN-PLC协议是基于CAN2.0B扩展帧设定的,共13个字节,包括两部分,前5个字节为帧信息部分,后8个字节为帧数据场部分,如表1所示。

(1)字节1为帧信息。第7位固定为1,表示帧格式为扩展帧,若为0则表示的是标准帧;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在数据帧时实际的数据长度。

(2)字节2~5为报文识别码,其高29位有效。其中字节3(ID.20~ID.13)和字节4(D.12~ID.5)分别表示PLC头软元件高地址和低地址。其它报文识别码的设置见表2~5。

在表2中,BW和WW是数据帧,其它PLC命令为远程帧。

(3)字节6~13为数据帧的实际数据,远程帧时无效。一帧信息最多可以传送4个PLC字软元件数据或64个PLC位软元件数据。字节6和7表示PLC软元件数据1,字节8和9表示PLC软元件数据2,字节10和11表示PLC软元件数据3,字节12和13表示PLC软元件数据4。

4.3 系统软件流程

在图6中,系统上电后,首先进行系统初始化(包括MCU的串口、SJA1000和键盘电路等)。若PC端上位机发出命令后,在正常情况下,则启动PLC智能节点的工作:接收上位机命令后进行数据转换并向PLC传送数据,然后接收PLC返回的数据,进而进行数据转换并向CAN总线发送数据。处理键盘采用的是中断扫描方式。无按键按下时,MCU处理其它工作而不必进行进行键的扫描;在有相关功能按键按下时,便向MCU申请键盘中断,在键盘中断服务程序中完成键盘处理(如设置CAN波特率和RS485波特率等)。这样就提高了MCU的工作效率。

5 结束语

本设计研究并解决了CAN总线与PLC通信的问题。PLC智能节点实质上就是这两者的中转器。根据CAN-PLC协议,开发PC端上位机软件,实现对PLC的远程监控。该节点不仅成本低廉,而且具有良好的性能和通用性;如果广泛推广,必将产生巨大的社会效益和经济价值。

参考文献

[1]广州周立功单片机发展有限公司.RS485升级到CAN[Z].广州周立功单片机发展有限公司,2003.

[2]Mitsubishi Electric.FX COMMUNICATION(RS-232C,RS485)User's Manual[Z].Mitsubishi Electric,2000.3.

CAN智能节点论文 第2篇

关键词:CAN总线,瓦斯,传感器,远程监控

0 引 言

我国是世界上最大的煤炭生产和消费国,也是世界上少数几个以煤为主要能源的国家之一。煤炭中含有大量的甲烷(CH4)等易燃易爆气体,它是瓦斯形成的主要成分,发生瓦斯事故后会造成巨大的经济损失,危及矿工的生命。随着煤矿开采技术手段的不断改进和开采规模的扩大及开采深度的不断延伸,安全隐患越来越多,特别是重大、特大瓦斯事故在煤矿事故中所占的比例也越来越高。如果不控制住瓦斯事故,就不能实现煤矿安全生产状况的稳定,也就无法保障煤炭工业的持续健康发展。所以,对煤矿井下瓦斯气体进行快速准确的监测显得尤其重要,对易燃易爆混合气体监测系统的开发也成为重中之重[1] 。

世界各国也均有煤矿瓦斯气体监测的系统,如波兰的DAN640O、法国的TF200、德国的MINOS和英国的Senturion-200等,其中全矿井综合监测控制系统有代表性的产品有美国MSA公司生产的系统,德国BEBRO公司的PROMOS系统。但是这两种系统只是基于井下监测,并无数据上传,不能实现智能化监控。我国监测监控技术应用较晚,20世纪80年代初,从波兰、法国、德国、英国和美国等引进了一批安全监测系统,装备了部分煤矿;在引进的同时,通过消化、吸收并结合我国煤矿的实际情况,先后由重庆煤科院、辽宁抚顺煤科院等国内知名煤矿科学研究所研制出KJ 2,KJ 4,KJ 5,KJ 10,KJ 13,KJ 19,KJ 38,KJ 66,KJ 75,KJ 80,KJ 92,KJ 95,KJ 101等煤矿有害气体监测系统,在我国煤矿已有大量使用,但其中很大一部分仪表的传输数据是模拟方式,将气体浓度转化为脉冲量,易受矿井下强电磁设备干扰,造成监测结果不准确,易出现误报警等现象[2]。

鉴于此提出基于CAN总线研究设计方案,系统结构见图1,工作原理如下,每个智能节点可以监测64点瓦斯,每个智能节点把监测的数据通过CAN总线传输到上位机,上位机根据传输的数据做出决定。上位机系统采用PCI总线工业控制机和CAN总线接口通信卡,软件采用VB或组态软件编写应用程序,下位机(也称远程智能节点)采用单片机设计,下面着重研究设计智能节点[3]。

CAN总线直接通信距离最远可达到10 km(速率在5 KB/s以下),在通信距离为40 m以内时,通信速率最高可达到1 Mb/s。CAN总线节点数主要取决于总线驱动电路,目前可达到110个,如果需要更多节点,可以利用中继器,实现网络节点的增加和传输距离的延长[4,5]。

1 智能测控节点的硬件组成

CAN总线智能测控节点的总体设计的结构框图如图2所示。硬件组成主要由P80C592单片机、多路转换器、可燃气传感器、CAN总线电路组成。

1.1 智能节点的CAN总线通信接口电路设计

CAN总线系统智能节点如图3所示,为 CAN 总线通信硬件电路原理图。图3可以看出,电路主要由三部分所构成:P80C592芯片、高速CAN 总线收发器 TJA1050[6]和高速光电耦合器 6N137。

P80C592是Philips公司采用先进的COMS工艺制造的高性能8位单片机[7]。该单片机的指令集与80C51完全兼容,但在80C51标准特性的基础上又增加了一些对于应用具有重要作用的硬件功能。该器件具有下列特性:带有80C51中央处理单元(CPU);带2×256 KB的片内RAM,外部可扩展至64 KB;具有两个标准的16位定时器/计数器;新增一个包括四个捕获和三个比较寄存器的16位定时器/计数器;具有8路模拟量输入的10位ADC变换器;带有两路分辨率为8位的脉冲宽度调制输出;具有两级优先权的15个中断源(可以有2~6个外部中断源);具有五组8位I/O端口和一组与ADC模拟量输入共用的8位输入口;带有与内部RAM进行DMA数据传送的CAN控制器;内含具有总线故障管理功能的1 Mb/s CAN控制器;VDD/2基准电压;具有与标准80C51兼容的全双工UART模式;带有在片监视跟踪定时器(WDT);时钟频率为1.2~16 MHz。

1.2 MAX306数据采集电路的设计

MAX306是由Maxim Integrated Products公司生产的16通道CMOS模拟多路转换器,是一款16选1模拟开关。使用时注意不用引脚一定要处理,一般通过电阻接地。导通速率0.2 μs,双电源,漏电流2 nA。由于P80C592单片机具有8路模拟量输入的10位ADC变换器,用4个MAX306和P80C592单片机4路模拟量输入的10位ADC306变换器连接,可以组成64点瓦斯监测,MAX306和P80C592单片机连接如图4所示。

1.3 气体传感器KGS-20

该设计用KGS-20型可燃气传感器以二氧化锡为基本敏感材料[8],其结构如图5所示,专门用于可燃气浓度检测的一种半导体型气体传感器。它的基本特征是:极高灵敏度和极快的响应速度,且功耗低。KGS-20型可燃气传感器适用于对瓦斯等可燃气浓度的检测,用于瓦斯报警器,可燃气报警器,瓦斯检测仪等。KGS-20型可燃气传感器经过信号调理连接到16选1模拟开关MAX306。

2 智能测控节点的软件组成

CAN总线智能节点的软件设计主要包括三大部分:CAN节点的初始化、报文发送和报文接收。熟悉这三部分的设计,就能编写出利用CAN总线进行通信的一般应用程序。

当然,如果要将CAN统中,还需详细了解有关CAN总线的错误处理、总线关闭处理、验收滤波处理、波特率参数设置和自动检测以及CAN总线通信距离和节点数的计算等方面的内容[9,10]。CAN智能测控节点流程如图6所示,按照流程图利用汇编语言或C51编写相应的程序[11]。

3 结 语

基于CAN总线64路煤炭瓦斯气体传感器可燃气体监测技术是信息采集与CAN网络通信相结合的产物,用以实现现场数据的采集、分析和通信等多种功能,但是由于CAN总线没有防爆功能,所以设计一定要考虑加防爆隔离栅。

利用P80C592单片机本身具有模拟量输入的10位ADC变换器和带有与内部RAM进行DMA数据传送的CAN控制器,减小了体积。该设计具有简单明了、性能高、成本低廉、抗干扰能力强等特点。

参考文献

[1]郭勇义,何学秋,林柏泉.煤矿重大灾害防治战略研究与进展[M].徐州:中国矿业大学出版社,2003.

[2]俞启香.矿井瓦斯防治[M].徐州:中国矿业大学出版社,1992.

[3]李海臣.采用纳微传感器和单片机对煤矿井下瓦斯浓度实现远程闭环监控[J].工矿自动化,2005(5):27-28.

[4]夏德海.现场总线的现状及其发展趋势[J].电气时代,2006(8):16-19.

[5]饶运涛,邹继军,王进宏.现场总线CAN原理与应用技术[M].2版.北京:北京航空航天大学出版社,2007.

[6]Philips Semiconductors.TJA1050 High Speed CAN Tran-sceiver Datasheet[Z].2000.

[7]Philips Semiconductors.P8xC59l Single Chip 8 B Controllerwith CAN Controller Datasheet[Z].1999.

[8]童敏明.新型瓦斯传感器关键技术的研究[J].中国矿业大学学报,2003,33(1):56-58.

[9]姜重然,陈文平,单琳娜.基于单片机以太网节点及精简TCP/IP协议栈的设计[J].单片机与嵌入式系统应用,2008(8):73-75.

[10]姜重然,陈文平,单琳娜.基于现场总线一种报文优先级产生与检测方法[J].测控技术,2008(9):54-56.

CAN智能节点论文 第3篇

关键词:CAN总线,智能节点,设计,上料控制系统

0 引言

随着科技的不断进步, 人民生活水平和环保节约意识的不断增强, 生物质电厂越来越多, 规模也不断扩大, 同时对提高生产效率的需求也越来越迫切, 传统的工业总线已逐渐不能满足其对通讯灵活可靠的要求。本文基于CAN总线[1], 构建了生物质电厂上料系统的控制网络, 并对网络中常用的CAN总线智能节点 (数字量输入输出节点) 进行了硬件和软件设计。

1 CAN总线智能节点的总体设计

生物质电厂上料系统的控制网络结构如图1所示。整个控制系统主要由系统复位电路、时钟电路、电源电路、CAN总线模块电路和输入输出接口电路及串行通讯电路组成[2]。智能节点的硬件总体结构如图2所示。

2 CAN总线智能节点的硬件设计

2.1 最小工作系统设计

选用微处理器AT89S52作为最小工作系统的核心部分, 包括时钟电路和系统复位电路两部分。时钟电路采用无源石英晶振;复位电路具有复位看门狗功能, 实现系统复位初始化。

2.1.1 复位电路设计

本系统中在CAN总线控制器SJA1000和微处理器AT89S52功能初始化之前, 须执行硬件复位操作。复位电路由具有看门狗功能的电源监测芯片DS1232提供硬件初始复位信号, 该芯片在电源上电、断电、电压瞬态下降和死机时都会输出一个复位脉冲。复位电路的具体电路原理图如图3所示。

2.1.2 时钟电路设计

本系统采用FGE11.0592的石英晶振, 连接在XTAL1和XTAL2之间, 可等效看作一个并联的谐振回路, 该石英晶体的并联谐振频率即为时钟信号频率。

2.2 电源模块电路设计

电源模块采用的芯片为三端集成稳压器78L05, 该芯片输出电流可达100 mA, 并且具有优越的限制内部电流的功能和热关断特性, 这使得其特别适用于出现过载的情况。采用该芯片相对于采用传统的齐纳二极管电阻组, 输出阻抗有效改善, 可大大减少偏置电流, 这在硬件上保证了整个电源模块能够最大限度地降低外部的干扰影响, 为系统提供+5V稳定的电源输入。系统电源模块电路原理图如图4所示。

2.3 CAN总线模块电路设计

本文选用PHILIPS公司生产的通用收发器PCA82C250作为CAN总线收发器, 提供对总线数据的差动发送能力和对通讯总线的差动接收能力。为了提高数据传送的可靠性和抗干扰能力, 在CAN总线控制器与收发器之间增加高速光耦6N137, 实现了CAN总线上各CAN节点的电气隔离, 有效避免了实际应用中各种干扰信号给通讯电路带来的不良影响。需要注意的是当电气隔离时, 光耦的器件两侧需要对两侧的电源进行处理, 保证两电源之间没有直接的联系, 互为隔离电源, 否则光耦隔离也就失去了意义[3]。CAN总线模块电路图如图5所示。

2.4 输入输出电路设计

2.4.1 数字量输入 (DI) 电路设计

该部分使用光电耦合器TLP521-4将输入端与智能节点其他单元进行隔离, 以提高智能节点的抗干扰能力和稳定性。该部分设计为具有8路开关量输入功能, 主控制器与外部输入通道之间使用可双向传输数据的8路同相三态双向总线收发器74LS245缓冲外部开关量的输入, IR0~IR7为数字量输入端口。

2.4.2 数字量输出 (DO) 电路设计

数字量输出节点具有8路开关输出功能, 电源电压值决定了输出电压值高低, DO0~DO7为数字量输出端口, 可外接执行元件[4]。

2.4.3 串口通讯电路设计

通讯接口设计为电脑普遍通用的RS-232接口, 芯片采用较为常用的串行通讯芯片MX232芯片, RS-232电平转换芯片可以实现RS-232电平与TTL电平之间的转换, 进而再通过DB9芯片串口与PC机或智能仪表进行串口通讯。本设计可通过此串口实现智能仪表与上位机之间的通讯, 此外还可用于通过此串口向单片机下载和调试程序。

3 CAN总线智能节点的软件设计

CAN总线智能节点的软件设计主要可分为3个部分:SJA1000初始化、报文发送和报文接收。本系统中所用的CAN控制器SJA1000, 其初始化通常在复位模式下进行, SJA1000在INT得到一个复位脉冲从而进入复位模式, 主控制器读取请求标志和复位模式以判断芯片是否进入复位模式。初始化工作是对SJA1000的滤波方式、工作方式、波特率、中断允许寄存器 (IER) 、接收代码寄存器 (ACR) 、接收屏蔽寄存器 (AMR) 等设置, 当以上这些设置完成后, SJA1000最终方可进入工作状态。SJA1000初始化流程如图6所示。

报文发送程序完成报文节点的发送, 接收子程序完成节点报文的接收, 报文发送和接收都有两种控制方式:中断请求控制和查询控制, 此处设计为查询方式控制。报文发送流程如图7所示。

4 结语

本文基于CAN总线构建的生物质电厂上料控制系统通讯高效稳定、抗干扰能力强。随着科技进步, 对工控系统的实时性和稳定性要求越来越高, CAN总线智能节点在工控领域必将有更为广阔的应用前景。

参考文献

[1]李金刚, 刘永鸿.基于AT89C51型单片机的CAN总线智能节点设计[J].国外电子元器件, 2006, 10 (8) :26-29.

[2]宋杰.基于SJA1000的CAN总线智能节点的设计与实现[D].苏州:苏州大学, 2011:10-19.

[3]张新, 何志坤, 黄生豪, 等.车辆动力学稳定性协同控制CAN网络系统硬件设计[J].长沙理工大学学报 (自然科学版) , 2013, 10 (1) :72-76.

CAN智能节点论文 第4篇

MC9S08DZ32 (以下简称DZ32) 是Freescale公司推出的一款性价比较高的8位40-MHz HCS08单片机, 片内集成24通道, 12位分辨率, 2.5uS转换时间ADC (模数转换) ;两路SCI (串行通讯接口) , 可支持LIN2.0协议和SAE J2602协议;MSCAN协议, 支持标准和扩展数据帧;支持远程帧;5个带有FIFO (先入先出) 存储的接收缓冲器;32K Flash;2K RAM;1K EEPROM。

CAN总线是Bosch公司为现代汽车应用而推出的一种总线, 与普通串行总线相比, CAN总线的数据通信具有突出的可靠性、实时性和灵活性。CAN总线现已广泛应用于汽车电子、工业现场控制、小区安防、环境监测等众多领域中。CAN总线为多主控制方式工作, 在总线空闲时, 网络上任何节点都可向网络上其它节点发送信息。设计CAN通讯接口是很重要的一个环节, 设备的正确运行与其密切相关。

1 硬件设E计MC

CANN CAN图1所示为CAN智能节点硬件结构框图。CAN智能节点主要由带CAN控制器的DZ32和CAN收发器组成。DZ32作为CAN智能节点控制器提供对CAN2.0B协议的支持。通过对片内寄存器的读、写操作, 智能节点能够设置CAN总线通信模式, 实现数据的发送与接收。其传输速度可以达到1Mbps, 满足高速大流量实时传输要求。图2所示为CAN智能节点硬件电路图。DZ32的供电电源为5V, 图中U2为线性电源LM317, 将工业现场常用的24V电源转成5V, J1为CAN智能节点的BDM下载接口, 程序由BDM下载到DZ32中, U3为NXP公司的TJA1050T高速CAN收发器, TJA1050的设计使用了最新的EMC技术。它采用了先进的绝缘硅技术进行处理, 这项技术使TJA1050抗电磁干扰性能更好。另外MSCANTJA1050在不上电状态下保持无源特性。DZ32外围接口非常丰富, 应用中可以将多余的接口定义成GPIO (通用输入输出接口) , 如DI (数字量输入) 、DO (数学量输出) 、AI (模拟量输入) 、AO (模拟量输出) 等, 以适应不同的应用需求。

2 软件设计

在实际应用中, CAN节点将按照工艺流程采集处理GPIO接口上的信号, 同时将信息发送到主站进行存储与处理。

2.1 CAN标识符分配

CANBDMT CAN TJA1050CAN节点软件设计的主要任务是CAN协议的规范化处理, 即CAN报文的分配、数据通讯的实现等。CAN报文包括扩展帧格式 (CAN2.0B) 、标准帧格式 (CAN2.0A) 和远程帧格式3种, 本论文中参考iCAN协议规范, 使用扩展帧格式进行报文分配, 如表1所示。

DI节点地址 (MAC ID) 为CAN设备在CAN网络上的唯一标识, 节点地址值的范围为0x00~0x3F。所以在这种规范下的一个CAN网络上最多可容纳64个节点。

响应标识位 (ACK) 用于区分帧类型为命令帧还是响应帧, 并说明是否需要应答本帧, 当ACK为“0”时, 用于命令帧, 本帧需要应答。当ACK为“1”, 时用于响应帧, 不需应答。

CAN功能码 (FuncID) 用于指示CAN报文需要实现的功能, 接收报文的节点根据报文的功能码进行相应的处理。

资源节点地址 (SrcID) 用于指示所要访问的从站内部资源的起始地址, 分配8位, 接收报文的从站根据报文中的资源节点地址对内部相应的资源进行操作。

2.2 CAN节点程序编写

CANCAN网络里的所有CAN节点分为主站节点与从站节点, 主站节点通过广播的形式发送命令帧给从站, 从站通过事件触发的方式发送数据帧。

CAN节点的程序在Freescale的开发平台CodeWarrior v6.2上用C语言开发。包括DZ32启动程序、MSCAN启动程序、CAN收发程序等。MSCAN启动程序主要功能是设置CAN的工作模式与CAN总线的波特率。初始化程序如下:

程序中采用中断的方式接收CAN数据, 在DZ32中CAN接收中断向量号为28, CAN中断接收程序如下:

3 结论

CAN智能节点论文 第5篇

现场总线是安装在生产制造过程中的装置与控制室内的控制装置之间的一种数字式、串行、多点通信的数据线。应用现场总线技术不仅可以降低系统的布线成本, 还具有设计简单、调试方便等优点。同时, 由于现场总线本身还提供了灵活且功能强大的协议, 这就使得用户对系统配置, 设备选型具有强大的自主权, 可以任意的将多种功能模块组合起来扩充系统的功能。在众多的现场工业总线中。随着温度控制技术在各个领域得到广泛地推广和应用, 相关行业对温度控制技术的要求与日俱增。目前市场上也有一些温度控制系统, 但是这些系统在传送数据时实时性能实现的不是很好, 而CAN总线的实时性强、成本低, 而且还具备可靠性高、抗干扰强等特点。综合多方面因素考虑, 我们能够利用CAN总线的特点和优势设计温度控制系统。

1 设计方案

1.1 系统功能要求

系统能够接受数字式温度传感器DS18B20的温度信号, 将温度信号传给单片机, 完成单片机最小系统设计, 并把此系统作为CAN的节点, 节点的硬件包括AT89C52单片机、CAN总线驱动器PCA82C250、CAN总线控制器SJA1000、单片机的时钟和复位电路。主要研究基于AT89C52单片机与DS18B20数字温度传感器的多点温度测量系统。完成数字式温度传感器与CAN总线节点的接口设计及电路设计, 实现具有数字式串行温度采集功能的CAN总线节点的硬件设计。应用CAN总线控制器SJA1000及其总线收发器的工作原理, 完成数字式温度传感器与CAN总线节点的接口设计。

1.2 硬件功能模块

该系统主要由现场数据采集模块和总线发送模块构成。现场数据的采集是以AT89C52单片机为核心控制单元, 外接数字传感器DS18B20, 从而获得现场环境的温度信号。通过CAN总线控制器SJA1000和CAN总线驱动器PCA82C250将数据发送到CAN总线上。CAN节点由微处理器、CAN控制器SJA1000、CAN驱动器PCA82C250构成。CAN控制器SJA1000执行在CAN规范中规定的完整的CAN协议, 用于报文的缓冲和验收过滤, 负责与微控制器进行状态、控制和命令等信息交换;在SJA1000下层是CAN收发器PCA82C250, 是CAN控制器和总线接口, 用于控制从CAN控制器到总线物理层或相反的逻辑电平信号, 提供对总线的差动发送和对CAN控制器差动接收功能。

系统总体框图如图1所示。

2 硬件电路设计

硬件电路的设计主要是对CAN总线控制器SJA1000和微处理器AT89C52之间以及CAN总线驱动器PCA82C250和物理总线之间接口的电路设计。CAN控制器SJA1000是CAN总线接口电路的核心, 它主要用来完成CAN的通信协议, 而CAN总线驱动器PCA82C250的主要功能是增加通信距离、提高系统瞬间抗干扰能力、保护总线、实现差分电压输出等。

温度采集电路运用的是数字式温度传感器DS18B20, 它将接收到温度信号以数字量形式传送至单片机。系统主要包括微处理器AT89C52、CAN总线控制器SJA1000、CAN总线驱动器PCA82C250和数字式温度传感器DS18B20。电路原理图如图2所示。

3 温度传感器DS18B20工作原理

数字式温度传感器DS18B20中低温度系数晶振的振荡频率受温度影响起伏不大, 它将产生的固定频率的脉冲信号传送给计数器1。而高温度系数晶振的振荡频率受温度变化而明显改变, 它将产生的固定频率的脉冲信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器的作用是对低温度系数晶振产生的脉冲信号进行减法计数, 当计数器1的预置值减到0时, 温度寄存器的值将加1, 计数器1的预置将重新被装入, 计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数, 如此循环直到计数器2计数到0时, 才停止温度寄存器值的累加, 此时温度寄存器中的数值就是被测温度。

数字式温度传感器DS18B20可完成对温度的测量, 以12位转化为例:用16位符号扩展的二进制补码读数形式提供, 以0.0625℃/LSB形式表达, 其中S为符号位。这是将测量的12位信号转化后得到的12位数据, 存储在DS18B20的两个8比特的片内随机存取数据中。二进制中的前面5位是符号位, 如果测得的温度大于0, 这5位符号位为0, 将测量的数值乘以0.0625就可以得到实际温度;如果温度小于0, 这5位符号位为1, 将测量的数值取反加1后再乘以0.0625就可以得到实际温度。如+125℃的数字输出07D0H, +25.0625℃的数字输出为0191H, -25.0625℃的数字输出为FF6FH, -55℃的数字输出为FC90H……最后CPU向传感器读取温度并加以处理。

4 系统调试

4.1 单片机AT89C52的调试

在硬件进行上电调试之前, 应先检查电源与地之间是否存在短路或断路的现象, 如果检查结果正常才可以上电。硬件的调试应该逐个模块地进行, 因为单片机是整个系统的核心, 检测其是否正常工作也比较容易, 所以可以先从此入手, 再对其他外围器件进行调试。

判断单片机AT89C52是否工作正常很容易, 我们可以不先对其相关电路进行检测, 而是直接运行一些简单的测试程序, 如:点亮和熄灭一个发光二极管, 再让其闪烁, 如果结果正常, 则说明该单片机可以正常运行, 如果运行不正常, 则对单片机的电源、复位、时钟等各个电路的连线和相关工作模式的输入脚设置进行检查, 直到单片机能正常工作为止。通过上述的简单方法可以充分的对单片机进行调试并证明本系统使用的AT89C52单片机能正常工作。

4.2 CAN总线控制器和驱动器的调试

本系统的重点和难点是CAN总线控制器SJA1000和驱动器PCA82C250的设计, 所以对这两部分的调试要分多个步骤进行。第一, 确定AT89C52单片机可以对CAN控制器SJA1000中RAM和寄存器进行正常地读写操作。先编写一个简单的测试程序, 给CAN总线控制器SJA1000的RAM或一个可读写的寄存器进行写操作, 然后去读RAM或寄存器中的内容, 如果读出来的数据与写入数据一致, 再反复对不同的地址进行此操作, 读写数据仍一致, 就说明AT89C52单片机可以对CAN总线控制器SJA1000进行正常地读写操作。第二, 测试CAN总线控制器SJA1000和驱动器PCA82C250硬件电路的设计与实现并不是太难, 基本按照它们的典型接法绘制就可以了。CAN控制器SJA1000有一种自测模式, 即在数据发送时, 即使没有应答也可以发送成功, 所以我现用CAN总线自测模式进行调试, 来检测CAN总线控制器SJA1000和驱动器PCA82C250的连线是否正确和其能否正常工作。以这个方法为根据, 若系统能发送数据, 并且CAN控制器SJA1000的状态寄存器可以接受到相应的数据, 故能进行下一步的调试。第三, 当CAN总线控制器SJA1000和驱动器PCA82C250都通过自测模式调试后, 就可对它们之间的通信进行调试, 这里的调试程序要采用系统软件程序, 并且将逐步的调试看成是整个系统程序的调试, 如果它们之间的调试通过。那么整个系统的功能基本完成。

4.3 CAN总线控制器和驱动器的调试

由于数字式传感器DS18B20的通信方式比较独特, 所以本系统采用该传感器测温。用它构建的系统具有很多优点:硬件连线较为简单, 省去了使用模拟传感器要进行放大、A/D转换等工作。因为它的级联功能, 一条总线在不同位置可挂接多个传感器进行测温, 每个数字式温度传感器DS18B20都有唯一的序号, 以此来识别不同传感器在各自位置上的温度。要特别注意的是, 在系统安装及工作之前, 要将主机依次与DS1820进行挂接, 从而读出其序列号。另外现场温度直接以“一线总线”的数字方式进行传输, 每一个自带地址都大大减少了系统的电缆数并且提高了系统的稳定性和抗干扰性。

参考文献

[1]姜开.基于CAN总线的测试系统研究与设计[D].南京航天航空大学, 2004..

[2]饶运涛, 邹继军, 郑勇芸.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社, 2003.

[3]张伟.基于SJA1000的CAN总线通信模块设计[J].自动化技术与应用, 2007:12.

CAN智能节点论文 第6篇

目前煤炭行业中基于CAN总线的系统一般协议都为私有协议,系统中CAN节点无法应用于别的系统,并且节点管理不规范。基于此种情况,本文提出了基于CANopen协议的综采工作面控制系统中的CAN节点设计,旨在规范CAN节点设计,增加不同厂商间的设备兼容性,提高CAN节点的健康性。

1 系统节点划分

综采工作面控制系统设备主要包括控制核心、沿线的急停闭锁、信号输入输出。控制核心用于解析沿线采集的信号,并进行信号的输入输出或者将信息上传更高一级;沿线的信号输入输出主要用于采集沿线的各类信号以及接受控制核心命令进行输出。根据系统功能将系统节点划分为远程I/O(用于沿线信号的输入以及输出)、控制核心(用于与沿线CAN节点交互,以下简称CS模块)两类。

2 系统节点硬件设计

不同类型节点功能设计的不同,其选用的单片机不一样,选择的CAN控制器也不一样;有采用MCU+CAN控制器+CAN收发电路的方式,也有直接采用集成CAN控制器的MCU+CAN收发电路的方式,图1给出了CAN总线的收发电路设计。

接口电路中收发器采用AMIS42675,经过实验验证[1],其驱动的总线电平高于常用的PCA82C250,并且其功耗要小于PCA82C250。CAN总线接口与MCU之间采用双路磁耦AD⁃UM1201隔离。相比于高速光耦,磁耦时延小,并且其功耗也小很多。F13,F15,F16为瞬态抑制二极管,当总线上受到大的尖峰脉冲干扰的时候,能够对总线起到保护作用。

整个硬件电路都选用低功耗芯片,力求降低整体功耗,减少系统对电源功耗的索取。

3 系统节点软件设计

3.1设备ID的分配以及设备功能描述

3.1.1 设备ID分配

CANpen协议缺省ID分配表是基于11 位的CAN-ID,包含一个4位的功能码部分和一个7位的节点ID部分。如图2。

考虑到系统的扩容,以后可能有区别于I/O功能的新的CAN节点加入,系统将第6位,第5位设置为节点类型码,2位可表示4种类型设备。目前I/O设置为01,系统I/O容量为32。

3.1.2设备功能描述

IO节点协议按Ci A401 协议编写,有版本信息,硬件信息,心跳,同步,报警,变化发送标识位功能,有默认配置,也可以根据实际命令进行修改,提高节点的通讯效率和实时性。

CS模块负责对系统的CAN节点管理,配置输入输出、心跳发送、节点出错处理等。

3.2系统工作流程

3.2.1 CANopen节点状态转换过程

节点状态转换图如图3所示。

节点分为四个工作状态,分别为初始化、预运行、运行和停止四个状态。

图3中括号内的字母表示处于各个状态时,那些通讯对象可以使用即节点所能接受的通讯及本机可以发送的通讯数据。字母定义如下:

a:节点状态管理;b. 状态心跳;c. SDO(读写寄存器配置);d. 紧急事件;e. PDO(过程数据通讯)

状态转移(1-5由NMT服务发起),及NMT命令字(在括号中)如下:

1)Start_Remote_node(0x01)

2)Stop_Remote_Node(0x02)

3)Enter_Pre-Operational_State(0x80)

4)Reset_Node(0x81)

5)Reset_Communication (0x82)

6)设备初始化结束,自动进入Pre_Operational状态,发送Boot-up消息。

在任何时候NMT服务都可使所有或者部分节点进入不同的工作状态。详细见管理报文细节。

设备进入准备状态后,除了NMT服务和节点保护服务(如果支持并且激活的话)外,将停止通讯。

3.2.2系统工作流程

3.2.2.1上电后配置流程

1)上电后I/O自行进行初始化,初始化结束后向CS定时发送一帧请求配置命令,即boot-up表明I/O初始化结束可以接受配置信息。帧格式如表1:

2)CS在合适时候发送一帧关闭定时发送命令,此命令可广播也可点对点发送,取消I/O的定时发送,可以对I/O进行配置。帧格式如表2:

配置时使用SDO命令,可修改寄存器内的值。

3)CS配置完I/O后,发送进入运行状态命令。状态控制帧格式如表3:

4)进入运行状态后I/O正常工作等待开启定时发送命令。帧格式如表4:

5)配置过程结束I/O进入正常工作状态,可以定时或者变化发送上传TPDO数据和接受RPDO数据。

CS需要获得I/O模块的信息,可以读取相应TPDO的数据,如果配置I/O模块需转换工作状态后重新配置I/O模块。

3.2.2.2报文语法细节

1)状态管理报文

管理报文分为NMT节点状态管理报文和紧急事件管理报文两种。

NMT管理报文可以由CS发送,用来控制I/O的工作状态,I/O也可以发送状态信息给CS,可以使CS知道I/O的工作状态。CS对I/O发出状态转换命令后,I/O需要回复一帧确认帧,管理报文的格式如表5所示:

当Node-ID = 0时,所有节点均被寻址。CS为命令字,可以取如表6值:

子站发送本机状态时可采用心跳方式或者主站远程帧读取,寄存器1017 00H(具体项目文件中的对象字典)为心跳的时间,写为0时不支持定时发送。

2)过程数据对象(PDO)

节点定义了两种4个PDO,见表7:

TPDO的帧格式如下,以1TPDO为例,见表8:

2)服务数据对象(SDO)

SDO用来读写寄存器,获取寄存器数据和配置I/O模块。

读写寄存器SDO的基本结构设计如表9:

注:其中n为数据部分中无意思数据的个数,因为要操作的数据最低位一个字节,最多4个字节因此n的值在0-3之间,表示后几位是无效的。

4 结束语

通过采用CANopen协议,综采工作面控制系统的CAN节点协议得到了规范,增加了节点的通用性与规范性;引入了CANopen协议中的节点状态管理,使得系统的工作趋于合理。

参考文献

CAN智能节点论文 第7篇

关键词:传感器,CAN,dsPIC30F4013,设计

0引言

在多传感器智能系统中, 更迅速、更经济地获得有关外界环境全面、可靠、准确的信息, 使之在不确定或动态的环境中工作时具有较高的适应能力和柔性, 是衡量系统智能水平的一个标准。现有模式下, 传感器的信号直接由系统主机采集并进行分析处理, 随着系统规模的不断扩展, 主机的多数时间被消耗在前端信息的采集处理上, 这样势必影响到后端事务的处理速度, 使整个系统在性能上大打折扣。针对这一问题, 本文提出了基于CAN总线的传感器节点设计, 传感器信号由该节点采集并分析处理成系统主机所需要的信号类型, 提交给主机使用。

1系统硬件

1.1 系统芯片介绍

MCU采用Microchip公司的数字信号控制器dsPIC30F4013 (以下简称4013) 。该处理器是基于改进的哈佛架构和高性能RISC的CPU, 具有12通道12位模数转换器, 集成了CAN模块。4013的CAN模块实现了CAN协议CAN1.2、CAN2.0A和CAN2.0B, 支持远程帧, 具有高达1 Mb/s的可编程比特率, 包含双重缓冲接收器、6个完全 (标准/扩展标识符) 接收滤波器、2个完全接收滤波屏蔽寄存器和3个发送缓冲器, 集成了低通滤波器的可编程唤醒功能, 通过中断功能为所有CAN接收器和发送器错误状态发送信号, 具有可编程时钟源, 可进入低功耗休眠和空闲模式。

MCP2551是一个可容错的高速CAN收发器, 可作为CAN协议控制器和物理总线接口。它完全符合ISO-11898标准, 包括能满足24 V电压要求。它的工作速率高达1 Mb/s。

1.2 系统硬件电路

本系统的硬件电路大致分为两部分:一部分是数据采集模块, 主要包括4013的12位ADC模块、信号调理电路及二阶抗混叠滤波器;另一部分是CAN总线通信模块, 由4013集成的CAN控制器模块、高速光耦合器6N137及MCP2551构成。

2软件设计

2.1 信号的数字滤波

传感器的信号经过二阶抗混叠滤波器后, 基本上已得到一个洁净的信号, 但是作为可靠性设计, 系统加入了4次算术平均值滤波。算术平均值滤波在4013上实现起来非常方便。4013的12位ADC模块包含一个16字双端口只读缓冲器, 用来缓冲AD转换结果。本应用使用扫描输入模式, 每16次采样转换中断一次, 4路信号的转换结果存放顺序见表1。

对信号进行数字滤波, 只需在AD中断服务程序中做一下处理即可。限于篇幅, 这里给出该程序的片段。ADC中断服务程序函数名称为ADCInterrupt, 代码如下:

void-attribute- ( (-interrupt-) ) -ADCInterrupt (void)

{

//ADCResult1为信号1的转换结果

ADCResult = ADCBUF0 + ADCBUF4 + ADCBUF8 + ADCBUFC;

//结果右移2位, 求4次算术平均值

ADCResult = ADCResult >> 2;

……

IFS0bits.ADIF = 0;

}

2.2 CAN总线软件实现

2.2.1 实时通信

为了能实时有效地发送报文, CAN节点必须能够控制和保持总线。一旦CAN节点赢得了总线仲裁, 就必须把节点采集并处理过的数据全部发送给上位主机。这就要求节点具备三缓冲能力, 当第一个缓冲器正在发送报文时, 第二个则准备在第一个发送完立即开始发送, 而第三个则被CPU重新载入, 这样做减轻了软件维持总线同步的负担。4013的CAN模块的发送缓冲器结构图见图1。

4013的CAN模块基本上是一个完全CAN器件, 用硬件实现了大部分CAN协议, 包括接收过滤和报文管理。在实现三缓冲报文发送时, 初始状态可将三个发送缓冲器装载不同的报文, 同时排队等待发送。当节点赢得总线仲裁时, 优先级高的报文先发送, 剩下的两个缓冲器继续排队等待。当第一个缓冲器发送完成后, 第二个缓冲器开始发送, 第三个缓冲器继续等待, 同时, 第一个缓冲器中断CPU, CPU向其装载新的报文, 并置位TXREQ启动发送排队等待, 这个过程直至设定的报文发送完毕, 节点释放总线。当下一次赢得总线仲裁时, 重复上述过程。

2.2.2 报文接收

该节点主要是将传感器采集到的数据分析处理后, 提交给系统主机使用, 不接收数据报文。但是, 在某些时刻, 系统主机需要得到某个传感器的信号, 这就需要远程帧来向节点提交所需数据的标识符。4013的CAN模块支持远程帧, 但是它没有用硬件实现自动响应远程帧请求的功能, 必须通过软件编程来实现节点响应远程帧请求。通过查询接收缓冲器的状态和控制寄存器的接收到远程传输请求位 (RXRTRRO) 来确定收到的报文是否是远程帧。CAN模块有两个接收缓冲器状态和控制寄存器C1RX0CON和C1RX1CON。如果每次接收到数据都查询两个标志位, 这会加重CPU的负担。本节点采集处理4路信号。接收缓冲器结构图如图2所 示, 接收缓冲器RXB1配备有1个接收屏蔽寄存器、4个接收过滤器。节点设计时, 使用RXB1接收远程帧。接收过滤器RXF2、RXF3、RXF4、RXF5分别设置为信号1、信号2、信号3、信号4的标识符。当节点接收到数据时, 查询C1RX1CON的RXRTRRO位确认远程帧, 查询C1RX1CON的FILHIT<2:0>位确定请求那一路信号, 然后完成远程帧的请求响应。

响应远程帧的函数名称为ResponseRFrame, 代码如下:

void ResponseRFrame (void)

{

char filhit-flag;

filhit-flag = C1RX1CONbits.FILHIT;

//查询接收到远程传输请求位是否为1

while (C1RX1CONbits.RXRTRRO)

{

switch (flihit-flag)

{ //RXF2匹配, 发送信号1

case 2: CanSendMessage (35, 0, 0, 0, signal1, 4, 1) ;

break;

//RXF3匹配, 发送信号2

case 3: CanSendMessage (36, 0, 0, 0, signal2, 4, 2) ;

break;

//RXF4匹配, 发送信号3

case 4: CanSendMessage (37, 0, 0, 0, signal3, 4, 3) ;

break;

//RXF5匹配, 发送信号4

case 5: CanSendMessage (38, 0, 0, 0, signal4, 4, 1) ;

break;

default: break;

}

}

}

函数CanSendMessage (unsigned int sid, unsigned long eid, bit srr, bit txide, unsigned char *data, char datalen, char msgflag) 中的参数介绍见表2。

3结语

利用dsPIC30F4013的12位A/D转换器和CAN模块构成的基于CAN总线的传感器节点, 硬件电路简单, 可靠性高;运用在多传感器智能系统中, 保证系统体积不变的情况下, 简化了线路布局。dsPIC30F4013强大的数据处理能力在很大程度上减轻了系统主机的负担, 同时, 也增加了系统扩展的灵活性。

参考文献

[1]梁海浪.dsPIC数字信号控制器C程序开发及应用[M].北京:北京航空航天大学出版社, 2006.

[2]刘和平, 郑群英, 江渝, 等.dsPIC通用数字控制器原理及应用——基于dsPIC30F系列[M].北京:北京航空航天大学出版社, 2007.

[3]Richard Barnett.嵌入式C语言编程与Microchip PIC[M].薛晓东, 秦新建, 译.北京:清华大学出版社, 2005.

上一篇:放样技术下一篇:员工感知