1.原先程序启动后会先下发关闭位置,再开始闭环,现在启动后直接从当前阀门开度(默认全开)开始闭环。删除了safe_close相关的代码

2.新增open_loop.py进行开环控制,记录控流阀前后流量和压力数据,方便后面辨识拟合,以及观察动态特性。
3.新增README.md
This commit is contained in:
2026-08-19 17:23:02 +08:00
parent 90648f3d35
commit 0d85dd3c2c
6 changed files with 785 additions and 60 deletions
+4 -16
View File
@@ -3,8 +3,8 @@
示例:
python main.py --target 50
程序启动后会先下发关闭位置,再开始闭环。Ctrl+C、控制故障或其他异常都会
再次尝试关阀并断开 MT2-AM8。
程序启动后直接从当前阀门开度(默认全开)开始闭环。Ctrl+C、控制故障或
其他异常会断开 MT2-AM8;阀门不被驱动时默认回到全开
"""
import argparse
@@ -156,14 +156,6 @@ def run(target_flow_slm):
},
)
if not controller.safe_close("STARTUP"):
raise FlowControlFault(
"SAFE_CLOSE_FAILED",
"STARTUP",
"启动前无法确认阀门关闭命令已成功写入",
{"motor_closed_position": config.MOTOR_CLOSED_POSITION},
)
# 控制前读取一次当前流量,作为超调量方向的基准。
try:
initial_flow_slm = hardware.get_flow(config.FLOW_INPUT_CHANNEL)
@@ -181,7 +173,7 @@ def run(target_flow_slm):
logger=logger,
)
controller.start(initial_opening=0.0)
controller.start(initial_opening=config.INITIAL_OPENING_PCT)
recorder = FlowRunRecorder(
Path(__file__).resolve().parent / config.DATA_DIRECTORY,
plot_dpi=config.PLOT_DPI,
@@ -216,13 +208,9 @@ def run(target_flow_slm):
logger.critical("控制故障:%s", exc)
except Exception:
exit_code = 3
logger.exception("未处理异常,系统将进入安全关闭")
logger.exception("未处理异常,系统将退出")
finally:
if connected:
close_ok = controller.safe_close("PROGRAM_EXIT")
if not close_ok:
exit_code = max(exit_code, 4)
logger.critical("程序退出时安全关阀失败,请立即人工检查")
try:
hardware.disconnect()
except Exception: