硬件


VAP200系列产品是基于MCUSH平台开发的用于振动冲击噪音信号采集分析的专用设备

产品特点:

● 8通道IEPE加速度传感器/电压信号差分输入,同步采样
● 搭配IEPE测量传声器,用于声学信号采集
● 可调采样率,最高204kHz
● 24位AD精度
● 8通道独立调理电路,各通道包含直通/积分两路,二选一开关切换
● 直通(加速度/电压)含45kHz抗混滤波
● 积分电路用于速度测量
● 64MB容量SDRAM用于缓存波形数据
● 百兆以太网接口
● RS232控制/调试/更新接口
● 转速/触发传感器输入/输出(用于多采集器级联)
● 报警输出端口
● 24V直流电源输入,防反接保护
● 金属外壳防护,U型导轨式安装
● 安全灵活的固件更新机制,以适配不同的应用场景
● 标配固件ModbusTCP版,适合局域网,搭配采集客户端(及HMI组态设备)使用
● 标配固件MQTT版,适合广域网,作为独立终端(搭配云服务器)并远程遥控
● 定制固件使用专用通讯协议,可获得更高的通讯效率
● 串口交互式控制,开放式通讯协议,自带命令帮助
● 不限制编程语言(推荐Python)
● 提供配套上位机“测试台软件”,自带众多示例代码
● 用pip安装mcush库(支持windows/linux/mac),编写python脚本

应用场景:

● 科研院校实验室:振动/声学实验数据采集分析
● 硬件产品开发:振动类实验测试数据采集分析
● 生产企业:重要旋转类设备的在线监测和故障诊断
● 轴承/齿轮箱:信号采集和故障诊断
● 机械制造:通过振动信号采集分析优化设计
● 系统集成商:为成套系统提供前端采集功能
● 车辆生产商:车辆噪音振动舒适性NVH测试分析

支持定制:

● 根据客户应用场景定制固件,集成分析算法和服务器通讯接口
● 可内置温度扩展板卡,适配振动/温度集成一体式传感器
● 可选锂电池供电(便携式场景)
● 可定制配套的边缘计算机,实现远程采集,实时分析,按需上传

技术参数:

外形尺寸 40mm x 220mm x 160mm(宽x高x深)
防护等级 IP30
安装方式 窄边DIN35导轨安装
重量 <1kg(仅主机)
工作电源 DC 24V ,5W功耗
工作环境 温度:-25℃~75℃; 湿度:5%RH~95%RH无凝结
以太网通讯 RJ45以太网10M/100M自适应
以太网指示灯 绿:常亮-连接,闪烁-通讯,灭-断开
橙:亮-100M,灭-10M
串口通讯 隔离型RS-232
处理器 32位ARM双核
存储 64MB SDRAM,8MB FLASH
模数转换器 AD7768,24位8通道同步采样
传感器电源 软件可控24V/4mA恒流源
转速传感器输入 12V供电,高电平脉冲输入(门限>6V)
转速信号输出 同步输出,用于多台级联
报警继电器 12V/50mA输出
指示灯 绿(系统模式,上电默认):系统状态闪烁提示
绿(转速模式,软件切换):转速信号同步提示
黄:故障/采集
红:报警
信号输入 电压:八路单端或差分输入
IEPE型传感器:恒流源输出
输入阻抗 >100 kΩ
动态范围 120 dB
信噪比 90 dB
串扰 -110 dB @1kHz
频率范围 DC~40kHz通道:0Hz~40 kHz
积分通道:2Hz~2kHz
采样频率 可调,最高204.8 ksps
振动测量精度 幅度: ±2% (20kHz以下)
幅度: ±5% (20 至 40 kHz)
相位: ±3° (100 Hz以下)
转速范围 <100000 rpm

注意事项:

● 保护地线应可靠接地
● 请使用经过认证的、容量适合的直流24V电源供电
● 在强电磁场干扰下或有腐蚀性气体的环境中使用时,应相应提高保护箱的防护等级
● 避免搬运安装过程中受到强烈振动和冲击
● 对各通道进行校准标定,可或得更高的测量精度

固件更新:

● 使用主芯片内部固化的更新引导固件,搭配相应的更新工具,可安全可靠地升级/降级
● 旋转面板模式开关,复位进入更新模式,RS232口通讯
● 传输过程意外断开、固件文件选择出错,只需重新更新即可
● 更新工具(Windows版)下载
● 标配扩展板固件下载
● 标配固件ModbusTCP版下载
● 标配固件MQTT版下载

软件

串口通讯常见问题
C语言编程常见问题

串口指令:

1、采集任务控制:
=>daq --help
usage: daq [-c ] [-i ] [-v ]
options:
 -c/--cmd        info|(en|dis)able|remote|speed|pwr_(r|e|s)|tacho[_(start|stop|led|trig|waiting|triggered)]|mclk
 -i/--idx        index
 -v/--val        value
=>
2、ADC芯片底层控制指令:
=>ad7768 --help
usage: ad7768 [-c ] [-i ] [-v ]
options:
 -c/--cmd        info|read|write|reset|sreset|start|sync|ssync|cache|reset_cache|[sync_]offset|
gain|gpio_(en|dis|mode|read|write)|record_(sample_rate|channel|start|stop|addr|bytes|length|buffer|done|status|fconv)
 -i/--idx        index
 -v/--val        value
=>

Python封装:

安装:pip3 install mcush
升级:pip3 install -U mcush
class VAP200(mcush.VAP.VAP200):
    def enterRemoteMode( self ):
        # 进入远程控制模式,内部采样任务自动停止
    def exitRemoteMode( self ):
        # 退出远程控制模式,内部采样任务自动恢复
    def ad7768( self, command, index=None, value=None ):
        # 底层的ad7768芯片串口命令封装
    def daq( self, command, index=None, value=None ):
        # 底层的daq任务控制串口命令封装
    def recordReset( self ):
        # 复位波形录制
    def recordStart( self ):
        # 启动波形录制
    def recordStop( self ):
        # 启动波形录制
    def recordWaitForDone( self, wait_tick=0.1 ):
        # 等待波形采样完成
    def setSampleRate( self, sample_rate=25600 ):
        # 设置采样率
    def getSampleRate( self ):
        # 查询采样率
    def setSampleLength( self, length=1024 ):
        # 设置采样长度
    def getSampleLength( self ):
        # 查询采样长度
    def setChannelBitmap( self, channel=0xFF ):
        # 设置采样通道(位图模式,每位对应一个通道)
    def getChannelBitmap( self ):
        # 查询采样通道
    def setSpeedBitmap( self, bitmap=0x00 ):
        # 设置积分模式(位图模式,每位对应一个通道)
    def getSpeedBitmap( self ):
        # 查询积分模式
    def getRecordBuffers( self ):
        # 查询采样数据缓存表
    def readBufferMem( self, channel, float_mode=True ):
        # 从缓存区读指定通道的数据
    def setAlarmOutput( self, on=True ):
        # 设置报警输出
    def getAlarmOutput( self ):
        # 查询报警输出
    def setSensorPower( self, on=True ):
        # 设置传感器恒流源输出
    def getSensorPower( self ):
        # 查询传感器恒流源输出
    def setMCLK( self, mclk_idx=0 ):
        # 切换底层的采样芯片主频率,以切换相应的采样率
    def setTachoLEDEnable( self, enable=True ):
        # 设置转速LED同步指示模式
    def setTachoMeasEnable( self, enable=True ):
        # 设置转速测量模式
    def setTachoTrigEnable( self, enable=True ):
        # 设置转速触发模式
    def isTachoWaiting( self ):
        # 查询是否正在等待转速触发
    def isTachoTriggered( self ):
        # 查询是否转速已触发
    def tachoStart( self ):
        # 转速功能启动
    def tachoStop( self ):
        # 转速功能停止
    def getTachoFreq( self ):
        # 查询转速测量结果(单位Hz)
    def readSwitchConfig( self ):
        # 查询面板模式开关配置
    def daqEnable( self ):
        # 仪器内部采集任务启用
    def daqDisable( self ):
        # 仪器内部采集任务禁用
    def daqIsBusy( self ):
        # 查询内部采集任务忙
    def daqChannelInfo( self, info=None ):
        # 查询内部采集任务状态信息
    def waitForIP( self, timeout=10 ):
        # 查询本机IP地址
    def getExtVoltage( self ):
        # 查询扩展板测量电压
    def setExtAlarmOutput( self, on=True ):
        # 设置扩展板报警输出
    def getExtAlarmOutput( self ):
        # 查询扩展板报警输出

class VAP200_ModbusTCP(mcush.VAP.VAP200_ModbusTCP):
    # 与VAP200类接口相似,通过ModbusTCP远程通讯 
    def __init__( self, net_addr, *args, **kwargs ):
        # 初始化,传入远程IP地址

class VAP200Extend(mcush.Mcush.Mcush):
    def getVoltage( self ):
        # 查询测量电压

示例:

import numpy, time
import mcush
from mcush.VAP import VAP200, VAP200_ModbusTCP
v = VAP200('COM10')  # 填入对应的串口号,Linux下为/dev/ttyUSB*
#v = VAP200_ModbusTCP('192.168.1.100')  # 填入对应的IP地址
#v = VAP200_ModbusTCP(VAP200('COM10').waitForIP())  # 组合方式,自动查询IP地址

sensitivity = 0.5  # 灵敏度:500mV/g
channel = 0  # 传感器通道 0 ~ 7
# 根据Nyquist-Shannon采样定律,采样率必须>=2*带宽 (>2.5更佳)
sample_rate = 12800  # 800/1600/3200/6400/12800/25600/51200/102400/204800
sample_length = 1024  # 串口模式下,读数据比较慢,不建议设置太高

# 设备初始化,下发配置
v.enterRemoteMode()  # 进入远程控制模式
v.recordStop()  # 内部记录停止
v.setTachoLEDEnable(0)  # 禁用转速同步指示灯
v.setTachoTrigEnable(0)  # 禁用转速触发功能
v.setTachoMeasEnable(1)  # 启用转速测量功能
v.tachoStart()  # 上述转速功能生效
v.setSensorPower(1)  # 24V/4mA恒流输出打开 
v.setSpeedBitmap(0x00)  # 全部为加速度(直通)模式 
v.setChannelBitmap(1 << channel)  # 指定的单通道
v.setSampleRate(sample_rate)  # 设置采样率(Hz)
v.setSampleLength(sample_length)  # 设置采样长度(按点数)

# 读取验证配置
SAMPLE_RATE = v.getSampleRate()
SAMPLE_LENGTH = v.getSampleLength()
SAMPLE_LENGTH_HALF = int(SAMPLE_LENGTH/2)
SAMPLE_TIME = SAMPLE_LENGTH / float(SAMPLE_RATE)

while True:
    v.recordStart()  # 启动新记录
    if v.isTachoWaiting():
        print('Waiting for tacho trigger...')
        while not v.isTachoTriggered():  # 等待触发(若开启触发功能)
            time.sleep(0.1)
    print('Measuring...')
    v.recordWaitForDone()  # 等待记录完成(记录时黄灯会点亮)
    v.recordStop()  # 停止
    print('Reading...'))
    dat = v.readBufferMem( channel )  # 读波形浮点数组
    dat_avg = numpy.average(dat)  # 计算平均值
    dat = (dat - dat_avg) / sensitivity # 波形去除偏移,灵敏度修正

Shell Lab 测试台软件

下载(Windows版本)


软件自带多个实用示例脚本,可直接使用,也可移植至命令行脚本单独调用,脚本包括:
● VAP200 FFT analysis.py 单通道波形采集记录描绘、FFT分析、谱图峰值捕捉、保存波形图片和原始数据文件
● VAP200 multi channel.py 多通道波形采集描绘、保存原始数据文件
● VAP200 tacho measure.py 转速测量
● VAP200 local daq.py 本机DAQ任务描绘
● VAP200 ip config.py 本机IP配置(锁定静态IP)
● VAP200 extend temperature.py 扩展板测量温度(振动温度一体式传感器)

运行截图



冲击引起结构共振的信号示例:

示例

以下波形示例使用VAP200采集,传感器型号PCB-603C01:

手持式风扇

三档可调

原始数据
直流减速电机

减速齿轮单方向磨损严重,
两个方向分别测试
顺时针旋转(全速)

原始数据(204800采样率)

原始数据(102400采样率)

原始数据(51200采样率)

原始数据(25600采样率)

原始数据(12800采样率)
不同调速比下的谱图对比(顺时针)



逆时针旋转(全速)

原始数据(204800采样率)

原始数据(102400采样率)

原始数据(51200采样率)

原始数据(25600采样率)

原始数据(12800采样率)
不同调速比下的谱图对比(逆时针)


测试条件:24V供电,Shell Lab S1控制器通过PWM(频率10k)调速
汽车发动机


传感器型号CA-YD-170
因发动机材料无法被磁吸,传感器安装在悬架支撑处
怠速(~1000rpm)

原始数据
高转速(~4000rpm)

原始数据
开关电源噪音分析

使用传声器采集某款开关电源的啸叫音
电源轻负载时,音频较低,人耳能明显听到啸叫

电源重负载时,音频集中在37kHz,超出人耳听力极限
(虽然已经听不到了,但幅度一点没降低)


注:搭配程控电子负载,可自动描绘出负载-音频变化关系,以改善设计

案例

锤击实验演示

使用自带示例脚本(单/多通道测量)
转速测量

变频器驱动异步电机,接近开关测转速对比