(3) 自带的6路模拟输入的10位ADC,可设置为8位快速ADC,可以基本满足本系统对采集的精度要求,完成对电机、电池状态的测量任务;对模拟信号的采集,采集电路将各个测试点传感器电信号进行调理(滤波、放大、电量转换)后,接入微处理器的ADC接口。为抑制共模干扰,放大器基本采用差动输入。
(4) 2个8位分辨率的脉宽调制输出(PWM)为电机控制器提供控制信号,完成对电机速率的调节。与51系列兼容的可编程I/O口(准双向、推挽、高阻和开漏),为数字信号提供通道,负责开关量的读取与设置。
(5) 16K字节内部程序存储器,可以满足本系统的程序空间。带字节方式主和从功能的I2C总线串行I/O口,可方便的和外围存储芯片接口,实现数据的存储功能。
硬件部分除了以上主要部分外,还有电源电路、扩展存储器、以及看门狗电路。电源电路提供所需隔离电源,用于提高节点的稳定性和安全性;E2PROM通过I2C串行总线存放系统的某些参数;看门狗电路主要是保证系统运行的稳定性,在上电、掉电以及警戒情况下复位输出。
4 系统软件设计
4.1上位机软件的设计
虚拟仪器软件主要分为用户应用层、虚拟设备驱动程序层及硬件设备驱动层三个层次。用户应用层和用户需求紧密相关,它主要完成两个任务:一、为用户提供各类测试仪器的虚拟界面,进行人机交互,也就是通常所说的界面设计,通过它来显示收集实测数据和状态信息,提供用户与系统的交互平台;二、完成对数据的分类、判断、处理,串口通信,数据的存取操作等任务。
图3 上位机程序示意图
其中串口的设备驱动是由VISA完成的,LabVIEW所提供的VISA是虚拟仪器软件结构体系(Virtual Instrument Software Architecture)简称。VISA是在所有LabVIEW工作平台上控制VXI、GPIB、RS232以及其他种类仪器的接口程序库。VISA是由组成VXI plug&play系统联盟的35家最大的仪器仪表公司所统一采用的标准。采用了VISA标准,就可以不考虑时间及仪器 I/O选择项,驱动软件可以相互兼容使用。
4.2节点程序设计
图4 节点主程序框图
图4为主程序框图。它描述了通用模块设计的基本流程,根据读入跳线的状态和读入存储器中设定的状态,决定本模块的作用及本模块的工作方式。选定了工作方式以后,重新进行各自的初始化,主要包括I/O端口的配置、CAN中断的设置、验收滤波器的设置、串口工作方式设置、定时器方式设置、波特率设置以及串口I2C的相关设置。在完成初始化设置后,就可以回到工作状态,进入各自的主循环。以下分别介绍各个工作方式的实现:
1) 总线转换的实现
通用串口到CAN接口转换工作方式的设计,主要是实现CAN总线数据与RS232/485总线数据之间的互连通信以及系统的升级。通过内置CAN控制器控制总线工作状态,结合软件设计,实现通用串口与CAN接口通信的目的。Modbus规定了两种传输模式ASCII或RTU,本系统选择使用RTU模式。Modbus协议报文与CAN总线报文相互转化时,由于标准的CAN协议有11位ID,而Modbus协议的地址为一个字节,为便于转换将其ID分为3位和8位两部分,前3位用于判断报文所属类型,后8位为每个模块的ID值。例如11位Modbus协议报文向CAN口转发时转化格式规定如图5。CAN总线向串口转发时需经过收集、排队、转发三个过程。收集是因为作为上位机操作的返回帧,有时会返回多个节点的数