引言
目前我国北方许多城市已经或者即将进行热网改造工程,将传统的分散供热改造为集中供热。
由于CAN总线相比其它现场总线技术具有众多优点,因此在工业中的应用越来越广泛。本文基于该总线技术针对热网监控系统开发的现场控制和通信的子系统,能安全可靠地实现现场数据采集、闭环控制及数据传输。鉴于篇幅,本文重点介绍CAN网络通信部分的设计与实现。
系统结构及其硬件构成
系统结构
热网监控系统主要由上位机和现场控制器组成,总体结构如图1所示。
热网监控系统是在一次设备(传感器、变送器、各种执行机构)的基础上完成对热网的监测与控制,通过调节热管网的供水流量、供水温度、供水压力,来保证热网安全、可靠、高效、稳定的运行。根据上述要求,本系统在保证系统可靠工作和降低成本的条件下,考虑到通用性、实时性和可扩展性等方面的因素,采用了主要由上位计算机系统和现场控制器构成的系统结构。
系统工作过程如下:上位机首先初始化CAN网卡,设置网卡工作模式、接收码、接收掩码和波特率,然后进入运行状态,在适当条件下与现场控制器进行通信。现场控制器主要完成现场数据的采集与处理和现场设备的控制等功能,并以查询或中断方式与主机进行通信。
硬件系统
CAN网络的拓扑结构采用总线式结构,其结构简单、成本低、系统可靠性高。信息的传输采用CAN通信协议,通信介质采用双绞线。
上位机
上位机采用工控机,负责对整个系统进行管理。上位机通过CAN网卡与现场控制器通信,同时通过局域网或者公共电话交换网与整个工厂或者公司的计算机信息网络进行连接,实现信息共享。上位机具有组态、数据采集、参数设置、远程控制、流程显示、数据存储、趋势显示、报表打印以及通信等功能。
CAN网卡
CAN网卡是负责CAN总线与上位机之间数据交换的功能模块。CAN网卡上存在两个方向的数据交换:CAN网卡与上位机之间的数据交换(通过双端口RAM实现)以及CAN网卡与CAN总线之间的数据交换(由微处理器通过访问CAN控制器的接收缓冲区以及发送缓冲区来实现)。CAN网卡上的CAN控制器选用的是PHILIPS公司的SJA1000芯片。
现场控制器
该现场控制器具有14路模拟量输入端口、2路模拟量输出端口、4路开关量输入端口、4路开关量输出端口以及时钟接口、数据存储接口、液晶显示接口、网络通信接口、报警输出接口等。本系统采用了TI公司的带有10位ADC和CAN控制器的DSP芯片TMS320LF2407A作为CPU。
网络通信接口单元是用来对CAN总线进行读写访问的部分控制电路。当需要发送数据时,CPU将数据交给网络接口单元电路,由网络接口单元电路进行数据格式转换、串并转换和信号形式转换,并将数据按照CAN协议信号形式发送到CAN总线上。当CAN总线上有数据时,它负责从CAN总线上读取数据。首先通过帧过滤功能判断是否接收此帧,若接收,则通过与发送相反的过程,将数据交给CPU。
网络通信接口单元主要由TMS320LF2407A片内的CAN控制器及CAN收发器PCA82C250组成。CAN控制器负责对数据的格式进行转换,承担网络通讯的控制任务。CAN收发器PCA82C250是CAN控制器和物理总线间的接口,负责信号的电平及形式转换,可以提供对总线的差动发送能力和对CAN控制器的差动接收能力。为防止CAN总线上的干扰进入板卡,本系统采用光电隔离器件6N137来实现收发双向隔离。网络通信接口单元具体电路如图3所示。
CAN通信软件设计与实现
CAN遵从OSI模型,按照OSI基准模型,CAN结构划分为两层:数据链路层和物理层。然而,在实际应用中,即使只是实现简单的基于CAN的分布式系统,仅有物理层和数据链路层也是远远不够的。比如对于传输长度超过8个字节的数据块、带有握手协议的数据传输过程、标识符分配以及通过网络管理节点等功能就不能实现。
因此需要在这两层之外附加一层来支持应用过程,即应用层。这一层功能对应OSI基准模型中的上五层,主要完成网络层和传输层的工作,提供接口,使得通信模块和具体应用模块分离。针对热网监控系统,应用层协议需要通信双方具体协商制定。
CAN通信应用层协议
现场控制器软件设计中与上位机的通信是最关键的部分之一。针对热网监控系统,使用现场总线CAN网络技术,制定了CAN应用层协议。应用层完成的主要工作有:标识符分配、多报文数据包的处理、报文发送与接收等。
标识符分配方案
TMS320LF2407A支持CAN 2.0B协议,本系统通信的信息帧采用扩展帧,具有29位标识符,标识符分配方案如表1所示。
其中,DIR表示方向。DIR=0时,表示主站向从站发送数据;DIR=1时,表示从站向主站发送数据。TYPE为报文帧类型。当TYPE.2=0时,表示点对点发送;当TYPE.2=l时,表示广播发送。当TYPE~TYPE.0Xb时,表示单帧报文;TYPE.1~TYPE.0=11b时,表示非结束多帧报文;TYPE.1~TYPE.0=10b时,表示结束多帧报文。另外还有目标地址和源地址各七位,命令符八位。命令符是用来标识上位机对现场控制器的控制命令,或现场控制器对上位机的上传命令。
报文的处理
本设计对CAN通信中的报文处理做了以下规定:
单报文:单报文由标识符中的数据类型TYPE.1决定,当其为0时表示为单报文,此时待传送的数据不超过8个字节,数据段中为实际传送的数据。
多报文的首帧和中间帧:多报文的首帧和中间帧由TYPE.1~TYPE.0决定,当其为11b时表示为非结束多报文,即为多报文的首帧和中间帧,此时待传送的数据超过8个字节,数据段中第1个字节为索引项,后7个字节为传送的数据。
多报文的尾帧:多报文的尾帧由TYPE.1~TYPE.0决定,当其为10b时表示为结束多报文,即为多报文的尾帧,此时规定该帧中数据长度为2个字节,数据段中第1个字节为索引项,第2个字节为待传送数据的总长度,单位为字节。
CAN通信初始化
CAN通信初始化主要是设置CAN的通信参数,包括配置位定时器和初始化邮箱两部分。需要初始化的寄存器有:位配置寄存器2、位配置寄存器1、标识符寄存器、控制寄存器、局部屏蔽寄存器等。需要注意的是,只有当全局状态寄存器中的改变配置使能位为高时,才能配置位定时器;当主控制器中的改变配置请求位为1,即CAN控制器处于复位工作方式时,才能配置标识符寄存器、控制寄存器和数据域。在访问位配置寄存器时,由于其内容决定波特率的数值,位配置寄存器的初始化字必须依据系统中各CAN控制器的晶振频率而设定。
数据发送
信息从CAN控制器发送到CAN总线是由CAN控制器自动完成的。发送程序只需把要发送的信息帧送到相关的CAN寄存器,启动发送命令即可。数据发送采用通用定时器周期中断,定时发送已采集的数据到上位机,实现数据的存储,以便用户查询。由于采集到的数据超过8个字节,所以需对数据包进行分片构造报文。通用定时器周期中断服务程序如图4所示。
数据接收
信息从CAN总线到CAN接收邮箱是由CAN控制器自动完成的,数据接收采用邮箱中断。在中断服务程序中读取接收到的数据,对接收到的数据进行解码,并置位相应标志位。在主程序循环中查询标志位,当检测到标志位被置位时,则进入相应处理程序,同时对标志位清零。
结语
应用层协议是CAN网络应用的关键,因此该系统中的重点工作是在现场控制器与上位机之间的通信中,使用现场总线CAN网络技术,制定了用户层通信协议。而且本系统已经完成了在实验室阶段的调试工作,通信部分能够正常工作。本文介绍的CAN 通信设计具有很强的通用性,其成果可以应用在很多数据采集的场合。