振弦采集模块主动上传测量数据( UART)
默认情况下 VMXXX 模块总是以从机身份与主机完成数据交互, 在这种主从结构中, VMXXX 从不主动上传数据, 可通过修改自动上传寄存器( ATSD_SEL)来实现模块主动输出测量数据功能,ATSD_SEL 寄存器的每 1 位对应了一种数据类型,见下表。
当某位被设置为 1 时, 模块通过 UART 接口主动上传数据。 除实时信号幅值数据外,其它数据均在每次完成传感器频率计算及温度采集后自动以字符串形式上传。 自动上传的数据以“ $”
开始,字符串结构为: $aa=bbbb-[cc]-[dd]\r\n
$:固定符号
aa:数据类型标识,见上表说明
=:固定符号
bbbb:数据值
cc:数据单位,无单位数据为空
dd: 附加信息,当为信号实时幅值数据时, dd 表示数据索引值
\r\n:回车符
实时信号幅值主动上传
自动上传的实时幅值数据发送时间间隔为 100ms, 以大约 10Hz 的速率主动输出信号的实时幅值数据(若 ATSD_SEL.[0]为 1)。
数据格式(字符串): $AV=AAA%BBBB\r\n
$AV:固定标识-实时信号幅值
AAA%:信号幅值百分比值,数字部分固定为 3 位,不足时补 0。
BBBB:信号幅值索引号(值),每次开始测量时归零,最大 9999。
信号幅值数据举例
$AV=65%07\r\n$AV=65%08\r\n$AV=60%09\r\n$AV=……$AV=23%230\r\n
注:实时幅值主动上传功能开启时,尽量不要再向模块发送其它指令(关闭自动上传指令除外),严禁调用较为耗时的功能(如:读取版本信息、读取参数、保存参数等)。
采样数据集主动上传
采样数据主动上传与传感器频率值计算过程同时发生(若 ATSD_SEL[1]为 1), 使用一帧数据连续输出采样到的所有原始值,之间用“ |” 分隔。
采样数据举例
$TM=000001\r\n 数据倍值,以下所有数据*倍值=真实值
$TS=xxxx.x|xxxx.x|……\r\n
FFT 数据主动上传
FFT 数据主动上传在传感器测量完成后发生(若 ATSD_SEL[5]为 1), 使用一帧数据连续输出
FFT 的所有幅值数据。数据格式说明如下
其它数据主动上传
除上述自动上传数据外,其它自动上传数据均在传感器频率值计算完成后输出( 若ATSD_SEL.[x]为 1)。
举例
$FR=1234.5Hz\r\n 当前传感器频率值为 1234.5Hz
$FM=15239.9\r\n 当前传感器频模值为 15239.9,无单位
$TE=28.6'C\r\n 当前温度值为 28.6℃
自动上传与主从协议冲突解决
当设置了自动上传功能,又需要向模块发送主从结构的 MODBUS 或 AABB 协议指令时,模块采用主从协议优先的原则,在自动发送过程中,若收到了主从指令,则自动上传立即暂停 5 秒钟。 这样导致的一个现象是,当向模块发送了修改自动发送寄存器后(主从协议指令),并不会立即收到模块的自动上传数据,而是在约 5 秒后才会收到。