基于CAN总线的机械海流计测控模块设计

2021-06-10 06:50刘庆鹏付明阳于雨惠力鲁成杰
山东科学 2021年3期
关键词:海流测控总线

刘庆鹏,付明阳,于雨,惠力,鲁成杰

(齐鲁工业大学(山东省科学院)山东省科学院海洋仪器仪表研究所,山东 青岛 266100)

海流计是测量海水流速流向的仪器,依测量原理不同,目前有机械海流计、电磁海流计和声学多普勒海流计三种类型[1]。机械海流计虽然结构设计较简单,但是价格实惠,性能可靠且使用更为方便,现在仍被广泛应用在海洋观测剖面浮标(Argo浮标)[2]、锚定资料浮标、潜标、自动观测站台和调查船[3]等很多场合,使用量占海流计总量的一半以上。目前,国外的机械海流计已进入了中国市场,如挪威的安德拉RCM系列海流计[4]等,虽然性能优异,但价格昂贵。中国海洋大学研制的SLC9-2型机械海流计代表了当前国内机械海流计的发展水平,至今仍在我国广泛使用,但是存在测流精度不高,无法测量低流速的问题。由于机械海流计不能测量三维流速,且测量数据单一,实用性大为下降,有必要开发可拓展的能够测量不同海流层流速流向的机械海流计测控模块,以提高其性能。本文利用高性能、高可靠性的控制局域网络(controller area network,CAN)总线技术,以STM32F103RCT6芯片为核心设计了机械海流计测控模块,使用几个该模块连接在不同的海流层,可以采集不同海流层的信号,并且进行数据输出控制与远程传输。

1 海流计总体设计

1.1 机械海流计总体设计

海流计的总体结构由水上接收机和水下探测模块节点组成,接收机通过CAN总线和水下探测节点模块相连,需要时可以把接收到的数据通过接口电路传给上位机进行处理。机械海流计总体框图如图1所示。

图1 机械海流计总体设计框图Fig.1 General design block diagram of mechanical current meter

1.2 水下探测模块节点设计

水下探测控制模块以STM32F103RCT6芯片为控制核心,主要由最小系统电路、CAN总线接口电路、流速测量电路、流向测量电路等组成。该测控模块的系统结构框图如图2所示。

图2 水下探测模块节点框图Fig.2 Node block diagram of underwater detection module

测控模块主要功能如下:

(1)具备流速测量功能和流向测量功能;

(2)具备CAN总线通信功能;

(3)具备远程设置模块的CANID、波特率等参数的功能。

系统工作流程如下:上位机发出控制指令,测控模块接收指令后产生中断接收CAN总线数据帧,并按照数据帧的类型执行相应的操作。当模块接收到参数设置帧时,模块设置系统参数并把参数值存入SD卡中;当接收到传输数据帧的指令时,该测控模块进行流速与流向数据的采集工作,并将数据传输到CAN总线网络上,最后传给上位机。

2 硬件设计

2.1 最小系统电路

主控制器的核心控制芯片使用意法半导体(ST)公司的F103系列的低功耗高性能芯片STM32F103RCT6。该芯片是ST公司推出的32位ARM架构微处理器,采用Cortex-M3内核,工作频率为72 MHz,还包含两个集成电路总线(inter-integrated circuit,I2C)、三个串行外设接口(serial peripheral interface,SPI)、一个安全数字输入输出卡(secure digital input and output,SDIO)和一个CAN,考虑系统成本和系统综合性能,此芯片符合该测控模块的具体要求[2]。

最小系统电路包括BootLoader启动电路、供电电路、复位电路、时钟晶振电路和SW调试电路。由外接的8 MHz的晶振构成时钟电路,为系统提供时钟信号;供电电路采用低压降稳压芯片ASM1117-3.3,将外部提供的5 V电压转为供给STM32核心芯片的3.3 V电压;采用RC电路对芯片上电复位。最小系统电路如图3所示。

图3 最小系统电路图Fig.3 Circuit diagram of minimum system

2.2 CAN总线接口电路

STM32F103RCT6内嵌了CAN控制器,支持CAN协议2.0A和2.0B。CAN收发器采用广州金升阳公司的TD301MCAN模块,采用3.3 V电源供电。CAN总线收发模块不仅包含CAN收发器的收发数据的功能,还具有电源隔离、信号隔离和总线保护功能。该模块主要负责把CAN控制器的逻辑电平转化CAN总线传输的差分电压。为防止电源电压不稳造成瞬态电压干扰,在电源和地之间接了一个瞬态电压抑制二极管(TVS),同时为了防止静电ESD干扰CAN总线数据传输,在CANH与CANL之间跨接了两个瞬态电压抑制二极管。为了实现低功耗设计的目的,在CAN 收发器接口的电源端加上了一个PMOS管,当需要向接收机发送数据时,SWITCH口提供高电平,Q1导通,给收发器供电,以这种方式实现加电控制。CAN总线接口电路具体如图4所示。

图4 CAN总线接口电路Fig.4 CAN bus interface circuit

2.3 流速标定及测量方案

流速测量方案中海流计机械转子转速由低功耗、高稳定度的霍尔器件A1104E进行检测,检测转速是在海流计机械转子上贴上等距的4块磁钢[5]。根据霍尔效应,当旋转的磁钢转至霍尔元件的瞬间,会在霍尔元件的两端产生一个电势差,从而在其输出端产生一个脉冲信号,再通过STM32的定时器及计数器记录[6]设定时间t内的脉冲个数N,由此可得单位时间内的脉冲数n。

(1)

海流计标定时,在测量范围0.02~6.50 m/s内,每隔0.50 m/s测定一次流速与n的关系,这样可得到标定系数表,详见表1。

表1 标定系数表

由此可计算得到海流流速v与脉冲个数n之间的多项式拟合系数ai。

v=a0+a1n+a2n2+a3n3+…+aini。

(2)

实际使用中,系数取到三次方项,即使用下述公式(3)由STM32测得的n值计算流速v。

v=a0+a1n+a2n2+a3n3。

(3)

流速测量的流程图如图5所示。

图5 流速测量流程图Fig.5 Flowchart of current velocity measurement

2.3 流向测量电路

流向测量电路采用三轴磁阻传感器HMC5883L测量三维磁强计数据,其感应到的X轴方向的磁场强度Hx与Y轴的磁场强度Hy的矢量和为地磁场水平分量HN。地磁场水平分量HN与X轴的夹角即为方位角[7]。采用三轴加速度计和三轴陀螺仪组件MPU6050测量三维加速度A和三维陀螺仪数据G,采用四元数法进行数据融合后对三轴磁阻传感器数据作倾角矫正,最后将方位角数据传输到CAN总线网络上同时记录到SD卡中。姿态解算电路如图6所示。

图6 姿态解算电路图Fig.6 Schematic of attitude solution

2.4 数据存储电路

测控模块采用Kingston公司生产的4G SD卡 作为存储设备,SD卡通过SDIO接口与芯片连接。其接口电路见图7。

图7 SD卡接口电路Fig.7 SD card interface circuit

3 软件设计

机械海流计测控模块的软件分为水上接收机软件、水下探测器数据采集模块和CAN总线通信模块[8]。水上接收机软件主要负责数据的接收、存储、显示和人机交互,并在需要时通过接口电路将数据传输给上位机处理。水下探测器数据采集模块主要负责流速和流向的数据采集,并将采集到的数据进行处理后传输到CAN总线网络上。CAN控制器初始化函数、CAN帧发送函数和CAN帧接收函数一起构成CAN总线通信模块。

3.1 接收机程序设计

水上接收机软件主要负责数据的接收、存储、显示和人机交互,并在需要时通过接口电路将数据传输给上位机处理。具体的软件流程如图8所示。

图8 接收机软件流程图Fig.8 Software flowchart of receiver

3.2 数采模块程序设计

流速流量采集模块最主要的任务是采集机械转子转速并转换为相应的流速,采集测控模块的三维姿态数据并通过四元数法矫正姿态得到流向。接收到上位机发送的采集数据指令后,进入数据采集流程:STM32核心芯片定时60 s,计数器开始累计脉冲数,60 s后可知脉冲采集数量并采集一次方位角信息;采集后的信息进入单片机处理得出最终的流速和流向数据,加时间戳后发送到CAN总线网络并存储到SD卡中。数据采集流程图如图9所示。

图9 数据采集流程图Fig.9 Flowchart of data acquisition

3.3 CAN总线通信模块

协议是网络通信的关键。本设计使用的是具有11位标识符的标准帧,其中高4位代表帧类型,低7位对模块ID进行标识。CAN总线协议帧类型(FT)规定了4种类型的协议帧,占4位,00代表参数有参数设置帧,01代表读取数据帧,10代表数据帧,11代表故障帧。帧类型后面是数据长度码(DLC),占4位,表示数据长度字节数。具体协议格式如图10所示。

图10 CAN总线通信协议说明Fig.10 CAN bus communication protocol description

CAN总线初始化的目的主要是设置CAN总线工作时的参数,初始化的内容包括CAN控制器硬件使能、CAN控制器复位、设置总线波特率、初始化中断、选择工作模式等。具体流程如图11所示。

图11 CAN总线初始化流程图Fig.11 CAN bus initialization flowchart

CAN帧发送函数通过将已经打包完毕的CAN帧发送到CAN总线上来实现数据的发送[9]。CAN帧打包完毕后进入发送函数流程:第一步,判断是否有空闲的发送缓冲区,若没有则返回失败;若有则进一步选择空闲的缓冲区,然后启动发送命令,进而返回成功,启动发送将CAN帧发送到CAN总线网络。CAN发送函数的程序流程如图12所示。

图12 CAN发送函数程序流程图Fig.11 Flowchart of CAN sending function program

CAN帧接收函数以中断方式调用以提高系统效率[10]。从CAN总线网络收到CAN帧数据,触发接收中断,进入读取CAN接收缓冲区流程:首先判断接收缓冲区中是否有需要接收的CAN帧数据,若没有数据则标志缓冲区没有数据帧并返回;若判断接收缓冲区内有数据则读出该数据帧,并标志数据有效,最后返回。见图13。

图13 CAN接收数据函数流程图Fig.13 Flowchart of CAN receiving data function

4 主要技术指标

经过多次海上试验,得到本文设计测控模块的性能参数,如表2所示。

表2 测控模块主要性能参数

中国海洋大学研制的SLC9-2型机械海流计是目前国内机械海流计领域的性能代表,本测控模块与SLC9-2的对比表详见表3。由表3 可以看出,设计的测控模块具有流向测量精度高、流速测量范围大、重量轻等优点,并且采用电缆供电相比更换电池能测量更长的时间。经测算,设计模块的平均功率为290 mW,低于SLC9-2型机械海流计的300 mW。

表3 测控模块与SLC9-2性能对比

5 结语

本文在分析当前机械海流计的基础上对其测控模块进行了重新设计和提升,选用低功耗的控制芯片和外围器件,并对CAN收发器件进行加电控制,降低了系统功耗。

通过与SLC9-2型海流计电路性能对比可知,本文设计的测控模块具有流向测量精度高、流速测量范围大、质量小、功耗低、启动流速低等优点。并且该模块实现方法简单,节点扩展非常方便,通过CAN总线连接能够完成对不同海流层流速和流向的测量,提高了测量的灵活性,具有较强的实用价值。由于没有对海流计的机械结构进行改进,因此该设计还存在在浅水域工作不稳定的缺点。在之后的工作中,将对机械结构进行优化设计,以达到更好的测量效果。

猜你喜欢
海流测控总线
基于数据挖掘和海流要素的船舶导航改进研究
昆山祺迈测控设备有限公司
有限水深海流感应电磁场数值模拟❋
有限水深海流感应电磁场数值模拟❋
一种基于CAN总线的误码测试方法
垂直海流如何流
基于现代测控技术及其应用分析
虚拟仪器技术在农业装备测控中的应用
向着新航程进发——远望7号测控船首航记录
CAN总线并发通信时下位机应用软件设计