1.概述
控制器局域网(Controller Area Network,简称CAN)是一种支持分布式和实时控制的串行通信网络,其主要特点是采用多主方式工作,基于报文ID并采用非破坏总线仲裁技术进行优先权仲裁,串行通信,事件触发型,大大减少线束的数量。CAN总线协议最初是由德国BOSCH公司于20世纪80年代提出并用于汽车目的,1993年形成国际标准ISO 11898-1。[1][2] 由于其高性能、高可靠性及独特的设计,CAN越来越收到人们的重视,已经广泛应用于汽车电子控制、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械、家用电器及传感器等领域发展,并已被公认为几种最有前途的现场总线之—。
Microchip公司的PIC18F458是集成有CAN控制器的8位Flash单片机,遵循CAN2.0B协议。在为某公司开发的车载CAN总线仪表盘系统中,采用PIC18F458和TJA1050构建了一个多结点的CAN网络,用于采集传感器信息并驱动对应的仪表显示。在系统开发过程中,为了便于调试并检测每一个结点的状态,采用了每一个结点配置一块LCD用于相关信息的显示和运行情况跟踪。由于LCD的控制需要占用MCU的端口;并且,最终的系统并不需要LCD接口。因此,为了方便系统调试及故障诊断,需要采用一种简便易行且不影响最终产品功能的调试方法。如能直接利用PC机的显示器作为调试信息的输出终端,将大大减少嵌入式目标系统开发过程中的准备工作量。文献[3]提出了一种在WINDOWS环境中利用超级终端技术显示嵌入式系统信息的方法,文献[4]介绍了在网管系统中采用VT100终端技术对网络进行管理的有关技术,但如何以较低的成本方便地调试多结点的嵌入式系统,则未见相关的文献报道。在WINDOWS2000/XP环境下,采用VT100超级终端和RS232串行通信技术,通过在嵌入式目标系统内编制简单的接口软件就可以方便对多结点的嵌入式系统进行调试和诊断。
2.车载CAN总线仪表盘系统网络的结构
基于CAN的车用仪表系统主要要求完成以下两项功能:(1)采集车身开关状态,并通过CAN总线传输至仪表板上显示;(2)采集发动机状态信息,包括发动机转速,机油压力,水温,油温等,并通过CAN总线传输至仪表板上控制相应的仪表显示。由于与车身状态有关的开关位置较分散,因此,需要多个结点参与完成数据的采集。基于CAN总线的车用仪表系统的拓扑结构如图1所示。
图1中,双点划框中的部分为基于VT100的在线调试检测模块,框外部分为实际运行中的系统。由图1可以看出,利用CAN总线和VT100终端技术,可以将PC机或笔记本电脑看作是整个嵌入式系统的监控台,因而可以充分利用WINDOWS丰富的软硬件资源,方便地实现对系统的监控。
3.VT100控制序列
VT100最初是由DEC公司于1978开发出来的一种物理终端(键盘,显示器等),可解释执行ANSI X3.64控制码,后来被IBM的PC机所采用,目前在PC机上有功能相同的仿真模拟软件可用。
VT100 可根据控制命令发送或显示相应的字符,主机可以控制VT100 显示器上光标的移动、显示模式、字体属性的变化等。VT100的控制命令分两种:控制字符和控制序列[5]。
VT100的控制字符的ASCII码值(八进制表示)为000~037和177,可以完成换行(LF) 、使终端停止或重新发送数据(XOFF/XON)等,如表1所示。
VT100的控制序列遵循Digital标准和ANSI标准。而在当今的应用中,大部分都使用ANSI标准中的有关内容。这是一种被称为ESC序列的控制序列码,它的特点是在每条控制序列的开头都有1 个控制序列引导符CSI,在VT100中是ESC。表2 给出了VT100中常用的ESC命令序列。