CAN通讯

2024-06-07

CAN通讯(共6篇)

CAN通讯 篇1

在石油化工行业中, 目前智能仪器仪表的通讯链路大部分采用的是RS232/RS485方式, 这是因为RS232/RS485具有线缆少、易铺设、连接简单、实施方便、成本低廉等特点。但是, 作为一种低数据速率和点对点的数据传输标准, 相应的它也具有总线效率低、系统的实时性差、通讯的可靠性低、后期维护成本高、网络工程调试复杂、传输距离不理想、单总线可挂接的节点少和应用不灵活等诸多缺点。

1 现场总线的优点

与RS232/RS485方式相比, 现场总线的优点具体体现在:1) 现场总线采用全数字通信技术, 全数字信号传输时不易受外界干扰, 有利于提高系统的可靠性;2) 采用标准化功能模块;3) 故障自诊断;4) 冗余和容错技术;5) 智能诊断和管理技术;6) 故障隔离技术。

2 CAN总线的优点

而目前最重要的现场总线之一CAN总线, 更是RS232/RS485的最佳替代解决方案。CAN总线是控制器局部网络 (Controller Area Network ) 的缩写, 它是1986 年德国BOSCH公司为汽车内部电子控制单元 (ECU:Electric Control Unit) 进行数据交换而开发的串行通信网络, 但是由于其具有突出的可靠性、实时性和灵活性, 现已被广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。1993年国际标准化组织颁布了CAN总线的国际标准 (ISO11898) , 为CAN总线的标准化、规范化推广铺平了道路。

CAN总线是一种串行通信网络, 可以有效支持分布式控制或实时控制的。由于其独有的物理层与数据链路层的设计, 使得它在通信能力、可靠性、实时性、灵活性、易用性和传输距离等方面有着明显的优势, 成为业界最有前途的现场总线之一。

RS485使用双绞线作为传输介质, 理论上RS485的最长传输距离能达到1.2km, 但在实际应用中其数据信号受信号失真及噪声等影响, 传输的距离要比1.2km短, 而且具体传输多远视周围环境而定。

CAN总线同样使用普通双绞线作为传输介质, 采用直线拓扑结构, 单条网络线路可以连接到110个节点。当通讯距离不大于40m时, 传输速率可达到1Mbps;当信号传输距离达到10km时, 仍可提供高达5kbps的数据传输速率, 自身具备可靠的错误处理和检错机制, 出错后可进行自动重发。CAN总线可适用于节点数目比较多, 传输距离在10km以内, 安全性、可靠性要求高的场合;也可适用于对实时性、安全性要求十分严格的机械控制网络。

与石化行业内广泛使用的RS232/RS485相比较, CAN总线物理层具有以下共同特性:1) 二线制、双工串行通信;2) 差分传送、平衡接收;3) 传输介质为双绞线;4) 需终端匹配电阻器;5) 通信电路可在5V电源条件下工作。

同时CAN总线更具备以下优点, 见表1。

在石化行业内, 出于安全角度考虑, 生产装置与操作控制人员所处的距离一般较远, 这也造成了信号传输过程中的噪声比较大, 在这种情况下, CAN总线几乎可以检测出传输过程中出现的全部错误, 并且可以自动重发出错数据, 这就极大的保证传输数据的可靠性和准确性。

3 改造实施方案

RS232信号转换为CAN Bus信号可以通过RS232-CAN转换器来实现, 在兰州石化实际应用中, 考虑到成本问题, 选择了自主开发实现, 这里选择了基于单片机来实现信号转换。

其中单片机选择了目前最常用AT89C51, CAN控制器选用了PHILIPS公司的SJA1000以及PCA82C250总线收发器。硬件设计框架, 如图1所示。

其中MAX232芯片是电平转换芯片, 负责将RS232电平信号 (-15~15V) 转换为TTL电平信号 (0~5V) 。

AT89C51是主控制器, 负责将从RS232传输过来的数据组织成合适的数据帧发送给SJA1000, 同时也将SJA1000发送过来的数据帧解析为字符, 并把该字符赋给SBUF寄存器, 将其以RS232信号形式传输出去。AT89C51的P0口 (P0.0~P0.7) 连接SJA1000的AD0~AD7, 作为数据传输通道。P2.7取反后连接到SJA1000的CS端, 作为片选信号, 当P2.7置为1时, SJA1000即被选中。

SJA1000支持CAN2.0B协议, 主要负责CAN 信息帧的收发和CAN 数据链路层协议的实现, 以及同外部主控制器的接口, 该单元中的每一个寄存器都可由主控制器通过地址/数据总线访问。SJA1000发送缓冲区可存贮一个完整的信息帧长度为13个字节。主控制器可直接将标识符和数据送入发送缓冲区, 然后置位命令寄存器CMR 中的发送请求位TR , 启动CAN核心模块读取发送缓冲区中的数据, 按CAN 协议封装成一完整CAN 信息帧, 通过收发器发往总线。SJA1000在接收信息时, 验收滤波器负责接收信息的滤波, 只有验收滤波通过且无差错才把接收的信息帧送入接收FIFO 缓冲区, 且置位接收缓冲区状态标志SR.0 , 表明接收缓冲区中已有成功接收的信息帧。

PCA82C250为总线收发器, 它是CAN控制器和物理总线之间的接口, 供对总线数据的差动发送能力和对通信总线数据的差动接收能力, 它负责CAN总线物理层协议的实现。

系统实现的程序流程, 如图2、3所示。

其中, AT89C51初始化程序如下:

在实际使用中, 该转换器可以无缝的实现RS232信号和CAN Bus信号的全双工转换, 基本满足了现场生产的需要。在该转换器的MAX232之前增加一部分MAX485电平转换电路, 就可以实现RS485和CAN总线桥接电路, 使得RS485网络可以和CAN总线网络进行通讯。如图4所示。

4 展望

在石油化工行业, 由于现场生产环境复杂多样 (高温、高压、噪声、腐蚀、有毒等) , 用于监控工业生产的仪表也越来越多, 而操作室离生产现场距离较远, 这就要求现场通讯信号必须具有传输距离远、通讯速度快, 可靠性好等特点, 以前使用的RS232/485通讯链路已经不能满足要求, 如何在利用原有敷设线路同时, 以最小代价改造通讯网络, 是石油化工行业面临的问题。而CAN总线作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式, 为这个问题提供了较好的解决方案。

参考文献

[1]阳宪惠.工业数据通信与控制网络[M].北京:清华大学出版社, 2003.

[2]李正军.现场总线与工业以太网及其应用系统设计[M].北京:人民邮电出版社, 2006.

[3]王黎明, 夏立.CAN现场总线系统的设计与应用[M].北京:电子工业出版社, 2008.

[4]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社, 1996.

[5]陆前锋.基于SJA1000的CAN总线智能控制系统设计[J].自动化技术与应用, 2003 (1) .

CAN通讯 篇2

一、ATmega 16L单片机

通讯系统采用高性能、低功耗的8位ATmegal 16L单片机为核心处理器。ATmegal 16L单片机属于在AVR大家庭中一款新型高档单片机, 它的芯片内部集成了较大容量的数据存储器和丰富的硬件接口电路, 具备AVR高档单片机系列产品的全部优良性能和特点, 但由于采用了小引脚封装 (为DPI40) , 所以其价格仅与低档单片机相当, 成为在所有AVR单片机中内部接口丰富、功能齐全、性能价格比最好的产品。ATmegal 16L单片机具有以下特点:

1.ATmegal 16L单片机采用了先进的RICS精简指令集结构, 所以具有足够快的运行速度, 工作于16MHz时速度可达16MIPS, 处理速度是普通CISC单片机的10倍;

2.ATmegal 16L单片机具有4个PWM通道, 可实现频率、相位都可以调节的PWM脉宽调制信号输出;具有18个不同的独立中断源, 并有特定的中断允许位, 提高了系统的安全性;

3.ATmegal 16L单片机片内集成了大容量的非易失性程序、数据存储器和工作存储器, 存储空间足以满足系统需要;

4.ATmegal 16L单片机具有32个可编程I/O口, 可以根据需求定义I/O口的输入/输出方向;输出信号具有较强的驱动能力, 能够直接驱动LED等大电流负载, 且大部分的I/0端口为复用口, 不仅可以作为通用数字I/O使用外, 还具有第二功能, 可以作为芯片内部其他外围电路的接口;

5.ATmegal 16L单片机具有三个定时/计数器, 不仅具有常规的定时与计数功能, 还具有信号捕捉、比较、实时时钟计数和脉宽调制输出等更为强大的功能;

6.ATmegal 16L单片机具有8路10位ADC转换器, 可直接实现模拟信号和数字信号之间的相互的转换。还具有满足低功耗系统要求的空闲、掉电和省电三种工作模式, 适合不同的工作场合需求。

二、通讯系统硬件电路设计

ATmegal 16L单片机内部没有集成CAN通讯模块, 故通讯系统选用SJA1000作为CAN通讯系统控制器。SJA1000是一种独立CAN通讯控制器, 广泛应用于移动目标和一般工业环境中的区域网络控制, 它属于PHILIPS半导体PCA82C200 CAN控制器 (Basic CAN) 的替代产品, 在原有CAN控制器基础上增加了一种新的Peli CAN工作模式, 这种模式支持具有很多新特性的CAN 2.0B协议。为增大通讯系统的信号传输距离、提高系统的瞬间抗干扰能力和降低系统的射频干扰等, 选用专用的CAN隔离控制芯片CTM8251T作为CAN控制器与物理总线的接口芯片。SJA1000通过串行数据输出线TX和串行数据输入RX线连接到CAN隔离收发器CTM8251T。CTM8251T通过具有差动发送和接收功能的两个总线端CANH和CANL连接到物理总线。总线两端并联一个匹配电阻, 提高数据传输时的抗干扰能力和可靠性。单片机中的数据通过CAN通讯系统和CAN通讯物理总线CANbus传递给上位机, 单片机与CAN总线接口的电路图如图1所示。

三、软件程序设计

硬件电路是通讯系统的基础, 软件程序是通讯系统的灵魂。CAN通讯系统运行时软件程序首先进行硬件电路进行初始化, 其次复位及初始化CAN总线控制器SJA1000, 最后接收CAN信息帧, 按照相应协议进行解析, 从数据帧取出发送者地址和所发送的各参数信息传递给上位机, 程序继续等待下一个CAN信息帧, CAN通讯程序流程图如图2所示。

四、结束语

本文将CAN总线技术运用到单片机通讯系统设计中, 并结合CAN控制器CAJ1000开发出基于CAN总线技术的单片机数据通讯系统, 设计通讯系统硬件电路和软件程序。通讯系统具有性能稳定、抗干扰能力强及实时性好等特点, 在工业控制、煤矿机电设备和航空航天等领域具有广阔的应用空间。

参考文献

[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社, 2003

[2]徐科军, 张瀚, 陈智渊.TMS320x281xDSP原理与应用[M].北京:北京航空航天大学出版社, 2006

CAN通讯 篇3

在煤矿生产中,矿井提升机是矿山大型关键设备。提升机的制动系统则是保证提升机能否安全运行、实现提升机正常减速停车以及在各种故障情况下执行紧急制动安全停车的最终手段。盘形闸是绞车提升系统中非常重要的配套设备,是保证安全提升的重要部分。盘形闸工作间隙报警有利于缩短故障排除的时间,故开发闸间隙报警模块具有重要的实际意义。

CAN总线是一种总线型现场设备控制网络,具有突出的实时性、可靠性和灵活性。鉴于CAN总线的优势,本文开发了一种基于AVR的闸间隙报警CAN通讯模块,其成本低廉,安装方便。

1 模块硬件设计

该模块由处理器ATmega128[1]、CAN总线控制器SJA1000以及CAN收发芯片CTM8251组成。其硬件结构如图1所示。

1.1 微处理器

ATmega128是一种高性能、低功耗的AVR 8位微处理器,拥有先进的RISC结构、128 k B的系统内可编程Flash、4 k B的EEPROM、8路10位ADC、2路8位PWM、2个可编程串行USART/独立片内振荡器的可编程看门狗定时器、53个可编程I/O口、2个具有独立的预分频器和比较器功能的8位定时器/计数器、2个具有预分频器和捕捉功能的16位定时器/计数器;具有独立预分频器的实时时钟计数器、片内/片外中断源、全局上拉禁止功能。微处理器ATmega128[2]在此设计中起到了对CAN控制器控制的作用。微处理器频率是16 MHz,每秒钟的运算能力为16 MIPS,其丰富的片上资源使得ATmega128非常适合于CAN通信的应用。

1.2 CAN总线接口电路

由于处理器ATmega128内部没有集成CAN控制器,因此系统需要通过CAN控制器SJAl000芯片扩展出一个CAN接口[3~4]。实现SJA1000扩展CAN总线接口的设计,就是对SJA1000的转换逻辑结构之间的每个模块进行设计。在设计中,将来自于ATmega128的I/O的数据(CANdata0~CANdata7)写入SJAl000的内部寄存器,并通过ATmega128的I/O实现对SJA1000的控制。CAN总线接口电路[5]如图2所示。

1.3 CAN收发器

在CAN通信模块设计中,为了增加CAN总线的抗干扰能力,可通过将SJA1000控制器TX0、RX0接口连接到CAN隔离收发器来实现。

CAN隔离收发器采用广州致远电子有限公司的通用CAN隔离收发器CTM8251。该芯片内部集成了所有必需的CAN隔离及CAN收发器件,其主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平并且具有DC 2 500 V的隔离功能,增加了CAN总线的抗干扰能力。此外,该芯片拥有速率可达1 Mb/s、较高的抗干扰性、至少可连接110个节点等特性。CAN收发器连接图如图3所示。

2 模块软件设计

该模块的功能是将处理器前端采集的闸间隙报警数据处理后,先后通过SJA1000、CTM8251送到上位机实现通信。

CAN总线通信的实现首先要通过ATmega128的RESET使外围电路上电复位,在外部中断的情况下等待SJA1000完全上电,然后通过处理器控制线路配置进而使SJA1000初始化,最后进入CAN的数据发送和接收主程序。因此,该设计的关键是编写CAN驱动程序,主程序通过调用CAN驱动程序实现接口数据的收发。驱动程序主要包括CAN控制器的初始化、接收数据和发送数据。

2.1 CAN控制器SJA1000的初始化

SJA1000的初始化操作包括CAN软件复位、设置中断工作方式、设置CAN验收过滤器工作方式、设置控制器的工作模式和启动CAN等。首先,通过对CAN控制器SJA1000的读、写、片选、地址锁存端口设置来完成初始化。以下是CAN控制器SJA1000的初始化代码:

2.2 数据的接收与发送

ATmega128的每个I/O端口有3个I/O寄存器即可实现对CAN总线的控制。当发送/接收时要根据实际情况,先必须保证CAN锁存、CAN读/写选通、CAN片选开启后读取对应的存储地址,最后对数据进行读取/存储。为了提高效率,接收数据采用中断的方式,当中断标志置位时,将数据存入指定的SJA1000存储地址。以下是数据发送和接收的函数:

(1)接收/发送缓冲区数据设置:该部分主要是通过对RX/TX针信息、RX/TX标识码进行接收/发送缓冲区数据首地址(工作模式)定义。

(2)CAN控制器SJA1000发送数据,实现函数如下:

函数功能实现步骤为:①使能端口写数据,通过设置CAN_ALE、CN_CS、CAN_RD完成对发送数据地址的读取;②使能端口读数据且上拉,通过CN_CS、CAN_RD完成从读取的地址读取一个8位数据;③返回数据地址。

(3)CAN控制器SJA1000接收数据,实现函数如下:

函数功能实现步骤为:①使能端口写数据,通过设置CAN_ALE、CN_CS、CAN_WR完成对接收数据地址的读取;②通过设置CN_CS、CAN_WR完成向读取的地址写一个8位数据。

3 结束语

本文介绍了基于AVR微处理器的闸间隙报警CAN通讯模块的硬、软件设计方法[6],为解决矿井提升机工作间隙报警提供了一种思路。该模块的设计使管理监控层与生产测控层之间能够进行有效的通信,缩短了故障排除的时间,且使用方便、成本低。

参考文献

[1]朱飞,杨平.AVR单片机C语言开发入门与典型事例[M].北京:人民邮电出版社,2009.

[2]张军,宋涛.AVR单片机C语言程序设计实例精粹[M].北京:电子工业出版社,2009.

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

[4]李文雄,陆俭国.CAN现场总线技术及发展[J].江苏电器,2004(1):1-3.

[5]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1999.

CAN通讯 篇4

1 CAN总线系统组成

CAN总线通讯系统一般由主站、从站、通道组成, 其中主站负责协调、管理系统的通讯, 根据控制单元的参数变化通过指令通道向各个从站发送控制数据的指令, 而各个从站的运行状态主要通过状态通道传输给主站, 如图1所示。

通过这样的总线系统可以实现用多点、串行的数据通讯替代传统的导线直接通讯技术, 可以节省大量的线缆, 一方面降低了运行成本, 另一方面也省去了线缆铺设工作。

2 CAN总线电磁兼容性能分析

电磁兼容性能对CAN总线系统的运行可靠性具有较大的影响, 目前, 在电子产品设计中, 电磁兼容性能已经成为考核产品性能的重要指标之一, 因此必须予以重视。

电磁兼容包括以下两个方面的内容, 一是电子产品对外界环境释放的电磁干扰辐射, 二是外界环境中电磁信号对电子产品的影响, 这种影响的大小一般取决于产品本身对外界电磁信号的敏感程度。考察电磁兼容性能, 主要包括对电磁干扰源、耦合途径以及敏感产品三个方面的分析, 其中耦合的途径又包括辐射性耦合和传导性耦合。

3 提高CAN总线通讯的电磁兼容性能设计措施

3.1 提高电子设备本身电磁兼容性能

提高电子设备本身的电磁兼容性能是从根本上提高系统电磁兼容性能的有效措施, 而印制电路板 (PCB板) 是电子设备的核心组成部分, 并且其抗电磁干扰性能与电磁辐射性能往往是相互联系的, 表现在提升印制电路板的抗电磁干扰能力的同时, 电路板向外界发射的电磁辐射也越小, 因此可以采取以下措施来提高印制电路板的电磁兼容性能。

3.1.1 选择电磁兼容性能好的元器件

元器件是构成PCB板的主要组成部分, 因此在设计电路板时要选择电磁兼容性能良好的元器件可以有助于提高电子设备的电磁兼容性能, 实际工作中, 要优先选择贴片式的元器件来替代引线式的元器件。

3.1.2 合理布局

合理布局包括三个方面, 一方面是对元器件的位置进行合理布局, 将相互关联的元器件尽可能地集中布置, 使相互之间的引线尽可能短;第二个方面是要将电子设备内部的数字电路与模拟电路有效分开, 防止相互之间的信号干扰。第三个方面是合理布局地线, 通过使用双层板或多层板的方式来降低底线阻抗, 并同时尽量使电路板上所有的地线均处于等电位的状态。

3.2 利用电磁屏蔽减小辐射性干扰

电磁屏蔽就是在不改变原电路、不影响系统正常运行的前提下, 采用电磁屏蔽装置对CAN总线通讯的电磁发射和电磁吸收进行屏蔽的措施, 由于方法简便易行、屏蔽效果好以及便于设计等优点成为提高系统电磁兼容性能的重要措施。在CAN的双路总线中, 要对两组线缆分别进行电磁屏蔽, 以减少线路之间的电磁串扰现象。

3.3 采用滤波技术消除传导干扰

传导干扰主要产生于瞬态、暂态的过程中, 如大功率开关的开合、雷电的袭击等带来的瞬时浪涌, 一般通过CAN总线电缆传输, 所带来的电磁危害较大, 因此在传播途径中要消除这些瞬时的脉冲、浪涌, 使CAN总线通讯得以可靠进行, 实际工作中, 常用的方法就是采用滤波技术来消除传导耦合带来的电磁干扰。

4 结束语

提高电磁兼容性能可使CAN总线通讯系统运行更加稳定、可靠, 可使其应用范围更加广泛, 在实际工作中一定要合理分析、科学设计, 可采用改善电子设备本身电磁兼容性能、电磁屏蔽以及滤波等措施来提高CAN总线的电磁兼容性能, 另外随着科技的飞速发展, 各种新型技术不断应用在通讯领域中, 因此作为技术人员要有与时俱进的眼光, 不断开发出提高电磁兼容性能的设计方法, 为系统中各部分的实时、可靠数据传输提供技术支持。

摘要:CAN总线是国际上应用最为广泛的总线之一, 广泛用于汽车、工业设备等领域, 要保证系统的可靠、稳定运行, 提高CAN总线通讯的可靠性, 就要减小电磁干扰, 提高电磁兼容性能, 因此在实际工作中要对其进行科学的分析和设计。本文介绍了CAN总线通讯系统的组成, 分析了CAN总线电磁兼容性能, 提出了提高CAN总线通讯电磁兼容性能的设计措施。

关键词:CAN总线,电磁兼容,分析,措施

参考文献

[1]韩成浩, 高晓红.CAN总线技术及其应用[J].制造业自动化, 2010 (02) .

[2]于海生.CAN总线工业测控网络系统的设计与实现[J].仪器仪表学报, 2001 (01) .

CAN通讯 篇5

关键词:MC9S12X,CAN通讯

引言

MC9S12X单片机具有丰富的I/O模块和工业控制专用的通信模块,采用5V供电,总线速度可达40MHz,非常适合应用在汽车业中。在汽车级的控制器中,CAN总线是汽车各个控制单元之间联系的纽带,是实现数据交互的媒介,它的可靠运行是汽车正常行驶的前提。在选择控制芯片时,芯片具有的CAN模块个数是一个重要的考虑因素,MC9S12X芯片带有5个CAN模块,满足多路CAN通讯的需求。

CAN通讯的实现是建立在软硬件基础上,硬件电路实现电气连接,软件部分驱动硬件工作,二者缺一不可。本文论述CAN通讯的软件实现,建立在具有CAN功能的MC9S12X芯片和CAN收发器这两个硬件基础,实现MC9S12X与CAN总线的通信,完成数据交互。

1、软件设计方案

软件设计主要是数据结构的设计和函数接口设计这两个方面。

CAN通讯的实现需要三个函数完成:初始化函数、发送函数和接收函数。

程序代码用C语言编写,使用的CAN控制器支持CAN2.0B通讯协议,可以实现标准帧和扩展帧两种类型的数据传输。

1.1 数据结构设计

(1)初始化数据结构设计:CAN口初始化数据结构设计

其中BaudRateKb指CAN的工作频率,以Kb/S为单位,CanNum指CAN口编号。

(2) CAN报文数据结构设计:发送/收报文数据类型的设计

1.2 初始化函数设计

初始化函数接口:

void Can_Init(const Can_ConfigType*Config);

该函数包含一个参数*Config结构体指针。。结构体包含两个成员:BaudRateKb和CanNum。

初始化函数用来完成CAN模块的选择(即指定由哪一个CAN模块实现报文的发送或者接收),设置CAN通讯的波特率,以及设置模块的时钟源。MC9S12X的CAN有两种时钟源可选择,一个是板级晶振时钟,另一个是总线时钟,由于CAN通讯对总线传输速率的稳定性要求较高,所以在实际应用中,选择晶振时钟作为时钟源。

初始化函数流程如下图:

1.3 发送函数设计

发送函数接口:

Can_RetumType Can_Write(uint8_T num,const CAN_DATATYPE*msg);

该函数包含2个参数,其中一个是CAN模块的编号,另一个是指向CAN报文的数据类型的一个指针。

参数num是用来发送CAN报文的CAN模块号。。*msg指针指向CAN报文数据结构,该结构包含5个成员。成员如下所述:

Extended参数是用来区分ID类型,该参数取零值,表示ID是11位的;该参数取1,表示的是扩展ID (29位)。

Length参数用来设置发送数据的字节数,取值范围0-8。

Remote参数用设置报文是远程帧还是数据帧。

ID参数用来设置ID标识符。

Data[8]是存放数据的数组。

该函数的返回值是一个Can_ReturnType类型的值(0或1),表示总线正常或者不正常。

CAN发送函数的功能是实现报文发送,包括设置报文的类型(即数据帧或者远程请求帧等),ID类型(标准帧或者扩展帧),发送数据的长度(以字节为单位),以及发送的数据。

发送函数流程图如下:

1.4 接收函数设计

接收函数接口:

Can RetumType Can_Read(uint8_T num,CAN_DATAT-YPE*msg);

该函数包含2个参数,其中一个是CAN模块的编号,另一个是CAN报文数据类型的一个指针。

该函数的返回值是一个Can_RetumType类型的值(0或1),表示接收是否完成。

CAN接收函数的功能是接收其他控制设备发送到CAN总线上的数据。

接收函数流程图如下:

2、软件实现比较

主要针对接收功能,发送数据时,两者的差异不明显。接收数据时,两者的差异较大。

差异一:

(1)初始化函数设计中,查询方式接收不要求使能接收中断使能位,接收完成标志位是在接收函数中清除的。

(2)中断接收时,初始化函数中必须使能中断使能位,接收完成标志位在中断函数中清除。

差异二:

查询方式接收时,整个过程中CPU一直查询CANRFLG_进制RFG状态,只有当它为1时,才接收数据,否则不接收。在这个过程中CPU不能做其他的事情,一直处于检测CANRFLG_RFG的状态,这样会造成代码运行效率低和CPU的浪费。

中断方式接收时,一旦中断标志位置1,CPU就转到中断函数去处理数据,当数据处理完成,CPU会转向原来的任务继续执行,这种方式不会造成CPU的浪费,提高了CPU的使用率。

3、软件验证

在CodeWarriorv5.1中编译和运行代码,通过CAN助手发送8字节数据(0x01,0x02,0x03,0x55,0x05,0x06,0x07,0x08)到CAN总线,MC9S12X对数据处理(扩大两倍)之后再发送给CAN助手。试验结果如下图:

上图所用的接收方式是中断方式。

4、结论

代码设计和测试结果相一致,并且在MC9S12X上运行稳定,实现了CAN通讯功能。函数接口设计采用结构体指针方式,保证了函数接口的一致性,可移植性强。即使后期需要添加或者删除结构体成员时,也不会影响其他函数对此函数的调用,保证了接口的统一性。

参考文献

CAN通讯 篇6

在变频调速系统应用场合中, 很多情况下要求变频器具有双机甚至多机同步的技术, 而同步控制的关键技术是变频器之间的同步通讯控制, 但是工业现场的环境要求比较苛刻, 变频器之间的距离往往较远, 几十米至几公里都有, 然而控制延时应处于毫秒级才能有效满足同步控制, 抬高通讯速率会降低通讯的抗干扰性, 因此, 选择一种即要满足工业运行的高可靠性又要满足高速率的通讯, CAN总线通讯可以满足技术需求。

2 CAN简介

CAN是控制器局域网络 (Controller Area Network, CAN) 的简称, 是由研发和生产汽车电子产品著称的德国BOSCH公司于1986年公布的, 由于CAN卓越的特性、极高的可靠性和独特的设计, 特别适合工业过程监控设备的互连, ISO组织在1993年制定了CAN的国际标准 (IS011898) 。目前CAN是国际上应用最广泛的现场总线之一。

CAN总线是一种多主总线串行数据通信协议, 通信介质可以是双绞线、同轴电缆或光导纤维, 该协议有效地支持分布式实时控制, 具有较高等级的安全和高达1Mbps的通讯速率。

TMS320F28335的eCAN通讯总线模块是一个完全的CAN控制器, 并与CAN2.0B版标准 (现行的) 完全兼容, 拥有32个邮箱, 每个邮箱都可单独配置和实时邮递, 通信速率可达1Mbps。

CAN标准数据帧长度为44~108位, 而CAN扩展数据帧为64~128位。此外, 根据数据流代码, 在标准数据帧中可以插入23个填充位, 在扩展数据帧中可插入28个扩充位。标准帧的最大长度是131位, 扩展帧是156位。

由于TMS320F28335的CAN通讯是32位的, 因此控制和状态寄存器只允许32位访问, 对寄存器进行16位数据访问可能会破坏寄存器内容或者返回错误的数据, 因此为防止此类问题的出现, TI发布的DSP头文件使用了辅助32位访问的映射寄存器结构。

修改寄存器中的1位过程如下:

EcanaShadow.CANTIOC.all = EcanaRegs.CANTIOC.all;

//步骤1:执行1个32位的读操作以复制整个寄存器的内容到它的映射寄存器。

EcanaShadow.CANTIOC.bit.TXFUNC = 1;

//步骤2:在映射寄存器中修改所需的位。

EcanaRegs.CANTIOC.all = EcanaShadow.CANTIOC.all;

//步骤3:执行一个32位的写操作以将修改后的映射寄存器内容复制到初始的寄存器。

检查寄存器的值过程如下:

do{

EcanaShadow.CANTA.all = EcanaRegs.CANTA.all;};

While (EcanaShadow.CANTA.bit.TA25 == 0) ;//等待TA5位被置位

3双机变频同步通讯控制

一套完整的变频器双机同步控制系统包括两个部分:一是控制输出转矩或者功率一致, 转矩或者功率一般采用PI控制方式, 要求对信号采样和延时有较为明确的时间范围;二是有完备的保护措施, 根据电压电流的采样、IO接口和外部关联设备的通讯来实现, 具体的实现方式各个现场不同, 根据需要进行微调。对于单机系统来说, 两个部分的协调控制较为容易, 双机系统则需要通过彼此的数据交换来实现, 由于通讯存在较大延时, 有时由于环境因素造成数据的错误等不确定因素, 因此, 当两台变频器协同工作时需要考虑三个问题:

1.两台变频器之间的控制方式是什么;

2.两台变频器的转矩或者功率响应时间是多少;

3.报警或故障如何处理;

4.CAN通讯速率如何设定。

这四个问题直接影响到CAN通讯的数据、速率、时间间隔和错误处理, 以及CAN如何进行通讯。

对于问题1来说:两台变频器不可能都是主机或者都是从机, 必然是一主一从, 从机跟随主机的转矩或功率控制, 考虑到扩展多机同步的功能, 将转矩或功率跟随计算的部分放在从机, 因此CAN通讯数据包括主机、从机的转矩和功率数值。

对于问题2来说:转矩或功率的响应时间直接影响到系统性能, 响应越快越好, 但是考虑到双机同步, 响应时间应放宽, 这直接影响到CAN通讯时间间隔, 过短的时间间隔容易造成CAN通讯自身的错误, 时间过长也易造成转矩或功率的响应时间, 造成系统性能下降。

对于问题3来说:需要考虑到现场环境的因素, 主机或从机对不同的故障或报警如何处理, 因此传输的数据应该包含故障或报警数据。

对于问题4来说:考虑到现场传输距离和干扰情况, CAN最大支持1Mbps的传输速率, 根据现场环境进行设置。

以上四个问题均有关联, 软件的设计要做到可设置, 方便调试。

4实验结果

实验参数:两台变频器功率均为200kW/660V, 两机距离50米, 变频器控制器主芯片采用TMS320F28335型号的DSP, CAN通讯芯片采用ADM3053-AD, 最高速度可达1Mbps, 两台电机对轴放置均为200kW/660, 额定转速985转/分, CAN通讯速率设置1Mbps, 通讯间隔2ms, 通讯4个32bit数据, 转矩响应时间设定为50ms。

5结论

通过对双机变频器同步的CAN通讯的实验应用, CAN通讯简单可靠, 速率高抗干扰性强, 通过对故障报警的处理, 达到了现场应用的条件。按本文的CAN通讯模式, 可扩展为一主多从的多机同步控制, 同样具有现场应用的条件。

摘要:介绍了TMS320F28335的CAN通讯在双变频器带动双电机中的应用, 给出了通讯的设置方法和通讯的内容。

关键词:CAN通讯,TMS320F28335,双机同步,多机同步

参考文献

[1]TMS320F28335DSP原理及开发编程[M].北京:北京航空航天大学出版社出版发行, 2011.

上一篇:赛前焦虑下一篇:工程勘察设计论文