实时仿真 — 数据采集器

背景介绍

实时仿真的核心为:通过传感器获取物理世界的局部状态(温度、变形和压力等),后续基于实时仿真进行推理,进而为智能装备提供完备的信息输入,最终实现物理感知。
在无人机安全监测领域,通过传感器获取系统的负载情况,后续基于实时仿真,推断结构在极端工作环境下的实时变形特征,确保无人系统的安全可靠(应用于载人飞行器的安全监测)。
近来,我们单独将力学传感器及对应的采集模块列出来,通过Demo实例展示产品的性能,具体如下图所示,实例中采用的小球重量为0.7g;重力传感器的量程为5kg,实验中将小球从空中抛下的时候,接触瞬间出现翻滚等行为。

重力传感器具体测量的信号如图2所示,在小球于传感器接触前,数据采集模块的读数处于稳定状态,接触瞬间,传感器能够准确捕捉接触期间的力学变化过程,具有很好的精度。

数据采集模块与传感器的具体实例:

数据采集模块的尺寸为:65mm35mm24mm,具体如下图所示:

具体的采集代码为:

import minimalmodbus
import serial
import struct
import time

# 串口配置
ser = serial.Serial('COM5', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=1)
sensor_vibration = minimalmodbus.Instrument(ser, slaveaddress=1)  # 从机地址为 1

# 保存文件路径
output_file = 'i32_values.txt'

# 将无符号 32 位整数转换为有符号 32 位整数
def u32_to_i32(u32: int) -> int:
    return struct.unpack(">i", u32.to_bytes(4, byteorder="big", signed=False))[0]

# 循环连续采集数据并保存到文件
def continuous_sampling():
    with open(output_file, 'a') as file:  # 打开文件并追加写入
        while True:
            try:
                # 读取寄存器 1002 和 1003
                reg_1002 = sensor_vibration.read_register(registeraddress=1002, functioncode=3)
                reg_1003 = sensor_vibration.read_register(registeraddress=1003, functioncode=3)
                
                # 合并寄存器值,假设 reg_1002 为高位,reg_1003 为低位
                u32_value = (reg_1002 << 16) | reg_1003  # 合并为 32 位无符号整数
                
                # 转换为有符号 32 位整数
                i32_value = u32_to_i32(u32_value)
                
                # 打印结果
                # print(f"Reg1002 (高16位) = 0x{reg_1002:04X}")
                # print(f"Reg1003 (低16位) = 0x{reg_1003:04X}")
                # print(f"合并的 32-bit HEX = {u32_value:08X}")
                # print(f"转换为有符号整数 = {i32_value}")
                
                # 将值写入文本文件
                file.write(f"{i32_value}\n")
                
                # 等待 50ms
                time.sleep(0.05)
            
            except Exception as e:
                print(f"发生错误: {e}")
                break

if __name__ == '__main__':
    continuous_sampling()

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

在线客服
联远智维
我们将24小时内回复。
2026-01-23 18:33:51
您好,有任何疑问请与我们联系!
您的工单我们已经收到,我们将会尽快跟您联系!
[注意事项]
208300320
取消

选择聊天工具:

滚动至顶部