基于CAN总线的新型智能阀门电动执行器研究设计

发布时间:2011-04-25  点击数:3104

    本文介绍的基于CAN总线的智能调节阀电动执行器,不仅控制精度高(采用∑-Δ16位模数转换器)、可自动初始化系统参数,而且操作控制方便,通过功能按钮选择相应功能进行设置,通过LCD可准确了解整个设置过程。同时针对阀门流量特性特别设计了阀门工作特性曲线设置功能,可对不同阀门工作特性进行补偿。

一、系统网络体系结构

    CAN总线是众多的现场总线标准之一,以其短报文帧及带有CSMA/CD-AMP (信息优先权及冲突检测的载波监听多路访问)的MAC (媒介访问控制)方式而倍受工业自动化领域中设备互连的厚爱。CAN是一个多主总线网络,网络各节点都有权向其它节点发送信息,其主要特点是:通信速率/距离为5kbps/10km~1Mbps/40m,网络节点数可达110个,每个节点均可主动传输,通信介质可以是双绞线、同轴电缆或光纤;采用点对点、全局广播发送接受数据;可实现全分布式多机系统,且无主从机之分,每点均可主动发送报文,可方便地构成多机备份系统;采用非破坏性总线优先级仲裁技术,当两个节点同时向网上发送信息时,优先级低的节点主动停止发送数据;支持4种报文帧即数据帧、远程帧、出错帧、超载帧,采用短帧结构,传送时间短、受干扰概率低;采用CRC校验及其它校验措施,保证了极低的信息出错率;具有自动关闭功能,当节点错误严重时,自动切断与总线的联系,以免影响系统的工作。

    本系统网络拓扑结构设计为两级总线网络。一级总线主要连接上位机(完成整个系统监控)、单元控制器(完成现场局部分散控制并完成一、二级总线网络间数据的交换);二级总线连接单元控制器、智能执行器、智能I/O节点等现场仪表和设备。本系统设计的用户通信协议,采用CAN2.0B协议,报文结构采用29位标识符扩展帧格式;使CAN网络可实现点对点、一点对多点和广播通信。具体的标识符分配方案见表1。

表1 系统CAN通讯标识符分配方案

ID28 ID27 ID26~ID21
报文属性 一级网络地址
ID20 ID19 ID18~ID13
方向 确认 二级网络地址
ID12~ID5
MCMD大类命令
ID4~ID0 X
子命令SCMD X

    “报文属性”用来设置报文优先级别;“方向”规定报文的发送方向;“确认”表示接收者向发送者发送确认信息;一、二级网络地址用6位ID表示,范围为0~63,“0”用来表示广播地址。“大类命令”是指系统命令分类;“子命令” 是指各类命令中的具体命令。与智能阀门电动执行器有关的典型命令见表2。

表2 智能阀门电动执行器的典型命令

MCMD SCMD 功能描述
0x01 0x01 阀门全关
0x01 0x02 阀门全开
0x05 0x01 量程设置
0x10 0x01 发送状态

二、智能执行器硬件设计

    CAN总线智能电动阀门执行器的原理结构如图1所示。电路主要由六个部分组成:由单片机89C52组成的主机部分;由SJA 1000、82C250、光电隔离电路等组成的CAN总线控制及接口部分;由16位∑-Δ模数转换器AD7705、2.5V基准电压源、I/V转换电路等组成的模拟量输入通道和位置量反馈通道部分;由固态继电器(SSR)、驱动三极管、LED指示灯等组成的电机控制电路;由12位数模转换器TLC5615、V/I转换电路、运算放大器LM258等组成的模拟电流输出电路;由X5045组成的看门狗及E2PROM部分;由128×16点阵LCD、按钮组成的键盘设置及显示部分。

    1、CAN总线控制及接口部分

    CAN总线控制及接口如图2,主要包括独立CAN通信控制器SJA1000、CAN总线收发器82C250和高速光电耦合器6N137。

    微处理器89C52负责SJA1000的初始化,通过控制SJA1000实现数据的接收和发送等通信任务。SJA1000的AD0~AD7连接到89C52的P0口,CS连接到89C52的P2.0,P2.0为0的CPU片外存贮器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读写操作,SJAl000的RD、WR、ALE分别与89C52的对应引脚相连,INT接89C52的INT。89C52也可通过中断方式访问SJA1000。

    为了增强CAN总线节点的抗干扰能力。SJA1000的TX0和RX0并不是直接与82C250的TXD和RXD相连,而是通过高速光祸6N137后与82C250相连,这样就很好地实现了总线上各CAN节点间的电气隔离,不过应该特别说明的一点是,光藕部分电路所采用的两个电源VCC和VDD必须完全隔离,否则采用光耦也就失去了意义。电源的完全隔离可采用小功率电源隔离模块或带多5V隔离输出的开关电源模块实现。这些部分虽然增加了节点的复杂,但是却提高了节点的稳定性和安全性。82C250与CAN总线的接口部分也采用了一定的安全和抗干扰措施。82C250的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线相连,电阻可起到一定的限流作用,保护82C250免受过流的冲击;CANH和CANL与地之间并联了两个30pF的小电容,可以起到滤除总线上的高频干扰和增加一定的防电磁辐射的能力,另外在两根CAN总线接入端与地之间分别反接了一个保护二极管,当CAN总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用;82C250的Rs脚上接有一个斜率电阻,电阻大小可根据总线通讯速度适当调整,一般在16kΩ~140kΩ之间。

    2、模拟量输入通道和位置量反馈通道部分

    主要包括16位∑-Δ模数转换器AD7705、2.5V基准电压源LM285-2.5、120Ω精密电阻、外部位置反馈电位计。

    AD7705是AD公司新推出的16位∑-ΔA/D转换器。器件包括由缓冲器和增益可编程放大器组成的前端模拟调节电路,∑-Δ调制器,可编程数字滤波器等部件。能直接将传感器测量到的多路微小信号进行A/D转换。这种器件还具有高分辨率、宽动态范围、自校准、优良的抗噪声性能以及低电压低功耗等特点,非常适合仪表测量、工业控制等领域的应用。它采用三线串行接口,有两个全差分输入通道,能达到0.003%非线性的16位无误码数据输出,其增益和数据输出更新率均可编程设定,还可选择输入模拟缓冲器以及自校准和系统校准方式。AD7705包括8个寄存器,均通过器件串行口访问。第一个是通信寄存器,它的内容决定下一次操作是对哪一个寄存器进行读操作还是写操作,并控制对哪一个输入通道进行采样。所有与器件的通信都必须先写通信寄存器。上电或复位后,器件默认状态为等待指令数据写入通信寄存器。它的寄存器选择位RS2~ RSO确定下次操作访问哪一个寄存器,而输入通道选择位CH1、CH0则决定对哪一个输入通道进行A/D转换或访问校准数据。第二个是设置寄存器,它是一个可读/写8位寄存器,用于设置工作模式、校准方式、增益等等。第三个是时钟寄存器,它也是一个可读/写的8位寄存器,用于设置有关AD7705运行频率参数和A/D转换输出更新速率。第四个是数据寄存器,它是一个16位只读寄存器,它存放AD7705最新的转换结果。值得注意的是,数据手册上虽然说明它是一个16位的寄存器,但实际上它是由两个8位的存贮单元组成的,输出时MSB在前,如果接收微控制器需要LSB在前,例如8051系列,读取的时候应该分两次读,每次读出8位分别倒序,而不是整个l6位倒序。其它的寄存器分别是测试寄存器、零标度校准寄存器、满标度校准寄存器等,用于测试和存放校准数据,可用来分析噪声和转换误差。

    基准电压源采用LM285-2.5,由于采用的参考电压值为2.5V,故对应模拟量输入通道的20mA电流输入,应采用125Ω精密电阻进行I/V转换。在实际应用中考虑到元件特性的不一致,而其公差为±0.8%,最低击穿电压为2.48V,故选用120精密电阻,通过软件来补偿基准电压值的偏差。实践证明该方法是切实可行的。位置量反馈通道通过外接位置电位器,由基准电压值分压后所得电压值反映阀门位置值。

三、智能执行器软件设计

    软件设计框图如图3,主要包括三个方面:阀门系统电动执行器的控制部分,LCD显示及按钮操作部分,CAN总线通信模块部分。

    电动执行器的控制部分主要实现执行器的位置控制功能,同时要考虑动作延迟时间以及死区大小的设置。具体程序结构如图3。

    LCD显示及按钮操作部分需要实现菜单式设置操作的交互式操作界面及接口。

    SJA1000的初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等,在完成SJA1000的初始化设置以后,SJA1000就可以回到工作状态进行正常的通信任务。以下为CAN初始化程序。

    void init_can(uchar iic,bit wait)//初始化
    { uchar n;
    EA =0;
    if(wait)
    while(!(MOD-CAN&OxO1))//
    MOD_CAN=0xO1;//进入复位状态
    else MOD_CAN =0xO1;
    CDR_CAN=0x88;//选择PeliCAN模式,关闭CLKOUT
    IER_CAN=0x0E;//允许发送/接收/错误报警/溢出中断
    n=cab_baute;
    BTR0_CAN =BUF_BTR0[n]; //n=0,1,2,3分别对应//500K/250K/1 25K/50K
    BTR1_CAN=BUF_BTR1[n];
    OCR_CAN=0xAA;
    /////滤波器1//接收点对点通讯报文
    ACR0_CAN=0xO0; //智能控制器单元地址(6bit)
    ACR1_CAN=can_add; //节点自身地址
    AMR0_CAN =0xFF;
    AMR1_CAN =0x40;
    ////滤波器2 //用于广播报文接收,具有超级优先权
    ACR2_CAN =0xO0;
    ACR3_CAN =0x00:
    AMR2_CAN =0xFF;
    AMR3_CAN =0xC0;
    ECC_CAN =0;
    TXERR_CAN =0;
    RXERR_CAN =0;
    RBSA_CAN =0;
    CMR_CAN =0xOE;
    if(wait)
    while(MOD-CAN&Ox01)
    {MOD-CAN:0x00;}
    else MOD_CAN=0x00;//退出复位状态
    EA =1;
    }

四、结论

    本文采用CAN总线技术,改变了传统的阀门电动执行器控制结构,真正地实现了在生产现场的全分散控制,节约了大量的信号电缆,增加了系统的可靠性;采用CAN总线技术,实现了多主多从的结构,解决了RS_485总线、BITBUS(位总线)等无法解决的多机通信问题。