1、一、现场总线、现场总线系统(FCS)、现场总线智能节点现场总线现场总线是一种工业数据总线,它主要解决现场的智能化仪表、控制器、协作机构等现场设备间的数字通讯以及这些现场设备和高级控制系统之间的信息传递问题。近年来,国际上形成了多种成熟的现场总线,较为著名的有过程现场总线 PROFIBUS(Process Fieldbus)、基金会现场总线 FF(Foundation Fieldbus)、控制器局域网现场总线 CANbus(Control Area Network)、可寻址远程传感器数据通路(HART)和局部操作网络(LONWORKS)。从资料分析和应用实践来看,FF、LONWORKS 或 HA
2、RT 与国内的技术状况和承受能力有一定距离。CAN 总线更适合我国国情,其通信芯片价格较为低廉。本项目研制的智能节点就采用了 CAN 总线技术。CAN 总线是德国 BOSCH 公司从 80 年代初为解决现代汽车中众多的控制与测量仪器之间的数据交换而开发的一种串行数据通信协议。他是一种多主总线,通信介质可以使双绞线、同轴电缆和光导纤维。通信速率可达 1Mbps 。归纳起来,CAN 总线主要有以下特点:(1) 、网络中任一节点均可作为主节点,主动发送数据。解决了许多传统总线的从节点无法主动向其他节点发送数据的难题,给用户的系统设计提供了极大的灵活性。(2) 、CAN 网络中节点可分优先权满足不同要
3、求。(3) 、抗干扰能力强,速度快,且工程简单,普通双绞线 40 米时可达 1Mbps 。(4) 、调试维护方便。(5) 、CAN 用户可以定义自己的 CAN 语言,即子层数据协议,然而这个协议需遵守 ISO/OSI参考模型的第 7 层(应用层)标准。当然,用户也可以使用标准的 CAN 子层数据协议,如工业标准 CAN 协议 Allen-Bradleys DEVICE net ,直接利用它们进行方案开发,通过这些数据协议,建立了应用层与物理层之间的联系。(6) 、CAN 协议采用 CRC 校样并可提供相应的错误处理功能,保证数据的可靠性。CAN 总线是基于发送报文的编码,而不是对 CAN 控制
4、节点进行编码,故增添或删减 CAN 上的控制节点不会对系统造成太大的影响。本文结合作者工作中的体会,首先介绍了 CAN 协议的有关内容,接着,以 SJA1000 为例介绍如何建立简单的通信,并给出了它的软硬件设计,最后,探讨了应用中对 CAN 控制器进行初始化的一些问题。CAN 协议(1) 、CAN 报文格式CAN 系统中,数据在节点间发送和接收以 4 种不同类型的帧(数据帧、远程帧、出错帧、超载帧)出现。其中最常见的是数据帧和远程帧。每种帧有其相应的帧格式。CAN 控制节点发送数据时,SJA1000 的 TX0 脚输出位序列。用逻辑分析仪捕捉了一个数据帧,它由 7种位场构成:帧起始、仲裁场、
5、控制场、数据场、校验场、应答场和帧结束。数据帧结构帧起始(SOF) ,包含一个显性位,用于硬同步。仲裁场(ARBITRATIONFIELD) ,包含 11个报文标识位和 1 个 RTR 位。报文标识位的高 7 位不能全为“1” ,RTR 位用以区分数据帧和远程帧,数据帧为“0” ,远程帧为“1” ,这 12 位提供报文的优先权。总线通过这 12 位进行总线仲裁,数越小,优先权越高。控制场(CONTROLFIELD) ,包含 2 位备用位和 4 位数据长度码。数据场(DATAFIELD) 。循环冗余 CRC 校验场(CRCFIELD) ,包含 15 位CRC 序列和 1 位界定符(隐性位“1”
6、) 。应答场(ACKFIELD) ,包含应答间隙和应答界定符各 1 位,应答间隙为隐性位。CAN 总线上所有收到正确报文的 CAN 控制器将隐性位改为显性位,发送者借此确认它已发送完一条完整和正确的消息。若报文有误,或被仲裁退出(由于优先级较低) ,发送者将会重发报文。帧结束(EOF),包含 7 个隐性位。远程帧用于请求与其有相同标识符的数据帧,它与数据帧的区别在于 RTR 位、数据场。(2) 、CAN 节点状态CAN 总线上的每个节点总处于错误主动(ERRORACTIVE) 、错误被动(ERRORPASSIVE)和脱离总线(BUSOFF)其中的一种状态。CAN 协议定义了 5 种错误类型,并
7、由 CAN 控制器的发送错误寄存器(REC)和接收错误寄存器(TEC)分别对错误进行计数。CAN 节点的状态便由这两个错误寄存器决定。当两个寄存器的值都小于 126 时,节点处于错误主动状态,此时节点遇到错误发送主动错误帧;当其中一个错误寄存器的值大于 126 时,节点处于错误被动状态,此时节点遇到错误发送被动错误帧;当发送寄存器的值大于 255 时,节点处于BUSOFF 状态,此时节点对总线无影响。(3) 、CAN 节点监听总线机制CAN 控制器不停地接收总线上的数据,由此完成对总线的监听。当它发送报文时,接收的数据会被放入接收缓存,并与发送的数据进行比较。若发送的报文标识符是“1” ,接收
8、的是“0”(总线完成“线与”的功能) ,则该节点停止发送,等总线空闲后,重新发送报文。这样来完成总线仲裁。一节点发送完一份报文后,可在该节点的接收缓存找到该报文。该报文会被随后接收的数据覆盖。CAN 节点监听到其他节点发送的错误帧后,会根据自身的状态发送相应的错误帧。故总线上的错误帧是由所有 CAN 节点发送的错误帧叠加而成。CAN通过它来完成局部错误全局化。CAN 卓越的特性,性能的可靠和独特的设计,特别适合工业过程互控设备互联。因此,越来越受工业界重视,并已被公认为是最有前途的现场总线之一。现场总线控制系统 FCS将分散在各个工业现场的智能仪表通过数字现场总线连为一体,并与控制室中的控制器
9、和监视器一起就构成现场总线控制系统 FCS(Fieldbus Control System) 。在 FCS 中,有现场智能仪表完成数据采集、数据处理、控制运算和数据输出等功能。现场智能仪表采集到的数据通过现场总线传到控制室中的控制设备上,控制设备监视各个现场仪表的运行状态,持有各智能仪表上传的数据,同时完成少量现场智能仪表无法完成的高级控制功能。现场总线中的智能仪表因其可在测量数据的基础上完成对工业过程的控制,是控制系统的危险进一步分散。从而体现了“控制分散,危险分散”的设计思想。现场总线智能节点把连在现场总线上的智能仪表称为现场总线智能节点。现场总线智能节点是 FCS 的现场自动化设备,是构
10、成 FCS 的基础。目前现场总线智能节点的特点是采用先进的单片机技术和微电子技术,具有体积小、功耗底、可靠性高的特点,并具有标准化的现场总线接口。二、现场总线智能节点总体方案设计CAN-bus智能节点既有 CPU、内存、接口和通信等数字信号处理,还有非电量信号监测变换和放大的模拟信号处理。由于必须安装在生产现场和生产装置上,而且工作环境十分恶劣,对于易燃易爆场所,必须提供总线供电的本质安全,这就要求微处理器体积小、功能全、性能好、可靠性高、耗电少。另外,现场通信网络分布于生产现场,网络节点具有互换性和互操作性,并有节点构成虚拟控制路,这就要求采用先进的网络技术和分布式数据库系统。本课题研制的智
11、能节点将现场总线技术和智能仪表技术相结合,具有以下主要功能:(1) 、每 5 秒钟采集一次温度、值,并在整点时刻记下温度值,数据保存一个月。温度传感器(如热电耦)感知被测对象温度,温度信号在仪表中经过处理变成电信号,电信号再经A/D 转换器将其变为数字量,然后送入 CPU 中进行后续处理。通过在仪表存储器中预置不同的测温元件的热电特性,可由测得的电信号直接得到被测介质温度。(2) 、测量数据越限报警:根据被测温度正常范围设定温度报警限,当被测数据越过报警限时,智能节点自动给出报警信息,该信息一方面在智能节点本地显示,另一方面传送给上位机。(3) 、故障诊断:智能节点发生故障时,在仪表显示面板上
12、给出故障信息,并把信息传送给上位机。上位机种不仅显示故障类限,还显示故障原因和故障处理意见的详细信息。(4) 、自标定:通过在 A/D 转换器输入端中加零电压及满量程电压。对仪表的零点和满量程自动进行标定。自标定的思路是:当施加某一电压时,在仪表输出端应给出对应于该电压的输出温度值。若输入电压和该电压对应的温度值不吻合,就要自动调整仪表有关系数,直至二者一致。这种标定主要是针对仪表电子线路部分的,目的是减小系统误差,提高系统精度。(5) 、掉电保护:智能仪表用非易失性存储器 NVRAM 作为设定参数和有关测量数据的存储空间,NVRAM 自带锂电池,数据不会因为瞬间掉电而丢失,一旦重新上电,仪表
13、可从存储器中读出保存数据,保证仪表正常工作。(6) 、控制器的执行算法模块主要采用了增量型 PID 控制算法和模块控制算法,PID 控制的参数可预先设定。程序开始运行后,被控量的偏差较大,此时将采用增量型 PID 控制算法根据被测量偏差 e,偏差变化量e 在实时响应曲线中所处的不同阶段自动调节比例,积分,微分系数,实现系数的自寻优,使被控量尽快回到设定值附近;然后,当偏差处于某一预定范围时,将采用模糊控制算法减少控制量对被控量微小变化产生过于灵敏的动作,防止被控量在设定值附近产生振荡现象,实现 PID 控制算法和模糊控制算法的理想结合。上位机智能节点 智能节点CAN 接口 CAN 接口CAN
14、接口三、智能节点的软硬件介绍智能节点设计图 1 智能节点的原理框图智能节点以 Intel 公司 16 位单片机 80C196KC 为核心,80C196 单片机由于采用了寄存器寄存器结构,消除了常规累加器结构所产生的瓶颈效应,提高了操作速度和数据吞吐能力,使最小系统效率高、速度快。同时,该单片机还具有 8 通道的 10 位 A/D 转换器,具有极高的性能价格比。80C196KC 片内 RAM 为 488 字节,他们都可以作为通用寄存器来访问,这使得程序的每一个模块都可以有自己的专用寄存器使用,增强了模块的独立性和抗干扰性。采用 CMOS 工艺,其功耗小。采用 8K 的 EEPROM2816 存放
15、程序,8K 的 RAM6264 存放数据,具有掉电保护功能,采用一片可编程并行接口芯片 8255 来控制显示和键盘。复位电路采用了一片 MAX706,具有低电平复位输出,集强大功能(上电复位、欠电压复位、“看门狗”等)和微小封装(SOT23-5)于一身。CAN 接口电路中采用了 PHILIPS 公司生产的 CAN 总线控制器 82C200(STA1000)和 CAN 接口芯片 82C250。电源方案采用体积小、重量轻的 AC-DC 模块,交流输入范围 105265V,输出两组电源,分别为 Vcc、GND(+5V/250mA)和+5V、GND(+5V/150mA),较简单地完成了电源方案设计。2
16、、智能节点硬件电路设计目前广泛流行的 CAN 总线器件有两大类:一类是独立的 CAN 控制器,如 82C200、SJA1000及 INTEL82526/82527 等;另一类是带有在片 CAN 的微控制器,如 P8XC582 及 16 位微控制器 87C196CA/CB 等。根据当前市场开发工具和课题的实际需要,系统全部智能节点均以INTEL16 位单片机 80C196KC 为核心,选用 SJA1000 作为 CAN 控制器,并使用了 CAN 控制器接口芯片 82C250。CAN 器件与微控制器的连接如图 2 所示。SJA1000:独立式 CAN 控制器,具有 64 字节的 FIFO 作为接收
17、缓存。6N137:高速光隔,最高速度 10MB/S,用于保护 CAN 控制器。硬件电路中使用 82C250 的目的是为了增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI) ,实现热防护等。82C250:CAN 总线收发器,是 CAN 控制器与 CAN 总线的接口器件,对 CAN 总线差分式发送。其 RS 引脚用于选择 82C250 的工作模式:人机接口80C196KC温度检测芯片时钟芯片EEPROM2864CAN控制器NVRAMDS1225收发接口光电隔离高速、斜率控制、等待。RS 脚接地,82C250 处于高速。RS 脚串接一个电阻后再接地,用于控制上升和下降斜率,从而
18、减小射频干扰。RS 脚接高电平,82C250 处于等待,此时发送器关闭,接收器处于低电流工作,可以对 CAN 总线上的显性位做出反应,通知 CPU。CPU 需通过切换 RS 引脚上的电平来重置 82C250 工作模式。若 82C250 处于 CAN 总线的网络终端,总线接口部分需加一个 120 的匹配电阻。1 2 3 4 5 6ABCD654321DCBATitleNumber RevisionSizeBDate: 8-Dec-2001 Sheet of File: C:My Documentsljhwh.Ddb Drawn By:AD61 AD72ALE3 /CS4/RD55 /WR6CLK
19、OUT7 VSS8XTAL19 XTAL210MODE11 VDD312TX013 TX114 VSS3 15/INT 16/RST17VDD2 18RX0 19RX120VSS2 21VDD1 22AD023AD1 24AD2 25AD326AD4 27AD5 2882C200U1GNDR32.2KVCCR210KR110KVCCVCCR9430VCCR52.2K+5+5+5+5GND R847KGNDY?12MC120PC220PR61K R71KVCCR4430VCC8B7E5 C6IN+ 2IN_ 3U26N137VCC8 B7E5 C6IN+ 2IN_ 3U36N137RXD4TXD
20、1REF5GND2VCC 3CH 7CL 6RS 882C250U?COMPONENT_1图 2 CAN 总线接口电路原理图从图中可以看出,硬件电路的设计并不是太困难,但是有几点应引起注意,否则会事倍功半,甚至功亏一篑。(1)总线两端那两个 120 的电阻,对匹配总线阻抗起着相当重要的作用。忽略掉它们,会使数据通信的抗干扰性和可靠性大大降低,甚至无法通信。(2)82C250 第 8 脚与地之间的电阻 RS 称为斜率电阻,它的取值决定了系统处于高速工作方式还是斜率控制方式。把该引脚直接与地相连,系统将处于高速工作方式。在这种方式下,为避免射频干扰,建议使用屏蔽电缆作总线;而在波特率较低、总线较短
21、时,一般采用斜率控制方式,上升和下降的斜率取决于 RS 的阻值。实验数据表明,15K200K 为 RS较理想的取值范围。在这一种方式下,可以使用平行线或双绞线作总线。(3)SJA1000 的 TX1 脚悬空,RX1 引脚的电位必须维持在约 0.5Vcc 上,否则将不能形成CAN 协议所要求的电平逻辑。如果系统传输距离近,环境干扰小,可以不用电流隔离,这样可直接把 82C250 的 VREF 端(约为 0.5Vcc)与 RX1 脚相连,从而简化电路。(4)在系统中,SJA1000 的片选信号一般由地址总线经译码获得,并由此决定出 CAN 控制器各寄存器的地址。(5)当中断允许时,一旦有中断发生,
22、SJA1000 的 16 脚 INT 就会被激活,出现一个由高电平到低电平的跃变,而 80C196KC 的外部中断(P0 7 脚)却需要从低到高的电平变化来激活,因此这之间必须加一个反相器。3、智能节点软件设计上位机功能:时间的显示和调整、显示并存储下位机采集的数据。上位机的时间由时钟芯片 DS1302 提供。美国 Dallas 公司推出的串行接口实时时钟芯片DS1302 可对时钟芯片备份电池进行涓流充电。由于该芯片具有体积小、功耗低、接口容易、占用 CPU 的 I/O 口线少等主要特点,故该芯片可作为实时时钟,广泛应用于智能化仪器仪表种。DS1302 内部具有实时时钟、日历和用户可用的 RA
23、M。通过一个简单的串行接口与微机通讯,可根据月份和闰年的情况自动调整月份的结束日期。时钟可由用户决定是以 24 小时制式或12 小时制式工作。对芯片的所有写入或读出操作都是由命令字节为引导的。单字节读操作每次需 16 个时钟,地址字节在前 8 个时钟周期的上升沿输入,而数据字节在后 8 个时钟周期的下降沿输出。据此编制出了如下的单字节读、写子程序:DS_READ:PUSH CXORB PORT1,#04HANDB PORT1,#0FDHANDB PORT1,#0FBHSCALL DS_WSUBSCALL DS_RSUBORB PORT1,#04HPOP CXRETDS_WRITE:PUSH C
24、XORB PORT1,#04HANDB PORT1,#0FDHANDB PORT1,#0FBHSCALL DS_WSUBLDB AL,AHSCALL DS_WSUBORB PORT1,#04HPOP CXRETDS_WSUB:LDB CL,#08HWLOOP:SHRB AL,#01HJC WSETANDB PORT1,#0FEHSJMP WCTNUWSET:ORB PORT1,#01HWCTNU:ORB PORT1,#02HNOPNOPANDB PORT1,#0FDHDJNZ CL,WLOOPRETDS_RSUB:LDB CL,#08HRLOOP:ORB PORT1,#01HANDB PORT
25、1,#0FDHSHRB AL,#01HJBC PORT1,0,RCTNUORB AL,#80HRCTNU:ORB PORT1,#02HDJNZ CL,RLOOPRET下位机功能:定时采集数据并显示、将数据传给上位机。鉴于篇幅,下面仅给出下位机主程序和时间中断子程序框图(图 3、图 4)NY图 3 下位机主程序框图 图 4 时间中断子程序框图对于初次涉足 CAN 总线系统设计的人员来说,其软件设计要比硬件设计难一些,特别是CAN 总线系统的初始化设计,一开始总感觉无从下手,而这一部分设计不好,系统将不可能正常工作。因此初始化设计是一个难点,又是一个重点。假设 SJA1000 的首地址为6000H
26、,用汇编语言编制的初始化程序如下:INCLUDE“RE96 ASM”CR EQU 6000H ;控制寄存器CMR EQU 6001H ;命令寄存器SR EQU 6002H ;状态寄存器IR EQU 6003H ;中断寄存器ACR EQU 6004H ;验收码寄存器AMR EQU 6005H ;验收屏蔽寄存器BTR0 EQU 6006H ;总线定时寄存器 0BTR1 EQU 6007H ;总线定时寄存器 1OCR EQU 6008H ;输出控制寄存器INIT:DILDB CL,#1BHSTB CL,CR ;开放接收、出错、超载中断,并LDB CL,#01H ;置位复位请求,以开始初始化。开 始自
27、 检8255 初始化SJA1000 初始化设置定时器中断设置外中断等待中断入 口读取转换结果转换完成?送 LED 显示返 回启动 A/D 转换STB CL,ACRLDB CL,#0FEHSTB CL,AMR ;验收滤波LDB CL,#00HSTB CL,BTR0LDB CL,#14HSTB CL,BTR1 ;确定波特率,SJ,位周期宽LDB CL,#0AAH ;度,采样点位置及采样次数STB CL,OCR ;选择输出方式,建立输出驱动器LDB CL,#1AH ;的配置。STB CL,CR ;初始化结束,SJA1000 返回其EI ;正常运行状态从上面的初始化程序不难看出,对 CAN 控制器进行
28、初始化,实际上就是对ACR、AMR、BTR0、BTR1、OCR 这些寄存器进行访问。在这里需要明确的是,只有当控制寄存器 CR 中的复位请求位为高时,访问才被允许,否则既写不进去,也读不出正确的内容。对 CR 进行第一次写操作,要设定将要开放的中断类型,并置位复位请求,允许初始化开始。对 ACR、AMR 进行写操作,要界定对什么样的报文予以接收,因此有时称它们为验收滤波器。当满足以下两个条件之一,并存在空的接收缓存器(RBF)时,完整报文可被正确接收。条件之一:ACR 与报文标识符的高 8 位在 AMR 为“0”的那些位(即相关位)上对应相等。条件之二:AMR=0FFH,即 ACR 的所有位均
29、为不相关(或屏蔽)位。这两个寄存器也是编排标识符的基本依据。对 BTR0 进行操作,可决定波特率预分频器(BRP)和同步跳转宽度(SJ)的数值;对BTR1 进行写操作,可决定位周期的宽度,采样点的位置及在每个采样点进行采样的次数。这两个寄存器的内容,可唯一确定波特率及同步跳转宽度。例如:程序中 BTR0=00H,BTR1=14H,晶振频率为 16MHZ 时,采样时钟周期 TSCL 等于两倍的振荡器时钟周期。波特率刚好为 1MBPS,同步跳转宽度为一个 TSCL。两个寄存器各位功能和相关计算公式见参考文献。但有一点还应引起注意,就是一个系统中的所有节点 BTR0和 BTR1 的内容都应相同,否则
30、将无法进行通信。对 OCR 进行写操作,可确定 CAN 控制器的输出方式,并建立起 CAN 总线要求的电平逻辑所需输出驱动器的配置。对 CR 进行第二次操作主要是清复位请求位,使 SJA1000 返回正常运行状态。成功地初始化 SJA1000 后,系统就可以应用它来传输报文。数据传输的程序不难编写,但有些细节处理不好,系统工作起来还是经常发生问题。作者通过反复调试已把通信部分的程序做成了模块,在实际系统中的应用表明它经受住了考验,运行的相当好。鉴于篇幅,下面仅给出节点请求数据和发送数据子程序框图(图 5、图 6)及中断服务程序框图(图7) 。按照这些框图编制的子程序已用于实际系统,效果良好。正
31、在接收 Y 正在接收 YN NTBF 锁定 N TBF 锁定 NY TBF 释放 Y TBF 释放发送未完成NY图 5 请求数据数据子程序框图 图 6 发送数据子程序框图在节点主程序中,可以根据实际需要,通过调用上面的两个子程序向其它节点发送远程帧来申请数据,也可以直接向需要数据的节点发送数据帧及数据,但在系统软件设计时应该特别注意无论何时 CAN 总线不应被永久性地 100%加载。判 SR.4=1?判 SR.2=1?将远程帧写入 TBF给 CMR 赋值 05H 即申请发送并释放接受缓存器,等候接受判 SR.2=1?判 SR.4=1?将数据帧及数据写入 TBF给 CMR 赋值 05H判 SR.
32、3=1?入 口 入 口返 回返 回出错中断 超载中断接收中断NY图 7 中断服务程序框图元器件清单:单片机 80C196KC3 程序存储器 28C64B3复位芯片 MAX7063 并行接口 82553时钟芯片 DS13021 数据存储器 DS12251CAN 总线控制器 SJA10003 高速光隔 6N1376CAN 控制器接口芯片 82C2503参考资料:1 汪建 .MCS-96 系列单片机原理及应用技术. 华中理工大学出版社2 孙涵芳 .Intel 16 位单片机. 北京航空航天大学出版社3 邬宽明 .CAN 总线原理和应用系统设计. 北京航空航天大学出版社4 周凤余 肖海荣 .CAN 总
33、线系统智能节点设计与实现. 微机算计信息 . 1999 年第15 卷第 6 期5 李继锋 付强 .基于 CAN 总线的分布式温度检测网络设计. 微机算计信息 . 1999年第 15 卷第 6 期中断服务程序入口读 IR 的内容判是何种中断?判 RTR=1?调发送数据子程序接收数据转存数据置位 CMR.2,释放 RBF清楚超载状态,并同时释放 RBF即使 CMR=0CH重新调请求数据子程序延 时返 回6 王明顺 吴省 .可涓流充电的串行实时时钟芯片 DS1302 及应用设计. 电子技术应用 . 1996(10)7 CANbus brings new thinking to the control
34、 of an injection moulding machine Anon Source: British Plastics and Rubber Nov 1998 MCM Publishing p 13-16 0307-6164 In English8 The real time verification when replacing DH plus with DeviceNet for tire conveyor system Park, O.; Park, S.; Park, C. Source: IEEE International Symposium on Industrial E
35、lectronics v 1 Jun 12-16 2001 2001 Sponsored by: IEEE p 160-165 In English9 CANbus and microcontroller use in the BaBar detector at SLAC Anthony, P.L.; Crawley, H.B.; Fischer, P.-A.; McKay, R.L.; Meyer, W.T. Author Affiliation: Stanford Linear Accelerator Cent Source: IEEE Transactions on Nuclear Sc
36、ience 47 2 I Jun 14-Jun 18 1999 2000 IEEE p 166-169 0018-9499 In English10 CANbus-based safety-critical distributed aeroengine control systems architecture demonstrator Thompson, H.A.; Benitez-Perez, H.; Lee, D.; Ramos-Hernandez, D.N.; Fleming, P.J.; Legge, C.G. Author Affiliation: Univ of Sheffield Source: Microprocessors and Microsystems 23 6 1999 Elsevier Science B.V. p 345-355 0141-9331 In English11 Luxury car designers find CANbus an adaptable standard Source: Electronic Product Design v 13 n 11 Nov 1992 p 42 0263-1474 In English