CAN总线通信系统上位机通信软件设计

合集下载

CAN总线数据通讯功能设计

CAN总线数据通讯功能设计

CAN总线数据通讯功能设计摘要:近年来,社会进步迅速,我国的智能化建设的发展也有了改善。

CAN(ControllerAreaNtework)即控制器局域网络,最初是由德国的BOSCH公司为汽车监测、控制系统而设计的。

现代汽车越来越多采用电子装置控制,如发动机的定时、注油控制、加速、刹车、自动泊车、倒车雷达及复杂的制动防抱死系统(ABS)等。

这些电子装置的控制需实时检测及交换大量的数据,仅使用传统点对点的连接方式来实现子系统之间的随机通信,不但繁琐、昂贵,且难以解决问题。

采用CAN总线上述问题就能得以很好的解决。

因为CAN总线为多主站总线,各节点可在任意时刻向网络上的其他节点发送信息,不分主次,通信灵活;采用短帧结构,数据传输时间短,最大传输数率可达1Mbps(通信距离小于40m)。

CAN总线技术由于高性能、高可靠性及其独特的设计备受人们的重视,经过十几年的发展,该技术已成为所有车载电子控制系统互联、互通的标准,广泛应用于汽车电子监测系统。

关键词:CAN总线;数据通讯;功能设计引言随着汽车的普及,人们对汽车舒适度要求越来越高,使得汽车电子技术发展迅速,越来越多的汽车电子控制单元(ElectronicControlUnit,ECU)被应用于汽车控制。

诊断功能的实现是ECU开发过程中的重要部分,对诊断功能进行集成测试是为了验证功能实现与设计规范的一致性。

1方案的实现电路主要由四个部分构成:微控制器、独立CAN通信控制器、CAN总线收发器、高速光耦。

微控制器负责CAN通信控制器的初始化。

CAN通信控制器有发送和接收两端,它能够同时读写总线,这个功能对于错误检测与总线仲裁都很重要,因此通过控制CAN通信控制器实现数据的接收和发送通讯任务。

CAN通信控制器要通过CAN总线收发器上的线驱动器和总线接口进行总线的读写,总线是通过典型的双绞线传输差分电压信号,处理CAN总线两端的节点应设置跨接在两根双绞线间的终端匹配电阻。

c#通过串口及CAN模块实现上位及下位机通讯

c#通过串口及CAN模块实现上位及下位机通讯

c#通过串⼝及CAN模块实现上位及下位机通讯⽬录前⾔⼀、串⼝、CAN总线⼆、使⽤步骤1.RS232串⼝通讯(指令下发与接收)2.CAN总线通讯总结前⾔学习及⼯作中我们经常会遇到上位机与下位机通讯等⼯作,结合场景使⽤不同的通讯⽅式实时通讯,以下为⼯作中遇到的上位机与下位机进⾏实时通讯,采⽤RS232串⼝和CAN总线形式进⾏⽹络通讯。

⼀、串⼝、CAN总线串⾏接⼝简称串⼝,也称串⾏通讯接⼝或串⾏通讯接⼝(通常指设备的COM接⼝),是采⽤串⾏通信⽅式的扩展接⼝。

串⾏接⼝(Serial Interface)是指数据⼀位⼀位地顺序传送。

其特点是通讯简单,只要⼀对传输线,通过设备设置传输线端⼝等参数就可以实现双向通信,从⽽⼤⼤降低了成本,特别适⽤于远距离通信,但传送速度较慢。

CAN是控制器局域⽹络(Controller Area Network, CAN)的简称,是由以研发和⽣产汽车电⼦产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应⽤最⼴泛的现场总线之⼀。

在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌⼊式⼯业控制局域⽹的标准总线,并且拥有以CAN为底层协议专为⼤型货车和重⼯机械车辆设计的J1939协议。

上位机与与下位机制定好通⽤协议通过CAN模块将数据进⾏16进制转换实时通讯。

⼆、使⽤步骤1.RS232串⼝通讯(指令下发与接收)代码如下(⽰例)://命名空间引⼊using System.IO.Ports;public SerialPort serialPort;//定义串⼝对象类public//定义连接⽅法public void Connect(){serialPort = new SerialPort();serialPort.BaudRate = 1200;//波特率serialPort.PortName = "COM1";serialPort.Parity = Parity.None;//校验法:⽆serialPort.DataBits = 8;//数据位:8serialPort.StopBits = StopBits.One;//停⽌位:1try{serialPort.Open();//打开串⼝serialPort.DtrEnable = true;//设置DTR为⾼电平serialPort.RtsEnable = true;//设置RTS位⾼电平serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);//DataReceived事件委托byte[] WriteBuffer = Encoding.ASCII.GetBytes("下发指令");//下发serialPort.Write(WriteBuffer, 0, WriteBuffer.Length);}catch (Exception ex){//打开串⼝出错,显⽰错误信息Console.WriteLine("串⼝打开失败");}}2.CAN总线通讯代码如下(⽰例)://⾸先与CAN模块进⾏连接public TcpClient mTcp = new TcpClient();private const int READ_BUFFER_SIZE = 1000;private byte[] readBuffer = new byte[READ_BUFFER_SIZE + 1];public delegate void DoReadEventHandle(object sender, string e);public event DoReadEventHandle ReadedEvent;public event DoReadEventHandle LogEvent;public string recStr { get; set; }public string HandString { get; set; }public bool Connect(){//Can模块ipstring mIPAddress = "192.168.1.1";IPAddress hostIPAddress = IPAddress.Parse(mIPAddress);//端⼝int mPort = 8080;IPEndPoint endIP = new IPEndPoint(hostIPAddress, mPort);try{mTcp = new TcpClient(mIPAddress, mPort);DateTime Savetime = DateTime.Now;TimeSpan n = new TimeSpan();while (true){n = DateTime.Now - Savetime;if (n.TotalMilliseconds > 1000 || mTcp.Client.Connected) break;}if (!mTcp.Client.Connected) return false;mTcp.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, DoRead, null);}catch (Exception){return false;}return true;}private void DoRead(IAsyncResult ar){try{int BytesRead = mTcp.GetStream().EndRead(ar);if (BytesRead > 0){string s = "";for (int i = 0; i <= BytesRead - 1; i++){s = s + string.Format("{0:x2}", readBuffer[i]) + " ";}Console.WriteLine(s);var t = s.Split(new string[] { "aa 00 ff 00 00 00 00 00 00 00 00 00 55" }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(ex => ex != " ");if (!string.IsNullOrEmpty(t)){recStr += t + "\r\n";if (HandString == recStr && LogEvent != null){HandString = null;LogEvent(this, "握⼿成功!");}} mTcp.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, DoRead, null);}}catch (Exception e){mTcp.Client.Close();}}//数据发送public void sendCan(string temperature, bool check){HandString = "0xC0 0x02 0x02 0x00 0x00";string[] tmp = temperature.Split(' ');var buf = new byte[22];for (int i = 0; i < buf.Length; i++){buf[i] = 0;}for (int i = 0; i < tmp.Length; i++){try{buf[i] = Convert.ToByte(tmp[i], 16);}catch (Exception e){buf[i] = 0;}}SendData(buf, 0, 13, check);}public bool SendData(byte[] sendBytes, int mStart, int mLen, bool check = true) {if (!check) return false;try{lock (mTcp.GetStream()){mTcp.GetStream().Write(sendBytes, mStart, mLen);}return true;}catch (Exception x){return false;}}总结1、RS232串⼝通讯接⼝的信号电平值较⾼,易损坏接⼝电路的芯⽚,传输速率较低,传输距离有限。

CAN总线网络设计

CAN总线网络设计

1 引言can(controller area network)即控制器局域网络,最初是由德国bosch公司为解决汽车监控系统中的自动化系统集成而设计的数字信号通信协议,属于总线式串行通信网络。

由于can总线自身的特点,其应用领域由汽车行业扩展到过程控制、机械制造、机器人和楼宇自动化等领域,被公认为最有发展前景的现场总线之一。

can总线系统网络拓扑结构采用总线式结构,其结构简单、成本低,并且采用无源抽头连接,系统可靠性高。

本设计在保证系统可靠工作和降低成本的条件下,具有通用性、实时性和可扩展性等持点。

2 系统总体方案设计整个can网络由上位机(上位机也是网络节点)和各网络节点组成(见图1)。

上位机采用工控机或通用计算机,它不仅可以使用普通pc机的丰富软件,而且采用了许多保护措施,保证了安全可靠的运行,工控机特别适合于工业控制环境恶劣条件下的使用。

上位机通过can总线适配卡与各网络节点进行信息交换,负责对整个系统进行监控和给下位机发送各种操作控制命令和设定参数。

网络节点由传感器接口、下位机、can控制器和can收发器组成,通过can收发器与总线相连,接收上位机的设置和命令。

传感器接口把采集到的现场信号经过网络节点处理后,由can收发器经由can总线与上位机进行数据交换,上位机对传感器检测到的现场信号做进一步分析、处理或存储,完成系统的在线检测,计算机分析与控制。

本设计can总线传输介质采用双绞线。

图 1 can总线网络系统结构3 can总线智能网络节点硬件设计本文给出以arm7tdmi内核philips公司的lpc2119芯片作为核心构成的智能节点电路设计。

该智能节点的电路原理图如图2所示。

该智能节点的设计在保证系统可靠工作和降低成本的条件下,具有通用性、实时性和可扩展性等特点,下面分别对电路的各部分做进一步的说明。

图2 can总线智能网络点3.1 lpc2119处理器特点lpc2119是philips公司推出的一款高性价比很处理器。

基于can总线的轮询通信系统设计

基于can总线的轮询通信系统设计

随着社会经济发展,人们对多机通信的实时性、可靠性提出了更高的要求。

相应的,总线通信技术也紧跟应用需求,得到了前所未有的发展[1,2]。

当前在多机通信领域,常用的控制方式为并行集中式和串行分布式两种架构,其中传统并行集中式通信系统为对主控制器引出多条并行式信号线,实现单个主控制器对多台从机运行的控制,这种控制模式通常存在信号线走线占体积大、整机同步性能差、易受干扰、扩展维护困难等一系列问题[3,4]。

基于串行总线的多机通信系统,如CAN 总线的应用,系统整体性能相对于并行集中式有很大的提升,通信线路少、整机结构简约、扩展能力强。

然而,现行基于串行总线的多机同步通信、控制仍存在实时性、可靠性差等问题[5~7]。

系统整机通信机制所存在的缺陷,严重阻碍了多机控制系统的发展与应用。

针对上述多机通信技术层面与实际应用所存在的问题,本文给出了基于CAN 总线的多机轮询控制系统,系统采用CAN 总线实时通信算法,实现对多机运行的实时、同步控制。

第38卷第4期2019年12月计算技术与自动化Computing Technology and AutomationVol.38,No.4Dec.2019文章编号:1003—6199(2019)04—0075—06DOI :10.16339/ki.jsjsyzdh.201904015收稿日期:2018—09—22作者简介:王高高(1990—),男,安徽淮南人,硕士,助理工程师,研究方向:现场总线技术。

†通讯联系人,E-mail :quie123@基于CAN 总线的轮询通信系统设计王高高1†,王伟伟2(1.国网安徽省电力有限公司凤台县供电公司,安徽淮南232100;2.中建一局集团第一建筑有限公司,安徽合肥230031)摘要:针对传统CAN 总线通信系统基于仲裁发送机制所存在的通信通道易堵塞、实时性、可靠性差问题,设计了CAN 总线节点轮询通信系统。

系统CAN 总线通信机制为采用主从控制下的节点轮询方式。

CAN总线通信系统设计应用

CAN总线通信系统设计应用


C AN通 信概 述
过程 , 是人 与 系统 的桥梁 。
节点 A 节点 B
C A N是控 制 局域 网的简 称 , 是 总线 式通 讯 网络 的

种, 可 以支 持分 布 式 控 制 和 实 时 控 制 , 属 于 串行 通
信 的 一类 , 是 目前 主流 现 场 总线 之 一 。在 多线 路 网络 控制 系 统 中, C A N总线 占较 多部分 。 C A N 总 线 目前 在 汽 车 电子 领 域 应 用 较 为 广 泛 。 C A N总 线与 U A R T 、 4 8 5相 比 ,其 应 用 成本 比较 高 , 但 是 低 于 以太 网 的成 本 ;数据 的实 时性 上来 看 , C A N 总 线与 U A R T 、 R S 4 8 5和 以太 网几种 方 式 相 比 , 是 最 好 的
C A N总 线 的通信 电路设计 时 ,采 用 常 见的 MC P 2 5收 C A N总 线主 要 特 点包 括 : 1 、 支持多主总线, 即 是 发控 制 器 , MC P 2 5 1 5负责 实现 系统 的通 信 功 能,其 硬 每个 节 点 机都 可 以作 为通 信 系 统 的主 机 , 而 且 每 个节 件 电路 如 图 2 。 点机 之 问也可 以相互 通信 。2 、 支 持 多 介 质通 信 , 即双 绞 线 、 同轴 电缆 或 者 光纤 都 可 以实 现 C A N总线 的通 信; 3 、 C AN可 以根 据 网络 的 规模 ,设 定 与其 相 适合 的 通 信速 率 ; 4 、 C A N可 以实现 数据 的成帧 处 理 ,主 要包 括位 填 充 、 数据 块 编码 、 冗余 检 验及 优 先 级 判 别等 ; 5 、 通信 过 程 中 , C A N 总线还 具 备 了物 理层 和数 据 链 路层 比拟 的 。

基于STM32H7的FDCAN通信系统设计与实现

基于STM32H7的FDCAN通信系统设计与实现

∗收稿日期:2019年11月3日,修回日期:2019年12月15日作者简介:李超,男,硕士研究生,助理工程师,研究方向:嵌入式开发、水下武器试验等。

马雪,男,助理工程师,研究方向:嵌入式软硬件开发、水下武器试验等。

王文云,男,硕士研究生,工程师,研究方向:机械设计、水下武器试验等。

1引言在嵌入式开发应用中往往需要实现上位机与嵌入式设备间的实时信息交互。

STM32H7芯片是目前ST 公司推出的基于Cortex M7内核最新和最先进的芯片[1],该芯片具有运算速率高、功耗低及开发便捷等优点。

STM32H7开发板采用目前最新最先进的FDCAN 通信技术,FDCAN 通信速率是传统CAN 通信的五倍多,传输速率和实时响应性远超传统CAN 通信[2],STM32H7开发板400MHz 的超高主频及先进的FDCAN 技术相结合可以完美解决绝大部分工程实验中的CAN 通信需求[3]。

某工程项目需要实现上位机实时控制信号采集系统采集数据并将相关数据上传至上位机进行数据分析与处理的功能,基于此,本文设计实现了基于STM32H7开发板的FDCAN 通信系统。

基于STM32H7的FDCAN 通信系统设计与实现∗李超马雪王文云(昆明船舶设备试验中心昆明650051)摘要在嵌入式开发应用中,为了实时掌控嵌入式设备运行状况和分析相关数据,经常需要上位机与嵌入式设备进行实时信息交互,CAN 总线通信以其传输速率快、可靠性强、使用便捷及扩展性强等特点在工程实践中一直被用于实现设备间的信息交互。

为了完成某工程项目中嵌入式设备通过CAN 总线与上位机进行信息交互的任务,论文设计实现了一个基于STM32H7的FDCAN 通信系统。

介绍了基于STM32H7的FDCAN 通信、双口RAM 实现板间通信及TIM 定时器实现心跳帧功能的程序设计和工程实现。

工程实例显示该系统能够较好地实现上位机与信号采集系统间的数据实时可靠传输,具有传输速率快、实时响应性强、占用系统资源少和可靠性强等特点。

CAN总线的双机冗余系统设计

CAN总线的双机冗余系统设计

课程设计(论文)任务及评语院(系):电气工程学院 教研室:自动化 注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算学 号学生姓名 专业班级 课程设计(论文)题目CAN 总线的双机冗余系统设计 课程设计(论文)任务课题完成的功能、设计任务及要求、技术参数 实现功能CAN 总线的双机冗余系统设计,使在出现故障时能自动切换,保证系统安全、稳定运行。

设计硬件包括总线控制器、总线收发器及ATMEL 系列单片机及切换逻辑等。

软件采用汇编语言或C 语言,并调试与分析。

设计任务及要求1、确定设计方案,画出方案框图。

2、冗余系统硬件设计,包括元器件选择。

3、画出硬件原理图。

4、绘出程序流程图,并编写初始化、接收及发送程序。

5、要求认真独立完成所规定的全部内容;所设计的内容要求正确、合理。

6、按学校规定的格式,撰写、打印设计说明书一份;设计说明书应在4000字以上。

技术参数1、符合CAN2.0B 规范;2、40米内最高可达1Mbit/s ;(设计选定传输速率为125K bit/s )3、可扩充110个节点;进度计划1、布置任务,查阅资料,确定系统设计方案(2天)2、系统硬件设计及模块选择(3天)3、系统软件设计及编写功能程序及调试(3天)4、撰写、打印设计说明书(1天)5、验收及答辩。

(1天) 指导教师评语及成绩 平时: 论文质量: 答辩: 总成绩: 指导教师签字: 年 月 日摘要CAN总线的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。

现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。

它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

随着功能强大的单片机在控制领域应用的不断深入,容错控制系统也在不断地发展,在一些特定的场合下,如在航空航天、军事、铁路、石油、化工、电力等重要部门和在恶劣工作环境下工作的计算机控制系统,对系统安全性、可靠性、可用性的要求更高。

基于CAN通信的操纵信号通信控制器设计

基于CAN通信的操纵信号通信控制器设计

基于CAN通信的操纵信号通信控制器设计摘要:该文介绍了一种基于CAN通信的操纵信号通信控制器,由主控板和电源板实现。

主控板基于ETX模块,结合CAN总线模块、模拟量处理模块、离散量处理模块,实现了控制器的通信功能。

电源模块对机上输入电源进行处理后,为主控板提供电源。

此外设计及实施过程中考虑了电磁兼容性,完成了该通信控制器军用级产品化设计,保证了整个系统的高可靠性、高安全性及高环境适应性。

关键词:ETX模块CAN总线电磁兼容目前舰船的主要操纵控制信号包括离散量、模拟量及CAN总线信号,通信控制器需要实现将这些信号发送于显示器进行显示,同时转发给其他设备的功能。

已有的实验方案为信号转发及显示功能均由PC104实现,该方案缺点为舰船上电压不稳时,PC104断电,引起通信功能中断。

本设计由CPLD加ETX实现,电压不稳时,信号转发功能仍能由CPLD实现,同时ETX模块相比PC104,实现了核心功能,精简了多余功能,因此系统更为稳定。

1 系统总体设计通信控制器通过多种接口形式(CAN总线、模拟量、开关量)与相应交联设备通信,完成对船舶操纵系统的状态采集及操控功能,同时将相关状态信息通过触屏设备输出。

控制器内部由主控板和电源板组成,如图1。

主控板采用ETX模块作为核心处理单元。

整个硬件系统由标准接口和非标准扩展模块两大部分组成。

标准接口主要包括VGA、键盘、鼠标、USB及以太网等多种计算机标准接口。

非标准接口包括6个不同的子功能模块,分别是控制单元模块(CPLD)、离散量采集模块、离散量发生模块、模拟量采集模块、模拟量发生模块、CAN总线模块和外部同步时钟模块。

这两个部分接口通过ETX模块的ISA 信号组连接,从而构成一个完整系统。

1.1 ETX模块ETX模块处理来自功能板其他模块的数据信息,包括:对输入的模拟量作采样,对CAN模块输入的信息作解析,通过I/O口控制离散量数据,输出CAN数据及模拟量信息。

并提供标准接口主要包括CF卡、VGA、USB、串口1和串口2、鼠标、键盘等多种计算机标准接口。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目次1 绪论 (1)1.1 研究背景 (1)1.2 研究目的和意义 (1)1.3 国内外发展现状 (2)1.4 论文结构安排 (2)2 CAN总线协议分析 (3)2.1 CAN-bus 规范V2.0 版本 (3)2.2 CAN控制器SJA1000 (6)2.3 本章小结 (6)3 开发环境介绍 (6)3.1 开发环境 (6)3.2 CANUSB—Ⅰ/Ⅱ智能CAN接口卡 (7)3.3 本章小结 (8)4 CAN通信软件设计 (8)4.1 驱动程序安装 (8)4.2 CAN接口卡函数库说明 (8)4.3 界面设计 (11)4.4 软件功能实现 (16)4.5 本章小结 (22)5 测试及发布 (23)5.1 软件功能测试 (23)5.2 程序发布 (24)5.3 本章小结 (27)结论 (28)致谢 (29)参考文献 (30)1绪论现场总线,就是应用于工业现场,采用总线方式连接多个设备,用于传输工业现场各种数据的一类通信系统[1]。

CAN(Controller Area Network)总线是现场总线的一个分支,因其具有很高的可靠性和性能价格比,已经成为国际标准,在工业过程监控设备的互连方面得到广泛应用,受到工业界的广泛重视,并已被公认为几种最有前途的现场总线之一。

1.1 研究背景随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。

由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。

分散式工业控制系统就是为适应这种需要而发展起来的。

这类系统是以微型机为核心,将5C技术——Computer(计算机技术)、Control(自动控制技术)、Communication(通信技术)、CRT(显示技术)和Change(转换技术)紧密结合的产物。

它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。

典型的分散式控制系统有现场设备、接口与计算设备以及通信设备组成,现场总线(Field bus)就是在这种背景下产生的[2]。

1.2 研究目的和意义从19世纪发明汽车以来,人们就一直在乘坐的舒适性、安全性和操控性方面不停地对其进行改革和创新,车上的电子设备也越来越多。

这些电子设备大多是需要协同工作的,这就要求各部件之间能互相通信[1]。

为了解决汽车通信问题,CAN—bus应运而生,凭借可靠、实时、经济和灵活的特点,CAN总线很快在其他行业得到广泛应用,特别是在工业控制领域更是如鱼得水。

现在CAN—bus总线已经成为全球范围内最重要的现场总线之一,甚至引领着现场总线的发展。

工业控制系统涉及众多软、硬件模块,给程序的设计和调试带来一定难度。

尤其作为上、下位机间联系纽带的CAN总线通信部分,一旦在整个系统运行期间发生问题,若没有良好的人机界面和测试手段,将很难及时准确地找到并排除故障。

同样,在控制系统的研制过程中,为了尽可能地减少故障和缩小故障范围,也应设计相应的测试软件来具体负责CAN总线通信及接口部分的调试、运行任务。

故此,本课题就如何利用VC设计CAN总线测试软件进行介绍。

1.3 国内外发展现状自从Bosch与Intel公司于1986年正式发布CAN—bus通信方式,宝马(BMW)公司很快于1989年推出第一款使用CAN—bus通信的汽车,从此 CAN—bus开始了其辉煌的历程:(1)1990年,奔驰公司发布了第一辆使用CAN—bus的轿车,现在几乎每一辆新生产的汽车均装配有CAN—bus网络;(2)1993年,CAN—bus总线被制定成为国际标准ISO11898(高速应用)和ISO11519(低速应用);(3)1994年,欧洲成立了CiA厂商协会,美洲成立了ODVA厂商协会,专门支持CAN—bus总线的两大应用层协议——CANopen协议与DeviceNet协议[3]。

在CiA的努力推广下,CAN技术在汽车电子控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面均得到了广泛的应用。

现已有400多家公司加入了CiA,CiA已成为全球应用CAN技术的权威。

国内在CAN总线方面的研究和应用于国外相比还存在明显的差距,体现在两个方面:(1)国内在自主研究和开发汽车电子CAN网络方面尚处于试验和起步阶段,国内绝大部分的汽车还没有采用汽车总线设计;(2)国内汽车合资企业不少已采用CAN 总线技术,但核心技术掌握在外商手中。

为顺应世界汽车工业发展的趋势,我国也相应加强了对CAN总线的研究,并开发具有自主知识产权的CAN总线产品。

CAN技术已应用于家用电器和智能楼宇以及小区建设中。

随着无线技术的完善和将无线技术应用到CAN总线系统中研究的不断深入,可以乐观地预计,未来CAN总线技术的应用将无处不在,虚拟的CAN总线即将诞生[5]。

1.4 论文结构安排本文第一章介绍了CAN总线的研究背景和国内外发展现状,并介绍本课题研究的目的和意义。

第二章简单介绍了CAN总线通信规范和SJA1000控制器。

第三章简单介绍了开发环境和CAN接口卡。

第四章详细介绍了软件的设计过程,包括驱动安装、接口卡函数库说明、界面设计、功能分析与设计。

第五章介绍了软件的测试及程序的发布。

2CAN总线协议分析2.1 CAN-bus 规范V2.0 版本CAN 规范技术规范由两部分组成:• A 部分:CAN 的报文格式说明(按CAN1.2 规范定义)。

• B 部分:标准格式和扩展格式的说明。

2.1.1 CAN的分层结构在CAN V2.0A里,CAN被细分为三个层次:对象层、传输层、物理层。

而在PartB中,CAN被细分为两个层次:数据链路层(逻辑链路控制子层LLC、媒体访问控制子层MAC)、物理层。

2.1.2 报文传输(1)帧类型报文传输由5种类型的帧所表示和控制,它们分别是数据帧、远程帧、错误帧、过载帧和帧间隔,其用途如表2.1所列。

表2.1 帧的类型及用途1)数据帧数据帧由7 个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC 场、应答场、帧结尾。

数据帧各段的功能如表2.2所列。

表2.2 数据帧各段的功能2)远程帧远程帧由6 个不同的位场组成:帧起始、仲裁场、控制场、CRC 场、应答场、帧结尾。

3)错误帧错误帧由两个不同的场组成。

第一个场用作为不同站提供的错误标志的叠加。

第二个场是错误界定符。

错误标志有两种形式,主动错误标志和被动错误标志。

错误界定符包括8 个“隐性”的位。

4)过载帧过载帧包括两个位场:过载标志和过载界定符。

5)帧间空间数据帧(或远程帧)与其前面帧的隔离是通过帧间空间实现的,无论其前面的帧为何类型(数据帧、远程帧、错误帧、过载帧)。

所不同的是,过载帧与错误帧之前没有帧间空间,多个过载帧之间也不是由帧间空间隔离的。

(2)发送器/接收器的定义发送器:产生报文的单元被称之为报文的“发送器”。

此单元保持作为报文发送器直到总线出现空闲或此单元失去仲裁为止。

接收器:如果有一单元不作为报文的发送器并且总线也不空闲,则这一单元就被称之为报文的“接收器”。

2.1.3 报文检验校验报文是否有效的时间点,对于发送器与接收器是各不相同的。

对于发送器:如果直到帧的末尾位均没有错误,则此报文对于发送器有效。

如果报文破损,则报文会根据优先权自动重发。

为了能够和其他信息竞争总线,重新传输必须在总线空闲时启动。

对于接收器:如果直到一最后的位(除了帧末尾位)均没有错误,则报文对于接收器有效。

2.1.4 编码位流编码:帧的部分,诸如帧起始、仲裁场、控制场、数据场以及CRC序列,均通过位填充的方法编码。

数据帧或远程帧(CRC界定符、应答场和帧末尾)的剩余位场形式相同,不填充。

错误帧和过载帧的形式也相同,但并不通过位填充的方法进行编码。

报文里的位流采用不归零编码(NRZ),这就是说,在整个位时间里,位电平要么为“显性”,要么为“隐性”。

2.1.5 错误处理错误检测:有5种不同的错误类型(这5种错误不会相互排斥):位错误、填充错误、CRC错误、形式错误、应答错误错误标志:检测到错误条件的站通过发送错误标志指示错误。

2.1.6 故障界定至于故障界定,单元的状态可能为以下三种之一:错误主动:可以正常地参与总线通讯并在错误被检测到时发出主动错误标志。

错误被动:不允许发送主动错误标志。

总线关闭:不允许在总线上有任何的影响(比如,关闭输出驱动器)。

2.1.7 位定时要求标称位速率:标称位速率为一理想的发送器在没有重新同步的情况下每秒发送的位数量。

标称位时间:标称位时间=1/标称位速率可以把标称位时间划分成几个不重叠的时间片段,它们是:同步段、传播时间段、相位缓冲段1、相位缓冲段2。

2.1.8 报文滤波在CAN2.0B中,还增加了有关报文滤波的定义。

报文滤波取决于整个识别符。

允许在报文滤波中将任何的识别符位设置为“不考虑”的可选屏蔽寄存器,可以选择多组的识别符,使之被映射到隶属的接收缓冲器里。

如果使用屏蔽寄存器,它的每一个位必须是可编程的,即,他们能够被允许或禁止报文滤波。

屏蔽寄存器的长度可以包含整个识别符,也可以包含部分的识别符。

2.1.9 振荡器容差由于给定的最大的振荡器,其容差为1.58%,因此凭经验可将陶瓷谐振器使用在传输率高达125kbit/s的应用罩。

为了满足CAN协议的整个总线速度范围,需要使用晶振。

具有最高振荡准确度要求的芯片,决定了其他节点的振荡准确度。

2.2 CAN控制器SJA1000下位机的CAN总线网络接口使用Philips公司的SJA1000芯片,SJA1000是一个独立的CAN控制器,具有一系列先进的功能,适合于多种应用,特别在系统优化、诊断和维护方面非常重要。

SJA1000具有完成CAN总线通信协议所要求的全部特性,它与独立CAN总线控制的PCA82C200完全兼容,并有支持CAN2.0B协议、扩展接收缓冲器、增强错误处理能力和增强验收滤波功能等新增功能。

SJA1000可以直接进行CAN总线互联,而PC机作为上位机,是通过USB电缆连接到CAN接口卡上的,这里我们使用的是普创电子的CANUSB—Ⅱ工业级双路智能接口卡。

该接口卡中的CAN总线数据收发也是由SJA1000CAN控制器和82C250CAN收发器完成的,主机通过USB电缆来访问CAN控制器,从而实现数据通信。

2.3 本章小结本章主要介绍了CAN总线通信系统上位机通信软件的设计所涉及的基本知识,包括CAN—bus规范和CAN控制器SJA1000,有了这些知识,才能保证软件设计得以顺利开展。

3开发环境介绍3.1 开发环境CAN总线通信系统上位机通信软件的设计应具有直观的窗口外观,丰富、人性化的友好界面,便于操作和维护。

相关文档
最新文档