内容 |
1 基于CAN总线技术的分布式机舱监控系统概述 1.1 CAN总线分布式控制系统特点及优越性 现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN(Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络,在工业现场过程控制中,有如下特点: 首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。
其次,CAN总线通过CAN控制器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会出现象在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于"死锁"状态。
而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485所无法比拟的。另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前 CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。
1.2 CAN总线分布式机舱监控系统概述 根据CAN总线的特点,设计了具有双主机热备冗余的全分布式机舱监控报警系统,系统分上下两层,上层位于集控室,采用两台高可靠、高性能的工业控制机构成双机热备系统,下层位于机舱内,由经过特殊设计的各种数据采集模块及输出模块构成,用CAN总线将现场数据采集模块及位于集控室的两台上位机相连,从而构成分布式监控报警系统。同时本系统还通过CAN总线将采集到的数据与状态送到船舶综合监控系统的航行管理微机上进行显示。
2 分布式监控系统研究的主要内容及性能指标 2.1 研制内容 研制插于上位机中的智能型ISA总线CAN通讯卡,板上带有CPU,负责管理CAN总线通讯任务,采用此智能型通讯卡可减小主CPU的负担,卡上实现本系统的CAN总线数据链路层协议。研究机舱监控报警系统上位机软件和双机并联热备系统的实现方法,使系统的各种带有CAN总线接口的现场数据采集单元模块(模拟量输入模块,模拟量输出模块、开关量输入模块、开关量输出模块及数字量输入模块单元)可靠性高、抗震、耐腐蚀。找出适合分布式机舱监控系统的通讯协议。
2.2 性能指标 系统的测量误差要小于5‰;系统报警响应速度满足船舶报警系统的要求,即报警响应时间小于两秒。系统要具有热备能力,当一台主机发生故障(死机或损坏)时,另一台主机能接续不间断运行。且系统操作简单、维护方便,具有直观的人机界面。
3 技术方案、技术措施 3.1 技术方案 机舱监控报警系统的主机采用高性能和高可靠的CPU:Pentium系列的工业控制微机。两台主机构成其热备系统;采用CAN总线构成系统通讯网络;80C196,CAN通讯接口SJA1000等构成现场采集单元模块。采用INTEL 80C196嵌入式微处理器的ISA总线智能CAN通讯卡和SJA1000CAN的控制器。CAN通讯卡采用双口RAM方式与主机交换数据,以加快通讯卡与主机的数据传送速率。主机与各采集模块的通讯软件采用汇编和VC++设计,人机界面采用组态软件FIX设计。
3.2 技术措施 机舱报警系统的关键和难点是实现双机热备冗余,需解决的问题包括双主机的快速无扰动切换、双机运行的协调以及数据的同步问题。一般的备用方式是一台为主机进行正常的监控任务,另一台处于备用状态,当检测到主机故障时自动投入运行,这种方式必然存在着切换延迟等问题。作者利用CAN总线的特点,采用了双机同时运行的备份方式,实现了完全意义上的双机热备。为保持其数据同步及协调运行,减少网络信息流量,不采用由主机对各现场采集模块逐台查询的通讯方式,而是充分利用CAN总线的优点,由各现场节点主动定时向上位机发送采集数据,对报警数据则随时采用高优先权进行优先发送,以保证报警时间的要求。为使两台主机的数据保持同步,各模块的数据是采用广播方式发送的,即网上每个节点都可收到数据,而不需要这些数据的节点,则可通过CAN控制器的特殊的屏蔽码将这些数据予以屏蔽。由于CAN 总线采用优先权编码的仲裁方式,保证了两个或多个节点同时发送数据时不会发生冲突,也不会象以太网那样发生阻塞,因此保证了所有节点都能正常地发送数据。
4 集中式机舱监控报警系统的局限 目前的船舶机舱监测报警系统大部分采用集中式监控的方式,这种系统是把被监测的各类信号,通过电缆线一对一的传送到集控室,这种集中式监控系统存在的一个重要问题是当监控微机出现故障后,没有替代系统可接续运行,直接导致监测报警系统瘫痪失灵,同时,即使监控微机故障修复,恢复工作后,也不能在故障断点接续工作,使得系统出现延时、滞后的失控盲区,直接威胁到船舶的安全运行。对于船舶重要的安全设备中,主控微机突然失控,后果不堪设想。另一方面,由于这种系统的每个信号都要从机舱引到集控室,这将消耗大量昂贵的电缆线,增加各类工程费用等,使得系统造价过高,。因此无论从技术上或经济性,集中式监测报警系统都存在较大的缺陷。
5 CAN总线分布式监控系统的软件设计 微控制器选用单片机80C196KC,CAN接口由独立控制器SJA1000 。SJA1000有两种工作模式:Basic CAN模式和PeliCAN模式,其中PeliCAN模式全面支持CAN2.0B协议。SJA1000作为微控制器的片外扩展芯片,其片选引脚CS接在微控制器的地址译码器上,从而决定了CAN控制器各寄存器的地址。
CAN总线节点要有效、实时地完成通信任务,软件的设计是关键,也是难点。它主要包括节点初始化程序、报文发送程序、报文接收程序 以及CAN总线出错处理程序等等。CAN控制器芯片SJA1000的内部寄存器是以作为微控制器的片外寄存器存在并作用的。微控制器和SJA1000之间状态、控制和命令的交换都是通过在复位模式或工作模式下对这些寄存器的读写来完成的。在初始化CAN内部寄存器时注意使得各节点的位 速率必须一致,而且接、发双方必须同步。报文的接收主要有两种方式:中断和查询接收方式。为提高通信的实时性,文中采用中断接收方式,而且这样也可保证接收缓存器不会出现数据溢出现象。PeliCAN工作模式支持CAN协议中的更多功能。下面给出SJA1000工作在模PeliCAN式下的节点初始化、报文发送、报文接收的196汇编源程序。
INITIALIZE: 初始化子程序 LDB AL, #09H; 初始化模式寄存器进入复位模式 STB AL, MODE; 选择单滤波方式 LDB AL, #88H; 时钟分频器 STB AL, CDR; 选Peli CAN模式 LDB AL, #00H STB AL, ACR0; 初始化接收代码寄存器 LDB AL, #60H STB AL, ACR1 LDB AL, #00H STB AL, AMR0; 初始化接屏蔽寄存器 LDB AL, #3FH; 只接收标识符为2,3的报文 STB AL, AMR1 LDB AL, #8FH STB AL, IER; 中断使能寄存器 LDB AL, #01H; 总线定时寄存器0、1的设置 STB AL, BTR0; LDB AL, #1CH; 在16MHz晶振情况下 STB AL, BTR1; 波特率设置为250 LDB AL, #0AAH STB AL, OCR; 输出控制器寄存器设置 LDB AL, #0H; 接收缓存器起始地址设为0 STB AL, RBSA; LDB AL, #01H; ORB AL, MODE; STB AL, MODE; 返回工作模式 RET
TRANSMIT:; 发送子程序 LDB AL, SR SRCVE: JBS AL,4, SRCVE;正接收? STRSV: JBC AL,3, STRSV;发送成功? STBF: JBC AL, 2, STBF; 发送缓存器锁定否 WID: LDB AL, #08H LD BX, #TXB; 发送缓存的首址 STB AL,[BX]+; 传送两个字节的标识符 LDB AL,#ID0 STB AL,[BX]+ LDB AL,#ID1 STB AL,[BX]+ LDB COUT,#08H; 8个字节数据 TDATA: LDB AL,[DATA]+ CPU内的发送数据缓存区首址 STB AL,[BX]+; DJNZ COUT,TDATA; 8个字节发完否? LDB AL,#01H; STB AL,CMR; 发送 RET
RECEIVE: ; 接收中断程序 PUSHF; 保护现场 LDB AL,IR JBC AL,0,OTHER; 接收中断否? LD BX,#RXB; 接收缓存器首址 LDB AL,[BX]+ JBC AL,6,RCDATA;标识符的RTR=1? LDB AL,#04H; 是远程帧,释放接收缓存区 STB AL,CMR; LCALL TRANSMIT; 相应远程帧,发送相应数据 SJMP BACK RCDATA: ANDB AL,#0FH; 取低四位数据长度 ADDB AL,#03H; STB AL,R1; 该报文含有的字节数 LD BX,#RXB; 接收缓存器的首地址 LD CX,#CRBF; CPU内的接收数据缓存区首址 RECE: LDB AL,[BX]+ STB AL,[CX]+ INCB R1 DJNZ R1,RECE; 接收完否? LDB AL,#04H STB AL,CMR; 释放接收缓存区 BACK; POPF RET
6 先进总线技术的发展 现场总线技术应用于船舶上,可以实现全分布式机舱监控报警系统,彻底解决集中式系统存在的问题。因此,开发研制船用现场总线系统技术,不仅可提高船舶工业的科技水平,同时可保证船舶安全运行的可靠性。
国内近几年来也在工业现场总线方面有很大的发展。如CAN,LONGWORKS,PROFIBUS,FF等。其中基于CAN(Control Area Network)的工业线现场总线系统由于结构简单、可靠性高、通讯速率高,其芯片的开发生产得到西门子、莫托罗拉、飞利浦等等大公司的支持,开发简单易行,是目前最有前途的高性能价格比的现场总线,已开始在我国的工业领域得到广泛应用。该种总线系统将是工业控制现场总线控领域主要产品之一。 |