设备命令修改
This commit is contained in:
@@ -0,0 +1,240 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""生成 D:\\ACP\\测试项\\三相交流相位不平衡测试.ACP"""
|
||||
import json
|
||||
import uuid
|
||||
|
||||
CT_TYPE = "System.Threading.CancellationToken, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"
|
||||
INT_TYPE = "System.Int32, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"
|
||||
DOUBLE_TYPE = "System.Double, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"
|
||||
STRING_TYPE = "System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"
|
||||
ZERO_GUID = "00000000-0000-0000-0000-000000000000"
|
||||
|
||||
|
||||
def guid():
|
||||
return str(uuid.uuid4())
|
||||
|
||||
|
||||
def param(name, ptype, value=None, use_var=False, var_name=None, var_id=None):
|
||||
return {
|
||||
"ID": guid(),
|
||||
"IsVisible": True,
|
||||
"IsEditable": True,
|
||||
"Name": name,
|
||||
"Type": ptype,
|
||||
"Category": 0,
|
||||
"Value": value,
|
||||
"LowerLimit": None,
|
||||
"UpperLimit": None,
|
||||
"Result": True,
|
||||
"IsUseVar": use_var,
|
||||
"VariableName": var_name,
|
||||
"VariableID": var_id,
|
||||
}
|
||||
|
||||
|
||||
def ct_param():
|
||||
return param("ct", CT_TYPE)
|
||||
|
||||
|
||||
def method_step(index, name, full_name, method_name, params):
|
||||
return {
|
||||
"ID": guid(),
|
||||
"IsUsed": True,
|
||||
"Index": index,
|
||||
"Name": name,
|
||||
"StepType": "方法",
|
||||
"Method": {
|
||||
"Name": method_name,
|
||||
"FullName": full_name,
|
||||
"Parameters": params + [ct_param()],
|
||||
},
|
||||
"SubProgram": None,
|
||||
"LoopCount": None,
|
||||
"LoopStartStepId": None,
|
||||
"OKExpression": None,
|
||||
"GotoSettingString": "",
|
||||
"OKGotoStepID": ZERO_GUID,
|
||||
"NGGotoStepID": ZERO_GUID,
|
||||
"Description": None,
|
||||
}
|
||||
|
||||
|
||||
def chroma_step(index, name, method_name, params):
|
||||
return method_step(index, name, "DeviceCommand.Devices.Chroma61800", method_name, params)
|
||||
|
||||
|
||||
def pw8001_step(index, name, method_name, params):
|
||||
return method_step(index, name, "DeviceCommand.Device.PW8001", method_name, params)
|
||||
|
||||
|
||||
def delay_step(index, name, var_name=None, var_id=None):
|
||||
return method_step(index, name, "Command.Delay", "Delay_ms",
|
||||
[param("millisecond", INT_TYPE, use_var=True,
|
||||
var_name=var_name, var_id=var_id)])
|
||||
|
||||
|
||||
# 程序变量
|
||||
VAR_PHASE_VOLT = guid() # 相电压
|
||||
VAR_FREQ = guid() # 额定频率
|
||||
VAR_PHASE_DEVIATION = guid() # 相位偏差角度(如5°)
|
||||
VAR_PW_CHANNEL = guid() # 功率分析仪通道号
|
||||
VAR_STABLE_TIME = guid() # 稳定等待时间ms
|
||||
|
||||
program_params = [
|
||||
# 标准系统参数(Category=2)
|
||||
{"ID": guid(), "IsVisible": True, "IsEditable": True, "Name": "台架序号",
|
||||
"Type": INT_TYPE, "Category": 2, "Value": 1, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": guid(), "IsVisible": True, "IsEditable": True, "Name": "CAN通道",
|
||||
"Type": INT_TYPE, "Category": 2, "Value": 0, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": guid(), "IsVisible": True, "IsEditable": True, "Name": "示波器通道1",
|
||||
"Type": INT_TYPE, "Category": 2, "Value": 0, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": guid(), "IsVisible": True, "IsEditable": True, "Name": "示波器通道2",
|
||||
"Type": INT_TYPE, "Category": 2, "Value": 0, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": guid(), "IsVisible": True, "IsEditable": True, "Name": "功率分析仪通道1",
|
||||
"Type": INT_TYPE, "Category": 2, "Value": 0, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": guid(), "IsVisible": True, "IsEditable": True, "Name": "功率分析仪通道2",
|
||||
"Type": INT_TYPE, "Category": 2, "Value": 0, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
# 测试项可调变量(Category=0)- 用户手动填值
|
||||
{"ID": VAR_PHASE_VOLT, "IsVisible": True, "IsEditable": True, "Name": "相电压",
|
||||
"Type": DOUBLE_TYPE, "Category": 0, "Value": None, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": VAR_FREQ, "IsVisible": True, "IsEditable": True, "Name": "额定频率",
|
||||
"Type": DOUBLE_TYPE, "Category": 0, "Value": None, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": VAR_PHASE_DEVIATION, "IsVisible": True, "IsEditable": True, "Name": "相位偏差角度",
|
||||
"Type": DOUBLE_TYPE, "Category": 0, "Value": None, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": VAR_PW_CHANNEL, "IsVisible": True, "IsEditable": True, "Name": "功率分析仪通道号",
|
||||
"Type": INT_TYPE, "Category": 0, "Value": None, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
{"ID": VAR_STABLE_TIME, "IsVisible": True, "IsEditable": True, "Name": "稳定等待时间ms",
|
||||
"Type": INT_TYPE, "Category": 0, "Value": None, "LowerLimit": None,
|
||||
"UpperLimit": None, "Result": True, "IsUseVar": False,
|
||||
"VariableName": None, "VariableID": None},
|
||||
]
|
||||
|
||||
steps = []
|
||||
|
||||
# ---- 一、功率分析仪初始化 ----
|
||||
steps.append(pw8001_step(1, "设置测试模式WIDE", "设置测试模式_WIDE", []))
|
||||
steps.append(pw8001_step(2, "设置同步源U1", "设置同步源",
|
||||
[param("源", STRING_TYPE, "U1")]))
|
||||
|
||||
# ---- 二、交流源初始化 ----
|
||||
steps.append(chroma_step(3, "初始化三相List模式(单次循环)", "初始化三相List模式",
|
||||
[param("loopCount", INT_TYPE, "1")]))
|
||||
steps.append(chroma_step(4, "配置List执行时间", "配置List执行时间Async",
|
||||
[param("step1", DOUBLE_TYPE, 100.0),
|
||||
param("step2", DOUBLE_TYPE, 100.0),
|
||||
param("step3", DOUBLE_TYPE, 100.0)]))
|
||||
|
||||
# ---- 三、正常相位测试(基准) ----
|
||||
# 三相正常相位:L1=0°, L2=120°, L3=240°
|
||||
steps.append(chroma_step(5, "配置List起始角度(正常相位)", "配置List起始角度Async",
|
||||
[param("step1", DOUBLE_TYPE, 0.0),
|
||||
param("step2", DOUBLE_TYPE, 120.0),
|
||||
param("step3", DOUBLE_TYPE, 240.0)]))
|
||||
steps.append(chroma_step(6, "配置List交流起始电压(额定)", "配置List交流起始电压Async",
|
||||
[param("step1", DOUBLE_TYPE, use_var=True,
|
||||
var_name="相电压", var_id=VAR_PHASE_VOLT),
|
||||
param("step2", DOUBLE_TYPE, use_var=True,
|
||||
var_name="相电压", var_id=VAR_PHASE_VOLT),
|
||||
param("step3", DOUBLE_TYPE, use_var=True,
|
||||
var_name="相电压", var_id=VAR_PHASE_VOLT)]))
|
||||
steps.append(chroma_step(7, "配置List交流结束电压(额定)", "配置List交流结束电压Async",
|
||||
[param("step1", DOUBLE_TYPE, use_var=True,
|
||||
var_name="相电压", var_id=VAR_PHASE_VOLT),
|
||||
param("step2", DOUBLE_TYPE, use_var=True,
|
||||
var_name="相电压", var_id=VAR_PHASE_VOLT),
|
||||
param("step3", DOUBLE_TYPE, use_var=True,
|
||||
var_name="相电压", var_id=VAR_PHASE_VOLT)]))
|
||||
steps.append(chroma_step(8, "启动List输出(正常相位)", "启动List输出", []))
|
||||
steps.append(delay_step(9, "等待正常相位稳定", var_name="稳定等待时间ms", var_id=VAR_STABLE_TIME))
|
||||
steps.append(pw8001_step(10, "测量正常相位输入电流", "查询电流_不含变比",
|
||||
[param("通道号", INT_TYPE, use_var=True,
|
||||
var_name="功率分析仪通道号", var_id=VAR_PW_CHANNEL)]))
|
||||
|
||||
# ---- 四、相位偏差+5°测试 ----
|
||||
# L1=0°+5°=5°, L2=120°+5°=125°, L3=240°+5°=245°
|
||||
steps.append(chroma_step(11, "配置List起始角度(+5°偏差)", "配置List起始角度Async",
|
||||
[param("step1", DOUBLE_TYPE, use_var=True,
|
||||
var_name="相位偏差角度", var_id=VAR_PHASE_DEVIATION),
|
||||
param("step2", DOUBLE_TYPE, 125.0),
|
||||
param("step3", DOUBLE_TYPE, 245.0)]))
|
||||
steps.append(delay_step(12, "等待+5°偏差稳定", var_name="稳定等待时间ms", var_id=VAR_STABLE_TIME))
|
||||
steps.append(pw8001_step(13, "测量+5°偏差输入电流", "查询电流_不含变比",
|
||||
[param("通道号", INT_TYPE, use_var=True,
|
||||
var_name="功率分析仪通道号", var_id=VAR_PW_CHANNEL)]))
|
||||
|
||||
# ---- 五、相位偏差-5°测试 ----
|
||||
# L1=0°-5°=-5°(或355°), L2=120°-5°=115°, L3=240°-5°=235°
|
||||
steps.append(chroma_step(14, "配置List起始角度(-5°偏差)", "配置List起始角度Async",
|
||||
[param("step1", DOUBLE_TYPE, -5.0),
|
||||
param("step2", DOUBLE_TYPE, 115.0),
|
||||
param("step3", DOUBLE_TYPE, 235.0)]))
|
||||
steps.append(delay_step(15, "等待-5°偏差稳定", var_name="稳定等待时间ms", var_id=VAR_STABLE_TIME))
|
||||
steps.append(pw8001_step(16, "测量-5°偏差输入电流", "查询电流_不含变比",
|
||||
[param("通道号", INT_TYPE, use_var=True,
|
||||
var_name="功率分析仪通道号", var_id=VAR_PW_CHANNEL)]))
|
||||
|
||||
# ---- 六、恢复正常相位 ----
|
||||
steps.append(chroma_step(17, "配置List起始角度(恢复正常)", "配置List起始角度Async",
|
||||
[param("step1", DOUBLE_TYPE, 0.0),
|
||||
param("step2", DOUBLE_TYPE, 120.0),
|
||||
param("step3", DOUBLE_TYPE, 240.0)]))
|
||||
steps.append(delay_step(18, "等待恢复正常", var_name="稳定等待时间ms", var_id=VAR_STABLE_TIME))
|
||||
|
||||
# ---- 七、收尾 ----
|
||||
steps.append(chroma_step(19, "停止输出(电压归零)", "配置List交流起始电压Async",
|
||||
[param("step1", DOUBLE_TYPE, 0.0),
|
||||
param("step2", DOUBLE_TYPE, 0.0),
|
||||
param("step3", DOUBLE_TYPE, 0.0)]))
|
||||
steps.append(chroma_step(20, "配置List交流结束电压(0V)", "配置List交流结束电压Async",
|
||||
[param("step1", DOUBLE_TYPE, 0.0),
|
||||
param("step2", DOUBLE_TYPE, 0.0),
|
||||
param("step3", DOUBLE_TYPE, 0.0)]))
|
||||
steps.append(pw8001_step(21, "清除状态", "清除状态", []))
|
||||
|
||||
program = {
|
||||
"ID": guid(),
|
||||
"StepCollection": steps,
|
||||
"ErrorStepCollection": [],
|
||||
"Parameters": program_params,
|
||||
}
|
||||
|
||||
out_path = r"D:\ACP\测试项\三相交流相位不平衡测试.ACP"
|
||||
with open(out_path, "w", encoding="utf-8") as f:
|
||||
json.dump(program, f, ensure_ascii=False, indent=2)
|
||||
|
||||
# 校验
|
||||
with open(out_path, encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
print(f"已生成: {out_path}")
|
||||
print(f"步骤数: {len(data['StepCollection'])}, 参数数: {len(data['Parameters'])}")
|
||||
print("\n需要手动填写的变量参数:")
|
||||
for p in data["Parameters"]:
|
||||
if p["Category"] == 0:
|
||||
print(f" - {p['Name']} ({p['Type'].split(',')[0].split('.')[-1]})")
|
||||
print("\n步骤流程:")
|
||||
for s in data["StepCollection"]:
|
||||
print(f" {s['Index']:>2}. {s['Name']}")
|
||||
print("\n测试相位点:")
|
||||
print(" - 正常相位:L1=0°, L2=120°, L3=240°")
|
||||
print(" - +5°偏差:L1=5°, L2=125°, L3=245°")
|
||||
print(" - -5°偏差:L1=-5°, L2=115°, L3=235°")
|
||||
Reference in New Issue
Block a user