Commit Graph

65 Commits

Author SHA1 Message Date
ypc 2ed51a5caa refactor: Reclose_logic.json 精简 — 去除 desc/rule 字段
信号对象仅保留 no + saddr,门对象仅保留 type + id + from/gates_in/to
2026-07-06 17:32:40 +08:00
ypc 7b40f4aecf feat: 新增 Reclose_logic.json — 分层可视化配置文件
基于 Reclose_logic.txt 自动生成,将扁平节点/连线格式转换为
直观可读的分层 JSON:
- 顶层: 3 条独立逻辑链 (OR / NOT / 组合逻辑)
- 每链: 输入信号 → 门电路(递归嵌套) → 输出信号
- 门电路: title/type/id/rule/from(直连信号)/gates_in(上游门)/to(输出)
- 附带信号名称、描述 (来自 datacenter_out.xml)
2026-07-06 17:07:25 +08:00
ypc 12dcec0f31 feat: PLC逻辑配置页面 + 配置文件去重修复 + 前端WebSocket修复
【PLC逻辑配置页面】(new: plc_config.js, 1947行)
- 三Tab页: 信号列表 / 逻辑图查看器 / 新建配置编辑器
- Canvas渲染: 节点渐变+阴影+左侧色条+引脚圈+贝塞尔连线+发光效果
- 查看器: 使用文件中保存的x/y坐标(与编辑器布局一致),首次命中链路匹配
- 编辑器: 左击选中连线高亮(橙色)+右键/Delete删除,双击节点修改,拖拽布局
- 支持11种逻辑元件: 输入/输出/与门/或门/非门/62p延时/62d延时/上升/下降沿/SR/RS触发器

【配置文件去重修复】
- Reclose_logic.txt: 消除两个AND#0重复ID,修复为AND#0 + AND#3
- generateAndSaveConfig: 保存前自动检测并修正重复 type+id
- initEditor: 加载时消除已有重复ID + 更新editNextGateIdx防止后续冲突
- 保存格式扩展: node支持inPins(第5字段),link支持dstPin(第4字段)

【前端WebSocket修复】
- plc_config.js语法错误(缺少闭合})导致PlcConfigPage未定义
- App.init()在WsClient.connect()之前崩溃显示已断开

【后端】
- ws_method.cpp: curd:add 后立即推送信号列表
- dc_cfg_check.cpp: 数据中心配置检查
- plc.cpp: PLC模块配置路径更新
- myDatacenter.h: 新增接口声明

【文档+样式】
- PLC配置文件解析与生成.md: 模块分析文档
- style.css: PLC配置页面样式(Canvas/表格/图例/Modal)
- datacenter_out.xml: Out信号注册数据
2026-07-06 14:56:04 +08:00
jgp a339ed73a0 feat(libplc): 非阻塞定时器重构与健壮性增强
- 用 clock_gettime 非阻塞定时器替换 usleep 延时(62p/62d门)
- 新增 LogicNode 定时器字段:timer_active/timer_start/timer_delay_ms/timer_pending_output
- 新增全局 PLC 状态缓存,支持配置文件变更检测(stat+mtime)
- 新增拓扑排序入度字段 indegree,Kahn算法实现拓扑执行
- 全面改进错误日志:fprintf(stderr) -> MY_LOG_E 统一日志
- 增强解析容错:节点/链路解析失败时记录详细错误信息
- 空文件、格式错误、无有效逻辑图等异常场景完善处理
- 新增 get_elapsed_ms() / plc_set_config_path() / plc_get_config_path()
- app_plc_init1 动态路径初始化(兼容 func_get_process_self_dir)
2026-07-03 10:51:58 +08:00
ypc fd34c6815f feat: PLC调试页面 + WebSocket测试套件 + curd:add立即推送修复
新增:
- web_root/js/plc_debug.js: PLC 调试页面(LED/按键绑定out信号、增量刷新)
- requirements.toml: Codex 项目权限预批准配置
- mimo/webserver测试工程师/: WebSocket 前后端测试套件(8脚本+README)
  · test_ws_raw.py — 最简 WebSocket 连通性测试
  · test_debug_dc.py — datacenter 命令调试
  · test_verify_push.py — 推送验证
  · test_verify_immediate_push.py — 验证 curd:add 立即推送修复
  · test_ws_dc_out/v2/v3.py — 数据中心→信号页端到端测试
  · test_regression_final.py — 全面回归测试

修改:
- ws_method.cpp: curd:add 后立即推送信号列表(+30行)
- packed_fs.c: 打包新版 web 资源(PLC调试页+样式更新)
- pages.js: 重构信号管理页渲染逻辑、新增PLC调试页路由
- app.js: 注册PLC调试页路由
- style.css: 新增PLC调试页样式(+106行)
- index.html: 加载 plc_debug.js
- plc.cpp: 微调修复
2026-07-02 15:13:06 +08:00
ypc b176d957df feat: 集成 PLC 就地自动化逻辑模块 + SIGILL 编译修复
## PLC 模块 (libplc)
- 新增 libplc 模块: 解析 Reclose_logic.txt 逻辑图,支持与/或/非/延时/SR等多种节点类型
- PLC_Logic() 配置文件路径改为 func_get_process_self_dir 动态拼接
- app_modules.h 注册 APP_MODULE(PLC, plc, ...)
- system makefile 增加 libplc 子目录
- RTU makefile 链接 -lplc

## SIGILL 编译修复
- linux.mk: ARM 编译加 -mno-outline-atomics -fno-threadsafe-statics,禁用 LSE 原子指令
- RTU makefile: STATIC_FLAGS 去掉 -static-libstdc++,避免工具链预编译 libstdc++ 中的 LSE 指令触发 RK3568 SIGILL

## 配置
- app_config.json 新增 app_plc 条目(默认 enable: false)
- PLC/Reclose_logic.txt 逻辑配置文件占位
2026-07-01 15:56:12 +08:00
ypc cb60d687e3 feat: channel_config 统一重构 + lib60870 CBB 库集成 + libiec 文件拆分
## channel_config 通道配置统一重构
- 合并 channel_config.xml / channel_config_rk.xml 为单文件
- Channel 新增 bind 字段显式绑定私有规约(channel_cfg_find_by_bind)
- 转发隧道改为 from_saddr→to_saddr 单向,支持 ICP67维护+IEC101/104
- com_channel_recv_cb 重构为三级路由: 转发→bind→IEC
- 去除 ICP66→ICP67 帧转换逻辑(decode_frame_codec 清空)
- com_recv_data 去除硬编码 uart0, 简化为纯 IEC 头检测
- com_scan_send_data_to_app 增加 p_event 空指针防护
- self_ptl_init 改用 bind 字段绑定 UART+通过转发规则反查 TCP
- self_ptl 内部转发加 TCP 连接状态守卫, p_event 未就绪时仅入队
- 新增参数缺省值重构相关文件

## lib60870 CBB 库集成
- 替换原 lib60870 为科大智能 CBB 库
- 新增 cbb_compat.h 兼容层, 通过 gcc -include 注入类型定义
- 新增 CBB 库完整文档(lib60870_mkdocs)

## libiec 文件拆分
- iec_method.cpp 拆分为 iec_common/iec_dd/iec_fault/iec_file/
  iec_param/iec_soe/iec_time/iec_yc/iec_yk/iec_yx 等独立文件

## 工程文档
- 新增 15+ 模块分析/plan/中间文档
2026-07-01 14:52:22 +08:00
ypc 548d1963bc <修改> 1、调整私有规约的通讯配置 2026-06-27 16:24:21 +08:00
ypc cbe18b0d4e refactor: 拆分 dc_signal.cpp 按功能为10个文件
- dc_signal.cpp (32行) → 全局变量 + XXH128Hash/Equal 实现
- dc_signal_query.cpp → cfg_change + 5个 get_*_info + out_change_check
- dc_signal_compare.cpp → dc_data_compare + dc_signal_apply_metadata
- dc_signal_ctrl.cpp → 4个 dc_check_* 控制校验函数
- dc_signal_core.cpp → add_to_map + 17个注册/设置函数
- dc_signal_find.cpp → 3个 dc_find_* 查找函数
- dc_signal_util.cpp → 类型映射表 + dc_get_signal_val 等工具
- dc_cfg_check.cpp → dc_param_cfg_check XML 写入
- dc_signal_show.cpp → 调试显示 + CLI 命令
- dc_signal_internal.h → 内部共享头文件

跨文件函数移除 LOCAL/static,全局变量 extern 声明集中管理。
对外 API 不变,所有调用方零改动。
2026-06-27 15:15:50 +08:00
ypc 2cc8f1d643 feat: C接口化改造 — P0~P2 完成 (icp67/cmd/comm 三个模块)
P0 libicp67: 添加 extern "C" 包裹,bool test → uint8_t test
P1 libcmd: CMD_REGISTER 拆分为 CMD_REGISTER/CMD_REGISTER_C,
    移除默认参数,添加 extern "C"
P2 libcomm: enum class → C enum,std::string → char[],
    添加 COMM_IP_LEN/COMM_DEV_LEN 宏,添加 extern "C"

同步更新 5 处 CMD_REGISTER 调用点及 comm 内部实现
2026-06-27 13:47:53 +08:00
ypc 392fadcdb0 <修改> 1、webserver增加在数据中心选择信号直接add,在out界面省去一个个添加;2、增加配置直接远程调试rk3568 2026-06-26 17:47:46 +08:00
ypc 19a2f2a3c0 <修改> 1、消除cmd中的编译告警;2、消除log中的编译告警;3、增加modbus客户端程序;4、webserver增加导入导出信号表功能,可以导出已增加的信号,也可以一键导入想要观察的信号 2026-06-24 15:43:41 +08:00
ypc c6501da92f <修改>1、将datacenter调整到public下;2、解耦应用模块,调整消息队列 2026-06-18 17:53:22 +08:00
ypc 8de2441a79 <修改> 1、将应用线程模块调用方式改为动态的,通过头文件中进行绑定,通过配置文件进行选择是否运行;2、消息队列初始化也同样修改 2026-06-18 17:15:43 +08:00
ypc 3c19148b97 <修改> 1、在前端页面中增加命令终端页面,在此页面中可以调用自定义命令,并将自定义命令的响应信息展示到前端页面中 2026-06-18 15:42:09 +08:00
ypc 742d9b36a0 <新增> 1、前端对应增加命令终端与数据监控,命令终端支持自定义命令 2026-06-18 11:09:14 +08:00
ypc 6ef960525c <修改> 1、在webserver增加自定义命令行调试页面 2026-06-17 19:01:50 +08:00
ypc 18ee3d8acd <新增> 1、增加modbus库 2026-06-17 16:57:45 +08:00
ypc 0e629185be <修改> 1、调整参数定值的缺省值方案,认为缺省值仅在配置文件中,在程序中不应该有 2026-06-17 09:53:00 +08:00
ypc 2c10cbbe7c <修改> 1、优化icp67模块;2、优化self_ptl应用库 2026-06-16 14:57:45 +08:00
ypc ec424d7f0f <修改> 1、合并应用模块中的com_sacn与com_channel 2026-06-15 15:14:43 +08:00
ypc 08039e4f2d <修改> 1、优化libcomm公共库 2026-06-15 14:04:41 +08:00
ypc 0a7a3c49b3 <修改> 1、使用mimo优化程序,增加问题处理文档;2、调整优化libtask模块 2026-06-15 10:29:59 +08:00
ypc f4b84506a6 <修改> 1、创建mimo分支,后续此分支使用小米mimo code开发 2026-06-12 16:48:42 +08:00
ypc 3bf70c5b6d <修改> 1、调整claude的部分规则记忆文件;2、调整自定义命令部分缺陷,旧版本cpu使用率超高 2026-06-12 15:24:58 +08:00
ypc 6c9b8e90b1 <修改> 1、调整数据中心接口,参数修改后可以在上位机读取到;2、在上位机修改定值区后,设置参数值放到回调外面,回调中有IedServer_lockDataModel,估计会影响 2026-06-11 17:30:55 +08:00
ypc 3806a32af9 <修改> 1、给数据中心的接口加上module_id,避免控制类型命令自锁;2、iec61850s中增加接口注册绑定参数与定值区,设置定值区时,参数能相应修改。 2026-06-11 16:40:07 +08:00
ypc dbfcf92552 <修改> 1、调整mms的调试打印;2、调整当前数据中心的参数及定值修改,校验数据改变后才提示更新文件;3、在调用写数据接口前,也先校验数据是否发生改变 2026-06-10 16:58:12 +08:00
ypc 46f9f4fe76 <修改> 1、调整webserver,更新mongoose库源文件;2、重新生成前端工程;3、利用mongoose中的功能打包前端工程进项目工程中,以c文件格式存在,最终编译成可执行文件一起打包,后续升级改动前端时,无需升级前端工程 2026-06-10 16:07:38 +08:00
ypc a3ae78e5e8 <修改> 1、调整webserver模块,增加多连接,各连接单资源,连接断开释放资源 2026-06-10 13:33:53 +08:00
ypc e18f239d77 <新增> 1、将claude生成的文件保留 2026-06-10 10:44:51 +08:00
ypc ecd41888ca <修改> 1、增加mms客户端订阅事件报告的序号 2026-06-10 10:40:57 +08:00
ypc 2a3113f935 <修改> 1、修复了mms部分的bug 2026-06-09 18:52:56 +08:00
ypc 1a16180a9c <修改> 1、调整上送mms服务端数据;2、新增客户端文件等功能 2026-06-09 14:13:04 +08:00
ypc cd61e8e27b <修改> 1、添加变化上送时的品质与时间;2、调整解析icd文件肿获取报告下的配置数据;3、调试事件报告控制块,实现客户端使能后上送变化数据 2026-06-08 14:02:03 +08:00
ypc 7c18f5ee9d <修改> 1、调整参数逻辑,参数定值文件分为可配置文件与自动生成文件。可配置文件下载后,自动文件同步相关信息 2026-06-08 10:00:30 +08:00
ypc 7549032700 <修改> 1、动态获取配置文件路径 2026-06-05 15:55:14 +08:00
ypc 9a6c475575 <修改> 1、拉分支,此分支着重由AI调整。
2、将参数定值的最大最小值、步长、单位等信息统一到参数定值文件中,各模块仅注册短地址与数据地址,其他由数据中心统一操作
2026-06-05 14:15:27 +08:00
ypc c03832a31e <修改> 1、将mms_m中的配置解析部分提取到APP处理,通过app调用mms_m库中的初始化接口传入解析后的配置信息;
2、调整数据中心参数相关的接口,改为C风格,后续优化各个模块对外接口,支持C调用;
3、配置文件调整,后续参数定值调整为手动配置进一个文件,最大最小值统一配置进这个文件,在各模块的配置文件中不配置这些,相应的数据中心的参数定值接口中,不传递最大最小缺省值
2026-06-05 09:39:00 +08:00
ypc 3743b69ef2 <修改> 1、增加mms服务端配置文件,并解析;
2、增加mms服务端配置信息的处理;
3、调整mms配置文件的目录
2026-06-04 13:13:33 +08:00
ypc 15ecc786bc <修改> 1、把datacenter单独出来,函数声明也从mySystem.h中单独出来;
2、数据中心新增soe、fault、disturb_dd的队列,需要这些数据的模块可以在初始化时注册回调,各个模块可以调用接口推送各自的事件。
3、填充iec中的注册的回调接口,目前总召、soe、变化遥测功能已实现。
4、对应增加自定义规约中调用数据中心的接口,是当前iec数据的来源
2026-06-03 09:28:17 +08:00
ypc 0fa7b70001 <修改>1、调整数据中心,优化数据存储内存的表;
2、修改定值初始化的程序,修复了重启后定值表中的定值恢复到配置文件中的默认值;
3、调整mms客户端的配置文件,mms的信号路径必须到最下层。
4、调整mms客户端库,定值和参数的类型由获取到的类型为准
2026-05-30 14:13:49 +08:00
ypc 4bd6f53d09 <修改> 1、文件名拼写错误,2、if后存在的;删除,会导致空判断 2026-05-29 17:48:37 +08:00
ypc ac5182ea14 <修改>
1、调整数据中心获取信号内容的接口;
2、调整webserver中的处理函数,抽象成信号类型的方法;
3、调整web前端网页显示
2026-05-28 13:23:01 +08:00
ypc 3d59800656 1、mms客户端时间类型增加参数读写枚举;
2、mms服务端增加
2026-05-27 17:16:45 +08:00
ypc 04976dd01b 新增61850的mms服务端程序;
调整数据中心部分接口
2026-05-27 09:14:19 +08:00
ypc 719bf36004 <修改>
1、删除mms中无效的数据类型枚举;
2、开放数据中心接口对外,从字符串设置数据指针值;
3、解析mms_m的配置文件程序修改,避免解析异常导致后续错误;
4、mms_m库调整调试了定值修改的功能;
5、调整了数据中心设置参数时的数据检查;
6、调整了61850客户端调用程序的定值部分与控制部分;
7、对应数据中心修改,调整了webserver中对非字符串类型参数的修改
2026-05-20 16:10:41 +08:00
ypc ba85f52ae3 <修改>
1、调整mms配置文件中属性name为saddr,保持一致,对应解析使用的属性变量名同步改为saddr
2026-05-19 20:32:14 +08:00
ypc 04e16ef7bc <新增>
1、增加信号id属性,在展示或生成文件时,按id排序;
2、61850应用中,数据回调中及时设置信号值
<修改>
1、webserver中调整上送ctrl_type为枚举数值,web_root前端文件中识别枚举展示对应中文;
2、调整mms的配置文件中的短地址
2026-05-19 20:18:13 +08:00
ypc 5e4ab10439 1、删除vscode中无效的配置 2026-05-19 17:38:45 +08:00