浅谈Small RTOS51 下CAN总线数据收发实现

发布者:hxcp18最新更新时间:2011-09-03 关键字:RTOS51  CAN总线  数据收发 手机看文章 扫描二维码
随时随地手机看文章
1 CAN总线简介

  现场总线(Fieldbus)是近年来迅速发展起来的一种工业数据总线,它主要解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信以及这些现场控制设备和高级控制系统之间的信息传递问题。由于现场总线简单、可靠、经济实用等一系列突出的优点,因而受到了许多标准团体和计算机厂商的高度重视。现场总线(Fieldbus)是20世纪80年代末、90年代初国际上发展形成的,用于  现场总线技术

  过程自动化、制造自动化、楼宇自动化等领域的现场智能设备互连通讯网络。它作为工厂数字通信网络的基础,沟通了生产过程现场及控制设备之间及其与更高控制管理层次之间的联系。它不仅是一个基层网络,而且还是一种开放式、新型全分布控制系统。这项以智能传感、控制、计算机、数字通讯等技术为主要内容的综合技术,已经受到世界范围的关注,成为自动化技术发展的热点,并将导致自动化系统结构与设备的深刻变革。国际上许多实力、有影响的公司都先后在不同程度上进行了现场总线技术与产品的开发。德国Bosch公司的CAN(1Mbit/s)是国际标准之一,也是Controller Area Network 的应用标准。它属于现场总线范畴,是一种有效支持分布式控制或实时控制的串行通信网络。由于其高性能、高可靠性、及独特设计,CAN总线已成为目前国外最普及和实时性最高的现场总线。CAN总线在可靠性和实时性方面远远优于RS-485等工业现线CAN总线主要有下列特征:

  1. 数据信号采用差分电压传输,两条信号线"CAN_H"和" CAN_L".

  2. 传输介质可用双绞线、同轴电缆或光纤,具有较强的抗干扰能力。直接通信距离最大可达10km(速率小于5kbit/s),最高通信速率可达1Mbit/s(此时距离最长为40m)。

  3. 节点不分主从,节点任意时刻可向其他节点发送信息,依据优先权进行总线访问,满足不同的实时要求。

  4. 采用非破坏性基于优先权总线仲裁技术。

  5. 采用短帧结构,每帧为8bit,保证了数据出错率低。

  6. 可以点对点、点对多点及全局广播方式传送接收数据。

  7. 发送期间若丢失仲裁或由于出错而遭破坏的帧可自动重发送。

  2  Small RTOS51简介

  Small RTOS51是一个用于8051系列单片机的多任务实时操作系统。8051系列单片机一般只有很少的ROM和RAM资源,如P89C51只有4KB Flash和128字节RAM.单片微型计算机简称为单片机,又称为微型控制器,是微型计算机的一个重要分支。单片机是70年代中期发展起来的一种大规模集成电路芯片,是CPU、RAM、ROM、I/O接口和中断系统于同一硅片的器件。80年代以来,单片机发展迅速,各类新产品不断涌现,出现了许多高性能新型机种,现已逐渐成为工厂自动化和各控制领域的支柱产业之一。一般的实时操作系统如RTX Tiny 虽然小,但是任务没有优先级和中断管理,也无源代码,而uc/os-II规模太大,需要大量外部RAM.基于此,Small RTOS51是专为51 单片机编写嵌入式操作系统,它使用了RTX51 Tiny 的堆栈管理机制,并像uc/os-II一样是抢占式的。

  3 一个典型的CAN节点

  3.1.CAN总线接口的结构

  一个CAN总线接口有3 部分组成,如图(a)所示,它们分别对应于CAN总线的物理层、数据链路层和应用层。

  最上层为微控制器,主要负责上层应用以及系统控制,包括CAN协议的应用层协议的实现,协调各系统设备的工作。(本设计采用的MCU是8051)

  中间层为CAN控制器,CAN控制器负责处理数据帧,完成数据的打包、解包,错误界定,并提供报文缓冲和传输滤波。(本设计采用的CAN总线控制器是Philips公司生产SJA1000)

  最底层为CAN收发器,主要是接口电平的转换,接口电器特性的处理。(本设计采用82C250)

  (a)CAN接口结构

[page]

3.2.节点电路设计

  (1)SJA1000与单片机接口电路

  (b)SJA1000与单片机接口电路

  SJA1000的AD0-AD7与单片机的数据总线相连,地址A17作为SJA1000的片选使能端,由ALE、WR、RD控制SJA1000 数据的发送和接收。注意SJA1000复位端的连接,单片机是高电平复位,而SJA1000是低电平复位,因此复位信号要通过一个反相器与SJA1000复位端相连。另外SJA1000的11脚MODE接高电平,选择Intel二分频模式 .SJA1000的16脚时中断信号输出,在中断允许情况下,有中断发生时,16脚出现有高电平到低电平的跳变。

  SJA1000的ODE引脚可选择接口模式:

  ◆Intel模式  MODE高

  ◆M0torola模式  MODE低

  (2)节点前端物理接口电路的设计

  (c)节点前端物理接口电路的设计

  使用SJA1000 CAN总线控制器可完成CAN总线通信任务,但它的驱动能力不够,因此外接82C250总线驱动芯片。CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品着称的德国BOSCH公司开发了的,并最终成为国际标准(ISO118?8)。是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境82C250是CAN控制器和物理总线间的接口。之所以选择82C250芯片是因为其具有高速性(最高可达1Mbit/s),具有抗瞬间干扰保护总线的能力。具有降低射频干扰的斜率控制。此外,它可以与110 个节点相连,防止电池与地之间发生短路,当某一个节点掉电时,不会影响总线。

  (3)设计电路注意的问题

  ◆SJA1000通过光耦与82C250的连接是光电隔离的接法。这样可以防止线路间的串扰。在总线两端要接2 个120欧姆的总线阻抗匹配电阻。忽略掉它们会降低总线的抗干扰能力,甚至导致无法通信。

  ◆SJA1000的TX1脚悬空,RX1引脚的电位必须维持在0.5vcc以上,否则将不能行成CAN协议所要求的电平逻辑。

  ◆光耦6N137的输入端2,3脚的信号输入极性要与光耦的输出极性相同,如果电路设计时极性相反,也可以通过软件编程改变SJA1000的数据输出极性,从而使单片机的输出数据与82C250中数据的极性一致。

  4 在Small RTOS 下CAN节点的数据接收与发送实例

  下面将通过一个简单的实例(需要配置Small RTOS51操作系统)来介绍在Small RTOS 下CAN节点的数据接收与发送过程。实例使用两个CAN节点组成CAN网络,实现的功能是,每隔一定的定时周期发送一帧数据,同时接收CAN数据,并将接收的CAN数据发送到CAN总线上。LED将显示收到的数据帧的头两个字节。

[page]

(1)实例部分代码实现

  void main(void)

  {

  CpuInit(); //微控制器初始化

  UserTickTimer(void);//系统时钟节拍的初始化

  OSStart();//启动small rtos操作系统

  SendData();//发送数据任务

  { unsigned char data status;

  unsigned char i;

  unsigned char xdata *p =&CAN1_SJA_BaseAdr+REG_CAN_SR  ;

  unsigned char xdata *p1;

  status=SJAInit();//初始化can控制器

  if(status!=0){

  OSSendSignal(2); //唤醒错误处理任务

  }

  P_SJAFrameStructApp  =(P_SJAFrameStruct )&BufCan2[0];

  IT0 =0;//电平触发模式

  EX0=1;//使能CAN中断

  BufCan2[0]=0x88;

  P_SJAFrameStructApp->FrameID=0x11111111;

  while(1)

  {

  OSWait(K_TMO,2);//系统等待函数,每两个时钟周期发送一次数据

  P_SJAFrameStructApp->FrameID++;

  p1=(unsigned char xdata *)&P_SJAFrameStructApp->FrameID;

  for(i=0;i<4;i++)  //发送测试数据

  BufCan2[1+i] =*(p1+i);// 0x55;

  for(i=0;i<4;i++)

  BufCan2[5+i] =*(p1+i);// 0x55;

  for(i=0;i<4;i++)

  BufCan2[9+i] =*(p1+i);// 0x55;

  status=SJASendData(BufCan2,0x10);//向CAN总线发送数据,所发送数据的首地址是BufCan2

  if(status!=0)  //表示发送数据错误

  OSSendSignal(2);唤醒错误处理任务

  }

  }

  void DisPlay(void)

  {

  while(1){

  OSWait(K_TMO,1);

  ShowLED(); // led显示处理

  }

  }

  Error();// 错误信息处理任务

  }

  (2) 测试结果:

  如果运行正确:数码管会显示依次加1的数值,否则:数码管会显示E-xx的错误代码

  5 结束语

  CAN总线的产生与发展控制器局部网(CAN-CONTROLLER AREA NETWORK)是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。控制器局部网将在我国迅速普及推广。

  随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。

  本文作者创新点是实现了在实时操作系统Small RTOS51下CAN总线上数据的接收与发送,用一个简单的实例来说明了CAN总线的接收、发送原理。

 

 

关键字:RTOS51  CAN总线  数据收发 引用地址:浅谈Small RTOS51 下CAN总线数据收发实现

上一篇:恩智浦推出世界首款无偏置电压I2C总线缓冲器
下一篇:简述VME总线原理及应用

推荐阅读最新更新时间:2024-05-02 21:33

CAN总线解决方案在玻璃磨边机上的应用
   玻璃 磨边机是一种玻璃深加工设备,把粗加工成型玻璃的两边或者四边经过磨轮磨制成各种各样的边型,以适合各种不同的应用环境,比如汽车玻璃、家用玻璃等。以前所做的玻璃磨边机大都采用变频器来控制,通过普通电机来带动丝杆来调节磨刀的位置,效率低下且精度不高,严重制药了生产效率的提高,同时不能满足客户多样化的需求。 一、 系统电气框图   深圳步科电气有限公司及时响应客户需求,根据客户工艺要求因地适宜地为该系统选择了CAN总线解决方案,采用KINCO总线型控制器—K4 PLC作为系统控制核心,采用KINCO智能伺服驱动器作为磨刀驱动电机,彻底解决了客户目前遇到的问题。 控制原理如下:      系统配置图: 名称 型号 数量
[嵌入式]
DSP和CAN总线在直流电机测试系统中的应用
随着电子工业的迅速发展,对小型直流电机的需求量越来越大。这一类直流电机在出厂前往往需要对其电流和转速进行测试。具体的方式是给电机提供多种占空比的PWM控制信号,在不同的占空比下分别测试电机的电流和转速。传统的测试方法需采用多台通用仪器:用信号发生器提供电机所需的PWM信号,通过电阻采样电机的电流,并送电压表头显示,使用光电感应的方法测转速,通过示波器观察波形。目前在我国采用的大多是传统的测试方法,传统方法要求在车间的每个生产线上设置多个检测点,每个测试点只能测量一种占空比下PWM信号控制的电机电流和转速。因此,在每个测试点都要配备测试员和一套完整的测试仪,使得成本很高。而且在测试过程中,要完成一个电机的测试必须经过多个测试点,每个点
[测试测量]
DSP和<font color='red'>CAN总线</font>在直流电机测试系统中的应用
CAN总线在织机状态远程集中监控系统应用
1 织机状态远程集中监控系统方案     织机工作状态参数众多,对于织机状态远程集中监控系统来说,其主要目标是在异地对织机群整体状态数据完成采集,提供计算、统计、分析和查询功能,并能够存储、浏览和打印各类报表,为生产提供信息管理服务。主要包括:     (1)织机主要工作参数的监测。如生产班次、织机机台号、车速、引纬率、产量、织物品种、织疵类型、停机时数、故障原因等。     (2)织机生产数据的分析与处理。如岗位、车间和企业层次的不同产品产量报表、各织机的工作效率、故障分类及原因等。     根据这一目标要求,加上织机正常工作时工作参数较多,没有必要将单台织机的各种数据全部集中到监控端处理,因此织机状态远程集中监
[嵌入式]
基于CAN总线的分布式热电阻智能节点的设计
1  引言 现场总线技术是当今自动化领域发展的热点,德国bosch公司的can是为解决汽车内部的复杂硬信号接线提出的,而其应用范围正逐渐向过程控制、机器人、数控机床、医疗器械及传感器等领域发展。can总线以其独特的设计、低成本、高可靠性、实时性、抗干扰能力强等特点得到了广泛的应用。本文选用can总线设计了分布式热电阻智能节点,利用can总线连接各个网络节点,可以直接与主控卡或上位机通信,组建成工业网络分布式测控系统。 2  热电阻智能节点硬件设计 2.1智能节点整体结构 本热电阻智能节点设有4路输入通道,支持3线制方式,支持热电阻类型有cu50、cu100和pt100,采用freescale mc9s12d64单片机作为微控制器,
[嵌入式]
提高CAN总线安全保障—CANDT震撼发布!
先科普一下: CAN总线由博世公司于1987年开发,1993年成为标准,在近23年的时间里获得了巨大的成功,逐渐替代了其它相近的总线,2001年的节点采用量已超过1亿。但是,曾经力推CAN总线的厂商,如宝马、博世、飞利浦等,目前都开始支持新的总线。对于推动新总线研究的原因,X-By-Wire的发展是一方面,但从根本上讲,消费者的安全需求才是最重要的原因。根据新闻报道:在CAN的发源地德国,2005年汽车抛锚事故中有35%是电子装置引起的。因此,电子控制系统及其通信系统的可靠性是一个敏感的问题,即使没有采用X-By-Wire,仍然使用常规的液压气动机构,也需要一种更为可靠的新总线来代替CAN。 车内通信有两个最基本的要求:一是数据内
[汽车电子]
提高<font color='red'>CAN总线</font>安全保障—CANDT震撼发布!
基于CAN总线的智能型温湿度采集系统设计
  温湿度监测系统是在环境试验、科学研究(诸如种植、养殖、生物工程、化工工程)、工业生产等领域应用广泛的现场环境控制系统。它能模拟各种环境条件,即按照实际要求精确控制环境的温度和湿度,为研究不同的生化过程创造了良好的环境条件。因此,温湿度监测系统广泛应用在科研、现代农业、医药、冶金、化工、林业、环境科学及生物遗传工程等领域。   为了满足化学工业过程对环境条件的需求,我们在传感器智能控制方案和具体应用中做了大量的研究和可行性分析,开发了一种具有智能化功能的温湿度监测系统。该系统由数据采集模块和接口模块组成。其中数据采集模块采用了以单片机AT89S52为核心外接传感器的结构框架,保证了系统对现场温湿度信号采集的实时性和准确性。而接口模
[嵌入式]
基于虚拟仪器的车用电机测试平台控制系统
  引言   能源短缺和环保问题促使人们转向开发低污染或者零污染的清洁汽车。燃料电池汽车被认为是最有希望替代内燃机汽车成为下一代公路运输工具的主流。无论是纯电动、混合动力还是燃料电池汽车,都以电动机作为驱动力源。一套适用的车用驱动电机的测试平台对于整车动力系统的开发非常重要。然而目前国内的电机测试平台一般不是针对车用驱动电机而设计,而且自动化程度不高,无法满足测试的要求。因此需要开发一套专用的车用驱动电机测试平台,这对于整车动力系统的设计及优化至关重要。   虚拟仪器技术是近几年在自动化测试和控制领域发展起来的一项新技术。其代表产品为美国NI 仪器公司的LabVIEW ,目前在包括汽车行业的众多领域得到广泛应用。本文结合燃
[电源管理]
CAN总线印刷机用伺服解决方案
丝网印花机是一种在一块材料上整齐有序地印制多种色彩、标签、字符等标示符的设备。能印刷材料相当广泛,比如丝带、胶带、胶贴、橡筋带、棉带、人字带、布带和织边带等等外,还包括人造皮革和胶料。其中轮转式印刷机系列还可以印制成衣、鞋帽、玩具及各种带类的商标。 目前国内多色印花机基本上采用的多PLC控制方案,系统由一个主PLC协调整体系统工作,每个工位配置(一个工位印制一种花色)一个小PLC,该PLC的作用主要是协调该色位的两个电机之间的动作,一个动作是由步进电机带动色标电眼去检测误差;另一个动作是刮刀伺服电机补偿色标电源检测到的误差并带动印刷设备开始印刷工作。 设备整套外形图: 一、系统设计要求 丝网印花机是一个由印花工位、烘干工位、拖膜工
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved