基于CAN总线的分布式监控系统设计

[复制链接]
chenqiang | 2008-3-30 18:48:00 | 显示全部楼层

基于CAN总线的分布式监控系统设计

引言 

    锅炉是通过燃烧加热工质来提供热能动力的重要设备,同时又是承压、受火、有爆炸危险而又被各行各业普遍使用的特殊设备。所以实时监控锅炉的运行状态,及时、准确地发现锅炉运行中的事故至关重要。传统的锅炉监控系统在测量手段和使用的传感器方面都存在很大的缺陷。以温度检测为例,早期采用的热电偶电桥法,测试过程复杂;而采用集成的半导体模拟温度传感器需要大量的传输电缆,成本高且不易维护。

    CAN总线是一种多主机控制标准,具有物理层和数据链路层的协议、多主节点、无损仲裁、高可靠性及扩充性能好等特点;能有效支持分布式控制系统的串行通信网络。一方面,其通信方式灵活,可实现多主方式工作,还可实现点对点、点对多点等多种数据的收发;另一方面,能在相对较大的距离间进行较高位速率的数据通信。本系统是由上位机对多个并列的承压锅炉监控单元进行控制管理,各监控单元之间要进行快速的数据传输。CAN总线能很好地满足该系统的要求。

1、系统总体结构

    如图1所示,系统由上位监控机、CAN节点0与其他CAN节点组成。其中,上位监控机为PC机,各CAN节点的微控制器为STC89LE54RD+。STC89LE54RD+外接CAN控制器SJA1000,外部设备主要为一线式数字温度计DS1822与压力传感器。

    上位监控机(PC机)采用IBM-PC兼容机,主要负责对系统各节点监控数据的接收与管理、控制命令的发送以及各控制单元动态参数和设备状态的实时显示。

    CAN节点0是一个至关重要的节点,主要有两个功能:一是作为上位机(PC机)与CAN总线的接口,完成CAN总线数据与RS-232接口的数据转换,对智能节点传送过来的数据信息进行缓存,对告警信号进行告警以通知维护人员进行处理;二是负责协调上位机与各个CAN节点的通信,以确保各个节点的监控数据能够快速、准确地传给上位机。

    监控CAN节点为智能型的监控模块,以单片机为核心,主要负责对现场的环境参数和设备状态进行监测,对采集来的数据进行打包处理并将处理过的数字信号通过CAN通信控制器SJA1000送入CAN总线;对系统中各个承压锅炉的压力与温度进行测量。一般情况下,智能监控节点会把监控数据进行存储,定期上传给上位机,并可接受上位机的轮询。若超出正常工作范围,则告警,同时把数据实时向上位机报告。

2、硬件结构的设计

    如图2所示,监控CAN节点以STC89LE54RD十为微控制器,外围模块包括CAN总线接口模块、温度采集模块、压力采集模块、报警模块等。为充分利用STC89LE54RD+的接口资源,除CAN接口模块外,其余模块均采用串行接口器件。这样就减小了电路体积,降低了电路的硬件成本。

    STC89LE54RD+是高速、低功耗且兼容Philips公司51MX内核的新一代单片机,12时钟/机器周期和6时钟/机器周期可反复设置,内部集成有MX810专用复位电路;执行指令的速度为标准8051的12倍,支持在系统编程ISP和在应用编程IAP。

    2.1 CAN总线接口模块

    在图3所示的模块中,选用SJA1000作为CAN控制器,PCA82C250作为CAN控制器接口芯片。SJA1000集成了CAN协议的物理层和数据链路层功能,可进行通信数据的帧处理。PCA82C250是CAN协议控制器和物理总线之间的接口,对总线提供差动发送能力,对CAN控制器提供差动接收能力;增加通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰,实现热防护。把STC89LE54RD+的ALE、RD、WR与SJA1000的ALE、RD、WR相连就构成一个最小系统节点,通过读、写外部数据存储器的形式来访问SJA1000。将SJA1000的TX1脚悬空,RX1引脚接地,形成CAN协议所要求的电平逻辑。

    为进一步提高系统的抗干扰能力,在CAN控制器SJA1000和CAN控制器接口PCA82C250之间加接6N137光电隔离芯片,并采用DC-DC变换器隔离电源。通信信号传输到导线的端点时会发生反射,反射信号会干扰正常信号的传输,因而总线2端两个124 W的电阻(见图1)对匹配总线阻抗起着相当重要的作用;忽略掉它们,会使数据通信的抗干扰性和可靠性大大降低,甚至无法通信。PCA82C250第8脚与地之间的电阻RS称为“斜率电阻”,它的取值决定了系统处于高速工作方式还是斜率控制方式。把该引脚直接与地相连,系统将处于高速工作方式。在这种方式下,为避免射频干扰,使用屏蔽电缆作总线;而在波特率较低、总线较短时,一般采用斜率控制方式,上升和下降的斜率取决于RS的阻值。通常情况下,RS较理想的功率取值范围为15 kW~200 kw。在这种方式下,使用平行线或双绞线作总线。

点击看大图

    2.2 温度测量模块 

    温度测量模块采用美国DalIas公司推出的基于单总线技术的数字温度计芯片DS1822,其连接电路简单,无需外接元件,如图4所示。DS1822采用了一种将温度直接转换为频率的时钟计数法,计数时钟由温度系数很低的振荡器产生,因而非常稳定;而计数的闸门周期则由温度系数很高(即对温度非常敏感)的振荡器决定。

    2.3 压力测量模块

    压力测量模块采用精密智能压力传感器PPT-R。PPT-R是霍尼威尔公司生产的高品质压力传感器,带有不锈钢隔膜,适用于对高温、腐蚀性介质的测量。

    PPT-R智能压力传感器性能优良、组态灵活。PPT-R传感器可对每次测量的压力信号进行积分,积分时间可在8 ms~12 s之间选择。这样可以提高数字控制系统在不同环境条件下的适应性和抗干扰能力。PPT传感器具有优异的重复性和稳定性,其压力信号可由单片机设置为数字输出模式,也可以设置为模拟输出模式。本系统中,将其设置为数字输出模式。

3、软件的设计

    系统软件的设计采用模块化方式,主要分为上位机程序模块、数据采集处理模块和CAN通信模块等。在此主要介绍上位机软件模块与CAN通信模块的设计。

    3.1 上位机软件的设计

    上位机软件以Borland公司推出的C++Builder6为开发平台,具有系统参数设置、监控状态设置、数据发送和接收、节点状态查询、中断接收数据管理等功能。上位机首先对CAN总线及其自身初始化,然后发送命令通知特定的节点向CAN总线上发送数据,通过CAN总线上传到上位机,再由上位机处理。上位机采用定时轮循方式向各个节点发命令,采用中断方式接收数据。

    首先用CreateFile( )打开通信串口,函数引用格式为:

    CreateFile(1pFileName,dwDesiredAccess,dwShare-Mode,lpSecurityAttributes,dwCreationDistribution,dw-FlagsAndAttributes,hTemplateFile);

    然后用BuildCommDCB()和SetCommState( )函数通过通信设备控制块DCB(Device Control Block)设置串口通信参数,如波特率、停止位、数据位、校验位等;

    当有通信事件产生时,就可用函数ReadFile( )和WriteFile( )直接对串口缓冲区进行读写操作了。其引用格式分别为:

    WriteFile(hFile,lpBuffer,nNumberOfBytesToWrite.lpNumberOfBytesWritten,lpOverlapped);

    ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped).

    上位机软件其他功能的实现,可通过调用相应组件的属性进行编程。最后编制的软件界面如图5所示。

点击看大图

    3.2 CAN通信模块设计

    CAN通信程序将采集到的数据发送到CAN控制器,再由CAN控制器将数据发送到CAN总线。

    对于接收数据,系统采用中断方式实现。一旦中断发生,即将接收的数据自动装载到相应的报文寄存器中,此时还可采用屏蔽滤波方式。利用屏蔽滤波寄存器对接收报文的标识符和预先在接收缓冲器初始化时设定的标识符进行有选择的逐位比较。只有标识符匹配的报文才能进入接收缓冲器,那些不符合要求的报文则将被屏蔽于接收缓冲器之外,从而减轻CPU处理报文的负担。此外,不同数据应放人不同的报文寄存器中,其程序流程如图6所示。

结语

    本系统采用了lBM-PC兼容机、单片机和SJA1000组成二级控制系统.实现了一体化的操作,解决了长期以来在承压锅炉监控方面的难题。系统结构简单,操作方便,安全可靠,造价低廉,运行稳定可靠。

 

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则