基于RS485总线的分布式高精度数据采集系统
2021-03-24张会新
陈 航,严 帅,刘 胜,张会新
(1.中北大学,仪器科学与动态测试教育部重点实验室,山西太原 030051;2.北京宇航系统工程研究所,北京 100076)
0 引言
在一些分布式测试系统中,不可避免地要对被测环境不同位置地点多种物理量(湿度、温度、压力等)进行精确采集和测量[1-2]。传统的测试系统大多采用点对点连线的电缆对传感器的模拟量信号进行传输,这种方式一方面容易受到周围电磁环境的影响,降低采集精度;另一方面增加了测试系统中电缆的消耗量和成本,还在一定程度上影响采集系统的健壮性。为了提高测试系统的智能化程度和精确度,设计了一个基于RS485总线的分布式高精度数据采集系统,将各地点的传感器信号通过采样转换为数字信号,通过RS485总线传至系统主控站点[3-5]。和现有的测试系统相比,增加了数据采集通道个数和采集精度,最多可实现640个测点数据的轮询采集,提高了数据传输的智能化水平。
1 系统总体设计
分布式数据采集系统主要包含上位机、RS485总线主控站点和40个RS485总线被控站点等部分,原理框图如图1所示。主控站点与上位机通过USB接口交换数据,在上位机下传的数据被解析后,FPGA将其通过主站RS485模块发出并与配对成功的被控站点通信。根据不同的命令,可以实现不同速率下的固定通道和自动扫描通道数据采集功能。主控站点在接收到数据后进行打包,通过USB接口传至上位机,实现了一主控站点多被控站点的高速RS485通信。
图1 系统整体原理框图
每个被控站点包含RS485总线模块、FPGA控制模块、A/D采集模块等,属于独立的数据采集子系统,原理设计图如图2所示。与主控站点下传的站点号匹配正确后,FPGA首先对ADS1258相关寄存器进行配置,开始A/D采集,完成后将数据传至主控单元。
图2 被控站点设计示意图
2 系统硬件设计
2.1 FPGA控制模块
系统选用Spartan-6系列FPGA作为主控芯片。在主控站点的硬件电路设计中,选择XC6SLX150芯片对RS485总线通信芯片ISO1176T和USB接口芯片FT2232进行控制,其电路连接示意如图3所示。被控站点的A/D采集芯片ADS1258及RS485通信芯片通过SPI接口与FPGA连接,电路设计如图4所示。
图3 主控站点FPGA电路设计图
图4 被控站点FPGA电路设计图
2.2 RS485总线模块
分布式数据采集系统具有分布范围大、电磁环境复杂、传输节点要求多等特点。为满足设计要求,选用RS485总线通过差分线的压差传输数据,可以极大地减少传输过程中的共模干扰,提高数据传输系统的健壮性[6]。总线接口芯片ISO1176T内部集成了变压器驱动器,在不要外部光耦的情况下实现隔离式供电,该芯片最大可支持256个从节点,最大数据传输速率达到40 Mbps,详细的电路连接图如图5所示。
图5 RS485总线模块电路连接图
2.3 A/D转换模块
被控站点采用ADS1258对来自传感器的模拟量信号进行模数转换。ADS1258具有24位采样分辨率,固定通道的采样速率能达到125 KSPS,16个通道同时采集最高速率可达23.7 KSPS,同时还集成了片上温度传感器,可以通过读取寄存器来读取芯片工作温度,它的工作温度为-40~105 ℃,此外还有低温漂、低噪声等特点,非常符合系统的设计要求[7-8]。
FPGA和ADS1258通过SPI接口相连,CLKIO为外部时钟输入引脚,来自FPGA的16 MHz时钟通过50 Ω电阻后与其相连,同时要将时钟选择引脚CLKSEL置高,芯片模拟供电电压为AVDD=5 V,AVSS=AGND,参考电压为VREF=VREFP-VREFN=5 V,数字供电电压为DVDD=3.3 V,DVSS=DGND。ADS1258的硬件电路如图6所示。
图6 ADS1258接口电路设计图
2.4 USB接口设计
FT2232H为支持高速USB2.0通信的接口芯片,支持最高480 Mbps的通信速度。它有A、B 2个数据传输通道,根据设计需要可以配置成多种速度模式,具体的接口如图3所示。芯片的工作模式为FT245异步FIFO接口模式,93LC56B为EEPROM,用于保存FT2232H配置完后的相关信息[9]。
3 系统软件设计
3.1 主控站点软件设计
主控站点通过USB接口实现和上位机的数据交换,根据不同指令实现数据打包传输和被控站点寄存器配置功能[10]。FT2232H的数据收发时序通过FPGA控制,具体的读写时序如图7所示。RXF#信号为芯片输出信号,当缓存Buffer内部有读数空间时输出为低,这时可以拉低RD#信号进行一次8位FIFO数据的读取,然后RXF#信号被拉高,这期间不能进行读数操作,等RXF#再次拉低时进行下一次读数操作,写数据过程和读数据过程类似。
图7 FT2232H读写时序图
上位机和主控站点的通信协议如表1所示。在系统上电完成复位后,若接收到命令的第一个字节为25 h,再继续判断下一个字节,若命令是55 h(查询指令),则根据表1所示的通信协议进行RS485总线通信,主控站点从1到40依次查询被控站点,并将收到被控站点的数据上传至上位机进行显示、存储;若命令是AC h(寄存器配置指令),则对上位机的命令拆分处理,把后4个字节的数据根据总线通信协议进行打包,然后转发至对应的被控站点。
表1 上位机通信协议
总线数据传输采取CRC-4进行差错控制,通信协议如表2所示。主控站点将校验无误的数据传送给上位机显示存储,校验不通过则再一次查询该站点,如果连续3次数据校验不通过,则将站点序号告诉上位机,然后进行下一个站点查询,避免了因某个站点工作异常而使整个系统无法工作,提高了数据采集系统的可靠性性和抗干扰能力[11]。
表2 RS485总线通信协议
3.2 被控站点软件设计
被控站点作为独立的数据采集系统,主要完成16路模拟量信号采集和RS485总线通信工作。根据系统设计要求,ADS1258默认工作模式为以23.7 KSPS采样速率自动扫描16个模拟量输入通道,寄存器通过SPI接口进行配置,DIN管脚为数据输入引脚,CONFIG1寄存器主要涉及采样速率的设置,命令字和寄存器地址为61 h,相应的配置数据为03 h;MUXSG0和MUXSG1寄存器主要进行采样通道选择,命令字和寄存器地址分别为64 h和65 h,相应的配置数据都为FF h。根据SCLK管脚的时序写入配置寄存器的数据,如图8所示,在片选信号CS拉低时,有效命令和数据在SCLK上升沿从最高位开始顺序进入DIN管脚。
图8 ADS1258寄存器配置时序图
系统运行后,被控单元首先按照默认值对ADS1258的寄存器进行配置,配置完成后对相关寄存器的值进行读取,验证是否配置正确,随后开始监测RS485总线上的数据,当与总线上的站点序号验证成功后,进行数据采集和发送数据,工作软件设计流程如图9所示。上位机可以对各被控站点的寄存器进行重新配置,以满足特殊测试要求。
图9 被控站点软件设计流程图
ADS1258开始进行数据采集时,首先将START管脚进行拉高,程序开始检测DRDY管脚的电平状态,当为低电平时,表示一个通道模拟量完成转换,读取有效数据共计32位,高8位包含状态信息和通道信息,低24位代表转换的有效数据。ADS1258可以在小于700 μs的时间内处理完16路通道的数据采集。
4 测试结果
分布式数据采集系统的RS485总线上间隔1 m设置一个被控站点,总线长度共计40 m。系统测试时,在第一个被控站点15通道输入2 V电压,其余的被控站点和通道不输入电压,使用上位机发送查询命令后回传的数据见图10。
图10 测试数据
根据上位机的数据显示,主控站点按顺序查询了被控站点的16路采集通道,EB 90 EB 90是子站点数据发送结束标志,很好地完成了主控站点控制下的数据采集功能。数据“AD D0 00 01 96 2F 77 E9”中“AD D0 00 01 96”表示第一个被控站点15通道的数据采集结果,“2F 77 E9”转变成电压为1.977 8 V,高精度万用表显示实际电压为1.978 9 V,所以系统的采集精度为0.6%,表明数据采集系统的精度很高。
5 结束语
分布式数据采集系统的设计采用24位的模数转换芯片ADS1258,提高了模拟量数据采集精度,选用RS485总线进行数据的传输,增加了系统挂载的站点数量,总线驱动器芯片ISO1176T的使用实现了电源隔离,减少了周围环境的干扰。测试表明,系统数据传输可靠,精度很高,同时还可以根据要求变换采集通道数量和采集速率,该分布式数据采集系统具有较好的实用价值。