【前言】项目驱动——CAN-bus现场总线基础教程
CAN-bus现场总线基础教程【第6章】CAN总线应用层协议(CANopen)-CANopen主站设备的实现(26)
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第6章 CAN 总线应用层协议——CANopen1.1 CANopen 主站设备的实现上文介绍了CANopen 协议转换模块——XGate-COP10和基于该模块设计的I/O 设备,本章节中将介绍CANopen 网络中具有主站功能的设备如何开发。
尽管在CiA 组织的CANopen 规范中没有明确的定义主站设备和从站设备,但大家还是习惯把具有网络管理(NMT )能力的CANopen 设备称之为CANopen 主站设备。
除此之外CANopen 主站还应具有服务数据(SDO )客户端功能,这样CANopen 主站能够控制以及访问网络中的所有CANopen 从站。
PCI-5010-P 就是具有这些功能的CANopen 主站板卡(PCI 接口),下文将介绍如何基于该产品快速实现功能强大的CANopen 主站设备。
1.1.1 CANopen 网络的拓扑结构 一个CANopen 网络中的主站设备管理着其它的从站设备,而且一个网络只允许有一个CANopen 主站设备和最多127个从站设备存在。
图6.1所示为PCI-5010-P 在CANopen 网络中的典型应用形式。
1.1.2 PCI-5010-P CANopen 主站卡简介PCI-5010-P 系列工业级CAN 通信卡支持CANopen 主站协议,支持CiA 建议的标准波特率以及自定义波特率,并提供多个操作系统的设备驱动、工具软件等,能真正的满足客户的各种应用需求,为工业通信CANopen 网络提供了可靠性、高效率的解决方案,在计算机中的硬件与软件结构如图6.2所示。
图6.2 PCI-5010-P 在计算机中的硬件与软件结构PCI-5010-P 具有如下特性:用PCI 总线,兼容PCI 2.2规范;图6.1 PCI-5010-P 在CANopen 网络中的结构文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.● 支持CAN2.0A 协议; ● 支持CANopen 协议;● 符合ISO/DIS 11898-2 规范;● 集成1路电气完全隔离的CAN 通道; ● DC 2500V 电气隔离保护; ● 增强ESD/EMI 性能;● 遵守工业应用规范。
CAN-bus现场总线基础教程【第8章】CAN总线设备及调试工具-概述(32)
广州致远电子有限公司
文库资料
©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
文章源自广州致远电子有限公司,转载或引用请注明出处
1 工业通讯-CAN bus 通信产品
第8章 CAN 总线设备及调试工具
1.1 概述
前面章节已经介绍了CAN 节点设计的相关内容,并且完成了一个CAN 总线节点的设计。
接下来就需要对这个节点进行调试,使其达到设计要求。
一个完整的CAN 网络是具有一定功能的,除了现场的各种执行器和传感器外,还需要一个指挥中心来控制整个网络有序的运行,这个指挥中心通常称为主控设备,可以由工控计算机、PLC 或其它功能较强的设备担当。
一般来说计算机本身不带CAN 接口,所以直接使用计算机和CAN 网络是不能互联的,CAN 接口卡的作用就是给计算机增加CAN-bus 现场总线接口功能,计算机就通过CAN 接口卡接入CAN 网络,通过PC 机测试软件可以观察到整个CAN 网络中的数据流,对CAN 节点进行调试。
常见的CAN 接口卡有USB 、PCI 接口,通过USB 或PCI 接口连接到PC 机,本章将介绍2款通用的CAN 接口卡:USBCAN-E-U (USB CAN 接口卡)、PCI-5010-U (PCI CAN 接口卡)。
在第1章我们说过解决通信问题时要先定位问题所在的通信层次,只有这样才能有的放矢。
本章还将介绍一款功能强大的CAN-bus 总线开发辅助工具CANScope ,它具有物理层、数据链路层和应用层等层面的综合分析能力,可以大大提高问题的解决速度。
CAN-bus现场总线基础教程【第8章】CAN总线设备及调试工具-USBCAN-E-U(33)
第8章 CAN 总线设备及调试工具1.1 USBCAN-E-U1.1.1 概述USBCAN 设备根据CAN-bus 接口数量可分为单路和双路两种,在可靠性要求较高或数据量较大的CAN 应用中会使用双路USBCAN 设备。
双通道设备USBCAN-2E-U 的工作原理与单通道基本一样,本节以单通道设备USBCAN-E-U 为例讲解,USBCAN-E-U 是兼容USB2.0全速规范的,带有1路CAN 的工业级高性能CAN 接口卡,实物图如图8.1所示。
PC 机可以通过USB 总线连接至CAN 网络,构成实验室、工业控制、智能小区等CAN 网络领域中的数据采集与数据处理。
USBCAN-E-U 接口卡是CAN 产品开发、CAN 数据分析的强大工具;同时,具有体积小、即插即用等特点,也是便携式系统用户的最佳选择。
接口卡上自带磁耦隔离模块,使其避免由于地环流的损坏,增强系统在恶劣环境中使用的可靠性。
USBCAN-E-U 收发的数据均与计算机上的应用软件有关,USBCAN-E-U 除了支持自带的上位机软件外,还提供Win2000/XP/WIN7、Linux 下工作的驱动程序及详细的应用例程,支持用户在VC++,VB 以及Delphi 等开发环境下开发自己的应用软件。
1.1.2 主要特点USBCAN-E-U 接口卡的主要特点:● PC 接口:便携式USB2.0全速接口;● CAN 接口:OPEN5接口,符合DeviceNet 和CANopen 标准;● CAN 协议:完全符合CAN 2.0B 规范,兼容CAN 2.0A ,符合ISO/DIS 11898;● CAN 通道数:1通道隔离CAN 接口;● CAN 波特率:可编程任意设置,范围在5Kbps ~1Mbps 之间;● 最高帧流量:5000帧/秒(扩展帧);● 供电方式:USB 总线供电,或使用外接电源(+9V ~+25V ,200mA);● 磁耦隔离模块绝缘电压:DC 2500V ;● 工作温度:-25℃~+70℃;● 存储温度:-40℃~+85℃;● 物理尺寸:115mm×76mm 。
CAN-bus现场总线基础教程【第6章】CAN总线应用层协议(CANopen)-CANopen主站设备及其应用(23)
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第6章 CAN 总线应用层协议——CANopen1.1 CANopen 主站设备及其应用由于可靠性、实时性、低成本、抗干扰性、兼容能力等多个方面的优势,CAN-bus 与其高层协议CANopen 已成为了车辆数据通信系统的事实标准,并普遍应用于所有的可移动设施,例如船舶舰艇、客车火车、升降电梯、重载车辆、工程机械、运动系统、分布式控制网络等。
几乎所有的通用 I/O 模块、驱动器、智能传感器、PLC 、MMI 设备的生产厂商都提供有支持CAN-bus 与CANopen 标准的产品。
只要符合 CANopen 协议标准及其设备协议子集标准的系统,就可以在功能和接口上保证各厂商设备的互用性和可交换性。
1.1.1 CANopen 网络特点作为标准化应用,CANopen 建立在设备对象描述的基础上,设备对象描述规定了基本的通信机制及相关参数。
CANopen 可通过总线对设备进行在线配置,与生产厂商无关联,支持网络设备的即插即用("Plug and Play")。
CANopen 支持2类基本数据传输机制:PDO 实现高实时性的过程数据交换,SDO 实现低实时性的对象字典条目的访问。
SDO 也用于传输配置参数,或长数据域的传输。
CANopen 既规定了各种设备之间的通信标准,也定义了与其他通信网络的互连规范。
1.1.2 CANopen 网络中的设备分类在说明CANopen 网络设备分类之前,我们有必要先了解其网络通信模型。
CAN-bus 支持 “生产者-消费者”通信模型,支持一个生产者和一个或多个消费者之间的通信关系。
生产者提供服务,消费者接收则可以(消费)或忽略服务。
需要注意,CANopen 标准作为CAN-bus 的应用层协议之一,除了支持上述服务类型外,还支持“客户端-服务器”通信模型。
CAN-bus现场总线基础教程【第3章】CAN控制器驱动-SJA1000初始化(11)
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第3章 CAN 控制器驱动1.1 SJA1000初始化1.1.1 初始化流程SJA10000在上电复位后处于复位模式,要使SJA1000能正常收发CAN 帧数据,必须对SJA1000进行初始化,SJA1000初始化流程详见图3.1。
1. 进入复位模式SJA1000的配置寄存器只有在复位模式下才能访问,所以必须首先置位模式寄存器的0位,以进入复位模式。
2. 设置模式寄存器模式寄存器用于设置SJA1000工作模式,定义详见表3.1。
表3.1 SJA1000模式寄存器定义RM :复位模式位,置位该位将使SJA1000进入复位模式,清零该位则退出复位模式返回工作模式。
LOM :只听模式位,设置该位后,SJA1000处于只听模式。
只听模式只从CAN 总线接收数据,不能向总线上发送数据也不会产生错误帧。
只听模式常用于自动波特率检测功能,例如在软件里预先定义一个包含所有可能的位频率以及它们的位时序参数的表格,使能SJA1000接收和错误中断,依次尝试表格中的位时序参数,如果在CAN 总线上产生了错误,软件转向下一个位时序参数,在一条信息的成功地接收后,表明软件已经检测到正确的位时序参数。
STM :只检测模式位,设置该位后,SJA1000在发送CAN 帧时不检查应答位,可以实现单个CAN 节点的发送功能。
AFM :验收滤波器模式,设置该位时使用单滤波功能;清零该位时使用双滤波功能。
SM :睡眠模式位,设置该位时,SJA1000进入睡眠模式,降低功耗。
3. 设置时钟分频寄存器时钟分频寄存器用于选择BasicCAN 模式还是PeliCAN 模式、CLKOUT 管脚控制、CAN 输入比较器控制,寄存器的位定义详见表3.2。
表3.2 SJA1000时钟分频寄存器定义4. 设置CAN 波特率波特率是异步串行通信中的重要参数,指每秒钟能发送的数据位元数量,只有相同波特率图3.1 SJA1000初始化流程图文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.的设备才能互相通信,CAN-bus 使用异步串行通信技术,同样需要遵守该规则。
CAN-bus现场总线基础教程【第8章】CAN总线设备及调试工具-CANScope(35)
CAN-bus现场总线基础教程【第8章】CAN总线设备及调试工具-CANScope(35)文库资料 ?2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第8章 CAN 总线设备及调试工具1.1 CANScope1.1.1 概述作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN 总线逐步被广泛应用到汽车电子、电力通讯、工业现场、电梯系统等控制领域。
常用的CAN 信号分析仪器有示波器、逻辑分析仪、CAN 分析仪,但远远满足不了CAN 总线开发工程师的需求。
CANScope 是广州致远电子股份有限公司最新推出的一款CAN-bus 总线开发辅助工具,内部集成了示波器、逻辑分析仪和CAN 分析仪的功能,分别从物理层、数据链路层、应用层深入分析CAN 总线信号,帮助用户快速而准确地定位错误,极大地提升了CAN 总线的开发与维护效率,是CAN 总线开发工程师的好帮手。
1.1.2 物理层在物理层应用中,CANScope 分析仪主要从波特率、波形、FFT 、眼图等方面对CAN 总线信号进行分析。
1.自动侦测波特率在开发CAN 底层驱动程序的过程当中,如果晶振选择和波特率计算方法存在问题,就会导致从CAN 控制器出来的实际波特率与理论计算值有所偏差。
当CAN 网络中CAN 设备的波特率不一致时,就会导致错误帧增多、通讯延迟等不确定问题,甚至会造成通讯失败。
CANScope 分析仪可以自动侦测CAN 总线波特率,帮助用户查找由于波特率不匹配造成通讯出错的问题。
下面我们利用CANScope 分析仪的自动侦测波特率功能进行测量。
首先将CAN 发送设备与CANScope 分析仪相连接。
然后设置CAN 发送设备的波特率为1Mbps ,发送CAN 报文数据到总线上,设置CANScope 分析仪的采样率为100Mbps 。
图8.1 CANScope 自动侦测波特率文库资料 ?2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.如图8.5所示CANScope 分析仪软件右下角自动侦测到波特率为996.677kbps 。
CAN-bus现场总线基础教程【第1章】现场总线CAN-bus-CAN总线简介(1)
第1章现场总线CAN-bus1.1 从“罐头”说起我们知道英文单词“can”有一个意思是罐头,那我们就借题发挥从“罐头”说起吧。
很多人小时候都自制过一种叫传声筒的玩具,就是在两个罐头的底部打孔后,用一根绳子将两个罐头系起来。
一旦绳子绷紧后,对这一个罐头喊话,另一罐头就可以传出声音。
它的原理很简单,对着喊话的那个罐头把声波产生的振动传导到绷紧的绳子上,绳子再将这种振动传导到另一个罐头上,这个罐头又把这种振动传导给空气形成声波。
这样就可以实现一侧说话一侧听了。
图1.1 童年的传声筒因为声音在传声筒中是以振动波的形式传递的,我们可以设想,如果要一人说话多人听那该怎么办呢?这很容易实现,只要在绳子上系上更多的传声筒,让振动波可以传到更多的罐头里,自然可以就可以实现“多方通话”了。
当然,因为声波能量有限,绳子上系的罐头越多,每个罐头分配到的能量就越少,收听到的声音也就越小。
其实本章要介绍的现场总线和传声筒这种原始通信工具的原理是相通的。
只不过电电缆取代了绳子,电信号取代了振动波,电路板取代了罐头,喊话的内容则由各种需要传递的数据取代了。
典型的现场总线应用如图1.2所示,和上面的传声筒是不是很相似呢?图1.2 现代的现场总线1.2 通信的层次通信是分层的,这个概念应该贯彻在我们学习任何通信系统的整个过程中。
我们仍以上面的传声筒游戏为例,假如小男孩想表达“你好”的意思,那他不会关心声音如何让罐头振动,更不会关心“你好”在绳子上是以横波还是纵波传输的,他关心的是自己表达的意思对方能不能理解。
在通信层次划分上来说,两个小朋友就处于“应用层”。
很显然,应用层是整个通信系统存在的唯一目的,任何通信系统都是为应用层服务的。
相对于“你好”这个想法,说出“你好”这个词就有很多种表达方法了,可以是中文、英文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.文、日文等等。
canbus现场总线
canbus现场总线第三章 CANbus现场总线现场总线是安装在生产过程区域的现场设备仪表与控制室内的自动控制装置系统之间的一种串行、数字式、多点通信的数据总线。
现场总线(Fieldbus)技术是实现现场级控制设备数字化通信的一种工业现场层网络通信技术,可使用一条通信电缆将现场设备(智能化、带有通信接口)连接,用数字化通信代替4-20mA/24VDC信号,完成现场设备控制、监测、远程参数化等功能。
CAN,全称为“Controller Area Network”,即控制器局域网,由德国Bosch 公司最先提出,已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。
CAN是一种多主方式的串行通讯总线,CAN的规范定义了OSI模型的最下面两层:数据链路层和物理层。
CAN 协议有2.0A和2.0B两个版本,CAN协议的2.0A版本规定CAN 控制器必须有一个11位的标志符,在2.0B版本中规定CAN控制器的标志符长度可以是11位或29位。
第一节 CAN通信协议3.1.0协议特点CAN总线是一种串行数据通信协议。
它有如下特点:1、CAN协议分层分为目标层、传输层、物理层。
目标层的功能:确定要发送的报文、确认传输层接收到的报文、为应用层提供接口。
传输层的功能:帧组织、总线仲裁、检错、错误报告、错误处理。
物理层的范围包括实际位传送过程中的电气特性。
2、CAN协议逻辑位使用2种逻辑位表达方式。
当总线上的CAN控制器发送的都是弱位时,此时总线状态是弱位(逻辑1);如果总线上有强位出现,弱位总是让位于强位,即总线状态是强位(逻辑0)。
上有强位出现,弱位总是让位于强位,即总线状态是强位(逻辑0)。
3、CAN协议校验.采用CRC校验并可提供相应的错误处理功能,保证了数据通信的可靠性。
4、CAN协议编码方式.使用了数据块编码方式,使得网络内的节点个数在理论上不受限制。
5、CAN协议数据块的长度.规定了数据块的长度最多为8个字节,传输时不会过长占用总线,保证了通信的实时性。
CAN-bus现场总线基础教程【第2章】CAN节点设计-MCU与CAN控制器电路的连接(8)
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
文章源自广州致远电子有限公司,转载或引用请注明出处
1 第2章 CAN 节点设计
1.1 MCU 与CAN 控制器电路的连接
前面部分的内容已经单独介绍了CAN 控制器电路和MCU 电路的设计,但是却没有说明这两部分电路的具体引脚连接,于是决定单独使用一个小节来讲解MCU 与CAN 控制器电路的引脚连接关系,希望通过这样的方式可以帮助读者更清楚CAN 控制器和MCU 之间的关系,更好理解以后章节中出现的控制程序。
1.1.1 MCU 和CAN 控制器的引脚连接
由于在电路设计时已经把SJA1000当成了MCU 的外部RAM ,那么在电路连接的时候SJA1000的引脚也必须符合MCU 外扩RAM 的连接要求,具体的连接方法就是将错误!未找到引用源。
中接头CZ1和错误!未找到引用源。
中的接头CN1及CN2按表2.1所示的引脚对应关系连接。
表2.1 SJA1000模块和MCU 引脚的连接关系
INTCAN 是SJA1000的中断输出脚,所以将其接MCU 的外部中断输入引脚P3.2,这样可以让MCU 及时检测和响应SJA1000发生的各种中断异常,而RSTCAN (RSTCAN 与SJA1000的RST 脚相连)接单片机的P1.2则是为了方便MCU 控制SJA1000的复位信号。
WR 、RD 、和ALE 分别是写使能信号、读使能信号和地址锁存信号,在访问SJA1000的过程中主控制器会自动输出这些控制信号,SJA1000在接收这些信号后就会在其接口管理逻辑的控制下完成MCU 请求的各种功能。
CAN-bus现场总线基础教程【第1章】现场总线CAN-bus-CAN-bus物理层(2)
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第1章 现场总线CAN-bus1.1 CAN-bus 物理层物理层主要是完成设备间的信号传送,把各种信息转换为可以传输的物理信号(通常为电信号或光信号),并将这些信号传输到其他目标设备。
基于该目的,CAN-bus 对信号电平、通信时使用的电缆及连接器等做了详细规定。
CAN-bus 由ISO 标准化后发布了两个标准,分别是ISO11898(125kbps~1Mbps 的高速通信标准)和ISO11519(小于125kbps 的低速通信标准)。
这两个标准仅在物理层不同,在数据链路层是相同的。
1.1.1 CAN 收发器与信号电平位于CAN-bus 物理层的器件要完成逻辑信号与电缆上物理信号的转换,该器件被称为收发器,其外形如图1.1所示。
图1.1 CAN 收发器的引脚与实物图CAN-bus 使用两根线缆进行信号传输,如图1.2所示,这两根线缆的名称分别为CAN_High 和CAN_Low (简称CAN_H 和CAN_L )。
CAN 收发器根据两根线缆之间的电压差来判断总线电平,这种传输方式被称为差分传输。
线缆上传输的电平信号只有两种可能,分别为显性电平和隐性电平,其中显性电平代表逻辑0,隐性电平代表逻辑1。
ISO11898和ISO11519-2电信号数据对比如表1.1所示。
表1.1 ISO11898和ISO11519-2电信号数据对比图1.2 双绞线文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.双绞线(屏蔽/非屏蔽)双绞线(屏蔽/非屏蔽)CAN-bus 采用双绞线连接,并配合差分传输方式,可以有效的抑制共模干扰。
共模干扰是指信号线上的干扰信号的幅度和相位都相同,如图1.3所示。
例如通信电缆被一个电磁脉冲辐射了,根据中学的物理知识我们知道交变的磁场能感应出产生交变的电场,反映在信号电位上就是出现了瞬间的电压跌落或尖峰。
CAN-bus现场总线基础教程【第3章】CAN控制器驱动-SJA1000硬件连接测试(10)
第3章CAN控制器驱动1.1 SJA1000硬件连接测试1.1.1 硬件接口测试原理SJA1000芯片通过并行总线与MCU连接,两个器件之间需要通过地址/数据、读/写控制信号、片选、中断等十多根信号线连接。
那么,如何判断MCU已经正确地连接了SJA1000芯片?SJA1000提供1个测试寄存器,MCU可以通过对该测试寄存器(地址0x09)反复执行写入和读出操作,如果读出的数据和写入的数据保持一致,则表明MCU和SJA1000已经正确连接并可以通信了。
程序清单3.1说明了MCU通过读写SJA1000的测试寄存器REG_CAN_TEST(地址0x09)验证硬件连接的过程。
程序清单3.1 CAN控制器的硬件测试代码1/****************************************************************************************** 2** 函数名称:SJA1000_TestReg3** 函数功能:测试函数,验证主控制器和SJA1000的硬件连接4** 输入参数:无5** 输出参数:无6** 返回值:1=硬件连接正常,可以通信;0=通信故障7******************************************************************************************/ 8char SJA1000_TestReg (void)9{10unsigned char temp, status;11status = 1;12temp = 0x55;13WriteSJAReg(REG_CAN_TEST, temp); // 写入SJA1000测试寄存器14if (ReadSJAReg(RegAdr) != temp){ // 读出值与写入值不同15status = 0; // 读写SJA1000芯片出错16}17temp = 0xAA;18WriteSJAReg(REG_CAN_TEST, temp); // 写入SJA1000测试寄存器19if (ReadSJAReg(RegAdr) != temp){ // 读出值与写入值不同20status = 0; // 读写SJA1000芯片出错21}22return (status); // 通过SJA1000读写测试23}1.1.2 测试例程如程序清单3.2所示为SJA1000硬件测试程序,它通过读写SJA1000的测试寄存器并比较写入和读出值的方式来判断SJA1000与MCU的硬件连接是否正常,当测试通过时,表明SJA1000与MCU之间的数据、地址及读写控制信号线连接正常,此时,开发板上的D1将以1秒的间隔闪烁;否则D1以0.1秒的间隔闪烁。
第2章-现场总线CAN-Bus
现场总线(Fieldbus)是自动化 系统中一种把大量现场级设备和 操作级设备相连的工业通讯系统。 定义:一种用于智能化现场设备 和自动化系统的开放式,数字化, 双向串行,多节点的通信总线。
汽车领域
简单例子: 1、工业控制:化工厂数据监控与处理 2、汽车领域:几乎任何汽车里,都存在CAN总线(安全气囊) 3、电梯:每层的上下按键节点都是通过总线与主控制器相连。
基础概念
1.1基础概念
国际标准化组织ISO对通信系统的详细划分,以打电话为例进行讲解:
最高层。用户、软件、网络终端等之间用来进行信息交换 将两个应用不同数据格式的系统信息转化为能共同理解的格式 依靠低层的通信功能来进行数据的有效传递 两通信节点之间数据传输控制,操作如:数据重发,数据错误修复 规定了网络连接的建立、维持和拆除的协议,如:路由和寻址 规定了在介质上传输数据位的排列和组织,如:数据校验和帧结构 规定通信介质的物理特性,如:电气特性和信号交换的解释
根据应用领域不同,世界上存在很多种现场总线。
多点通信:在同一个通信 能够满足工业控制现场复 网络上可以挂接多个设备。 杂环境、实时通信、抗干
扰等方面的要求。
(1)1983年,由Bosch与Intel公司为了减少汽车电缆 数量而开发CAN-bus。 (2) 1986年,正式发布。 (3) 1989年,宝马推出第一款使用CAN-bus通信的汽 车。车上电缆质量减少了50kg。
基础概念
1.2CAN总线简介
OSI模型与CAN-Bus的对应关系 CAN-bus规范定义了ISO模型中的物理层和数据链路层。
物理层 CAN收发器( 举例:PAC82C51 )
数据链路层 CAN控制器( பைடு நூலகம்例:SJA1000 )
CAN-bus现场总线基础教程【第3章】CAN控制器驱动-SJA1000编程基础(9)
第3章 CAN 控制器驱动1.1 SJA1000编程基础1.1.1 MCU 访问SJA1000SJA1000使用并行总线接口与MCU 连接,对MCU 来说,SJA1000可以认为是1个外扩的RAM 芯片,51系列MCU 通过地址线、数据线和控制线与SJA1000连接,如图3.1所示。
AD[0:7]是低8位地址与数据总线复用的,MCU 在操作总线时,在该接口上先输出低8位地址线,然后再进行数据操作(读或写)。
SJA1000内部带有地址锁存器,由ALE 信号实现数据与地址的分离。
因为SJA1000的地址宽度为8位,所以寻址空间范围是0x00~0xFF 。
假如每个地址都对应一个寄存器,那么SJA1000最多支持256个寄存器。
而实际上SJA1000在BasicCAN (CAN2.0A )模式下只有32个寄存器,在FullCAN (CAN2.0B )模式下则有128个寄存器。
虽然SJA1000寄存器的访问地址会因为硬件设计不同而不同,但SJA1000内部寄存器的位置关系是固定的。
如果我们给SJA1000每个内部寄存器的地址都定义绝对地址(如程序清单3.1所示),那么在硬件设计发生变化时,特别是器件编址变化时,要修改的寄存器地址定义将会非常多。
为了提高驱动的可移植性,在实际访问SJA1000内部寄存器时,常采用基地址加偏移量的方式进行寄存器访问(如程序清单3.2所示)。
如果把SJA1000内部寄存器看做数组的话,那基地址就是这个数组的首地址,偏移量就是数组的下标,即成员在数组中的位置。
程序清单3.1 采用绝对编址的寄存器定义1 #define REG_CAN_MOD 0xA000 // 内部控制寄存器2 #define REG_CAN_CMR 0xA001 // 命令寄存器3 #define REG_CAN_SR 0xA002 // 状态寄存器4 #define REG_CAN_IR 0xA003 // 中断寄存器5 #define REG_CAN_IER0xA004// 中断使能寄存器6......程序清单3.2 采用基地址加偏移量方式的寄存器定义7 #define REG_BASE_ADD0xA000// SJA1000寄存器基地址 8 #defineREG_CAN_MOD 0x00 // 内部控制寄存器 9 #define REG_CAN_CMR 0x01 // 命令寄存器 10 #define REG_CAN_SR 0x02 // 状态寄存器 11 #define REG_CAN_IR 0x03 // 中断寄存器 12 #define REG_CAN_IER0x04// 中断使能寄存器13......通常MCU 的总线上会挂载很多器件,除了SJA1000外,可能还有RAM 和ROM 等器件。
CAN-bus现场总线基础教程【第6章】CAN总线应用层协议(CANopen)-CANopen从站 IO设备设计(25)
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第6章 CAN 总线应用层协议——CANopen1.1 CANopen 从站 I/O 设备设计上一小节介绍了一款小型的CANopen 嵌入式从站转换模块,本节将介绍一种基于该模块如何快速实现I/O 设备的应用。
1.1.1 XGate-COP10简介XGate-COP10是一款CANopen 从站协议转换模块,内部集成了CANopen 从站协议栈,遵循CiA DS301 V4.02进行设计,其集成的功能包括了网络管理(NMT )、服务数据(SDO )、过程数据(PDO )、错误管理等功能。
同时也遵循了DS303-3指示灯以及DS305层设置(LSS )等相关协议,使模块功能更强大。
所有的功能均通过CiA 的一致性测试软件的测试,保证了与其它CANopen 设备的良好的兼容性。
XGate-COP10为DIP24封装,拥有较小的占位面积(6cm 2),使其更容易集成到用户设备中。
其硬件设计也比较简单,设计简图如图6.1所示。
图6.1 XGate-COP10设计简图1.1.2 通用I/O 设备底板硬件设计本设计实现8路数字量输入和8路数字量输出的通用设备。
在本小节中主要介绍如何设计合适的XGate-COP10的底板。
由于实现的是通用I/O 数字量的输入输出,功能相对来说比较简单,因此控制器我们选择经典的51系列单片机P89V51RD2,该芯片拥有1KB 的RAM 以及32KB 的Flash.。
图6.2所示为XGate-COP10与控制器之间的连接原理图,通常情况下只需要连接通信接口(UART )和XGate-COP10的中断输出信号即可与模块进行正常的通信。
在特殊情况下,可连接模块的复位线至控制器的I/O 端口,以方便控制XGate-COP10复位。
文库资料©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.图6.2 控制器与XGate-COP10连接图6.3所示为XGate-COP10的CAN 总线连接原理图,为了使设计更加的简单可靠,CAN 收发器使用了CTM8251T 模块,该模块集成了CAN 收发器、电气隔离、TVS 总线保护等措施,从而使设备更加稳定可靠,XGate-COP10采用拨码开关设定其波特率及节点ID 。
CAN-bus现场总线基础教程【第2章】CAN节点设计-CAN-bus节点电路(6)
第2章CAN节点设计1.1 CAN-bus节点电路CAN节点硬件电路由CAN收发器、CAN控制器、MCU以及功能电路几个部分组成。
在实际电路设计中,这些电路的互连关系如框详见图2.1。
图2.1 CAN节点电路连接关系CAN控制器是CAN-bus设备的核心元件,集成了CAN规范中数据链路层的全部功能,能够自动完成CAN-bus协议的解析。
Intel、NXP、MicroChip等半导体厂商都提供专用CAN控制器芯片,其中NXP的SJA1000是市场应用最广泛的CAN控制器型号。
除了独立的CAN控制器,现在有很多公司推出的某些型号的MCU也集成了CAN控制器,例如NXP的LPC11C14。
CAN收发器就是将CAN控制器的逻辑电平转换成CAN总线差分电平的电平转换器。
现在常用的CAN收发器方案有两种,一种是采用CAN收发IC,另一种是使用CAN隔离收发模块。
在CAN收发器电路设计中使用CAN收发IC会比使用CAN隔离收发器模块的电路复杂,因为IC不具备电气隔离和电源隔离的功能,为了设计出安全可靠的CAN收发电路,这时就需要单独设计电气隔离和电源隔离电路去实现信号隔离和电源隔离。
CAN隔离收发模块是集成各种隔离功能的CAN隔离收发器,具有体积小、隔离能力强、使用方便等优势,是设计高可靠性CAN收发器电路的最佳选择。
在CAN节点电路中,MCU主要用于完成CAN控制器和功能电路的控制。
MCU能够在CAN节点启动的时候初始化CAN控制器的工作参数,在CAN总线通信过程中通过CAN控制器读取和发送CAN帧,在CAN控制器发生中断时处理CAN控制器的中断异常,并根据接收到的数据输出对应的一些控制信号,驱动功能电路完成预定的功能。
1.1.1 CAN控制器CAN控制器集成了CAN规范中数据链路层的全部功能,主要包括位时序逻辑、错误管理逻辑、位流处理器、接收滤波器、收发缓冲器以及接口控制逻辑,其中位时序逻辑、错误管理逻辑和位流处理器组成了CAN核心,CAN控制器的组成结构如图2.2所示。
CAN-bus现场总线基础教程【第1章】现场总线CAN-bus-CAN-bu应用层(4)
第1章现场总线CAN-bus1.1 CAN-bus应用层物理层和数据链路层就像我们生活中完善的邮政系统,只要把信件交给他们,就能完成信息的收发和传递。
而这些数据是什么用途及含义就属于应用层的工作了,就像邮递员并不关心信件内容是家书还是合同。
而数据的含义只有应用层清楚,简单的说应用层就是规定设备的工作流程和数据的具体含义。
相对于CAN-bus物理层与数据链路层的规范,应用层的种类就眼花缭乱了。
全球许多著名厂商和协会组织针对各种应用领域制定了各具特色的应用层协议。
其中在工业场合影响力较大的有CiA组织推广的CANopen协议和由ODV A组织推广的Devicenet协议。
例如CANopen协议对设备上电过程、设备参数配置、I/O数据通信机制、错误处理机制,甚至连设备上LED指示灯如果工作都做了详细规定。
符合协议规范的产品是可以互相替换的。
用户在选择现场总线产品时,除了考虑设备功能和性能外,很重要的选择依据就是该设备符合哪种协议规范。
因为一类应用系统中会存在各种功能的节点设备,而生产这些设备的厂家也很多。
如果每个厂家都按自己定义的应用层标准来生产设备,那客户一旦选用A厂家的产品后就不能使用其它厂家的产品来替换了,而且要增加A厂家所没有的功能节点时将非常麻烦,甚至无法添加。
例如某个用户使用了A厂家的电机驱动系统和PLC等设备组建了一条饮料灌装生产线,在使用一段时间后准备进行技术改造,想安装视频传感器等设备来提升生产效率,但是因为A 厂家不生产这类视频采集设备,加上其网络的应用层通信协议不公开。
该用户此时的处境就非常不妙了,他要么把整个生产线换掉,要么等A厂家研制出用户需要的产品。
虽然应用层协议种类很多,但它们都有一些共性,总的来说现场总线网络中存在着以下几类数据。
(1)实时数据,主要包括了设备的工作数据,例如电机驱动器中的位置数据、转矩数据等,它们具有很高的优先级,对传递时间也有要求。
这类数据是现场总线应用中最主要的数据类型。
CAN-bus现场总线基础教程【第2章】CAN节点设计-概述(5)
第2章CAN节点设计经过前面的学习,我们对CAN-bus的特性已经有了初步的了解。
但是纸上得来终觉浅,从下面开始我们将以实战的形式,与大家一起来学习CAN-bus的应用方法。
我们不妨从最底层的信号开始,由浅入深由易到难逐层往上,最终通过两个CAN-bus设备组成通信网络,实现相应的控制功能。
在实战之前,我们将从了解CAN-bus网络的特点和一个独立CAN节点的基本结构开始,加深对CAN的认识。
1.1 概述1.1.1 CAN网络与节点CAN-bus网络是一种总线型结构的通信网络,网络中的所有CAN节点都连接到同一通讯电缆上,每个CAN节点都实现一种特定的功能,比如,采集传感器的信号或控制外部设备。
CAN节点之间通过相同的语言(CAN应用层协议)传递信息,最终达到各个设备协调一致地工作的目的,典型的CAN-bus网络结构详见图2.1。
图2.1 CAN网络结构在CAN-bus网络中,不同的CAN节点可能具有不同的功能,但它们都具有相同的硬件和软件结构,详见图2.2。
图2.2 CAN节点结构通过图2.2我们可以了解到一个CAN-bus节点设备至少由以下3个部分组成:●CAN控制器/收发器与ISO/OSI模型中的数据链路层/物理层相对应,完成CAN 报文的收发;●节点由完成具体的工作的功能电路组成,比如信号采集或控制外设;●控制器与应用软件完成各个功能部件的协调,按照统一的CAN报文使用规则解释CAN报文,并将数据传递给功能电路实现相应的控制,比如,将当前采集到的数据发送给请求者或根据请求报文控制输出。
1.1.2 CAN硬件驱动CAN控制器实现CAN-bus协议,将CAN报文转换为位流并通过CAN收发器发送到CAN 总线上,或将从总线上接收到的位流转换为CAN报文。
随着CAN-bus技术应用的不断发展,CAN-bus得到了众多芯片厂商的支持,市面上出现了多种不同类型的CAN控制器,比如,并行总线接口的SJA1000与大量在内部集成CAN控制器的微控制器,其典型代表就是NXP的LPC11C系列ARM。
CAN-bus现场总线基础教程【第1章】现场总线CAN-bus-CAN-bu数据链路层(3)
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第1章 现场总线CAN-bus1.1 CAN-bus 数据链路层我们已经知道物理层实现了信号的传输,那么信号是如何运送数据的、多个节点同时发送时怎么办、如何保证数据的可靠性、发生错误时怎么办、以及发送与接收目标如何选择呢?这些工作都是在数据链路层完成的。
1.1.1 CAN 帧类型CAN-bus 通信是通过五种类型的帧进行的,它们分别是数据帧、远程帧、错误帧、过载帧和帧间隔,其种类及用途如表1.1所示。
表1.1 帧的种类及用途1.1.2 数据帧CAN-bus 的用途就是在各个节点之间建立起交换数据的桥梁,数据帧就像卡车一样,承担了运送数据的功能。
目前使用最广泛的CAN-bus 标准是V2.0版本,该标准在发布之初就制定了A 和B 两部分,称为CAN2.0A 和CAN2.0B 。
这两个部分的主要区别是仲裁区域的ID 码长度不同,CAN2.0A 为11位ID ,称为标准帧。
CAN2.0B 为29位ID ,称为扩展帧。
这两种标准的设备一般不会在同一个物理网络中混合使用。
数据帧由7个段组成,帧结构如图1.1所示,各段的结构如图1.2所示,作用如表1.2所示。
帧起始控制段数据段CRC 段应答段帧结束图1.1 数据帧结构文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.图1.2 数据帧各段组成 表1.2 数据帧各段功能1. 帧起始表示数据帧的开始,由单个显性位构成,在总线空闲时才允许发送。
所有节点必须同步于首先开始发送帧的起始位。
2. 仲裁段我们知道一个CAN-bus 线缆上会挂接很多CAN 节点,它们都可以主动发送报文。
我们可以想象如果在同一时刻有多个节点同时发送数据帧,则可能出现数据互相干扰的问题,就像一条铁轨不能在同一时刻跑多列火车一样。
CAN-bus现场总线基础教程【第7章】CAN总线应用层协议(DeviceNet)-DeviceNet传感器从站设备的开发(29)
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第7章 CAN 总线应用层协议——DeviceNet1.1 DeviceNet 传感器从站设备的开发传感器设备是工业自动化、仪器仪表及其它的生产活动中使用最广泛的设备之一。
使用传感器也是获取自然和生产领域中信息的主要途径与手段。
早期传感器设备都是直接与控制器进行连接,并且各个传感器设备之间无法进行通信。
在一个庞大的控制系统中,可能拥有各种各样的传感器设备,采用传统的点对点通信方式,会导致整个系统布线复杂、运行效率低、维护成本高等缺点。
CAN 总线的推出使得系统布线得到最大程度的改善,基于CAN 总线应用层的DeviceNet协议不仅改变了设备与控制系统之间的通信方式,更增加了设备级的诊断功能。
1.1.1 XGate-DVN10简介广州致远电子股份有限公司长期致力于DeviceNet 产品的研发,推出了一款非常易于使用、稳定可靠的DeviceNet 从站协议转换模块——XGate-DVN10。
作为通用DeviceNet 从站设备,其内部已经集成了从站协议栈代码,且所有功能通过ODVA 的一致性测试软件(A21)的测试,保证了与其它DeviceNet 设备的良好兼容性。
XGate-DVN10为DIP24封装,拥有较小的占位面积(6cm 2),使其更容易集成到用户设备中。
其硬件设计比较简单,图7.1所示为XGate-DVN10应用简图,用户只需要将模块嵌入到传感器设备中,与CPU 的串口连接便可完成设计。
图7.1 XGate 设计框图本小节将介绍如何利用XGate-DVN10模块设计一款基于DeviceNet 从站协议的多功能传感器模块。
1.1.2 传感器模块硬件设计本节所设计的传感器系统包含了4路温度和8路霍尔传感器信号。
温度传感器使用线性度较好的模拟温度传感器,并采用12位的模拟数字转换芯片(A/D )对信号进行采集。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
更多详细信息请查询
如果您有任何意见或建议,可发送邮件或关注新浪微博“ZLG-周立功”, 作者期待与您交流。
zlg3@
ZLG-周立功
通信速率最高1Mbps 通信距离最远10km 无损位仲裁机制
多主结构 ……
近年来,CAN-bus相关芯片价格 持续下降。另外,许多 MCU已集成CAN 控制器,例如:
项目驱这正是我们推出《项目驱动——CAN-bus现场总线基础教程》的原因所在。
理论学习与动手 实践并重。
CAN节点应用程序设计与组网 自定义一个CAN-bus应用层协议 CAN控制器SJA1000驱动程序设计 介绍一个CAN节点完整的硬件设计 介绍现场总线概念和CAN-bus规范
阅读提示与联系方式
CAN-bus是一项实用性很强的技术,要掌握它就必须动手实践。
CAN-bus是一项仍在不断发展的技术,需通过网络关注其发展动态, 包括新的标准、新的器件、新的应用领域和新的调试方法等。
前
言
历久弥新的CAN-bus
20世纪90年代,为解决汽车电气设备通信问题,
它就是
自问世以来,它以
一种极具生命力的现场总线就此诞生。
高效
CAN-bus 经济 可靠
灵活
等诸多优点在各行各业大展身手。
历久弥新的CAN-bus
CAN-bus有许多先进特性: 许多国际组织或公司机构推出基于 CAN-bus的高层协议:
项目驱动的概念
以一个多节点CAN-bus通信网络的实现 为主题来介绍CAN-bus各方面的知识。
从宏观概念到微观操作实践。
从自定义协议到国际主流标准协议。
从硬件设计到软件分层设计。
循序渐进,深入浅出。
本书章节安排
深入理解掌握 CAN-bus
从底层硬件到上层协议软件, 自底而上,循序渐进。
CAN总线设备与调试工具 DeviceNet简介与快速实现组网 CANopen简介与快速实现组网