Can通信模块详细设计说明书
CAN通信技术解析_PPT模板.pptx
随着科技的发展,CAN通信 将进一步提高传输速率,增 强系统的安全性和稳定性, 未来在更多领域得到应用。
谢谢大家
CAN通信的错误检测 与处理
CAN通信具有强大的错误检 测和处理能力,能够自动重 发错误帧,保证数据的完整 性和系统的稳定性。
03 CAN通信的主要特 点
CAN通信的主要特点
CAN通信的实时性
CAN通信具有出色的实时性 ,其传输速度快,延迟低, 可以满足实时控制系统的需 求。
CAN通信的容错性
CAN通信具有强大的容错能 力,即使在网络中出现错误 的数据帧,也能通过错误检 测机制进行自我修复。
在工业自动化领域,CAN通信被广泛应用于生产
适性。
线控制、设备监控等环节,提高了生产效率和设
备运行的稳定性。 3 CAN通信在医疗设备中的实践
在医疗设备中,CAN通信可以实现设备的远程监
控和数据共享,为医疗诊断和治疗提供了便利。
05 CAN通信的发展趋 势
CAN通信的发展趋势
CAN通信的技术进步
动机控制、刹车控制、空调控制等,实现各个系
统之工作原 理
CAN通信的工作原理
CAN通信的基本原理
CAN通信是一种串行双线制 通信协议,通过数据帧的形 式进行信息传递,具有高可 靠性、实时性和灵活性。
CAN通信的数据帧结 构
CAN通信的数据帧由起始位 、仲裁域、控制域、数据域 和校验域组成,各部分有其 特定的作用和格式,保证了 信息的准确传输。
CAN通信,全称Controller Area Network,是
CAN通信的特点
2
一种高效的车辆内部通信网络,主要应用于汽车
CAN通信具有实时性强、传输速度快、可靠性高
CAN总线详解
汽车CAN总线详解概述CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而广泛应用于工业自动化、船舶、医疗等其它领域。
相比于其它网络类型,如局域网(LAN, Local Area Network)、广域网(WAN, Wide Area Network)和个人网(PAN, Personal Area Network)等,CAN 更加适合应用于现场控制领域,因此得名。
CAN总线是一种多主控(Multi-Master)的总线系统,它不同于USB或以太网等传统总线系统是在总线控制器的协调下,实现A节点到B节点大量数据的传输,CAN网络的消息是广播式的,亦即在同一时刻网络上所有节点侦测的数据是一致的,因此比较适合传输诸如控制、温度、转速等短消息。
CAN起初由BOSCH提出,后经ISO组织确认为国际标准,根据特性差异又分不同子标准。
CAN国际标准只涉及到 OSI(开放式通信系统参考模型)的物理层和数据链路层。
上层协议是在CAN标准基础上定义的应用层,市场上有不同的应用层标准。
发展历史1983年,BOSCH开始着手开发CAN总线;1986年,在SAE会议上,CAN总线正式发布;1987年,Intel和Philips推出第一款CAN控制器芯片;1991年,奔驰500E 是世界上第一款基于CAN总线系统的量产车型;1991年,Bosch发布CAN 2.0标准,分 CAN 2.0A (11位标识符)和 CAN 2.0B (29位标识符);1993年,ISO发布CAN总线标准(ISO 11898),随后该标准主要有三部分:ISO 11898-1:数据链路层协议ISO 11898-2:高速CAN总线物理层协议ISO 11898-3:低速CAN总线物理层协议注意:ISO 11898-2和ISO 11898-3物理层协议不属于BOSCH CAN 2.0标准。
can总线第二章can总线系统原理
can总线第二章can总线系统原理CAN总线是一种串行通信总线,广泛应用于汽车电子系统、工业自动化和航空航天等领域。
CAN总线的设计目标是提供高可靠性、实时性和可扩展性的通信解决方案。
本文将详细介绍CAN总线的系统原理。
CAN总线系统由以下几个主要组成部分构成:CAN控制器、CAN收发器、CAN总线和节点。
CAN控制器负责管理和控制通信过程,而CAN收发器则负责将控制器发送的数字信号转换为电压信号,并将接收到的电压信号转换为数字信号。
CAN总线是连接各个节点的物理介质,节点则是CAN 总线上的设备或系统。
CAN总线采用差分信号传输,即通过两条线分别传输正负两个信号。
这种差分传输方式可以减小干扰对信号的影响,提高通信的可靠性。
CAN 总线使用非归零码(NRZ)编码方式,即不使用0和1两种信号电平来表示数据,而是使用高低电平的变化表示数据位的变化。
CAN总线采用了CSMA/CD(载波监听多路访问/冲突检测)的工作方式。
在CAN总线上,每个节点都可以发送和接收数据。
当一个节点要发送数据时,它首先监听总线上是否有其他节点正在发送数据。
如果没有冲突,则该节点发送数据;如果发现冲突,则停止发送数据,并等待一个随机的时间后再次尝试发送。
CAN总线支持广播和点对点通信。
广播是指一个节点向所有其他节点发送相同的数据,而点对点通信是指一个节点向另一个节点发送特定的数据。
广播通信可以实现消息的快速传播,而点对点通信可以实现节点之间的私密通信。
CAN总线提供了多种帧类型,包括数据帧、远程帧和错误帧。
数据帧用于传输实际的数据,远程帧用于请求其他节点发送数据,而错误帧用于传输错误信息。
每个帧都包含标识符、控制位、数据和校验字段。
标识符用于唯一标识每个帧,控制位用于指示帧的类型,数据字段用于存储实际的数据,而校验字段用于检测数据传输过程中是否发生错误。
CAN总线具有很高的实时性和可靠性。
它支持多个节点同时发送和接收数据,并且可以在微秒级的时间内完成数据传输。
周立功CAN总线设计详解通讯
-4– 文档编号:20030810_1
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
CAN-bus 介绍
概述
CAN-bus(Controller Area Network)即控制器局域网,是国际上应用最广泛的现场总线之一。 起先,CAN-bus 被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置 ECU 之间交换信息, 形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入 CAN 控制装置。
高层协议
CAN 高层协议························································································· 8 CANopen 协议 ························································································ 9 DeviceNET 协议 ···················································································· 10 ZLGCAN 系列产品介绍 ············································································ 12
我们立志成为国内第一流的 CAN-bus 开发、服务、应用的团队。关于 CAN-bus 的详细应用,请浏览技术支持 专业主页:
或进入 CAN-bus 技术讨论园地:
http:///club/bbs/bbsView.asp 我们的服务邮箱:
CANlink通信及自由指令使用说明书
CAN link通信及自由指令使用说明书汇川PLC的CANRX指令属于自由指令,用来读取PLC的CAN控制器接收到的数据。
该指令通过判断接收到的数据的ID(仲裁标识符)与指令ID是否相同以判断接收到的数据是不是有效,用于不支持CANlink协议的设备和PLC之间的通信。
CANRX指令通常情况下和CANTX指令配合使用,一般是用CANTX去读取或写入数据,用CANRX接收返回。
由于指令设计为异步指令,所以接收过程中有可能存在接收不到数据或接收到数据错位的问题,因此用户在使用过程中要对其使用情况进行设置,详细说明如下:模式1:设置PLC仅支持自由协议1.1:设定CANRX指令使用标志,设置M8283为1。
1.2:设置M8283之后表示对不支持CANlink协议的设备进行访问,不再支持FROM,TO指令。
1.3:采用CANRX指令对同一返回ID的同一设备的不同数据要分时段进行,否则会发生接收错位。
1.4:采用CANRX指令对同一返回ID的不同设备的不同数据要分时段来进行,否则会发生接收错位。
模式2:设置PLC支持自由指令和CANlink协议同时使用2.1:设定自由指令和CANlink协议同时使用标志,设置M8282为1。
(M8283必须设置为0)2.2:用户用自制设备与PLC进行数据交互时,必须不得使用CANlink协议使用过的标识符,及29位仲裁标识符的高4位(bit28,bit27,bit26,bit25)不得为(1000,1010,1011,1101),如果使用此标识符会导致不支持CANlink协议的设备发送的数据被PLC当做支持CANlink协议设备发送的数据错误接收。
2.3 采用CANRX指令对同一返回ID的同一设备的不同数据的接收要分时段进行,否则会发生接收错位。
2.4 采用CANRX指令对同一返回ID的不同设备的不同数据的接收要分时段来进行,否则会发生接收错位。
2.5 在此情况下发送的ID高29位非(1000,1010,1011,1101)的数据不再当CANlink的错误帧处理。
GCAN-305 嵌入式CanOpen(从站)转Uart 用户手册
GCAN-305嵌入式CANopen(从站)转UART用户手册文档版本:V3.02 (2015/8/11)修订历史版本日期原因V1.00 2013/6/16 创建文档V2.01 2013/12/20 修正设备工作参数V3.01 2014/10/22 添加部分参数V3.02 2015/8/11 修正部分参数目录1. 功能简介31.1 功能概述31.2 性能特点31.3 静态参数41.4 典型应用52. 设备安装52.1 系统连接结构52.2 模块接口定义63. 设备使用73.1 GCAN-305配套评估板73.2 模块状态转换83.3 系统状态指示灯93.4 GCAN-305节点ID与CAN总线波特率94. GCAN-305中使用CANopen协议(DS301)114.1 GCAN-305预定义连接114.2 GCAN-305操作135. GCAN-305串口操作275.1 串口通信协议275.2 GCAN-305操作命令295.3 GCAN-305串口操作错误响应45附录A:CANopen协议简介46附录B:串口可操作对象字典列表53附录C:GCAN-305对象字典55销售与服务错误!未定义书签。
1. 功能简介1.1 功能概述GCAN-305是广成科技有限公司开发的嵌入式CANopen从站通信转换模块。
该模块内部已经集成了CANopen从站协议栈代码,不需要用户进行二次开发。
协议栈遵循CANopen协议描述文档DS301、DS302、DS303以及DS305标准。
在默认情况下,CANopen从站启用预定义连接,并支持参数存储。
GCAN-305模块提供一路CAN接口,通过该接口可以与CANopen网络进行连接。
另外GCAN-305提供两个UART接口——一个通信UART接口(通信波特率为1200~115200bps),一个调试UART接口(固定波特率为115200bps)。
GCAN-305模块适用于任何具有串口通信能力的系统,通过搭载该模块,用户现有的串口通信设备可以以最快的速度拥有CANopen通信能力,抢占市场先机。
(完整版)24V系统-CAN通讯协议说明书
24V系统-CAN通讯协议说明书(内部文件)2. 范围 (2)3. 网络拓扑 (3)3.1 模块地址表: (3)4. 报文格式 (4)4.1 状态信息报文 (4)4.1.1 开关量消息组1 (4)4.1.2 开关量消息组2 64.1.3 各种数值量消息 (7)4.1.4 故障消息 (8)4.1.5 仪表指示灯消息组 1 (10)4.1.6 仪表指示灯消息组 2 (11)4.2 控制类报文 (11)4.3 网络管理类报文 (14)4.3.1 系统休眠消息 (14)4.3.2 系统唤醒消息 (14)4.3.3 模块重启通知消息 (14)4.3.4 请求模块重启消息 (15)4.3.5 请求模块软件版本消息 (15)4.3.6 请求模块硬件版本消息 (16)4.3.7 模块网络心跳消息 (17)4.3.8 网络时钟消息 (17)4.4 其他报文 (18)4.4.1 应答消息 (18)5. 仪表相关报文 (18)1. 目的24V网关和车身控制系统(以下简称24系统)是基于CAN网连结而成的,CAN网络是整个系统的基础。
所以很有必要详细说明下该系统中的CAN 网络协议,这也是编写本文档的主旨。
本文档仅供内部开发人员使用,包括NCM 组和仪表组。
2. 范围本文编写的范围仅仅限于24V系统中采用的基于CAN的J1939应用协议的报文格式,不适用所有的网关和车身控制系统。
本文档并不是介绍CAN网络和J1939应用协议文档,而了解文档中设计的J1939协议关联的术语,请参看相关的技术文档。
3. 网络拓扑24V系统的详细介绍详见其他相关文档,如系统概要设计,详细设计等,在这里简单介绍一下系统的网络拓扑图,使读者有一个简单直白的了解,以便于更好的理解文档中涉及的CAN网络和J1939协议。
总所周知,CAN协议早在80年代就已经由德国的博世公司开发应用于汽车电子领域了,到了1991年,Philips Semiconductors公司制定发布了CAN技术规范2.0版本,分为A 和B两部分,2.0A部分给出了CAN报文的标准格式,2.0B部分为扩展部分。
傲拓科技 NJ400CMM401-0114自定义CAN模块使用说明书
NJ400CMM401-0104 CANOpen主站模块使用说明书V1.00傲拓科技股份有限公司2023年01月目录第一章 NA400CMM401-0104硬件手册 (1)1.1 概述 (1)1.2 订货号 (1)1.3 特性 (1)1.4 模块外观 (2)1.5 指示与诊断 (2)1.6 技术规范 (3)第二章 NA400CMM401-0104使用说明 (4)2.1 主站配置软件安装 (4)2.2 主站配置软件使用 (5)2.2.1 安装EDS文件 (5)2.3 配置主站/从站网络 (9)2.3.1 手动配置 (9)2.3.2 在线扫描 (17)2.4 配置文件的下载 (18)2.5 使用案例 (19)2.5.1 配置CPU和CMM通讯的输入输出区: (19)2.5.2 CANOpen网络配置 (19)2.5.3 输入输出数据区读写 (21)第一章 NA400CMM401-0104硬件手册1.1概述NA400CMM401-0104CANOpen主站模块是运行于PLC系统中的通讯模块,该模块扮演的角色是让NA400PLC系统能够方便的接入到CANOpen网络,实现PLC 与CANOpen总线上其它从站设备的数据交换,即负责将PLC 的数据传送给总线上的从站设备,同时也负责将总线上其他从站设备返回的数据传回PLC,从而实现数据交换。
1.2订货号1.3特性NA400CMM401-0104 CANOpen主站模块具有以下特性:⚫独立完成通讯任务,既可以与NA400 CPU 数据交换,也可以与 DP从站数据交换;⚫与NA400CPU模块的数据交换单独使用一路内部网,与 I/O 模块的内部网分离减轻内部网通讯的负担;⚫符合CANopen标准协议DS301v4.02;⚫支持NMT Master 服务;⚫错误控制:支持Heartbeat /Node Guarding Protocol ;⚫通讯节点数:最大 127 个节点(包括主站,主站是0号节点);⚫支持PDO服务:◼RxPDO数据量最大400字节,TxPDO数据量最大400字节;◼每个从站最多可配置4个TxPDO和4个RxPDO ;◼PDO映射:每个PDO最大可以映射32个参数,但总共加起来不能超过8个字节;⚫支持SDO服务;⚫支持Emergency Protocol,并在组态软件窗口显示;⚫支持同步信号产生(SYNC producer,range 0-65535ms );⚫作为NACANopenBuilder配置软件,可以通过CANOpen主站模块直接对网络进行组态;⚫支持标准波特率:125kbps、250kbps、500kbps;⚫全面的LED指示功能;⚫ 掉电不丢失配置参数,上电后CPU 自动进行参数加载; ⚫ 支持热插拔。
广州致远电子股份有限公司CAN接口卡系列产品使用手册说明书
广州致远电子股份有限公司CAN 接口卡系列产品CAN 测试软件与接口函数使用手册类别 内容关键词CANTest 通用测试软件、CAN 接口函数库使用摘要 本软件可适用于广州致远电子股份有限公司出品的各种CAN 接口卡。
CANTest 测试软件可进行数据收发、查询等基本传输功能。
是CAN 总线测试的必备软件。
CAN 接口函数库是提供给用户进行上位机二次开发,可以自行编程进行数据收发、处理等。
修订历史目录1. 测试软件使用说明 (1)1.1.设备操作 (1)1.1.1.设备类型选择 (1)1.1.2.滤波设置 (2)1.1.3.启动CAN (2)1.1.4.获取设备信息 (3)1.1.5.发送数据 (3)1.1.6.接收时间标识 (3)1.1.7.隐藏发送帧与显示发送帧 (4)1.1.8.DBC解码与按ID分类显示 (4)1.1.9.实时保存与停止保存 (4)1.1.10.总线利用率 (5)1.1.11.错误信息显示 (5)1.2.辅助操作 (6)1.2.1.帧ID显示方式 (6)1.2.2.帧ID显示格式 (6)1.2.3.继续显示发送和接收的数据 (6)1.2.4.暂停显示发送和接收的数据 (6)1.2.5.滚动 (6)1.2.6.显示帧数 (6)nguage (6)2. 接口函数库说明及其使用 (7)2.1接口卡设备类型定义 (7)2.2接口库函数使用流程 (8)2.3驱动的特色与工作原理 (9)2.4错误码定义 (10)2.5函数库中的数据结构定义 (10)2.5.1VCI_BOARD_INFO (10)2.5.2VCI_CAN_OBJ (11)2.5.3VCI_CAN_STA TUS (12)2.5.4VCI_ERR_INFO (13)2.5.5VCI_INIT_CONFIG (14)2.5.6CHGDESIPANDPORT (15)2.5.7VCI_FILTER_RECORD (16)2.5.8VCI_AUTO_SEND_OBJ (16)2.6接口库函数说明 (18)2.6.1VCI_OpenDevice (18)2.6.2VCI_CloseDevice (19)2.6.3VCI_InitCAN (20)2.6.4VCI_ReadBoardInfo (22)2.6.5VCI_ReadErrInfo (22)2.6.6VCI_ReadCANStatus (27)2.6.7VCI_GetReference (28)2.6.8VCI_SetReference (31)2.6.9VCI_StartCAN (34)2.6.10VCI_ResetCAN (34)2.6.11VCI_GetReceiveNum (36)2.6.12VCI_ClearBuffer (36)2.6.13VCI_Transmit (38)2.6.14VCI_Receive (39)3. 接口库函数使用方法 (40)3.1VC调用动态库的方法 (40)3.2VB调用动态库的方法 (40)3.3接口库函数使用流程 (42)3.4Linux下动态库的使用 (43)3.4.1驱动程序的安装 (43)3.4.2USBCAN-I/II/I+/II+驱动的安装 (43)3.4.3PCI-9820驱动的安装 (43)3.5动态库的安装 (43)3.6动态库的调用及编译 (43)4. 参考资料 (44)5. 免责声明 (45)1. 测试软件使用说明CAN-bus 通用测试软件是一个专门用来对所有的ZLGCAN系列板卡进行测试的软件工具,此软件操作简单,容易上手,通过运用此软件可以非常方便的对板卡进行测试,从而熟悉板卡的性能,其主界面如下:1.1. 设备操作1.1.1. 设备类型选择在进行操作之前,首先得从“类型”菜单中选择您想要操作的设备类型,如下图所示:此时会弹出“选择设备”对话框:在这个对话框中您可以选择您要打开的设备索引号和CAN通道,以及设置CAN的初始化参数,然后点“确定”按钮来打开设备操作窗口(或者也可以点击“确定并启动CAN”按钮打开设备操作窗口并自动打开设备和启动CAN通道)。
stc单片机的can通信代码_概述及解释说明
stc单片机的can通信代码概述及解释说明1. 引言1.1 概述本篇长文将详细介绍STC单片机的CAN通信代码,并对其进行解释和说明。
CAN(Controller Area Network)通信是一种广泛应用于工业控制领域的串行总线通信协议,具有高可靠性和实时性的特点。
1.2 文章结构本文分为五个主要部分,分别概述如下:- 第2部分:对STC单片机CAN通信代码进行概述,包括CAN通信简介、STC单片机及其特点以及STC单片机与CAN通信的应用场景。
- 第3部分:详解CAN通信实现代码,在这一节中将涵盖硬件连接与配置步骤、初始化CAN模块设置以及发送数据代码解析等内容。
- 第4部分:解析和应用案例分析接收数据的代码,在这一节中将探讨接收缓冲区配置与接收中断处理函数设计、数据接收与处理过程演示以及实际应用案例分析与问题解决思路分享。
- 第5部分:总结文章并展望未来发展方向,包括实验结果总结与讨论以及技术问题、改进方向及未来发展展望等内容。
1.3 目的本文的目的在于全面介绍STC单片机的CAN通信代码,并对各个功能进行详细解释和说明。
读者通过本文可以了解CAN通信协议的基本原理、STC单片机的特点以及其与CAN通信的应用场景,同时还能具体了解如何实现CAN通信的初始化设置、发送数据以及接收处理等关键步骤。
此外,本文还希望通过实际应用案例分析分享解决问题的思路,为读者提供一些启发和参考。
2. STC单片机CAN通信代码的概述2.1 CAN通信简介CAN(Controller Area Network)总线是一种广泛应用于工业领域的串行通信协议。
它具有高性能、实时性强以及可靠性高等特点,被广泛用于汽车电子、工业自动化、机器人控制和航空航天等领域。
2.2 STC单片机及其特点STC单片机是一种常见的8位微控制器,由STC公司开发和生产。
它具有低功耗、易于编程和使用的特点,并且价格相对较低。
STC单片机广泛应用于各个领域,在嵌入式系统中扮演着重要角色。
热网现场控制器的CAN网络通信设计
络 通 信部 分 的 模 式 、 收码 、 收掩 码 和 波 特 率 , 接 接
图 j 网监控 系统 总体 结构 热
设 计 与实 现 。
然l进入运行状态 , 适当条件 卜 后 在
与 现 场 控 制 器 进 行 通 信 。现 场 控 制
cN A 网络通信接口 l
… — 一
~ ’
位 机 和 现 场控 统 町靠 性 高 。 息 的传 输采 用 CA 信 N 制器 组 成 ,总 通 信 协 议 ,通 信 介 质 采用 双 绞 线 。
图2现场控制器的结构框图
2 0. 电 子 设 计 应 用 wwwe wc m.l 06 3 , .o Cl a
t 奉结 构 如 1
系 统 结 器 主 要 完 成 现 场 数据 的 采集 与 处 理
中
时 接 钟 口
数 储 = 据存 接I _ _ = l
l
l
口 t … ^
构 及 其 硬 件 和 现 场设 备的 摔 制 等 功 能 , 以查 并
构 成
系统 结 构
热 网监控
— h 央
处 理
所示 。
上位 机
上 位 机 采 用 上 控 机 ,负 责 对 整
维普资讯
◆煳 牢 : 1 H ( z N
◆频率 :IM z O H
卜 牛中 ±1 0
◆低 』 牦 、起 动 快 』 J
◆} 稳定度±5 0 ( o ~ 7℃) 蛾 ×1 4。 十【 c ]
I
一
T CXO ◆人显 现 货
◆选州瞅荚优质s 剀。 C 体
◆供 电 源 :+ 2 lV
岛通截 I频 术:l.- O0 H I : 6 l 0M z
无人机发动机控制系统CAN总线通信技术
无人机发动机控制系统 CAN总线通信技术摘要:无人驾驶飞行器(unmannedaerialvehicle,UAV),简称“无人机”,因体积小、质量轻、使用方便、生存能力较强、对作战环境要求低等优点,不仅在军事上得到广泛应用,而且在航拍、农业植保、测绘等民用领域也发展迅猛。
目前,国内无人机内各设备间的主要通信方式采用传统的422串口通信等,波特率通常为9600~115200,无论是发送数据还是接收数据,设备间的数据通信总是占用很长的时间,难以满足无人机通信系统对控制的高实时性和高可靠性的要求。
关键词:无人机;CAN通信;PIC单片机一、通信系统硬件设计1.1机载设备通信系统设计笔者以CAN总线作为无人机机载设备通信系统的通信手段,设计了响应式和分时式2种发送机制。
其中,飞控系统CAN总线采用响应式发送机制,由飞控系统向机载各设备发送请求数据帧,机载各设备接收数据帧并与本身ID进行比较,如果匹配则回传相对应的应答数据帧。
遥测系统CAN总线采用分时式发送机制,各机载设备系统接收到同步信号后,每隔20ms向遥测系统CAN总线发送设备状态数据,各设备需在各自分配的1ms内发送数据,其他时间段不允许发送数据。
图1即为机载各设备间通信系统的结构。
1.2发动机控制系统CAN通信硬件设计笔者对发动机控制系统CAN通信进行详细设计。
发动机控制系统与外部机载飞控系统和机载遥测系统的CAN总线通信结构如图2所示。
发动机电子控制单元(electroniccontrolunit,ECU)采用dsPic30f6011A作为主控芯片。
dsPic30f6011A自带2个CAN模块,是可以实现CAN2.0A/B协议的通信控制器。
模块支持CAN1.2、CAN2.0A和CAN2.0B,支持标准、扩展和远程数据帧,数据长度为0到8字节,可编程比特率达到1Mbit/s,双缓冲的接收器,带2个区分优先级的接收报文存储缓冲器。
MCP2551是一个可容错的高速CAN器件,可作为CAN协议控制器和物理总线接口。
CAN总线详细教程
CAN通信技术概述
CAN ( Controller Area Network ) 即控制器局域 网络。由于其高性能、高可靠性、及独特的设计, CAN越来越受到人们的重视。国外已有许多大公司的 产品采用了这一技术。 CAN最初是由德国的BOSCH公司为汽车监测、 控制系统而设计的。现代汽车越来越多地采用电子装 置控制,如发动机的定时、注油控制,加速、刹车控 制(ASC)及复杂的抗锁定刹车系统(ABS)等。由于这些 控制需检测及交换大量数据,采用硬接信号线的方式 不但烦琐、昂贵,而且难以解决问题,采用CAN总线 上述问题便得到很好地解决。
带有中央控制单元的车
带有三个中央控制单元的车
带有三个中央控制单元和总线系统的车
带有三个中央控制单元的CAN驱动网络
车用网络发展原因
电子技术发展----线束增加 线控系统(X-BY-WIRE) 计算机网络的广泛应用 智能交通系统的应用
汽车发展带来的问题 (1)汽车电子技术的发展汽车上电子装置越来 越多汽车的整体布置空间缩小 (2)传统电器设备多为点到点通信导致了庞大 的线束 (3)大量的连接器导致可靠性降低。 粗大的线束与汽车中有限的可用空间之间的矛 盾越来越尖锐,电缆的体积、可靠性和重量成为越 来越突出的问题,而且也成为汽车轻量化和进一步 电子化的最大障碍,汽车的制造和安装也变得非常 困难。 (4)存在冗余的传感器。
Vo l v o 汽车近三十年来线束增长的情况
车用网络:通过总线将汽车上的各种电子装置与设 备连成一个网络,实现相互之间的信息共享,既减 少了线束,又可更好地控制和协调汽车的各个系统, 使汽车性能达到最佳。
汽车网络化的优点
布线简单,设计简化,节约铜材,降低成本。 可靠性提高,可维护性大为提高 实现信息共享,提高汽车性能 满足现代汽车电子设备种类功能越来越多的要 求 总之,使用汽车网络不仅可以减少线束,而且 能够提高各控制系统的运行可靠性,减少冗余 的传感器及相应的软硬件配置,实现各子系统 之间的资源共享,便于集中实现各子系统的在 线故障诊断。
can 电路设计
can 电路设计
CAN电路设计需要考虑多个方面,包括CAN总线的特性、微处理器的特性、传输速率、传输距离等。
以下是一些CAN电路设计的基本步骤:
1. 确定CAN总线的特性和规格:CAN总线是一种用于汽车和其他工业领域的通信总线,具有高速、可靠、实时性强的特点。
在CAN电路设计中,需要确定CAN总线的特性和规格,包括总线电压、总线电阻、传输速率等。
2. 选择合适的微处理器:微处理器是CAN电路的核心部件,需要选择具有CAN接口的微处理器,并且能够满足CAN总线的传输速率和通信距离的要求。
3. 设计CAN接口电路:CAN接口电路是连接CAN总线和微处理器的桥梁,需要设计合适的接口电路,包括物理接口和逻辑接口。
物理接口需要满足CAN总线的电气特性,逻辑接口需要实现CAN协议的解码和编码。
4. 设计电源电路:CAN电路需要稳定的电源供应,需要设计合适的电源电路,包括电源电压的稳定性和电源电流的限制等。
5. 设计信号隔离电路:CAN总线是一种差分信号传输方式,需要设计合适的信号隔离电路,以防止信号的干扰和损坏。
6. 测试和调试:在完成CAN电路设计后,需要进行测试和调试,以确保CAN电
路的稳定性和可靠性。
需要注意的是,CAN电路设计需要考虑多种因素,包括硬件、软件、通信协议等。
因此,在进行CAN电路设计时,需要综合考虑各种因素,以确保设计的正确性和可靠性。
CANopen手册
CANopen手册CANopen手册1、简介1.1 CANopen概述1.2 CANopen的应用领域1.3 CANopen的优势2、CANopen通信协议2.1 CAN物理层2.1.1 CAN总线通信原理2.1.2 CAN总线帧格式2.2 CAN数据链路层2.2.1 节点地质分配2.2.2 帧过滤和过滤层2.3 CANopen协议格式2.3.1 NMT(网络管理)帧格式 2.3.2 SYNC(同步)帧格式2.3.3 PDO(过程数据对象)帧格式2.3.4 SDO(服务数据对象)帧格式3、CANopen网络配置3.1 网络拓扑结构3.1.1 主/从节点3.1.2 对等节点3.2 节点间通信方式3.2.1 主/从节点通信3.2.2 对等节点通信3.3 网络参数配置3.3.1 节点ID分配3.3.2 通信速率设置3.3.3 网络时钟同步设置4、CANopen对象字典4.1 对象字典概述4.2 对象字典结构4.2.1 通用对象4.2.2 设备配置对象4.2.3 状态对象4.2.4 过程数据对象4.2.5 服务数据对象4.3 对象字典索引4.3.1 索引范围和分类 4.3.2 系统对象索引4.3.3 设备对象索引4.3.4 厂商特定对象索引5、CANopen通信过程5.1 NMT状态机5.1.1 NMT状态转换5.1.2 NMT启动过程5.1.3 NMT停止过程5.2 SYNC同步机制5.2.1 SYNC信号广播5.2.2 SYNC对齐时钟5.3 PDO数据传输5.3.1 PDO映射配置5.3.2 PDO传输过程5.4 SDO数据传输5.4.1 SDO服务器与客户端5.4.2 SDO数据访问类型5.4.3 SDO传输过程附件:1、CAN物理层连接图2、对象字典参考表3、示例CANopen网络配置法律名词及注释:1、CAN - 控制器局域网(Controller Area Network)是一种串行通信协议,常用于工业控制领域。
基于CAN总线双冗余工业I/O模块的设计
中。这 种分 散化 的控 制方 式 能加 强 控 制 的可靠 性 , 不会 由 于计 算机 的故障 而使整 个系统 失去 控制 当
管理 级 发生故 障 时 , 过程 控制 级 ( 制 回路 ) 具有 控 仍 独立 控制 能力 . 别控 制 回路 发 生故 障 时也 不致 影 个
通信 网络 . 是建 立在 国际标 准 组织 的开放 系 统互 联 模 型基 础上 的 . 由于采用 了许 多新技 术及 独特设 计 . 与一 般通信 总线相 比 . A C N总线 的数 据 通信 具有 突
文 章 编 号 :O I 9 42 1)60 2 -3 lO - 4 (0 00 -0 24 9 一4
基于 C AN 总 线 双 冗余 工 业 l 模 块 的设 计 / O
王修 岩 , 晓 剑 , 宗 帅 耿 李
( 国民航 大 学 航 空 自动 化 - 院 , 中 9 天津 3 0 0 ) 0 3 0
出的可靠 性 、 实时性 和灵 活性 。 目前 , 于 C N 总线 基 A
响全局 C N总线 以其 实 时性强 . A 可靠性 高 。 构简 结
单 , 操作 性好 , 格低 廉 等优 点 , 用 于高 速 网络 互 价 应
和 低成本 的线路 网络 C N总 线是 分布式 控制 系统 A (C ) D S 一个很 好 的解决方 案 。
i f l s s b e a d r a— me c mmu iai n t u t t l n el t o d Ml a i nc t . o Ke r s d s i u e o t l s se C o tolr c mmu i ain it r c :/ mo u e y wo d : it b td c nr y t m: AN c n r l ; o r o e nct nef e I o a O d ls
整车CAN通信设计规范
文件编号: TKC/JS(S)-EV17文件版本号: 0/A版安徽天康特种车辆装备有限公司整车CAN通信设计规范编制:审核:批准:发布日期:2014年12月22日实施日期:2014年12月22日安徽天康特种车辆装备有限公司一、说明........................................................... - 1 -二、物理层........................................................ - 3 -三、数据链路层................................................... - 12 -四、传输协议..................................................... - 15 -五、交互层....................................................... - 15 -为使本公司整车CAN总线通信设计规范化,参考国际标准化组织协议以及国内外汽车总线总体设计的技术要求,结合本公司物流车开发车型的实际应用环境,编制本整车CAN总线通讯设计规范。
本规范满足公司快速发展的需要,并将在实践中进一步提高完善。
本规范由安徽天康特种车辆装备有限公司技术部提出。
本规范由安徽天康特种车辆装备有限公司技术部批准。
本规范主要起草人:李劲松、查德国、和进军本规范于2015年01月首次发布。
整车CAN通信设计规范一、说明1.1范围本规范规定了安徽天康特种车辆装备有限公司(以下简称“天康”)生产的纯电动汽车CAN通信设计规范。
本规范适用于安徽天康特种车辆装备有限公司设计开发的纯电动汽车的CAN总线通信设计。
如果本标准与其它标准或规范不一致,则按照如下方式处理:与SAE J1939不一致,遵照本标准执行;与ECU技术规范不一致,遵照ECU技术规范执行1.2规范性引用文件下列文件中的条款通过本规范的引用成为本规范的条款。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Can.cpp模块设计说明1.总则:传送故障记录数据或运行记录数据时,不传送参数数据和实时数据。
传送参数数据和实时数据可同时传送。
在界面层:1.读故障记录数据BUTTON和运行记录数据BUTTON和记录实时数据BUTTON没有按下,参数没有操作时,才能按下读故障记录数据BUTTON或运行记录数据BUTTON。
否则弹出信息框。
2.按下故障记录数据BUTTON后,把运行记录数据BUTTON和记录实时数据BUTTON变灰,参数MENU和参数界面上的读和修改BUTTON变灰,故障记录数据读完后,上述按钮复原。
对按下运行记录数据BUTTON作同样处理。
3.按下记录实时数据BUTTON时,把故障记录数据BUTTON和运行记录数据BUTTON变灰。
按下停止记录实时数据BUTTON时, 把故障记录数据BUTTON和运行记录数据BUTTON复原。
4.对参数上载和修改时,把故障记录数据BUTTON和运行记录数据BUTTON变灰,完成操作后把故障记录数据BUTTON和运行记录数据BUTTON复原。
CAN和以太网类似,相应7种事件:关闭CAN、实时数据请求、读参数、写参数、发送心跳报文,读故障记录,读运行记录。
2功能模块类名为:Class Can类对象定义在Can.cpp中,是一个全局对象。
Class Lan g_Can;该模块的功能为:1. 通过USB转CAN与下位机进仃头时数据请求和参数的上传下载读运行记录;,读故障记录,2. 通过PCI插卡与下位机进仃头时数据请求和参数的上传下载运行记录;,读故障记录,读3. 出错处理。
3流程逻辑CAN部分由线程CanThread(宽成5个事件。
OpenCan ( DWORD DevType , DWORD DevIndex , DWORD Reserved )函数通过调用API 函数VCI_OpenDevice (DWORD DevType , DWORD DevIndex , DWORD Reserved )打开CAN;CloseCan ( DWORD DevType , DWORD DevIndex )函数通过调用API 函数VCI_CloseDevice(DWORD DevType , DWORD DevIndex)关闭CAN ;StartCanThread ()函数用于开启Can线程;SuspendedCanThread ()函数用于关闭线程;CanThread ()为Can线程函数,用于执行五种事件:关闭Can、发送实时数据请求、读参数、写参数和发送心跳报文。
SendCanPacket(int iEvent, int Index = 0 , int SubIndex = 0 , *Data = NULL)为CAN 发送报文函数,iEvent为事件值,Index、SubIndex、Data用于参数的读写事件。
根据不同的事件,发送相应的报文。
RecvCanPacket()JudgeOvertime();以上函数形参封装在以下的数据结构中:typedef struct _CAN_DEVICE_PARM_{DWORD dwDevType; 〃设备类型号DWORD dwDevIndex; 〃设备索引号DWORD dwReserved; 〃保留DWORD dwCANIndex; //Can 第几路DWORD dwChecCode;// 验收码DWORD dwMask; // 屏蔽码DWORD m_dwMode; // 模式int iTimer0; // 定时器int iTimer1; // 定时器int iFilterType;// 滤波方式}CAN_DEVICE_PARM;typedef struct _VCI_CAN_OBJ{UINT uiID;UINT uiTimeStamp;BYTE byTimeFlag;BYTE bySendType;BYTE byRemoteFlag;// 是否是远程帧BYTE byExternFlag;// 是否是扩展帧BYTE byDataNbytes;BYTE byDataBuf[8];BYTE byReserved[3];}VCI_CAN_OBJ,*PVCI_CAN_OBJ ;成员uiID :报文ID ;uiTimeStamp :接收到信息帧的时间标识,从CAN控制器初始化开始计时;byTimeFlag :是否使用时间标识,为1时uiTimeStamp有效,byTimeFlag和uiTimeStamp只在此帧为接收帧时有意义;bySendType:发送帧类型,0为正常发送,1为单次发送,2为自发自收,3为单次自发自收只在此帧为发送帧时有意义;byRemoteFlag:是否为远程帧;byExternFlag :是否为扩展帧;byDataNbytes :数据长度(<=8),即Data的长度;byDataBuf:报文的数据;byReserved:系统保留。
typedef struct _VCI_INIT_CONFIG{DWORD dwAccCode;DWORD dwAccMask;DWORD dwReserved;UCHAR ucFilter;UCHAR ucTiming0;UCHAR ucTiming1;UCHAR ucMode;}VCI_INIT_CONFIG ,*PVCI_INIT_CONFIG;成员:dwAccCode :验收码;dwAccMask :屏蔽码;dwReserved:系统保留;ucFilter:滤波方式,1为单波方式,0为双波方式;ucTiming0 :定时器0;ucTimingl :定时器1;ucMode :模式。
0为正常模式,1为只听模式在Datalayer.cpp中添加成员变量:BYTE m_byCANRealTimeBuffer[];BYTE m_byCANParmBuffer[];添加成员函数:int GetDataFromCANPacket();对CAN接收到的数据进行解析分类,将数据存于他对应的地方。
CAN从界面层到通讯层的整体流程图:OpenCAN ()函数流程图:SendCanPacket()流程图:SendCanPacket。
判断iEventCANThread()流程图:通过返回值 判断是否超 时重发请求关闭CANN 发送实时数 据请求报文接收实时数 据报文While 判断是否瓷生其 他事件并且是否为一*..- 组数据的最后一帧'发送故障记 录请求报文接收实时数 据报文通过返回值 判断是否超时重发请求RecvCanPacket ()流程图:1)如收到的是心跳报文;则丢掉2)如收到的是’中止SDO请求报文’(最后4个字节是16进制中止代码之一■——0601 0000,其功能描述是对象不支持访问勺则上位机通知参数设定界面,参数设定界面弹出对话框告知参数INDEX或SUBINDEX出错。
上位机停止上传/下载系统参数。
4实时数据和参数通信过程(供参考)4.1数据结构:在InternalDef.h 中增加#define LIMIT_CAN_RECV_ONE_PACKET_TIMEOUT_MS 200#define PACKET_TIMEOUT 2在PdasConfig中增加Int m_iCanRecvOnePacketTimeoutMs ;在PdasCong.cpp 中m_iCanRecvOnePacketTimeoutMs= LIMIT_CAN_RECV_ONE_PACKET_TIM EOUT_MS在DataLayer.h中增加int m_iCanRealTimeDataNbytes ; //UDP 收到的数据长度BYTE m_byCanRealTimeData[500];在Can.h中增加BYTE m_byRealTimeData[12][8]Int m_iIndexOfRealTimeData;BOOL m_bFirstRealTimeBlock4.2程序伪代码:1.初始化m_byRealTimeData[][]为全0,且m_byRealTimeData[0][0]=0xff ;m_bFirstRealTimeBlock=TRUE2.在应该发送的时刻调用SendNmi (0x01)函数该函数组织报文(00,02,01,02,00,00,00,00,00,00然后调用VCI_Trasmit()3.BOOL bShouldSave=FALSE;While(TRUE){If (ShouldSendParmPacket(...)){ 〃有上载参数报文或修改参数报文要发送OrganizeParmPacket(...) 〃组织发送VCI_Transmit(...)}iNbytes=VCI_Receive(...),超时时间用变量g_PdasConfig.CanRecvOnePacketTimeoutMs;iState=ProcessPossibleTimeOut(...) 〃返回PACKET_TIMEOUT 或DEVICE_FAULTIf(iState==PACKET_TIMEOUT)Continue;Else if(iState==DEVICE_FAULT){g_DataLayer.iDeviceState[DEVICE_CAN]=DEVICE_FAULTBreak;}iPacketType=JudgeReceivedPacketType(...)If (iPacketType==REAL_TIME_DATA||==LAST_REAL_TIME_DATA) 〃收到实时数据报文根据ID , DL, Byte 放入相应m_byRealTimeData[?][] Else if(iPacketType==UPLOAD_PARM )ProcessUpLoadParm(....)〃参数报文处理Else if(iPacketType==MODITY_PARM )ProcessModityParm(...) //参数报文处理If(iPacketType==LAST_REAL_TIME_DATA)//(0x484,0x08,0x0B) 收到{If ( m_iReadRecordStage==BEGN break〃退出循环,去读故障记录数据If(m_bFirstRealTimeBlock==TRUE){If (12个报文全收到){m_bFirstRealTimeBlock=FALSEbShouldSave=TRUE}}Else{bShouldSave=TRUE}}If (bShouldSave){bShouldSave=FALSE;g_DataLayer.PutRealTimeData(m_byRealTimeData ,iErrorCode ,DEVICE_CAN );0x2000 0x3000 (0x3000-1) (0x4000-1)} }//end of While()5传送故障记录数据或运行记录数据过程(供参考) 5.1数据结构: InternalDef.h 中增加 #defineNON_RECORD 0#define FAULT_RECORD 1 #defineNORMAL_RECORD2#define BEGIN_RECORD 1 ... #define COMPLETE_RECORDxx#define FIRST_INDEX_OF_FAULT_RECORD #define FIRST_INDEX_OF_NORMAL_RECORD #define LAST_INDEX_OF_FAULT_RECORD #defineLAST_INDEX_OF_NORMAL_RECORD〃现由周提供PdasConfig.h 中增加 Int m_iFirstIndexOfFaultRecord Intm_iFirstIndexOfNormalRecord Int m_iLastIndexOfFaultRecord Int m_iLastIndexOfNormalRecordPdasConfig.cpp 中增加对它们赋初值Can 类中增加Intm_iRecvRecordTypeInt m_iRecvRecordStageBYTE m_byRecordData[12][8]Int m_iIndexOfRecordData;Int m_iSubIndexOfRecordDataInt m_iBlockSizeOfRecordDataDalaLayer中增加RecvFaultRecord (..)RecvNormalRecord(...)5.2伪代码1.对故障记录数据,界面调用g_DataLayer.RecvFaultRecord().g_DataLayer.RecvFaultRecord()勺工作:-设置变量Can.m_iRecvRecordStage = BEGIN还是设置事件m_EventRecvRecord ???M论-设置Can.m_iRecvRecordType=FAULT_RECORD 对故障记录数据,界面调用g_DataLayer.RecvNormalRecord().g_DataLayer.RecvNormalRecord()勺工作:-设置变量Can.m_iRecvRecordStage = BEGIN_RECORD还是设置事件m_EventRecvRecord ???M论-设置Can.m_iRecvRecordType=NORMAL_RECOED初始化m_byRecordData[12][8]为0 和m_byReacordData[0][0] 为0xFF。