2. 牵引力与电制动力的量纲统一与单位换算
为什么必须先统一量纲
城轨牵引试验的原始数据往往来自不同设备:牵引变电所录波装置可能以 kN 记录车钩力,电机控制器以 N 输出轮周牵引力,而部分老式测力计或制动台架以 kgf(千克力)标定。若直接把这些通道放进同一张曲线或同一个统计表,数值会相差 9.8 倍甚至 1000 倍,导致"牵引力峰值"这类结论完全失真。因此本案例的任务是:把混合单位的牵引/电制动通道统一到试验大纲规定的标准单位(本案例取 kN,电制动力取负号表示制动方向),并输出可追溯的换算审计表。
换算基准与符号约定
先固定三条约定,后续所有计算与判读都以此为准:
- 标准单位:力通道统一为 kN,保留 3 位小数。
- 换算系数:1 N = 0.001 kN;1 kgf = 9.80665 N = 0.00980665 kN(取标准重力加速度 9.80665 m/s²)。
- 符号约定:牵引力为正,电制动力为负。若原始电制动通道以正值记录制动力大小,换算时须乘以 −1;若原始数据已带负号,则只做量纲换算,不重复取反。
换算审计表的结构
审计表按"通道一行"组织,核心字段包括:通道名、物理量、原始单位、原始量级抽样、换算系数、是否取反、换算后抽样值、量级校验结论。下表用一组教学示例数据演示(数值为假设示例,非实测):
| 通道 | 物理量 | 原始单位 | 原始抽样值 | 系数 | 取反 | 换算后(kN) | 量级校验 |
|---|---|---|---|---|---|---|---|
| TC01 | 车钩牵引力 | kN | 42.500 | 1 | 否 | 42.500 | 通过 |
| TC02 | 轮周牵引力 | N | 38600 | 0.001 | 否 | 38.600 | 通过 |
| TC03 | 电制动力 | kgf | 2150 | 0.00980665 | 是 | −21.084 | 通过 |
| TC04 | 电制动力 | N | −19800 | 0.001 | 否 | −19.800 | 通过 |
| TC05 | 辅助制动力 | kgf | −320 | 0.00980665 | 否 | −3.138 | 通过 |
量级校验的做法是:对每个通道取换算后绝对值的中位数,与同物理量参考通道(如 TC01)比较,若比值落在 0.5~2.0 之外则标记"待复核"。TC03 换算后 21.084 kN 与 TC04 的 19.800 kN 同量级,说明 kgf 系数使用正确;若误用 0.001,TC03 会变成 2.15 kN,比值约 0.11,立即被标记。
可执行的换算与审计脚本
下面给出一个自洽的 Python 实现,输入为通道配置表与原始抽样值,输出换算结果与审计表。所有系数、取反标志、校验阈值都在本例中定义,可直接运行。
import csv
# 单位换算到 kN 的系数
UNIT_TO_KN = {
"kN": 1.0,
"N": 0.001,
"kgf": 9.80665e-3,
}
# 通道配置:通道名, 物理量, 原始单位, 是否取反, 原始抽样值
channels = [
("TC01", "车钩牵引力", "kN", False, 42.500),
("TC02", "轮周牵引力", "N", False, 38600.0),
("TC03", "电制动力", "kgf", True, 2150.0),
("TC04", "电制动力", "N", False, -19800.0),
("TC05", "辅助制动力", "kgf", False, -320.0),
]
# 参考通道(车钩牵引力)用于量级校验
ref_value = None
rows = []
for name, qty, unit, invert, raw in channels:
k = UNIT_TO_KN[unit]
val = raw * k
if invert:
val = -val
val = round(val, 3)
rows.append([name, qty, unit, raw, k, "是" if invert else "否", val])
if name == "TC01":
ref_value = abs(val)
# 量级校验:同物理量参考比值 0.5~2.0
for r in rows:
ratio = abs(r[6]) / ref_value if ref_value else 0
r.append("通过" if 0.5 <= ratio <= 2.0 else "待复核")
# 输出审计表
header = ["通道", "物理量", "原始单位", "原始值", "系数", "取反", "换算后(kN)", "量级校验"]
with open("unit_audit.csv", "w", newline="", encoding="utf-8-sig") as f:
w = csv.writer(f)
w.writerow(header)
w.writerows(rows)
for r in rows:
print(r)
运行后控制台会逐行打印审计记录,同时生成 unit_audit.csv。预期输出中 TC03 为 −21.084、TC04 为 −19.800、TC05 为 −3.138,全部"通过";若把 TC03 的系数误写成 0.001,其换算值为 −2.15,比值约 0.11,校验列变为"待复核",脚本即可自动暴露错误。
换算前后的一致性检查要点
图中把"原始通道—换算规则—审计校验"三段并列呈现,重点在于:换算规则区把系数与符号约定分开标注,审计区把每个通道的换算结果与量级校验结论一一对应。实际执行时,除脚本自动校验外,还应人工抽查两点:一是同一物理量不同单位通道换算后是否落在同一量级(如 TC03 与 TC04 应接近);二是电制动通道换算后符号是否全部为负,若出现正值需回查取反标志。