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、鼠标、键盘等多种计算机标准接口。

基于51单片机的CAN总线系统设计

基于51单片机的CAN总线系统设计

基于51单片机的CAN总线系统设计0 引言随着20世纪80年代初期德国Bosch公司提出CAN(Controller Area Network)总线,即控制器局域网方案以解决汽车控制装置问的通信问题。

经过20多年的发展,CAN总线现在广泛的应用在汽车领域,在汽车控制系统中应用CAN总线可以使硬件方案的软件化实现,大大地简化了设计,减小了硬件成本和设计生产成本,数据共享减少了数据的重复处理,节省了成本,可以将信号线减到最少,减少布线,使成本进一步降低等优点。

由于CAN总线通信的高性能、高可靠性、及独特的设计和适宜的价格可以广泛应用于工业现场控制、智能楼宇、医疗器械、交通工具以及传感器等领域,所以被公认为是几种最有前途的现场总线之一。

1 系统总体设计CAN总线系统总体结构如图1所示,主要包括上位机控制软件、USB-CAN转换模块、CAN节点、CAN总线介质(本处采用双绞线)组成。

其中一个CAN节点通过USB接口与PC 机相连,上位机控制软件能实时显示各CAN节点的数据且能通过上位机软件向各个CAN 节点发送数据以控制各节点的8个发光二极管的亮或灭。

2 系统硬件电路本系统由单片机外围电路、CAN总线硬件电路和USB-CAN转换电路组成。

单片机外围电路包括电源电路模块、复位电路模块、串口通信模块。

CAN总线硬件电路包括电气隔离模块、光耦隔离模块、CAN驱动器电路。

USB-CAN转换电路包括CH375与单片机接口电路模块和USB接口电路模块。

C8051F040单片机内部的控制器局域网(CAN)控制器是一个协议控制器,不提供物理层驱动器(即收发器),需要外部重新接入物理层驱动器。

本处采用TJ1050,TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口,是一种标准的高速CAN收发器。

TJA1050可以为总线提供差动发送性能,为CAN控制器提供差动接收性能。

TJA1050是PCA82C250和PCA82C251高速CAN收发器的后继产品。

基于LabVIEW的CAN总线通信系统的设计与实现

基于LabVIEW的CAN总线通信系统的设计与实现

预定 的程序进行处理 ; A ②c N控制器 主要 负责将数据 以 C N报 A 文 的形式传递 , 并进行系统 的诊 断 、 试 以及处理 C N总线上 测 A
的错误等 ; C N收发器 是 C N控制 器和 C N总线之 间的接 ③ A A A
口, 成物理电平的转换。 完
1 2 总体 方 案 .
线 系统 的通 信 。 关 键 词 C N总线 A 通信系统 L b I W a VE
DES GN I AND M P I LEM ENT ATI oN F LABVI O EW - BAS ED CAN BUS
CoM M UNI CATI oN SYSTEM
Wa gJ j n HogTa se g n i i na n inhn
王锦坚 洪添胜
( 华南农业 大学工程学 院 广东 广州 5 04 ) 16 2
摘 要 介 绍一种基于 C N 总线 的通信 系统。采用 两个 C N节 点进 行相 互通信 , 两个 节 点分 别为 自主研发 的基于 A 8 C 2 A A 这 T 9 5 单片机 的 C N节点和瑞典 K ae 公 司的 C N总线分析 仪 , A vsr A 并使用 N 公 司的 L b IW 软件设计上位机程序 , I aV E 成功地 实现 了C N总 A
( colfEnier g,o t C iaA r utrlU i rt, u nzo 16 2 G ag og,hn ) Sh o o gnei Suh hn gi l a nv sy G aghu5 0 4 , u nd n C i n c u ei a
Ab t a t sr c T e p p ri t d c sa C h a e r u e AN u — a e o n o b sb s d c mmu i ain s s m. h y tm s s t o C nc t y t o e T es se u e w AN o e o n d st c mmu i ae e c t e , n o nc t a h oh r o e

基于STM32的CAN总线上下位机通信实验设计

基于STM32的CAN总线上下位机通信实验设计

基于STM32的CAN总线上下位机通信实验设计作者:刘泰廷李新建来源:《电脑知识与技术》2017年第05期摘要:随着技术的成熟和设备的完善,CAN总线在数据的实时传输和自动控制中展现出良好的灵活性与可靠性。

笔者以STM32为主控芯片搭建硬件电路,利用软件对其进行初始化设置,上位机与电路的连接使用USB—CAN转换器,并采用Visual C++的MFC编写的CAN 调试界面实现数据的实时收发,使上下位机完成通信。

本实验对于CAN总线的使用有一定的指导作用。

关键词:STM32;CAN总线;MFC;通信中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)05-0199-02CAN简称为控制器局域网络(Controller Area Network),它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,是国际上应用最广泛的现场总线之一,并最终成为国际标准(ISO11519)。

近年来,由于它的高可靠性和良好的错误检测能力受到人们的关注,CAN 总线协议逐渐成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,被广泛应用于汽车控制系统和环境温度恶劣、电磁辐射强的工业环境。

1 实验系统结构组成利用CAN总线可以将传统分布式控制系统的功能分散到不同的现场节点中,本实验只选用一个节点作为下位机的收发模块。

实验的系统框图如图1所示,系统主要分为三个部分:上位机(PC机)、CAN转换器、下位机(CAN收发模块电路)。

一般调试员的PC机(多为笔记本电脑)接入CAN总线往往没有串行接口,为此我们采用USB—CAN协议的转换器接入CAN总线,实现数据之间的转发。

下位机是以STM32F103RCT6单片机作为主控芯片的CAN 收发电路,主要完成数据采集和处理的任务,并实现与CAN总线的数据互传。

上位机利用MFC编写的控制界面,对CAN总线上收到的数据进行显示,同时也可以完成向CAN总线发送数据的指令。

基于DSP的CAN总线通信的设计与实现

基于DSP的CAN总线通信的设计与实现

IRl E =M NT ;/ 能 C U 中 断 I 9/ 使 P ENT / 全 局 中断 I ; / 开
均采 用 P lp公司的 P A8 C 5 作为 C N收发器 。 hi i C 2 20 A 其 能提供 C N 总线 的差 动发送 能力及对 C N 控制 A A
器 的 差 动 接 收 能力 , 号 使 用 差 分 电压 传 送 ; 两 条 信 信 号 线 被 称 为 C N 总 线 ( A 和 C N L ,将 收 A C NH A )
E T R M; / / 开实时 中断
fr; { 0 (; } )
) 该 程 序 中  ̄i yC d 为 系 统 初 始化 程 序 , 同 时 nt s t0 S 设 置 系 统 时 钟 ,本 程 序 选 用 系 统 时 钟 为 10 z 2 MH ,
发器 的 R 端接地 以实现高速传输 ,在 C N 和 S A H
C NL 之间接 A 1O 电 阻 为 终 端 匹 配 电 阻 。 2Q T S 2F 82的 C N X M 302 1 A T D和 C N XD输 出 的高 电平 A R 信 号是 3 V的 ,而 P A8C 5 需要 5 供 电 ,因此 在 . 3 C 2 20 V
C N 的时 钟 与系 统 时钟 相等 。Ii cn) 初始 化 A nt a(为 E C N寄存器 的子程序。fr ) A o(为循环等待 C N 的接收 ; A 中断,~旦 T 3 0 2 1 MS 2 F 82接 收成功 T 30 F 4 7 MS 2 L 20
Ii C n / 始 化 C N 寄 存 器 nt a0; 初 E / A
/使能 PE中断 I /
图 2 CA 节 点 硬 件 结 构 图 N
Pi Ct1 EI e r. PI ER9 b tI . i.NTx5= 1 ;

基于CAN总线的机车LCU通信系统设计

基于CAN总线的机车LCU通信系统设计

维普资讯
第 4期
温阳东 , : 等 基于 C N总线的机车 L U通信系统设计 A C
图 4 发送接收中断流程 图
3 结

C N总线 在 电力机 车 L U的通信上 的应用 , A C 充分 发挥 了 C N总线 的抗干扰能力强 、 应于环 境 A 适 条件恶劣 的场所等优 势 , 大大提高 了 L U的运 行 可靠 性 , 化 了控制单 元之 间 的连接 , C 简 降低 了成本 , 有着 良好 的发 展前景 。
维普资讯
安徽大学学报( 自然科学版)
第2 9卷
了两片光电耦合器件 6 17 N3。
2 2 C N 接 口软 件设计 . A
C N节点采 用 Pl a A eCn模式 , i 由于此方式支持 2 9位标 识符 的报 文 , 有可 读 的错 误计 数 器 , 这些都
制命 令 、 工作状态 、 测量数 据 的一般 要求 。 同时采 用短 帧 结构 , 传输 时 问短 , 而保 证 了通 讯 的实 时 从 性 。C N协议 采用 C C校验并 提供 相应 的检错 措 施 , 证 了通讯 的可 靠性 。C N总 线 的这 些 极高 A R 保 A 的可靠性和独 特 的设计 , 别适 合 工 业过 程 监控 设 备 的 互联 , 特 因此 ,A 总线 在 工业 界 的应 用越 来 CN
E ND
图 3 初 始 化流 程 图
222 C N发送程序 .. A
采用多 主机 的对 等 网 络 , 也就 是 在总 线空 闲时 , 每个 C N控制 器都 可 以开 A
始传送报文 , 具有较高优先权的报文的单元可以获得总线的访问权 。为了避免优先级低的单元得不
到 总线 的访 问权 , 系统 利用 8C 1 9 5 的定 时器 2 进行 定时发送 , 使得在 一定时 问内 , 个 C N控制器 只 每 A 能 发送 报文一 次 , 这样 就不会 出现优 先级高 的单 元一 直 占用总线 。 数据从 C N控 制器发送 到 C N总线 由 C N控制器 自动完成 。系统 采用 中断方式 发送 , A A A 发送 程 序 只有把被发 送 的数据 帧送 到 C N的发送 缓 冲区 , A 当数 据写 入后 ,A C N控制 器 产生 中断 , 这样 数据

基于CAN总线的PLC与上位机监控系统的通信设计

基于CAN总线的PLC与上位机监控系统的通信设计
给用户 一个 友好 的交 互界 面 , 因此妨 碍 了对 现场 工业流程及控等功 能 。
现今的工控计算机可配备多种高级语言 , 提 1 L .P C结构的基本组成 1 供优 良的软件平台 , 开发各种应用系统 , 特别是
但 是 在 该 系统 中 , 键 问题 就 是 通 信 , 也 成 为 成如 图 1 示 : 关 这 所
用户一直非 常关心 的实 际问题 。
4 4
C U是 P C的核心部分 , P L 是系统的运算 、
《 云南煤 炭} 00年第 3期 21
图 i P C的结构 组 成 L 控 制 中心 。一 般 由控 制 电路 、 算 器 、 运 寄存 器 组 功能选用满足要求的组件, 并将所有组件组装在一
接口 模块接收所需被控设备 的各种信息 , 又将处 及对用户程序做编译处理等。系统程序体现 P C L 理结果输送给外部被控设备 , 驱动各种执行机构 的设计思想 , 直接关系到 P C的功能 , L 一般都 由 实现对被控设备的控制 ; 电源部件将交流电源转 厂家在出厂前将其 固化在系统存储器中。可编程 换成供 P C的中央处理器 、 L 存储器等电子电路工 序控制器的系统程序采用 了模块化 结构设计 , 将 作所需要 的直流电源 , P C能正常工作。 使 L 可编程序控 制器的系统功 能划 分为许多独立 的
利 用 O C技 术 完 成组 态软 件 与 P C运行 系统的 储器 , P L 用于其 内部存储程序 , 执行逻辑运算 , 顺序 通信 。 实现 了 P C与上位机 实时通信 的通信过程 。 控制 , L 定时 , 计数与算术操作等面向用户的指令 ,
关键词 :L 组 态软件 C N总线 O C PC A P
可 编程 序 控 制 器 的 软 件 由系 统 程 序 和 用 户

基于C8051F单片机的CAN总线硬件系统设计_曹少华

基于C8051F单片机的CAN总线硬件系统设计_曹少华

收稿日期:2006-12-13作者简介:曹少华(1982 ),男,安徽人,在读硕士研究生,主要研究方向为嵌入式系统与控制网络;张培仁(1944 ),男,教授,博士生导师,长期从事嵌入式系统、CAN /485等控制网络研究。

基于C8051F 单片机的CAN 总线硬件系统设计曹少华,张培仁,王津津,李 勇,胡晓柘(中国科学技术大学自动化系,安徽合肥 230027)摘要:从分析C AN 总线控制系统的设计思路入手,着重讨论设计中的主要问题,采用RS -485/422辅助CAN 总线的混合总线结构,选用C8051F 系列单片机和U SB 转UART 桥接器CP2102作为控制核心,设计了一种多主、多功能的混合式总线监控系统。

试验表明:该系统成功解决了数据传输瓶颈、数据冲突、同步等一系列问题,具有良好的实时性和稳定性,广泛适用于各类远程大型实时监控网络。

关键词:CAN;C8051F;U SB 接口;远程监控系统中图分类号:TP336 文献标识码:A 文章编号:1000-8829(2007)11-0038-04D esign of CAN H ardware system Based on C 8051F M CUCAO Shao -hua ,Z HAGNG Pe-i ren ,WANG Jin -ji n ,L I Y ong ,HU X iao -zhe(D epart m en t of Auto m ation ,Un i versity of Science and Technology of Ch i na ,H efei230027,C h i na)Abstrac t :A ki nd o fm ult-i m aster and m ult-i functiona l surveillance syste m based on CAN i s desi gned .Fo llow i ng the discussion abou tthe m a i n issues of CAN syste m des i gn ,a m i xed bus a rchitecture ,CAN associated w it h RS -485/422,is i ntroduced .T he core desi gn i s C8051F SOC M CU s and CP2102,a new U SB to UART br i dg e .The result o f i m p l em entation shows tha t th i s syste m successf u lly so l ves the m a i n i ssues ,for exa m ple ,the bo ttleneck i n data trans m ission ,data co lli sion and synchroniza tion .The h i gh rea -l ti m e ab ility and stability m ake th i s desi gn su itab le for var i ous l ong -d istance rea -l ti m e surveillance ne t w orks .K ey word s :C AN;C8051F;U SB i nte rface ;re m ote s u rve ill ance syste m 控制器局域网(CAN,contro ll e r area ne t w ork)是Bosch 公司提出的一种串行数据通信协议,它的模型结构包括物理层、数据链路层和应用层,信号传输介质是双绞线,通信速率最高1M b /s(40m ),直接传输距离最远10k m (5kb /s),每条总线可挂接设备多达110个,特别适用于实时性要求很高的网络。

基于MCP2515的CAN总线通信单元设计

基于MCP2515的CAN总线通信单元设计

基于MCP2515的CAN总线通信单元设计丁雪静;许永辉【摘要】CAN总线接口芯片MCP2515采用SPI接口,具有体积小、低功耗、功能完善、使用方便等特点.为了实现基于该接口芯片的CAN总线通信单元设计,采用DSP+FPGA架构,在FPGA内部实现SPI接口逻辑和MCP2515指令转换逻辑,以完成不同的SPI指令,在DSP中接收上位机指令和完成对MCP2515的控制.实际测试结果表明,该通信单元设计合理,运行稳定,满足了实际需求.%The CAN bus interface chip MCP2515 with SPI interface has the characteristics of small volume,low power con-sumption,perfect function and convenient use. To realize the design of CAN bus communication unit based on this interface chip,the DSP + FPGA framework is adopted in this design. The SPI interface logic and MCP2515 instruction transformation logic are achieved in FPGA to accomplish the different SPI commands. The upper computer instructions are received and the control to MCP2515 is finished in DSP. The practical test results show that the communication unit has reasonable design and stable opera-tion,which meets the actual needs.【期刊名称】《现代电子技术》【年(卷),期】2015(038)021【总页数】4页(P60-63)【关键词】CAN总线;MCP2515;SPI;DSP【作者】丁雪静;许永辉【作者单位】哈尔滨工业大学自动化测试与控制系,黑龙江哈尔滨 150001;哈尔滨工业大学自动化测试与控制系,黑龙江哈尔滨 150001【正文语种】中文【中图分类】TN915-34CAN作为一种性能可靠的串行通信协议,主要应用于工业自动化、医疗设备和工业设备等方面领域。

CAN总线下的数据通信系统

CAN总线下的数据通信系统

至处理模块进行处理,然后通过与上位机连接完成数据的实 时显示,进而完后数据采集与通信过程的模拟。 2.1.1 数据采集模块
在设计数据采集模块时,还要构建多个采集通道,以便 完成多种数据的采集。利用 CAN 总线,则能将采集得到的 数据上传至上位机。在实际设计时,TMS320F2812 拥有 12 位分辨率的数模转换器,该器件拥有流水线结构。而模块本 身拥有 16 个采样通道,可以同时完成 16 路模拟信号的采集。 模块时钟频率可达 25MHz,采用频率能达到 12.5MHz,采样 速率可达 1 250 万 /s。在数据采集时,还要完成序列发生器 工作模式、采样窗口、采样通道数、采样方式和时钟分频等 参数的设置,从而完成各个模拟数值的采集。经过模数转换, 则能得到相应数字量,然后将其存储在寄存器中。 2.1.2 数据通信模块
2 CAN 总线下的数据通信系统
2.1 系统硬件设计 在实际进行数据通信系统设计时,还要完成数模转换模 块和数据通信模块的设计。其中,数据通信模块应由增强型 局域网控制器和串行通信接口过程,将采集得到的数据发送
作者简介:成思豪(1985-),男,甘肃天水人,本科,助理讲师。研究方向:计算机科学与技术。
在工业控制和规模化生产中,CAN 总线技术在现场设备 通信中得到了较好的应用。作为具有实时控制和分布式控制 功能的串行通信网络,CAN 能够降低数据通信的错误率,并 为数据自动采集提供方法,所以能够使数据通信系统的设计、 调试和运行维护变得更加便利,从而使数据通信水平得到提 高。因此பைடு நூலகம்相关人员还应加强对 CAN 总线下数据通信系统 的研究,以便更好进行系统设计和应用。
— 115 —
软件开发与应用
信息与电脑 China Computer&Communication

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

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

目次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(转换技术)紧密结合的产物。

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

基于CAN总线的变频器通讯控制卡软件设计

基于CAN总线的变频器通讯控制卡软件设计

基于CAN总线的变频器通讯控制卡软件设计邓伟【摘要】According to the application of the frequency converter in CAN bus network, the converter communication control card and its controlling software were designed. With them, the inverter communication based on CAN bus control has been realized.%针对变频器在CAN总线网络的应用,设计变频器通讯控制卡,完成其软件设计,实现变频器基于CAN总线的通讯控制.【期刊名称】《宁德师范学院学报(自然科学版)》【年(卷),期】2012(024)004【总页数】5页(P397-401)【关键词】变频器;通讯控制;设计【作者】邓伟【作者单位】宁德师范学院旅游系,福建宁德352100【正文语种】中文【中图分类】TP273随着变频调速技术的发展,变频器以其调速精度高、响应速度快、保护功能完善、过载能力强、节能显著、使用和维护方便等优点已广泛应用于工业控制领域.由于变频器通常采用485通信接口,无法直接应用于CAN现场总线网络.本文设计一种基于CAN总线的变频器通讯控制卡,并详细介绍其软件设计,具有一定应用价值.通讯控制卡处理器采用AT89C51,采用CAN总线协议的通信方式接收上位机控制信号,板卡采用通讯控制模式时,按Modbus协议实现与变频器的RS485总线通信,检测变频器运行状态,并驱动变频器动作;也可通过D/A转换、端子控制和检测、模拟电流输出等模块,实现基于通讯端子控制的变频器多功能指令输入、多功能指示输出、模拟电流和电压频率指令输入等功能.根据设计要求和系统硬件电路的设置,系统软件的设计按照结构化的程序设计方法完成,将整个程序细分为若干个子程序模块,方便调试与检查.控制卡的软件系统设计主要是利用51单片机C语言.其开发环境为WAVEE2000/S型仿真器及其仿真调试软件WAVE6000.通讯控制卡中的程序包括三个部分:初始化子程序initial(主要是对CAN控制器SJA1000的初始化和8255、串口的初始化)、数据接收子程序、数据处理子程序.其中数据处理子程序又包括MODBUS通讯模块、模拟频率信号输出模块、开关量控制和采集模块,统一采用C51编写,有较强的可读性.PC机通过一块PCI插槽的CAN通讯卡与模拟量输出卡进行通讯,程序中将调用一个dll库文件实现对CAN通讯卡的操作.PC机软件采用BorlandC++Builder6.0进行编写调试.2.1 通讯控制卡主程序通讯控制卡主程序主要是对各个可编程芯片的初始化以及对单片机自身的初始化子程序、接收子程序、发送子程序、错误处理子程序等等.2.2 初始化模块的软件设计与实现(1)系统初始化.CPU的初始化主要是指端口和内部寄存器配置,包括读入拨码开关的设定值,据此来完成对SJA1000的初始化工作.同时由于单片机对CAN总线数据的接收采用查询方式,将单片机的EA设置位0,禁止所有中断.SJA1000的初始化,主要是对SJA1000的寄存器进行操作.对SJA1000初始化,首先把SJA1000的复位模式位置设置为1(方式寄存器的0位).其他需要设置的寄存器有:时钟分频寄存器、中断允许寄存器、接收屏蔽寄存器、接收代码寄存器、总线定时寄存器0、总线定时寄存器1、输出控制寄存器、接收缓冲区起始地址寄存器、发送错误计数器、错误代码捕捉寄存器等.正确设置好这些寄存器后,硬件初始化任务基本完成.(2)SJA1000的操作模式.BasicCAN(默认)和PeliCAN模式,PeliCAN具有较强扩展功能,设计采用的是PeliCAN模式.其中工作模式是在SJA1000的时钟分频寄存器(CAN地址为31)中设置.以下为PeliCAN模式的寄存器.2.3 CAN通讯通讯控制卡的基本工作流程是通过总线接收来自上位机(PC机)的数据,并对所得的数字量进行处理,按照相应的控制模式与变频器通讯,产生相应的控制.CAN通讯模块包括三个部分:数据帧采集、数据帧处理和数据帧发送.由于CAN总线协议只定义OSI参考模型的数据链路层和物理层,没有定义应用层协议,即未定义数据帧中数据的应用功能.而变频器支持的Modbus协议完成了应用层的定义.因此,控制卡要按Modbus协议的报文数据的含义对CAN总线报文中的各数据定义,添加数据区的定义.(1)CAN总线报文协议.① 采用标准帧格式;② 用数据帧传输报文,远程帧暂且不用;③ 11位ID标识码的定义可参照DEVICENET协议中的定义;④ 数据字节1表示变频器通讯地址(为0时表示端子控制);⑤ 数据字节2表示变频器要执行的功能代码;⑥ 数据字节3、4表示变频器参数地址;⑦ 数据字节5、6、7、8表示数据内容.(2)数据接收缓冲区的数据结构(标准帧).CAN标准帧帧信息是11个字节,包括帧信息和帧数据两部分,前3字节是帧信息部分,格式如表1.字节1为帧信息,第7位(FF)表示帧格式,在标准帧中FF=0;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧.DLC表示在数据帧时实际的数据长度.字节2~3为报文识别码,其低11位有效,高5位无效.字节4~11为数据帧的实际数据,远程帧时无效.(3)数据帧的获取.通讯控制卡采用查询方式接收数据,通过读取SJA1000的状态寄存器判断是否存在有效数据于SJA1000的接收缓冲区FIFO中.接收缓冲器状态标识为“空”,表示没有接收到报文,控制卡进入简单的循环等待接受状态;若状态标识为“满”,即说明收到一个或多个报文,控制器读取SJA1000,然后置位命令寄存器的相应位,发送释放接收缓冲器命令.如果有正确的数据,将数据从接收缓冲区FIFO中完整地读入单片机内,进而针对此数据作进一步的处理.如果检测到SJA1000的总线状态、出错状态、数据溢出状态则转到相应的程序处理. (4)数据帧的处理.CAN总线接收到数据报文以后,即可对报文内容,包括帧信息、帧标识符ID的数据长度码、数据字节进行取出处理.把这8个字节的数据从数据帧中分离出来并存入数组Rec_can[]中.根据SJA1000的数据帧格式,很容易把这8个数据分离出来.控制卡根据数据字节1判断控制模式,若为00H,则转为端子控制模式,若为某一变频器地址,则启动与该变频器的串口通讯.(5)数据帧的应答.如果要向PC机或者其他CAN节点发送应答,首先根据SJA1000的数据帧格式把要发送的数据组织起来,并写入SJA1000的发送缓冲寄存器中.如果确定要发送数据,只需把SJA1000的命令寄存器最低位置设置为1,SJA1000即把发送缓冲寄存器中的数据发送出去.由于CAN总线传输的数据长度最大是8个字节,当Modbus协议需要传输的数据长度大于8个字节,CAN总线采用分次传输的办法,在CAN总线报文数据区的第一个字节定义一个索引字节,标记该报文是第几次报文,“0”代表Modbus 协议命令字节一次传输完毕.“1”代表需要两次传输完毕.2.4 MODBUS通讯模块的软件设计与实现控制卡与变频器按照主从查询响应的方式来设计控制器的通讯模块.控制卡作为主机,变频器作为从机进行通讯,数据传输模式选择ASCII模式.下面介绍主从机的通讯实现.2.4.1 变频器参数设置台达VFD-M自带RS485接口,具有数据通讯功能,完全支持Modbus的RTU和ASCII两种模式,通讯口(RJ11)位于控制回路端子,完成Modbus协议通讯不需编程,只要将参数设定为指定值即可,具体数值如表2.2.4.2 数据发送和接收控制器实现Modbus通讯主要分为两个部分.首先组织一个Modbus消息帧并发送给变频器;其次接收并处理变频器的应答帧中的信息.2.4.2.1 Modbus消息帧由于Modbus消息帧采用的是ASCII模式,协议规定ASCII帧起始标志为3AH,结束标志为0DH和0AH.所以,操作者只要在消息帧数组Modbus[send_num]中将30H,0DH和0AH分别赋值给Modbus[0],Modbus [send_num-2],Modbus[send_num-1]即可.变频器通信地址设置范围在0~254之间,0为广播地址,表示对所有变频器进行广播,且变频器不回应任何信息给控制器.通讯地址如01H,转换成ASCII码后作为2个ASCII字符"30H"和"31H"分别存放于Modbus[1]和Modbus[2].功能码03H和06H可方便实现变频器内部设定参数和变频器的运行命令读写以及监视变频器的运行状态,功能码和地址码一样须转换成2个ASCII字符存放于Modbus[3]和Modbus[4].Modbus[5]至Modbus[send_num-5]用于存放最多50个ASCII字符的数据内容,主要为读取或写入的命令及参数内容.Modbus[send_num-4]和Modbus[send_num-3]为LRC校验结果转换成ASCII码后的存放位置,注意LRC校验范围是Modbus[1]至Modbus[send_num-5].以控制器发送启动运行命令为例,变频器通讯地址01H,参数地址2000H,写入0012H,发送数据数组Send_1[7]={0x01,0x06,0x20,0x00,0x00,0x12,0xc7},则发送的消息帧为Modbus[17]={0x3A,0x30,0x31,0x30,0x36,0x32,0x30,0x30,0x30,0x30,0x30,0x31,0x32,0x43,0x37,0x0D,0x0A}.控制器从02号变频器启始地址2102H连续读取2个字,则发送数据数组Send_2[7]={0x02,0x03,0x21,0x02,0x00,0x02,0x0F},发送的消息帧为:Modbus[17]={0x3A,0x30,0x32,0x30,0x33,0x32,0x31,0x30,0x32,0x30,0x30,0x30,0x32,0x30,0x46,0x0D,0x0A}变频器反转启动、停车、复位、正转点动、反转点动及上传输出频率、当前转速、电机状态参数等命令均可按上述格式构造消息帧实现通信.2.4.2.2 Modbus应答帧的处理(1)应答帧的获取.控制器执行读写命令后,调用命令处理程序,形成Modbus消息帧,正确设置串口工作方式、定时器、波特率等参数并备份后即可将数据从串口发送出去.数据发送后,控制器即开始等待变频器返回回应消息.若当主机在规定的时间内没有收到从机的响应消息,则重发查询或跳过这个设备.若收到回应,先根据ASCII模式的起始字符标志和结束字符标志将接收到的完整应答帧存放于数组Modbus_1 [rec_num],接收的消息字节数存于变量rec_num中.(2)应答帧的处理.收到一个完整的Modbus消息帧后就可对这个消息进行处理了.应答帧分为读应答和写应答两种.变频器读应答时返回以byte计算的数据数和数据内容,对于写命令,变频器返回完全相同的消息帧作为应答.按照Modbus协议知道数组Modbus_4[]的结构如下:应答帧的处理实际上是对收到的数组Modbus_1[]各个元素进行判断并做相应跳转的过程.处理按以下几个步骤进行:①LRC校验,消息处理前先禁止中断,用LRC算法计算出Modbus_1[1]~Modbus_1[rec_num-5] 的LRC码并与Modbus_1[rec_num-4]和Modbus_1[rec_num-3]比较,相同则说明LRC校验正确,进行下一步操作,否则得到错误代码80H,并重发命令;②地址判断,即判断Modbus_1[1]~ Modbus_1[2]与消息帧中地址码是否一致,是则进行下一步操作.否则返回继续等待串口中断;③功能码校验,控制卡规定了自身可以识别的功能码为03H和06H,这个环节中,程序判断Modbus_1[4]:当Modbus_1[4]=36H时调用ReadFunc子程序,并将成功标志数据和回答报文中数据域内容存入CAN数据区,并生成Modbus_2[]用于备份.当Modbus_1 [4]=33H时,调用WriteFunc子程序,校验获得数据值与发送值是否一致,若一致则将成功标志数据写入CAN数据区,生成Modbus_2[].否则得到错误代码81,重发写命令.当Modbus_1[4]为其它值时调用FuncErr子程序,得到错误代码82H,生成Modbus_2[]并返回.控制器识别不同的错误代码并做出相应的处理.子程序流程如图1所示.2.5 模拟频率信号输出模拟频率信号输出模块的主要功能是在端子控制模式下,把通讯控制卡接收到的上位机控制数据输出给TLV5617A,让TLV5617A作相应的数模转换,实现控制数据到实际控制变频器运行的模拟电压或电流的转换.TLV5617AD/A转换程序比较简单,先设定时钟信号SCK和片选CS的初时逻辑状态,置低片选信号CS,送16位转换数据到串行数据输入DI进行D/A转换,置高CS,即完成一次D/A转换.16位转化数据包含4位转换设置位和10位需要转换为模拟量的数据位,在本控制卡中两路的D/A输出均采用快速输出转换设置方式,且两路D/A输出相互独立.输出的模拟电压或电流值送到变频器就可以输出对应的频率来控制运转.计算机通过一块PCI插槽的CAN通讯卡实现对模拟量输出卡的通讯(CAN通讯卡需要安装驱动程序).该CAN通讯卡提供了一个dll库文件,用C++Builder编写的PC机程序通过调用这个dll库文件,对CAN通讯卡进行操作.本文针对变频器控制需要,研制变频器通讯控制卡,应用C51和汇编语言,编写了变频器通讯控制卡的整个系统程序,实现了变频器与控制器及变频器与CAN总线站点之间的通信,并完成系统整体的测试.通过对板卡系统的测试结果分析,表明该通讯控制卡功耗低、可靠性高、系统维护方便,具有较高的应用价值.【相关文献】[1]邬宽明.CAN总线原理和应用系统设计 [M].北京:北京航空航天大学出版社,1996.[2]汪献忠.基于MODBUS协议的工业智能通讯模块的设计[J].仪表技术与传感器,2006(6):47-49.[3]朱成云.智能仪表控制变频器系统的设计 [J].自动化技术与应用,2010,(29):103-106.[4]刘元刚.台达变频器与C51单片机之间的通讯应用[J].测试测量技术,2008,(5):45-49.。

  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总线通信系统上位机通信软件的设计应具有直观的窗口外观,丰富、人性化的友好界面,便于操作和维护。

相关文档
最新文档