现场总线CAN 在监控系统网络中通信协议设计
扫描二维码
随时随地手机看文章
1 前言
船舶电站监控系统主要用于监控船舶发电机组的运行状态,调节改善船舶供电的电力品质。本系统取代传统的点对点连线的控制方法,采用CAN 现场总线技术,实现发电机组的远程控制。基于CAN 总线具有结构简单、通信方式灵活的特点及其非破坏总线仲裁技术,为该监控系统提高数据传输可靠性、增强系统运行稳定性提供了新的解决方案。
2 网络通信平台设计
船舶电站监控系统采用 CAN 现场总线连接各设备,通信网络由监测网络与控制网络组成,采用双冗余总线结构,系统网络结构图如图1 所示。
监测网络由若干个数据采集模块与1 个网关组成,主要负责采集传输现场用于测量柴油发电机组绕组温度、燃油压力等传感器数据;控制网络由1 台上位机、1 台能量管理控制器与3 个输入输出模块组成,完成对柴油发电机组起动、停车、合闸、解列以及能量管理的
遥控控制。监测网络和控制网络均采用双绞线电缆作为通讯介质,根据网络规模与数据传输流量,设置网络总线速率为100kpbs。
数据采集模块:数据采集模块根据不同的传感器类型分别能够采集、测量 Pt100 温度信号、4~20mA 电流信号以及开关量等信号。
能量管理控制器:实现电站监视与电能管理功能。
输入输出模块:接收来自能量管理控制器的命令,控制发电机组运行,同时监测发电机组相关的电参数。
网关:实现不同网络间的数据交换。
监测网络部分:数据采集模块从外部采集传感器数据后,将数据发送至网关,网关将所有传感器数据发送至上位机完成集中显示与报警功能。
控制网络部分:上位机将人工控制命令发送至能量管理控制器,该控制器将控制命令进行处理表决,将结果发送至输入输出模块,由输入输出模块输出控制信号控制发电机组状态。另外,输入输出模块采集发电机组相关电参数(电压,电流,有功、无功功率等)发送至能量管理控制器进行监测与管理。
网络系统由两条总线构成硬件双冗余结构,若其中一条总线电缆受损或出现故障后,另一条总线仍能维持系统正常工作,防止通信网络瘫痪。此外,为了保证通信网络的可靠性与实事性,各个网络节点还具有在线故障诊断,传感器故障诊断等功能。
3 网络通信标识符设计
在该网络通信系统中,底层智能模块选用Intel16 位的MCU,CAN 网络控制器选用Philips 公司的SJA1000,实现CAN 网络数据收发功能,系统中网络总线使用CAN2.0B 协议格式,根据该系统监测网络与控制网络的不同功能,分别设计两种网络的报文标识符。
3.1 监测网络协议:
监测网络中的数据采集模块采集现场传感器的模拟信号,通过 A/D 转换将其转换为数字量信号后发送至监测网络,数据刷新频率为每秒2 批次。对于监测模块而言,仅仅发送测量所得的现场传感器数据,不需要接收其他网络数据,因此设置验收屏蔽寄存器禁止其他网络数据接收,网关接收到各个数据采集模块发送的数据之后将其发送至上位机。下表为监测网络的报文标识符定义:
每个数据采集模块分配唯一的网络节点号,每个网络节点分配节点地址,此外,为了使网关设备快速判断各数据采集模块工作以及所发送的报文是否出现异常状况,每个数据采集模块在发送各自的报文时设置索引值,使用CAN 标识符的第13~22 位表示。当某个数据采集模块起动新的一个批次数据发送时,索引值清零,每发送成功一帧报文后下一帧报文的索引值加1,当前批次数据发送完毕后索引值计数器清零,从而可根据每个模块在一个批次内发送的报文个数确定该模块的最大索引值。接收方在接收到某一节点发送的报文后先判断标识符中的索引值信息,若接收到报文的索引值为不合理数值,则放弃对当前报文的接收处理。由此可以防止网关接收在传输时或者程序出错时产生错误的报文,以提高网络数据的可靠性。此外,监测网络数据采集模块设置定时向网关设备发送表示自身通信是否正常的协议帧,网关将其接收后转发至上位机向用户显示系统网络各个单元当前的工作状态,即网络通讯状态。
3.2 控制网络协议:
控制网络中产生的控制命令一般是猝发式的,对于控制系统而言必须确保控制命令被及时并且成功的发送,控制网络报文标识符定义如下表所示:
CAN 总线中非破坏性总线仲裁技术,是从协议帧标识符的最高位开始,即BIT.28 逐位比较下去,当出现参加仲裁的双方在某一位第一次出现显隐性不同时,为显性位的那个协议帧赢得仲裁。根据CAN 总线的这一特性,即标识符值越小发送优先级越高,根据系统总线流程以及控制网络中各网络节点优先级的高低从小到大设置各个模块的网络节点号,如表3 所示:
当控制网络数据发送频繁时,可能导致部分控制命令帧由于标识符优先级的原因而丢失SJA1000 控制器的仲裁,虽然SJA1000 具有丢失仲裁后的自动重新发送该报文的功能,但该控制命令帧仍然存在发送失败的可能性,最终导致控制功能的失效。CAN 协议帧优先晋升方案能够大大降低上述情况发生的可能性,为实现控制命令帧发送时在丢失仲裁后重发的优先级晋升,则必须禁止MAC 子层的自动重发功能,由应用层来实现报文的重发。该系统采用Philips 公司的SJA1000 作为CAN 网络控制器,可以通过在报文发送时设置其命令寄存器的第0、1 位禁止其自动重发功能,改为单次发送。
起动发送报文之后,MCU 须判断该网络节点是否已经成功发送了一条报文或者报文发送失败:首先,当SJA1000 中断寄存器出现了仲裁丢失中断或者发送中断,表明该节点已经处理完了一条报文,但是仍然不知道是否发送成功。如果成功,中断寄存器就没有仲裁丢失中断,但是会产生发送中断,因为发送成功后发送缓冲区会释放。如果发送不成功,一定是与较高优先级的协议帧竞争的结果,所以会有仲裁丢失中断。但是改为单次发送后,发送失败以后也会释放缓冲区,因此将同时产生仲裁丢失中断以及发送中断。在得到节点已经处理完一条报文后,只要用以上的规则进行判断就能知道上一条报文是否发送成功,也就是用来判断是否需要晋升节点所发送信息帧的优先级并重发该帧。
控制网络的标识符划分为三个部分,其中标识符的第 21 至28 位用于协议帧优先晋升,这部分标识仅表示协议帧的优先级,它由调度机制分配给协议帧的优先级的变化而变化,设Pi=(2n-1)-kt,Pi 项为当前控制命令协议帧的优先级,(2n-1)代表其优先级队列的初始值,即为队尾;n 为优先级队列的二进制数,BIT28:21 共有8 位数,所以这一项数值为0FFH。kt表示优先级晋升项,t 为首次发送以来协议帧丢失仲裁的次数,k 为晋升权重,k 取值越大协议帧优先晋升速度就越快(该系统中取k=1)。由此可见,当某协议帧第一次发送时,Pi=0FFH,当它在发送时与其他协议帧碰撞并失去仲裁时,退出发送并且置Pi=0FEH 重新发送,因为此时其优先级高于其他协议帧,在整个网络中如果没有其他和它具有相同优先级的协议帧同时发送时,即使与其他第一次发送的协议帧碰撞,也会赢得仲裁,所以增大了该帧发送成功的概率。下图为报文优先级晋升控制流程:
图 2 报文优先级晋升控制流程
除此之外,系统具有控制参数在线修改的功能(如修改系统参数)。参数修改命令由上位机发出修改帧,能量管理控制器接收后进行操作执行。当进行在线控制参数修改时,能量管理控制器将发出广播消息通知控制网络所有节点禁止所有控制动作的输出,以防止意外情况的发生。
在进行参数的下载修改过程中,为避免修改帧发送失败或丢失,从而导致系统参数混乱,甚至导致系统瘫痪的情况发生,使用帧标识符的第11、12 位表征修改帧的结构类型:单帧、非结束多帧和结束多帧。当待修改的参数数量较少,单个协议帧能够包含所有修改信息时,能量管理控制器接收到来自上位机的修改帧,并判断该修改帧为单帧标识后,则立即进行参数存储空间的修改;若待修改的参数较多,单个协议帧无法包括所有待修改数据时,上位机首先发出部分修改帧使用非结束多帧标识,发送至最后一个修改帧时,标记为结束多帧。功率管理模块只有在将全部待修改的参数接收完毕(即收到结束多帧标识)之后,才开始对相应参数存储空间进行数据修改的操作。完成操作之后,能量管理控制器再将相应存储空间修改完毕的数据发送反馈至上位机,进行握手确认。采用以上系统参数修改机制同时结合协议帧优先晋升方案,大幅提升了电站重要参数修改的可靠性。
4 结束语
船舶电站监控系统网络通信的实现,节省了大量的现场线缆,整个系统便于调试。网络数据传输过程中使用的协议帧优先级晋升算法机制等处理方案以及双冗余的网络硬件结构,提高了现场总线网络的可靠性和稳定性。同时,此网络适应力及扩展力强,可根据不同船舶电站系统的结构差异灵活配置系统的设备,并且随时能加入新的站点及第三方设备。