采用CAN总线和网络相结合的模式,把局部的智能控制单元拓展到了世界上任何角落。CAN总线的应用,把本地的智能控制方案简单化、易管理化、易操作化。它简化了传统的控制方案,仅采用两根CAN总线就可以实现本地所有智能单元的控制、监视、管理。而Internet技术的采用,又把本地的控制伸展到了更远,使得世界上任何具有网络接人的地方都可以随心所欲地进行远程监视,了解远程系统的运行状态,及时对远程设备进行控制。基于这种方案的设想,笔者介绍了一种基于CAN总线和Internet的远程监控系统,从硬件和软件方面对系统的设计做了详细的说明。实验表明:该方案切实可行,稳定可靠,可实际应用到工业的远程控制、供变电站的无人值守、安防监控、智能小区和网络家电等远程监控场所。
1 硬件的设计
1.1 系统原理框图
如图1所示,远程监控系统的主控制器由电源模块、MCU模块、网卡接口模块、CAN接口模块及人机交互界面接口5部分组成。MCU模块部分与网卡接口模块、人机交互模块、CAN接口模块通过总线连接,MCU模块是本系统的重点部分,由它来完成TCP/IP栈的运行,以及CAN总线部分应用层程序处理,主芯片采用的是WINBOND公司的W78E516B单片机和CY62256(32KB SDRAM)。电源模块部分负责所有模块的电源供给,采用通常的L7805三端稳压芯片。网卡接口模块负责网络的低层通信,它完成网络的物理层、数据链路层的功能。人机接口部分采用20 x 4的字符液晶和按键,它来完成人的输人和显示功能。CAN接口部分负责与CAN总线上所有CAN模块的通信,用它来实现CAN2.0B协议的低层协议,完成对所有CAN节点的监控。
除主控制器以外,负责检测和控制的CAN节点主要由电源模块、MCU模块、CAN接口模块以及相应的强电驱动电路组成。
1.2 网卡接口模块
台湾Realtek公司生产的RTL8019AS以太网控制器,由于其低廉的价格、优异的性能,使其在10 Mb/s的网卡市场上独领风骚。它与NE2000标准网卡兼容,符合Ethernet Ⅱ和IEEE802.3(lOBase5.lOBase2.lOBaseT)标准,全双工通信,支持AUI, UTP, BNC自动检测,它采用的是8/16位数据总线标准,具有16个基地址可供选择。RTL8019AS与W78E516B的接口电路如图2所示。RTL8019AS的IOCS16B接27 kΩ电阻下拉,采用8位地址数据复用接口方式。RTL8019的lOS0IOS3全部悬空,由于RTM019AS内部有下拉,因此由这4个管脚确定的RTL8019的基地址是0300H,RTL8019AS的有效地址是:0300H~031 FH。不难看出,RTL8019AS的低5位地址有变化外,高地址全为固定值,在设计电路时按图2所示将RTL8019AS的高地址接固定电平,单片机的地址A15作为74HC138的总使能端,A14~A12作为74HC138的输人端,输出YO作为RTL8019AS的片选信号AEN。因此,对于单片机来说,RTL8019的有效地址范围为0x8f00~0x8flf。
RTL8019的64脚AUI决定使用AUI还是BNC接口,由于BNC接口方式支持双绞线或同轴电缆,所以AUI接地,采用的接口是BNC。RJ45接口采用的是集成的电路,是中山汉仁公司的HR901105A,它集成了RJ45接头和网络变压器,比传统的电路减小了体积,价格和分立元件的成本差不多,因此具有更高的性价比。
1.3 1VICU和CAN的接口
CAN总线控制电路采用SJAI000总线控制器和PCA82C250总线驱动器。它的原理图如图3所示。
SJA1000是一种独立、的CAN控制器,具有BasieCAN(符合CAN2.OA)和Peli CAN(符合CANZ.OB)两种模式。经过简单总线连接可完成CAN总线的物理层和数据链路层的所有功能。支持11位和29位标识符,具有64 B的FIFO接收缓冲器。由图3的电路可知,SJA1000的基地址为十六进制的9f00H~9fffH ,SJA 1000的初始化、发送接收数据、寄存器的读写可由此地址控制。
1.4 其他硬件部分
电源模块采用的是L7805三端稳压器,输人电源为+9V(采用适配器输人),经过L7805稳压后输出5V给系统板供电。MCU模块采用W78E516B单片机;78 HC573作为单片机的低8位地址锁存器;32 KB静态RAMCY62256作为单片机的外扩RAM,由它缓存接收和发送的以太网帧;X5045作为看门狗芯片,它也具有SPI接口方式的512 BE2PROM,用它来存储网卡MAC和IP等不能丢失的信息;PCF8563芯片作为时钟芯片,由PCF8563的中断功能触发与时间有关的控制。
2 软件部分的设计
本设计采用了WINBOND公司的78E516B微处理品,全部采用Keil C51编程,为了在功能上具有更好的可读性和移植性,采用了嵌人式的操作系统。
对于51内核的单片机来说,目前可作为其嵌入式系统的有μC/OS-Ⅱ(即μC/OS的第2版)和RTX51。μC/OS-Ⅱ操作系统适用于多种8位、16位、32位、DSP,乃至X86 CPU,其通用性可见一斑,是当今的热门技术。相对来说RTX 51操作系统应用范围较窄,因此选择了μC/OS-Ⅱ操作系统。
软件可分3部分完成:CAN总线控制部分、TCP/IP协议栈部分、HTTP应用程序部分。这3部分分别作为μC/ OS系统的3个任务,且CAN总线控制部分的优先级最高(CAN上的设备要及时控制和检测),TCP/IP协议部分其次,HTTP应用程序部分最低。
2.1 CAN总线部分软件
CAN总线控制软件由3部分构成:SJA1000初始化、接收部分、发送部分。
SJA 1000只有在复位模式下才可以进行初始化。初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器AMR和接收代码寄存器ACR的设置、波特率参数设置和中断允许寄存器IER的设置、错误代码寄存器的设置等。在SJA 1000完成初始化设置以后退出复位模式,进人正常模式。
发送子程序负责节点报文的发送。完成本地节点的数据发送和远程请求发送,上层程序只要按照数据帧格式设置ID、RTR、优先级和数据场等即可,当然在往SJA1000发送缓存区送报文之前,必须先作一些判断,远程帧无数据场。
接收子程序负责节点报文的接收以及其他情况处理。接收子程序比发送子程序要复杂一些,因为在处理接收报文的过程中,同时要对诸如总线脱离错误报警、接收溢出等情况进行处理。SJA1000报文的接收主要有两种方式:中断接收方式和查询接收方式,本设计采用的是查询接收方式。
2.2 TCP/IP协议栈部分
相对PC机和服务器中用的TCP/IP协议栈,嵌人式的TCP/IP栈出于代码量和实时性的考虑,不可能包含TCP/IP协议栈的所有协议,只包含一些常用的协议,如:TCP、IP、UDP、ARP和ICMP,这些是一个小型TCP/IP协议栈应该具备的内容。
TCP/IP协议栈的应用层接口简单,采用简单的套接字方式编程,当作为主机存在时,首先要申请本地监听的套接字,如下所示:
ListenSocket=TCPSocket(“192.168.0.10”,80);
此函数申请了一个套接字ListenSocket,本地IP地址为:192.168.0.10,端口为80。
当监听一个套接字时,可以应用下述函数:
Status=TCPListening(ListenSocket);
此函数对套接字ListenSocket进行监听,当接收到TCP数据时,结构体status返回的是TCP当前的连接状态和数据首字节的指针,否则返回FALSE。
2.3 Web设计
W78E516B具有64 KB可擦除ROM,512 B RAM,最大时钟频率40 MHz。利用它的这些资源,可以把网页的内容放在这些ROM中,网页中的文本内容以ASCII格式存人ROM,图片内容以二进制的格式存入ROM,对网页和图片设置不同的HTTP头文件,以ASCII的格式存入ROM。
利用网页显示监控界面,突破了以往远程监控系统的C/S(Client/Server)模式,使用了当今更为普及的B/S( Browser/Server)模式,不仅节省了开发上位机软件的成本,也使得用户更容易、方便地使用远程监控系统,成为真正不受地域和使用条件限制的远程监控系统。特别是利用单片机嵌入式操作系统实现的远程监控系统,它的成本更加低廉,操作非常方便,安装和维护也很容易。比传统的基于计算机的Web远程监控系统有着十分明显的优势。在控制电路的扩展上,单片机的扩展相对来说要容易得多,计算机的扩展需要有特殊的插卡才能实现,相对来说成本要高一些。
当用户在浏览器中输入监控系统的IP地址后,为了保密需要输人用户名和密码,当监控系统对用户登录的合法性进行确认后,可进人监控界面,如图4所示。用户可以看到远程的主参数,还可以进行必要的控制。
3 结束语
利用现场总线和Web相结合的技术,是控制领域的一次重要革新。本研究通过在单片机上装人嵌人式操作系统来实现与网卡和CAN的通信,成本低廉,易于实现,编程方便。特别是基于单片机开发的网页测控功能,可通过Web的访问方式,无需在客户端安装测控软件,可做到随时随地监视远程设备的运行状态,对远程设备进行控制。实践表明:该系统设计合理,工作可靠稳定,使用方便,利于升级,成本低,可扩展性好,适应了当今技术的发展对控制领域提出的新要求。