计算机系统应用  2018, Vol. 27 Issue (8): 114-118   PDF    
跟踪定位消防系统中的CAN技术应用层通信协议
汪昕隆1, 许万彬1, 王梓行1, 陈铁辉1, 陈耀忠1, 管立伟1,2,3, 卢宇1,2,3, 何志杰1,2,3     
1. 福建师范大学 物理与能源学院 福建省量子调控与新能源材料重点实验室, 福州 350117;
2. 福建省半导体光电材料及其高效转换器件协同创新中心, 厦门 361005;
3. 福建省太阳能转换与储能工程技术研究中心, 福州 350117
摘要:为了提高自动跟踪定位消防系统的可靠性与稳定性, 提出利用CAN总线进行消防系统内部的数据传输. 介绍了消防系统的架构及通信, 分析了CAN总线通信电路结构和原理, 以CAN 2.0B协议帧结构为基础, 研究扩展帧ID报文标识符的组成和含义, 给出了基于CAN总线应用层通信协议的制定、实现方法和设计实例. 应用结果表明, 该设计不仅能满足数据传输可靠性、实时性等实际要求, 而且还具有极强的移植性和扩展性.
关键词: 消防系统    CAN总线    应用层协议    
Application Layer Communication Protocol of Can Bus in Tracking and Positioning Fire Protection System
WANG Xin-Long1, XU Wan-Bin1, WANG Zi-Hang1, CHEN Tie-Hui1, CHEN Yao-Zhong1, GUAN Li-Wei1,2,3, LU Yu1,2,3, HE Zhi-Jie1,2,3     
1. Fujian Provincial Key Laboratory of Quantum Manipulation and New Energy Materials, College of Physics and Energy, Fujian Normal University, Fuzhou 350117, China;
2. Fujian Provincial Collaborative Innovation Center for Optoelectronic Semiconductors and Efficient Devices, Xiamen 361005, China;
3. Fujian Provincial Engineering Technology Research Center of Solar Energy Conversion and Energy Storage, Fuzhou 350117, China
Foundation item: Science and Technology Project of the Education Department of Fujian Province (JAT160105); College Student Training Project of Fujian Normal University (2017) (201710394056)
Abstract: In order to improve the reliability and stability of the automatic tracking and positioning fire protection system, the data transmission of the fire fighting system is proposed by using CAN bus. The architecture and communication of the fire control system are introduced, and the CAN bus communication circuit structure and principle are analyzed. On the basis of CAN 2.0 protocol B frame structure, the extended frame ID form and meaning of the message identifier are studied, the formulation, implementation method, and design examples of application layer communication protocol are given based on the CAN bus. The application results show that the design can not only meet the actual requirements of data transmission reliability and real-time performance, but also have extremely strong portability and expansibility.
Key words: fire protection system     Can BUS     application layer protocol    

高大空间建筑如体育馆、仓库、影剧院等场所具有易燃物品多、火灾危险性大等特点, 必须有效控制此类场所的初期火灾, 防止火灾的蔓延. 自动跟踪定位消防系统是控制建筑初期火灾的重要自动灭火设施, 已经得到广泛应用[1,2]. CAN (Controller Area Network) 是ISO国际标准化的串行通信协议, 可作为连接现场设备(传感器、控制器等)、面向广播的串行系统的总线结构框架, CAN总线具有网络结构简单、数据通信稳定可靠和良好的错误检测等特点, 在智能检测与控制领域备受青睐, 被广泛应用在环境恶劣、电磁辐射干扰性强和振动大的工业环境中[35]. CAN总线为分布式测控系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持. 由于CAN标准及协议规范给出了物理层和数据链路层的定义, 而对上层协议未作规范, 因此, 用户在采用CAN总线构建系统时可以灵活地设计CAN上层协议, 从而进一步提高CAN总线在应用层上的通信性能[6,7].

本文以自动跟踪定位消防系统为例, 通过解析报文标识符帧ID和数据帧含义, 研究基于CAN总线应用层协议的制定原则和方法, 应用结果表明, 该协议能够保证较高的通信可靠性, 适用于自动跟踪定位消防系统等可靠性要求较高的场合.

1 跟踪定位消防系统架构及通信

自动跟踪定位消防系统是基于CAN总线技术搭建的模块化的信息管理与控制平台. 消防系统整体架构如图1所示, 由3个子系统构成, 分别为中央监控器子系统、区域控制器子系统和水炮控制器子系统. 在基于CAN总线的自动跟踪定位消防系统中, 各子系统之间和子系统内各模块间均通过总线进行信息交换, 包括水炮的启动、停止、开关水泵、开关电磁阀、火警以及紫外传感器脉冲数等.

图 1 系统结构框图

中央监控器子系统置于监控室内, 是整个消防系统的核心, 监控器不仅可以接收底层各CAN节点发来的参数信息和工作状态信息, 并且通过CAN总线向各控制节点发送命令和数据信息. 区域控制器子系统负责管理本区域内的水炮, 通过CAN总线来设置总线上水炮的地址、设置通讯模式和通讯速率以及对水炮进行单独操作. 水炮控制器子系统通过CAN总线发送传感器信息和火源信息, 同时接收区域控制器子系统和中央监控器子系统的命令信息.

自动跟踪定位消防系统通信信息分为命令和数据两类. 命令信息, 比如设置总线上水炮的地址、设置通讯模式等, 其优先级比数据信息高. 数据信息, 比如紫外传感器脉冲数、环境温度等, 其优先级相应低一些. 不同的子系统发送的数据信息也有优先级之分, 如水炮本身的参数信息和工作状态报警信息比紫外传感器脉冲数信息优先级高; 中央监控器子系统的优先级最高, 而底层的区域控制器子系统优先级低.

自动跟踪定位消防系统中有的信息要求周期性传送, 如紫外传感器脉冲数、环境温度等参数信息. 有的信息属于事件触发发送, 如报警信息、远程操作水炮等控制命令信息. 各子系统发送指令和数据信息的字节数都比较少, 大部分都不超过8个字节, 很适合CAN总线短帧快速的传送方式.

2 CAN总线通信电路

CAN总线通信电路如图2所示, 主要由CAN总线收发器82C250Y、双通道数字隔离器1201ARZ、电源隔离模块B0505S和信号继电器HFD4组成. STM32自带CAN控制器, 其CAN模块的引脚通过双通道数字隔离器1201ARZ后与82C250Y相连, 可以很好实现总线上各节点的电气隔离, 增强CAN总线节点的抗干扰能力. 需要注意的是, 双通道数字隔离器1201ARZ所采用的两个电源要完全隔离, 这里引入了电源隔离模块B0505S. 如果CAN节点出现严重错误, 可以通过STM32控制信号继电器HFD4将本节点从CAN总线上分离, 从而增强CAN总线的稳定性和安全性.

3 通信协议的制定与实现

自动跟踪定位消防系统采用模块化、无主从总线化设计, 层次清晰, 便于维护和升级, 具有良好的互换性. 消防系统中的子系统数量多, 通信数据传送量大, 需要清晰定义CAN总线应用层协议, 以确保系统中各子系统之间正确、实时通信.

3.1 总体情况

本系统协议采用CAN2.0B支持29位标识符的扩展帧, 如图3所示, 29位扩展帧包括11位基本ID(即标准帧)和18位扩展ID[8,9]. 基本11位ID发送顺序为ID28到ID18, 它定义了扩展帧的基本优先级, 其值越大代表优先级越低; 18位扩展ID按照ID17到ID0的顺序发送. 替代远程请求位SRR位为隐性, 远程发送请求位RTR在数据帧中为显性来区分数据帧和远程帧, 保留位r1和r0发送为显性, DLC为数据长度码. 通信速率可由区域控制器设置成10、100、200 kb/s 等多种总线波特率, 本系统采用10 kb/s进行通信. 各节点之间通信使用数据帧, 远程帧不用于数据请求.

图 2 CAN总线接口电路

图 3 数据帧扩展格式中的仲裁场结构

CAN总线协议将数据信息分为广播信息和专有信息. 任意节点可以发出广播信息, 总线上所有其他节点都接收或局部多个指定节点选择性地接收; 专有信息是由某一节点发送且只针对某一指定节点接收的点对点信息. 广播信息的优先级比专有信息高, 且优先级是基于节点的, 不同的节点可以有不同的优先级. 同样, 节点的专有信息可以基于信息内容的重要程度来分为不同的优先级[6].

3.2 报文结构

CAN应用层协议可以由用户自行制定, 有较大的灵活性. 本协议在CAN 2.0B基础上对29位标识符进行定义, 采用了预定义分配方式来分配标识符, 见表1.

表 1 报文格式

(1) 优先级: 由ID28–ID24组成, 优先级分配如表2所示. 将00000、00001两个优先级作备用. 中控与消防炮之间的火警数据通信优先级定义为00010为最高优先级, 中控与消防炮之间的正常数据通信优先级定义为00011为次优先级, 中控需要对消防炮进行注册编码和单台操作, 在紧急情况下由相关人员进行远程控制消防炮时必须得到及时响应. 区域集控器与消防炮之间的通信设置为00100, 为次优先级, 有火情时可以强制消防炮进行扫描寻找火源. 中控需要对区域集控器进行注册编码和相关操作, 通信优先级设置为00101. 末端试水装置需要将自身工作状态在中控和区域集控器上进行显示, 所以与中控通信优先级设置为00110, 与区域集控器通信优先级最低, 设置成00111.

表 2 优先级分配

(2) 目标节点与源节点: ID15–ID8为目标节点地址, ID7–ID0定义为源节点地址. 在本系统中, 中控的节点地址为A0, 第N个区域控制器的节点地址为BF, 第N个消防炮的节点地址为CF且前两位表示区号、后两位表示炮号, 均为十六进制地址.

3.3 举例

中控与水炮之间正常数据通信与报警数据通信有所不同, 现举例说明如下:

(1) 中控与水炮的正常数据通信: 以水炮B1节点为例, 解释说明各位含义. 表3所示的数据帧1、2为水炮正常工作时向中控发送的数据帧, 源节点地址为B1, 目标节点地址为A0, 其优先级为00110, 点对点式通信将帧类型设置为01, 因此帧ID为0x0601A0B1. 该表示方法采用右对齐的模式, 可以清晰分辨是源节点B1向目标节点A0发送数据. 数据帧1表示水炮向中控发送紫外传感器的脉冲数, 数据帧的第1位表示数据帧编号, 第2位表示功能码, 第3位表示紫外传感器的脉冲数为10个, 第四位用0xFF填充, 第5至第8位是该数据帧时间戳, 采用UTC时间表示.

表 3 数据帧示例

(2) 中控与水炮的报警数据通信: 以水炮B1节点向中控A0 发送报警信息为例, 表3所示的数据帧3、4为水炮向中控发送的报警数据帧, 源节点地址为B1, 目标节点地址为 A0, 优先级为00011, 帧类型为00(广播式) , 故帧 ID为0x0300A0B1. 为了使广播信息能被A0模块唯一接收, 必须通过特殊功能寄存器设置屏蔽码. 因为CAN控制器采用左对齐方式, 所以分别设置CANIDT1、CANIDT2、CANIDT3、CANIDT4为0x18、0x05、0x07、0xA8. 这样, A0模块就仅能接收ID为0x0300A0B1的广播数据帧. 同理, 当A0模块向水炮B1节点发送数据时, 源地址为A0, 目标地址为B1, 优先级为00011, 故帧ID为0x0300B1A0. 中控可以接收来自任何CAN节点的数据, 鉴别出该帧ID, 并对相应数据帧进行操作.

4 试验

图1所示的各子系统采用STM32系列单片机分别设计成基于CAN总线的电路模块, 然后通过CAN总线实现中央控制器与各子系统的信息通信. 在实验室内安装本系统, 系统的试验测试平台如图4所示, 对系统进行通信测试. 采用高精度校准仪表、示波器及本系统分别对紫外传感器脉冲数、步进电机控制、水泵控制、电磁阀控制等进行现场测试并记录, 其中紫外传感器脉冲数测试结果如表4所示. 从表4可以看出, 紫外传感器脉冲数据平均误差在5%以内, 数据具有较高的一致性, 完全满足系统的需求. 试验结果表明, 基于该CAN应用层协议的自动跟踪定位消防系统可以在10kb/s速率下实现各模块之间以及各模块与中央控制器之间的实时无误通信. 利用Visual Studio开发环境和C#自主开发上位机测试软件, 主界面如图5所示.

图 4 系统实验测试平台

5 总结

基于CAN总线的自动跟踪定位消防系统采用模块化设计, 完成了各节点设计和系统集成, 可靠性高, 便于后期维护和升级. 其应用层协议制定方便灵活, 清晰简洁, 数据帧和扩展帧的定义符合自动跟踪定位消防系统数据通信的实际状况. 通信协议已在自动跟踪定位消防系统中得到成功应用, 实际应用表明: 自行定义的应用层协议不仅能满足自动跟踪定位消防系统实时无误通信要求, 而且具有良好的移植性和通用性, 便于系统的产品化, 可适用于其他领域的智能监控系统.

图 5 上位机测试软件主界面

表 4 系统测试结果

参考文献
[1]
黎永键, 赵祚喜, 黄培奎, 等. 基于CAN总线的拖拉机导航控制系统设计与试验. 农业机械学报, 2016, 47(S1): 35-42.
[2]
杨华伟, 万正权. CAN总线在船舶结构安全监测系统中的应用. 电子测量与仪器学报, 2014, 28(5): 553-559.
[3]
于赫. 网联汽车信息安全问题及CAN总线异常检测技术研究[博士学位论文]. 长春: 吉林大学, 2016.
[4]
Mendoza P, Via J. Developing CAN based networks on RT-Linux. Proceedings of 2001 8th IEEE International Conference on Emerging Technologies and Factory Automation. Antibes-Juan les Pins, France. 2001. 161–167.
[5]
刘闯. 嵌入式CAN总线与以太网冗余网关的设计与实现[硕士学位论文]. 大连: 大连海事大学, 2016.
[6]
苗中华, 褚剑钢, 刘成良, 等. 采棉机智能监控系统CAN应用层协议设计. 农业机械学报, 2012, 43(1): 180-184.
[7]
Wang SJ, Zhang TX, Zhang GS, et al. Scheduling design of automotive TTCAN control system based on average loading. Proceedings of the eighth Word Congress on Intelligent Control and Automation. Jinan, China. 2010. 6772–6775.
[8]
曹万科, 张天侠, 刘应吉,等. 基于TTCAN的汽车控制系统信息调度设计与分析. 农业机械学报, 2007, 38(12):41–44.
[9]
郝勃, 刘衍珩, 曲良东, 等. CAN网络的分组并策略研究及实现. 仪器仪表学报, 2012, 33(9): 2137-2143.