Commit Graph
32 Commits
Author SHA1 Message Date
louis c1a4a2a229 完善流量控制 GUI 的开环扫点与手动操作流程
新增可配置开环扫点、多 CSV 前馈表拟合及结果文件生成;补充闭环停止、手动开度安全互锁和 PID 未启用状态显示,并同步更新自动化测试、使用文档、打包配置与 Windows 可执行程序。
2026-09-04 16:47:16 +08:00
louis ead625bf2d 新增气体流量控制 GUI 与 Windows 可执行程序
新增 Tkinter 单窗口操作界面和后台设备状态机,支持连接与断开 PLC、在线设置目标流量、实时显示传感器数据与下发总开度,并在监测及闭环阶段统一执行安全保护。

默认将 valve_model_004.json 内置到单文件 EXE,同时支持校验并选择外部阀模型;整理标定 JSON/PNG 到 valve_model 目录并同步配置路径。补充运行层离线测试、PyInstaller 构建配置、交付文件和完整的 README 使用及重新打包说明。
2026-09-03 17:35:40 +08:00
louis d7ed4181df 归档实验数据并移除根目录重复文件
将本轮流量实验 CSV 与图表统一保留在 data/2026.9.2 下,删除 data 根目录中的重复副本,保持数据目录结构清晰。
2026-09-02 16:53:23 +08:00
louis 0be3f813ae 完善流量控制前馈、稳态判定与阀门标定流程
- 前馈冻结改用可配置的 3 秒流量绝对误差滑窗,修复采样抖动造成的重复解冻,并保留下游扰动后的自动更新
- 支持非单调阀特性反解、最小可测面积以下直接全关,以及闭阀端精细扫点与辨识开关
- 调整双压力判稳、最长等待时间、在线入口全开收尾和闭环四联图
- 更新配置、README、阀模型及离线测试,归档本轮实验数据与诊断产物
2026-09-02 16:49:43 +08:00
louis cfeedcf887 完善流量控制前馈、稳态判定与阀门标定流程
- 前馈冻结改用可配置的 3 秒流量绝对误差滑窗,修复采样抖动造成的重复解冻,并保留下游扰动后的自动更新
- 支持非单调阀特性反解、最小可测面积以下直接全关,以及闭阀端精细扫点与辨识开关
- 调整双压力判稳、最长等待时间、在线入口全开收尾和闭环四联图
- 更新配置、README、阀模型及离线测试,归档本轮实验数据与诊断产物
2026-09-02 16:14:42 +08:00
louis 5888b4ccce 从 MT2-AM8 模拟量模块迁移到 Easy521 PLC(Modbus TCP)
- 读取 D700(阀后流量)、D710(阀后压力)、D720(阀前压力),
  读用功能码 03,0~32000 线性映射到各自量程(300 SLM / 400 kPa / 300 kPa)
- 输出 D730(电机位置,0~10V),写用功能码 06,行程仍为 0~1000、死区 800
- 复用 MT2 骨架,保留 get_flow/get_pressure/set_motor_position 接口,
  channel 参数改为直接 Modbus 地址
- config.py 新增 PLC 设置,保留 MT2AM8 设置为死代码(MT2AM8Client 类保留)
- 同步更新 README.md 中的硬件接线、配置默认值与模块职责描述
2026-09-01 17:03:26 +08:00
louis abab25326a 补充前馈+增益调度(MFC 结构)的 README 文档 2026-09-01 04:04:34 +08:00
louis a03735387c 实现流量控制前馈 + 增益调度(MFC 结构)
按 plan.md 新增三个交付物,全部默认关闭以保持与纯 PID 的 A/B 兼容:

- valve_model.py:阀特性模型 Q_ss = A_eff(x)·P1_abs·F(r),含 ISO 6358
  椭圆 F(r)、行程/面积互逆插值、单调性校验、JSON 存取。
- identify_valve.py:从 open_loop.py 扫点 CSV 拟合 A_eff 表并输出 JSON。
- 控制器集成:config/flow_control/main/data_logger 新增阀前压读取
  (channel 2)、前馈打底 + PI 修残差、按 P1 增益调度,并记录/绘制前馈项。

新增配置 FEEDFORWARD_ENABLED / GAIN_SCHEDULE_ENABLED 默认 False,
VALVE_MODEL_PATH 默认空,未加载模型时行为与原先纯 PID 完全一致。
2026-08-27 16:00:51 +08:00
louis d7e712ede7 Merge branch 'reset_target_while_running' of https://git.dominatedconvergence.com/louis/flow_control into reset_target_while_running 2026-08-27 15:27:33 +08:00
louis 37d41d666f 删除控流阀前流量传感器 2026-08-27 15:25:22 +08:00
louis edece2cdd0 删除控流阀前流量传感器 2026-08-27 14:40:36 +08:00
louis bec4c0ead1 修改控流阀死区为800,优化切换目标流量时PID模式切换逻辑,优化open_loop.py的--help显示,修改模式切换观察周期为10,更新了README.md 2026-08-25 14:42:07 +08:00
louis 5476dbf9cd 记录控压阀开度从0到100,控流阀目标90slm相关数据。发现:
1.压力传感器量程变为了1600(无伤大雅)。修改config.py。
2.控流阀几乎只在开度小于等于20%正常工作。
3.控压阀在开度大于等于20%时对控流阀调控90slm无显著影响。
目标120slm,控压阀开度为0时压力超过400kpa停止运行,后续修改安全上限为500kpa。
跑了一系列实验。
2026-08-24 18:34:40 +08:00
louis 6fa7185922 人为给定开度,流量变化有异,可能是电机有问题或者气路哪儿不对 2026-08-24 16:49:21 +08:00
louis 26d4cbc316 增加两档PID控制,针对流量误差大和小的情况分别控制,在误差大时快速调节,误差小时慢慢调节以减少震荡和稳态误差。 2026-08-21 17:25:30 +08:00
louis c56858ab0f 跑了几次实验,PID参数和昨天一样,切换后不能稳定暂且不谈,第一次流量控制也和昨天比差远了 2026-08-21 14:43:11 +08:00
louis 292815e907 支持运行中切换目标流量:按 S 进入输入模式,回车生效、Esc 取消
- 输入模式下控制循环照常运行、原目标继续生效,直到回车确认新值
- 输入期间终端输出整体静默(状态行/性能报告均不打印),文件日志与 CSV 照常写入
- 新增 ConsoleGate 过滤器挂到 console_handler,退出路径统一解除静默
- 新增 PerformanceReporter.reset(),切换目标后重新判稳并再次输出性能报告
- 新增 config.TARGET_SWITCH_KEY 配置项,README 同步说明
2026-08-21 03:36:17 +08:00
louis 7732c36c55 更新了README.md 2026-08-20 18:03:49 +08:00
louis 14846278aa 修改了pid参数,跑了一些数据 2026-08-20 17:47:41 +08:00
louis 1d065d81d3 新增输出稳态时滑动窗口流量均值和标准差,以及稳态误差(判稳成功时目标流量减去当时流量)。
目前逻辑是「一直控制 + 每秒状态照常输出 + 稳态时额外多打印一次性能报告」。
新增一个可选的自动停止功能--config开关,「达到稳态后自动停止控制」,让 reporter 通知主循环退出。
2026-08-20 09:24:58 +08:00
louis adfb5623b3 修改两个函数initial_opening为100 2026-08-20 01:51:01 +08:00
louis c9984b1112 open_loop.py文件的记录数据部分再新加两列,一列是"P_abs_ratio",定义为阀后绝对压力比阀前绝对压力的,绝对压力为传感器读数加大气压值。另一列是"is_ratio_smaller_than_0.528",判断这个比值是否小于0.528(临界压力比),是的话就填Y,不是就填N.
然后再新画一个图,就是"P_abs_ratio"随时间变化的图,并且标出0.528代表的那条直线。这个图与已有的两幅图放在一个窗口中绘制。
2026-08-20 01:36:35 +08:00
louis 9bf9eb4205 Merge branch 'main' of https://git.dominatedconvergence.com/louis/flow_control
# Conflicts:
#	__pycache__/config.cpython-313.pyc
#	__pycache__/controllers.cpython-313.pyc
2026-08-19 17:40:57 +08:00
louis 0d85dd3c2c 1.原先程序启动后会先下发关闭位置,再开始闭环,现在启动后直接从当前阀门开度(默认全开)开始闭环。删除了safe_close相关的代码
2.新增open_loop.py进行开环控制,记录控流阀前后流量和压力数据,方便后面辨识拟合,以及观察动态特性。
3.新增README.md
2026-08-19 17:23:02 +08:00
louis 90648f3d35 chore: 更新 .gitignore 并停止跟踪 __pycache__ 2026-08-19 09:21:58 +08:00
louis 2f4080f01e 修改了a0~a3系数计算公式 2026-08-17 17:33:15 +08:00
louis bff24e8301 新增一个py模块,在稳态后记录、输出到终端:
该次调节用的kp,ki,kd参数以及控制效果如何,包括调节时间(调节至稳态花的时间,稳态用两个条件判断:用滑动时间窗口的方差/标准差判断,或者用滑动窗口均值介于目标值上下2%误差带之间)、超调量(记录绝对数值和相对目标值的百分比)、该次控制所设置的控制范围。
2026-08-14 15:35:05 +08:00
louis 9260fe20a8 删除"111.py"和"企业微信截图" 2026-08-14 14:46:33 +08:00
louis 8864d7cb05 试验了几次,得到了结果 2026-08-13 17:32:30 +08:00
louis aabcd7441b 修改流量范围为0~300slm 2026-08-13 14:34:01 +08:00
louis 64be6d7c7a 修改问题.md,且新增data_logger.py画图模块 2026-08-13 14:28:03 +08:00
rangang 84b2bdb35d first commit 2026-08-12 17:40:45 +08:00