3.2 CAN智能I/O的设计
节点是网络上信息的接收和发送站,本设计采用由独立的通信控制芯片与单片机接口构成的智能节点。CAN总线智能节点硬件设计包括:A/D和D/A转换部分、看门狗硬件电路、CAN总线通信接口,其主要硬件结构如图2 所示。
油罐的油位、油温和油泵的进/出口压力以及油泵的主轴温度由变送器进行测量,其输出信号经过多路复用、A/D转换器送入单片机,输出控制每个油泵和调节其进口和出口压力的信息由单片机经D/A转换器送达执行机构。本设计中采用
ATEM公司的单片机
AT89S52(具有下载软件的功能及辅助接口),SJA1000可以完成CAN的物理层和数据链路层的所有协议功能,它和高速光电隔离电路6N137以及CAN驱动器PCA82C250构成了与CAN总线相连的通道[4]。
CAN总线智能节点的软件设计关键是CAN总线通信接口程序,其主要功能是将采集进来的数据经过处理,通过定时中断发送到Web服务器端,同时通过接收中断接收处理来自服务器端的数据查询、设置命令和控制命令。
命令码主要体现在ID标识符上,由于采用的是标准帧格式发送CAN信息帧,因此,ID标识符为11位。其结构如下:ID0~ID5表示大型储液罐群罐号,如“000000”为“1”号罐;ID6~ID8表示大型储液罐群的被控量,如“000~100”分别为液位、温度、重量、进油阀和出油阀;ID9~ID10表示命令字,如“10”为设置命令,“11”为控制命令。
程序主要包括初始化程序、接收处理程序和发送处理程序。其重点和难点是SJA1000的初始化,包括工作方式的设置、接收滤波的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断使能寄存器的设置等。
现场控制模块数据的收发是大量的,也是实时性需要的,但是在远程机上的控制通常只是常规的监视和调整,不需要太高的实时性,同时也为了网络的畅通,上位机与远程机上的同步数据刷新率不必设的太高,一般可以设置为采样多个数据后一次性发送[5]。
4 系统的中间层设计
中间层是一个多层结构,主要负责数据读取、数据转发、数据处理、管理及监控等功能,由CAN总线的网关、数据库和WEB服务器组成。
4.1 监控单元的设计
监控单元由含CAN适配卡的工控机(上位机)和后台数据处理程序组成。上位机通过CAN总线智能适配卡PCI-5110与CAN总线进行通信。本程序采用C++Builder编写,有强大的人机交互功能,方便操作人员使用。
数据库采用Microsoft SQL Server 7.0, 负责存储从底层控制系统中采集的数据、向系统发送的控制数据以及对进行各种计算直接产生的中间数据,并对历史数据进行存储和归档,实现控制程序、罐群基本信息和监控信息等的管理功能。它包括当月数据库、历史数据库、系统参数数据库和储罐容积表数据库。当月数据库中的数据超过规定的时间后就会自动地转存到历史数据库中。在系统运行过程中,操作员在输入正确密码后,可根据需要对各种数据库进行查询、删除、保存或打印等操作。
4.2 Web服务器的建立
WebSnap是C++ Builder 6.0最新的WebApplication开发架构,使用WebSnap不象Web Service那样需要熟悉套接字Socket,并且在编写服务器或客户应用程序前也无须了解应用程序要提供或使用的服务,可进行WEB快速应用开发。WebSnap在开发数据库应用程序方面有强劲的功能,其ADO数据库连接控件具有很好地连接各种数据库的功能。
WebSnap有以下特征:支持CGI(Common Gateway Interface)Web服务器应用程序、支持对客户请求的多线程处理、提供Web模块的缓存技术以便更快地对用户消息进行响应、支持交叉平台WebSnap把B/S应用的开发代入了一个全新的领域,真正做到了零客户端配置。