黄育和 佘鹏 张立平
(广东省科学院自动化工程研制中心)
控制器局域网(Control Area Network,CAN)现场总线具有优先抢占总线仲裁的优势。其可靠性高、开放性强、组网灵活、成本较低、具有良好的实时性及传输防错能力,真正实现了全数字化的双向传输。利用CAN总线更容易实现“集中监控,分散控制”这一现代工业的新型控制方式[1]。
CAN总线具有许多突出的性能优点[2,3]。CAN协议建立在 ISO开放系统互联模型的基础上,但只取OSI模型结构的物理层、数据链路层和应用层。通常,CAN控制器负责物理层和数据链路层,而应用较广泛的应用层协议有CANopen、DeviceNet等。CANopen由CiA(CAN in Automation)组织制定和发布,是一个基于CAL的子协议。其采用面向对象的思想设计,具有很好的模块化特性和很强的适应性,不仅定义了应用层和通信子协议,而且为可编程系统、不同设备、接口、应用子协议定义了大量的规范,遵循该规范开发的设备能够实现不同产品间的互连、互操作[4~6]。另外,CANopen协议是完全免费开放的,用户开发此类产品,无需支付版税。随着对CANopen协议研究的深入,其应用越来越广泛[7]。依据CiA规范,国内厂家开发了基于 CANopen协议的伺服驱动器、PLC、变频器等产品,如:深圳步进科技有限公司的KINCO ED系列伺服驱动器;和利时公司的PLC产品 HOLLiAS-LEC G3系列可编程控制器;台达VFD-E-C系列变频器。
温度既是自然界中一个重要的模拟量,又是科学研究中一个重要的基本物理量。同时温度又是一个与人们生活环境、生产活动密切相关的量,在很多情况下都需要对温度进行准确测量,以满足各种要求[8]。温度监测在土木建筑施工、储粮仓库、智能楼宇、空调系统及其它工农业生产中有着广泛的应用。随着CANopen技术的普及应用,研制基于CANopen协议的多通道温度测量模块有利于提高自动化领域国产设备的占有率,为应用CAN总线的系统提供必备的硬件基础设备。同时随着CANopen总线系统广泛应用于工业控制系统,该类设备具有一定的市场前景。
多通道温度测量模块是嵌入式系统的一个典型应用,其硬件电路主要包括:人机接口、温度测量接口、CAN接口、联动输出、电源变换、单片机及其外围辅助电路,如图1所示。
图1 多通道温度测量模块硬件结构
人机接口实现的主要功能包括:各测量点温度值显示、模块系统参数配置操作与显示及CANopen节点工作状态指示。如图1所示,模块的人机接口电路由按键、液晶显示屏(CM19264)和发光二极管组成。
联动输出由继电器及其驱动电路组成,主要实现模块所测温度超出用户预设范围时输出报警。电源变换电路则为各功能电路提供电源,具体包括支持MCU、数字温度传感器、液晶显示屏的5V电源、CAN总线侧隔离电源、继电器24V工作电源等。
2.2.1 嵌入式微控制器的选型
图1的硬件结构中,除CAN通讯以外,其它应用(如温度传感器接口、LCD接口等)对嵌入式微处理器的端口均无特殊要求。文献[9]、[10]指出:CAN嵌入式节点电路设计中,可采用独立控制器+MCU或者直接使用内嵌CAN控制器的微处理器这两种设计方案。同时,文献[9]认为内嵌CAN控制器的微控制器设计方案是CAN智能节点设计的首选方案。
综合分析多通道温度测量模块的功能需求,结合以往开发和应用经验,设计中嵌入式微控制器选用Atmel公司的单片机AT90CAN128。关于该微处理器性能、功能及相关应用,文献[10]~[13]有详细描述。
2.2.2 温度测量器件的选用
按照输出信号的模式,集成温度传感器可大致划分为三大类:模拟式、逻辑输出式和数字式[8]。模拟式集成温度传感器即传统的模拟温度传感器(如热电偶),在一定温度范围内线性不好,需进行冷端或引线补偿,热惯性大且响应时间长;逻辑输出式集成温度传感器适用于无需严格测量温度值,只注重温度是否超出设定范围的场合;而数字式集成温度传感器在20世纪90年代中期出现,是微电子技术、计算机技术和自动测试技术的结晶。目前市场上有多种数字温度传感器系列产品可供选择。
模块采用1-Wire总线器件DS18B20实现多点温度测量功能。DS18B20是美国DALLAS公司生产的数字温度传感器,测温范围为-55℃~125℃,在-10℃~85℃范围时精度达±0.5℃;转换时间为750ms[14]。据文献[15]~[19]的报导,DS18B20在国内许多设备和场合得到广泛应用。尽管一条线上允许并接多个DS18B20,但在开发中,设计了4路DS18B20数字温度传感器接口(每路允许接入4只传感器),以适用不同应用的需求。
CAN接口与驱动电路设计的关键是CAN总线驱动芯片选型和隔离电路设计。设计中选用恩智浦(NXP)公司的TJA1040T芯片作为CAN驱动器。隔离电路方面,文献[12]、[13]与[22]介绍了以光电耦合器为核心的电路,此类电路存在元器件较多、光耦电流传输比离散大、电路匹配电阻调整困难等缺点。
模块设计采用Analog Devices公司的iCoupler磁耦隔离技术的双通道数字隔离器ADuM1201。与光电耦合器比较,ADuM1201具有更高的数据传输速率、时序精度和瞬态共模抑制能力,更低的功耗和更小的体积,并消除了光电耦合器不稳定的电流传输比、非线性传输、温度和使用寿命等方面的问题[23]。CAN接口驱动电路如图2 所示。
嵌入式程序开发在AVR Studio V4.18集成环境下进行,由LCD显示处理、按键操作处理、数字温度传感器处理、CANopen协议实现程序、LED指示程序和继电器输出处理模块组成,其结构如图3 所示。
LCD显示和按键处理程序实现的功能包括:参数设置/查询、工作状态、各传感器温度显示、显示界面切换等。其中模块参数包含 CANopen工作参数、DS18B20逻辑编号、继电器输出链接关系设定等。
图2 CAN接口驱动电路
数字温度传感器处理程序实现 DS18B20驱动和数据处理。其中 DS18B20驱动程序在文献[16]~[21]均有介绍。设计中,针对4路端口使用同一MCU定时器来产生DS18B20通信所需的时序波形。数字传感器转换时间为 750ms,若 MCU顺序依次与DS18B20进行通信,则整个周期达十多秒,显然满足不了模块对温度动态刷新的要求。因此,在程序设计时采用了如下策略:利用传感器提供的搜索(Skip ROM)指令,先依次启动4路端口所有DS18B20进行温度转换,延时750ms后,通过匹配ROM指令再逐一地读回每个传感器的温度数据。这样,模块每一个温度测量刷新时间都小于1秒。
图3 多通道温度测量模块软件结构
LED状态显示程序:依据CiA DR 303规范,将CANopen节点的状态在运行、状态和错误指示灯上以常亮、常灭或不同频率闪烁的方式显示。
联动继电器输出处理程序:依据参数配置,某组(或某个)温度传感器逻辑编号及其温度范围关系驱动对应的继电器,如继电器A和逻辑1#、2#传感器建立链接关系,且设定温度超过50℃时报警,则1#或2#传感器温度超过50℃时,继电器A线圈得电。
如图3 所示,CANopen协议处理程序包括:CAN底层驱动、网络管理(Network Management,NMT)、服务对象数据(Service Data Object,SDO)和过程数据对象(Process Data Object,PDO)处理程序。
实现CANopen协议嵌入式系统软件的方法有:① 根据嵌入式控制器选型购买商品化的软件协议栈;② 利用支持CAN的通讯处理器自行开发应用软件。采用购买“商业CANopen协议栈”的方案尚存在不少缺点。原则上,商业解决方案的开发目标之一是可移植性,所提供的协议栈通常能在很宽的目标系统平台上运行,包括高端的PC到低端的8位单片机。因此,软件在接口和资源上进行一些妥协,增加了不少额外的开销。从技术积累角度出发,多通道温度测量模块研发中采用自行开发CANopen协议从节点软件的方案。协议软件实现采用分层法,将程序模块分为协议层、通信层和应用层;并将这一思想贯穿于设计、测试和验证的每一个阶段。
CANopen协议节点嵌入式软件设计主要依据CiA DS301(V4.02)和DSP 302(V3.3)来实现。对于 NMT、SPD 和 PDO 等概念,文献[6]、[7]、[22]与[25]均有介绍。采用USBCAN-Ⅱ双路智能CAN接口模块与ZLG CANTEST通用测试软件进行测试,实现并验证的CANopen通讯功能包括:① NMT管理功能:最小引导功能,节点处于NMT从节点角色,根据配置确定是否上电自引导、是否启动心跳帧等;② SDO通讯:1个接收服务数据对象(RSDO)、1个发送服务对象(TSDO),实现主节点对本模块的集成配置功能;③ PDO通讯:1个接收过程数据对象(RPDO)用于模块联动输出的复位或强制输出;4个发送过程数据对象(TPDO)分别用于传送模块 4路端口测量的温度值。
多通道温度测量模块以AVR微控制器为核心器件,设计具有CAN接口的嵌入式硬件系统;依据CiA规范设计嵌入式软件,实现了CANopen协议从节点通讯功能。虽然模块研发过程中对CANopen通讯进行了多角度的测试,但依据CiA规范:CANopen节点通讯功能需要委托 CiA认可的第三方检验机构验证,其检验费用昂贵。下一步的工作是:在若干场合,多通道温度测量模块与其它基于CANopen协议的智能设备或仪表(如变频器、流量计等)集成于一个总线系统,从而在应用现场综合检验其功能和性能。
[1]潘明,张密,余臣,等.基于 CAN 总线的分布式红外测量系统[J].中国测试技术,2008,34(5):49-51.
[2]史久根,张培仁,陈真勇.CAN 现场总线系统设计技术[M].北京:国防工业出版社,2004:20-22.
[3]Robert Bosch GmbH. CAN Specification Version 2.0[EB/OL].1991:www.gaw.ru/data/Interface/CAN_BUS.PDF.
[4]CAN in Automation. CANopen Application Layer and communication Profile [EB/OL]. CiA Draft Standard 301,Version 4.02,2002: http://www.can-cia.org/index.php?id=specifications.
[5]Kuang Fuhua,Xu Bugong. An Implementation of CANopen at Water Electrolysis Hydrogen Generation Station[J].Proceedings of 2010 International Colloquium on Computing,Comunication,Control,and Management (CCCM2010)2010,(3):738-741.
[6]邓遵义,宁祎.CANopen协议剖析及其在伺服电机控制中的实现[J].机电工程,2007,(24)8:39-41.
[7]蒋智康,宋春宁,宋绍剑.PIC18单片机的CANopen通信协议[J].单片机与嵌入式系统应用,2008,(9):24-27.
[8]张萌,和湘,等.单片机应用系统开发综合实例[M].北京:清华大学出版社,2007.
[9]黄育和,张立平,徐永谦.CAN总线智能节点设计硬件选型问题的探讨[J].仪器仪表标准化与计量,2007,(2):29-32.
[10]王治国,高玉峰,刘亚龙,等.AVR单片机集成CAN总线控制器分析与应用[J].电子产品世界,2011,18(6):34-37.
[11]江杰,范宇.基于单片机的某车型CAN总线系统设计[J].微计算机信息,2006,22(11-2):34-35.
[12]李积英.基于AT90CAN128单片机CAN总线实现方案的研究[J].兰州交通大学学报(自然科学版),2007,26(1):32-34.
[13]魏敬宣,刘立,高鹏,等.基于AT90CAN128的车用CAN网络节点的研究与实现[J].测控技术,2007,26(2):57-59.
[14]Dallas Semiconductor. DS18B20 Programmable Resolution 1-Wire Digital Thermometer. [EB/OL]. http: / /datasheets.maxim-ic.com/en /ds /DS18B20.pdf.
[15]黄育和,程韬波.基于Modbus RTU协议的数字智能模块的设计[J].工程技术,2007,36(5):38-40.
[16]龚志勇,程远,勾勇华,等.采用DS18B20作温度补偿的超声波液位计[J].测控技术,2004,23(11),6-7.
[17]沙占友.传感器原理与应用[M].北京:机械工业出版社,2002.
[18]宋炳雨,高松,钟磊,等.DS12B20温度传感器在电动汽车电池管理系统中的应用[J].山东理工大学学报(自然科学版),2010,24(5):82-85.
[19]宋亚伟,李恒宗.基于 DS18B20的温度采集控制系统[J].机电工程技术,2008,37(9):89-91.
[20]江太辉,邓展威.DS18B20数字式温度传感器的特性与应用[J].电子技术,2003,30(12):46-49.
[21]王经卓.单总线温度监测网络的设计与实现[J].微计算机信息,2006,22(3-1):156-158.
[22]刘冬梅,王清阳,胥布工.CANopen在工业流水线控制系统仿真的研究[J].计算机测量与控制,2007,15(2):195-197.
[23]魏炜,黄成军,沈昊,等.数字隔离器及其在高速数据采集系统中的应用[J].工业控制计算机,2007,20(2):17-18.
[24]李英,徐钊.采用ADuM1201的CAN总线隔离方法[J].单片机与嵌入式系统应用,2006,(4):45-47.
[25]邓遵义,宁祎.基于 CANopen协议的主节点通讯实现[J].微计算机信息,2008,24(8-2):62-63.