第1章:测试系统架构设计——硬件选型与软件分层
大家好,我是老张。做医疗贴片生产测试这行,算下来也有十来年了。今天咱们聊聊测试系统的架构设计。说实话,很多新手一上来就急着写代码,结果硬件选型不对,后面全得推倒重来。我吃过这个亏,所以这一章咱们把地基打牢。
1.1 硬件选型:别让设备拖后腿
硬件选型这事儿,说白了就是给系统挑「手脚」。手脚不灵光,再好的脑子也白搭。医疗贴片测试,核心就三样:数据采集卡、万用表、电源。
1.1.1 数据采集卡(DAQ)
数据采集卡是系统的「耳朵」,负责听信号。我建议重点关注三个指标:
- 采样率:贴片信号一般不高,但别省。我个人习惯留3倍余量。比如信号最高1kHz,采样率至少3kS/s。
- 分辨率:16位是底线。12位的卡测电压漂移,你会哭的。
- 通道数:别只看现在。我当年一个项目只留了8通道,后来加测点,硬生生多花两周改方案。
我的推荐:NI USB-6210 或 国产的阿尔泰 USB-3200。性价比不错,驱动也成熟。
小技巧:选卡时问清楚有没有Python的SDK。有些厂家只给C++的,你封装起来会想骂人。
1.1.2 数字万用表(DMM)
万用表用来测电压、电流、电阻。医疗贴片对精度要求高,尤其是漏电流测试。
| 参数 | 最低要求 | 推荐型号 |
|---|---|---|
| 直流电压精度 | 0.01% | Keysight 34461A |
| 电流分辨率 | 1nA | Keithley DMM6500 |
| 通信接口 | GPIB + USB | 吉时利 2100 |
嗯,这里要注意。别买那种几百块的台式万用表。我曾经图便宜买过一台,测出来的数据跳得像心电图,排查了三天才发现是表的问题。
1.1.3 可编程电源
电源是系统的「心脏」。医疗贴片供电要求稳定,纹波要小。
- 电压范围:0~30V 基本够用
- 电流精度:1mA 以下
- 通信接口:必须支持远程控制
我个人习惯用 Rigol DP832 或 Keysight E36312A。前者便宜,后者稳。看预算选。
避坑指南:我曾经遇到过电源输出有毛刺,导致贴片误判为短路。后来加了输出滤波电容才解决。所以选电源时,纹波指标一定要看。
1.2 软件分层架构:别把代码写成意大利面
软件架构这事儿,说白了就是「分而治之」。我见过太多人把所有代码写在一个文件里,调试起来想死的心都有。我的建议是分三层:
1.2.1 驱动层
驱动层负责跟硬件打交道。说白了就是发指令、收数据。这一层要做得「薄」,不要加业务逻辑。
# 驱动层示例:控制电源输出
class PowerSupplyDriver:
def __init__(self, visa_resource):
self.resource = visa_resource
def set_voltage(self, voltage):
self.resource.write(f"VOLT {voltage}")
def get_current(self):
return float(self.resource.query("MEAS:CURR?"))
你看,代码就几行。别在这里做判断、算平均值。那是上层的事。
1.2.2 业务逻辑层
这一层是系统的「大脑」。测试流程、判断标准、数据记录,都放这里。
- 测试序列管理:先测什么后测什么
- 合格判定:阈值比较、统计判断
- 数据存储:写数据库或CSV
我的习惯:业务逻辑层只调用驱动层的接口,不直接操作硬件。这样换硬件时,只改驱动层,上层代码不用动。
1.2.3 UI层
UI层是给操作员看的。我的原则是:能点按钮就别让输命令。医疗产线上的工人,不是程序员。
我个人喜欢用 PyQt5 或 Dear PyGui。前者生态好,后者性能强。看场景选。
小建议:UI层只做展示和事件响应。别把测试逻辑写在按钮点击事件里。我曾经见过一个项目,点「开始测试」按钮后,里面写了200行代码...后来维护的人直接辞职了。
1.3 通信协议选择:GPIB、USB、串口
通信协议这事儿,很多人觉得无所谓。其实选错了,后面全是坑。
1.3.1 GPIB(IEEE-488)
GPIB是老大哥,稳定、抗干扰。但速度慢,线缆贵。适合老设备。
- 优点:可靠,多设备级联方便
- 缺点:速度慢(1MB/s),线缆贵
- 适用场景:老式万用表、电源
1.3.2 USB
USB是现在的主流。速度快,即插即用。但要注意:USB线别太长,超过3米容易丢包。
- 优点:速度快(USB 2.0 就有 480Mbps),便宜
- 缺点:距离受限,抗干扰一般
- 适用场景:数据采集卡、新式仪器
1.3.3 串口(RS-232/485)
串口看着老,但工业现场还是离不开它。距离远、抗干扰强。
- 优点:距离远(RS-485 可达1200米),抗干扰强
- 缺点:速度慢(115200bps),需要转接线
- 适用场景:电源、老式PLC
| 协议 | 速度 | 距离 | 抗干扰 | 成本 |
|---|---|---|---|---|
| GPIB | 1 MB/s | 20米 | 高 | 高 |
| USB | 480 Mbps | 3-5米 | 中 | 低 |
| 串口 | 115.2 kbps | 1200米 | 高 | 低 |
避坑指南:我曾经在一个项目里混用USB和GPIB,结果两台设备互相干扰,数据全乱了。后来统一用GPIB加USB转GPIB线才解决。所以,能统一就统一,别混搭。
1.4 本章小结
好了,这一章咱们聊了硬件选型、软件分层、通信协议。说白了就三句话:
- 硬件选型:留余量、看精度、问驱动
- 软件分层:驱动薄、逻辑清、UI简
- 通信协议:能统一就别混搭
下一章咱们开始搭开发环境,装驱动、配Python、写第一个Hello World。到时候见。
公众号:蓝海资料掘金营,微信deep3321