diff --git a/tool/code_generator.py b/tool/code_generator.py new file mode 100644 index 0000000..b5a0ed3 --- /dev/null +++ b/tool/code_generator.py @@ -0,0 +1,50 @@ + def generate_menu_nodes_source(self): + """生成菜单节点源文件""" + menu_src_file = os.path.join(self.output_dir, f"{self.source_prefix}nodes.c") + + with open(menu_src_file, 'w', encoding='utf-8') as f: + f.write("/**\n") + f.write(" **********************************************************************************************************************\n") + f.write(" * @file menu_nodes.c\n") + f.write(" * @brief 电磁启动器菜单节点实现\n") + f.write(" * @author Code Generator\n") + f.write(" * @date 2025-12-22 12:00:00\n") + f.write(" **********************************************************************************************************************\n") + f.write(" */\n\n") + f.write("#include \"menu_nodes.h\"\n\n") + + # 生成菜单节点数组 + f.write("/* 菜单节点数组定义 */\n") + f.write("const MenuNode g_menu_nodes[] = {\n") + + for i, node in enumerate(self.nodes): + f.write(" {\n") + f.write(f" .id = {node['id']},\n") + f.write(f" .parent_id = {node['parent_id']},\n") + f.write(f" .name_en = \"{node['name']['en']}",\n") + f.write(f" .name_cn = \"{node['name']['cn']}",\n") + f.write(f" .id_name = \"{node['id_name']}",\n") + f.write(f" .enter_cb = {node.get('enter_cb', 'NULL')},\n") + f.write(f" .display_cb = {node.get('display_cb', 'NULL')},\n") + f.write(f" .action_cb = {node.get('action_cb', 'NULL')},\n") + f.write(f" .visible_cb = {node.get('visible_cb', 'NULL')},\n") + f.write(f" .permission_level = {node.get('permission_level', 0)},\n") + f.write(f" .confirm_required = {str(node.get('confirm_required', False)).lower()},\n") + f.write(f" .bind_param_id = {node.get('bind_param_id', 0)},\n") + f.write(f" .menu_item_type = {node['c_code'].get('menu_item_type', 'SUB_MENU')}\n") + + # 最后一个元素不需要逗号 + if i == len(self.nodes) - 1: + f.write(" }\n") + else: + f.write(" },\n") + + f.write("}; + +") + + # 生成菜单节点数量 + f.write("/* 菜单节点数量 */\n") + f.write("const uint32_t g_menu_node_count = sizeof(g_menu_nodes) / sizeof(g_menu_nodes[0]);\n\n") + + print(f"菜单节点源文件生成成功: {menu_src_file}") \ No newline at end of file diff --git a/tools/menu_config.yaml b/tools/menu_config.yaml deleted file mode 100644 index aa1c2ee..0000000 --- a/tools/menu_config.yaml +++ /dev/null @@ -1,1794 +0,0 @@ -# 电磁启动器(电机保护型)菜单与参数配置文件(优化版) -# 适配场景:低压三相异步电机的启动、控制与综合保护 -# 核心特性:支持C代码自动生成、枚举复用、多语言、权限控制、硬件存储映射 -config: - # 多语言配置 - languages: - - code: en - name: English - alias: LANG_EN - - code: cn - name: Chinese - alias: LANG_CN - # 菜单全局属性 - default_language: cn # 默认中文 - menu_max_depth: 4 # 菜单最大嵌套深度 - default_permission_level: 0 # 0-操作员,1-管理员,2-厂家 - show_back_item: true # 显示返回项 - show_home_item: true # 显示主页项 - save_params_on_change: true # 参数修改后自动保存 - param_apply_delay: 1000 # 参数生效延时(ms) - # C代码自动生成配置(核心工程化配置) - c_code_gen: - enable: true - output_dir: ../output - header_prefix: menu_ - source_prefix: menu_ - type_mapping: - FLOAT: float - INT: int - ENUM: uint8_t - STRING: char - param_storage: - type: struct - struct_name: MenuParams - array_name: g_menu_params - eeprom_base_addr: 0 - function_naming: - prefix: menu_ - enter_suffix: _enter - exit_suffix: _exit - action_suffix: _action - display_suffix: _display - visible_suffix: _visible - constant_defs: - header_file: menu_constants.h - enum_prefix: ENUM_ - param_id_prefix: PARAM_ - menu_id_prefix: MENU_ - code_style: - indent: 4 - braces: k&r - line_length: 120 - comment_style: c99 - features: - generate_param_accessors: true - generate_menu_navigation: true - generate_action_functions: true - generate_display_functions: true - generate_enum_definitions: true - generate_constant_defines: true - generate_init_function: true - generate_save_load_functions: true - generate_visible_callbacks: true - -# 全局枚举模板(支持C代码生成,可复用) -enum_templates: - - template_id: SWITCH_TEMPLATE - name: - en: Switch - cn: 开关 - description: - en: Basic on/off switch template - cn: 基础开关模板 - enum_options: - 0: - alias: SWITCH_OFF - label: - en: 'Off' - cn: 关闭 - value: 0 - 1: - alias: SWITCH_ON - label: - en: 'On' - cn: 开启 - value: 1 - c_code: - typedef_name: SwitchType - enum_name: SwitchEnum - header_file: menu_enums.h - c_comment: 基础开关枚举类型(0=关闭,1=开启) - use_typedef: true - generate_constants: true - - - template_id: PROTECT_ENABLE_TEMPLATE - name: - en: Protection Enable - cn: 保护投退 - description: - en: Protection enable/disable template - cn: 保护功能投退模板 - enum_options: - 0: - alias: PROT_DISABLE - label: - en: Disable - cn: 退出 - value: 0 - 1: - alias: PROT_ENABLE - label: - en: Enable - cn: 投入 - value: 1 - c_code: - typedef_name: ProtectEnableType - enum_name: ProtectEnableEnum - header_file: menu_enums.h - c_comment: 保护功能投退枚举类型(0=退出,1=投入) - use_typedef: true - generate_constants: true - - - template_id: START_MODE_TEMPLATE - name: - en: Start Mode - cn: 启动方式 - description: - en: Motor start mode template - cn: 电机启动方式模板 - enum_options: - 0: - alias: START_DIRECT - label: - en: Direct Start - cn: 直接启动 - value: 0 - 1: - alias: START_STAR_DELTA - label: - en: Star-Delta Start - cn: 星三角启动 - value: 1 - 2: - alias: START_SOFT - label: - en: Soft Start - cn: 软启动 - value: 2 - c_code: - typedef_name: StartModeType - enum_name: StartModeEnum - header_file: menu_enums.h - c_comment: 电机启动方式枚举类型(0=直接启动,1=星三角启动,2=软启动) - use_typedef: true - generate_constants: true - - - template_id: OVERLOAD_CURVE_TEMPLATE - name: - en: Overload Curve - cn: 过载曲线 - description: - en: Motor overload protection curve template - cn: 电机过载保护曲线模板 - enum_options: - 0: - alias: CURVE_10A - label: - en: 10A Curve (General) - cn: 10A曲线(通用) - value: 0 - 1: - alias: CURVE_20A - label: - en: 20A Curve (Motor) - cn: 20A曲线(电机) - value: 1 - 2: - alias: CURVE_30A - label: - en: 30A Curve (Heavy Load) - cn: 30A曲线(重载) - value: 2 - c_code: - typedef_name: OverloadCurveType - enum_name: OverloadCurveEnum - header_file: menu_enums.h - c_comment: 电机过载保护曲线枚举类型(0=10A通用,1=20A电机,2=30A重载) - use_typedef: true - generate_constants: true - -# 核心参数项(电磁启动器实际参数,含完整C代码配置) -params: - # -------------------- 1. 电机基本参数 -------------------- - - id: 1001 - name: - en: "Motor Rated Voltage" - cn: "电机额定电压" - id_name: MOTOR_RATED_VOLT - type: FLOAT - variable_name: motor_rated_volt - default: 380.0 - min: 220.0 - max: 660.0 - step: 10.0 - unit: V - read_only: false - comm_addr: 4097 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 0 - accessor_name: motor_rated_volt - init_value: 380.0 - validation_func: validate_motor_rated_volt - validation_params: - min: 220.0 - max: 660.0 - format_string: '%.1f' - display_precision: 1 - display_unit: V - storage_type: RAM - eeprom_offset: 0 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 1002 - name: - en: "Motor Rated Current" - cn: "电机额定电流" - id_name: MOTOR_RATED_CURR - type: FLOAT - variable_name: motor_rated_curr - default: 10.0 - min: 0.1 - max: 100.0 - step: 0.1 - unit: A - read_only: false - comm_addr: 4098 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 1 - accessor_name: motor_rated_curr - init_value: 10.0 - validation_func: validate_motor_rated_curr - validation_params: - min: 0.1 - max: 100.0 - format_string: '%.1f' - display_precision: 1 - display_unit: A - storage_type: RAM - eeprom_offset: 4 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 1003 - name: - en: "Motor Rated Power" - cn: "电机额定功率" - id_name: MOTOR_RATED_POWER - type: FLOAT - variable_name: motor_rated_power - default: 5.5 - min: 0.1 - max: 55.0 - step: 0.1 - unit: kW - read_only: false - comm_addr: 4099 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 2 - accessor_name: motor_rated_power - init_value: 5.5 - validation_func: validate_motor_rated_power - validation_params: - min: 0.1 - max: 55.0 - format_string: '%.1f' - display_precision: 1 - display_unit: kW - storage_type: RAM - eeprom_offset: 8 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 1004 - name: - en: "Motor Pole Number" - cn: "电机极数" - id_name: MOTOR_POLE_NUM - type: INT - variable_name: motor_pole_num - default: 4 - min: 2 - max: 8 - step: 2 - unit: 极 - read_only: false - comm_addr: 4100 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 3 - accessor_name: motor_pole_num - init_value: 4 - validation_func: validate_motor_pole_num - validation_params: - min: 2 - max: 8 - format_string: '%d' - display_precision: 0 - display_unit: 极 - storage_type: RAM - eeprom_offset: 12 - bit_width: 16 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - # -------------------- 2. 保护功能参数 -------------------- - - id: 2001 - name: - en: "Overload Protection Enable" - cn: "过载保护投退" - id_name: PROT_OVERLOAD_ENABLE - type: ENUM - variable_name: prot_overload_enable - default: 1 - default_alias: PROT_ENABLE - enum_template: PROTECT_ENABLE_TEMPLATE - unit: '' - read_only: false - comm_addr: 8193 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 4 - accessor_name: prot_overload_enable - init_value: 1 - validation_func: validate_prot_overload_enable - validation_params: - min: 0 # 修正:匹配枚举实际范围(0=退出,1=投入) - max: 1 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 16 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2002 - name: - en: "Overload Current Threshold" - cn: "过载电流阈值" - id_name: PROT_OVERLOAD_THRESH - type: FLOAT - variable_name: prot_overload_thresh - default: 1.2 - min: 1.0 - max: 2.0 - step: 0.05 - unit: Ie - read_only: false - comm_addr: 8194 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 5 - accessor_name: prot_overload_thresh - init_value: 1.2 - validation_func: validate_prot_overload_thresh - validation_params: - min: 1.0 - max: 2.0 - format_string: '%.1f' - display_precision: 1 - display_unit: Ie - storage_type: RAM - eeprom_offset: 20 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2003 - name: - en: "Overload Curve Type" - cn: "过载保护曲线" - id_name: PROT_OVERLOAD_CURVE - type: ENUM - variable_name: prot_overload_curve - default: 1 - default_alias: CURVE_20A - enum_template: OVERLOAD_CURVE_TEMPLATE - unit: '' - read_only: false - comm_addr: 8195 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 6 - accessor_name: prot_overload_curve - init_value: 1 - validation_func: validate_prot_overload_curve - validation_params: - min: 0 # 修正:匹配枚举实际范围(0-2) - max: 2 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 24 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2004 - name: - en: "Phase Loss Protection Enable" - cn: "缺相保护投退" - id_name: PROT_PHASE_LOSS_ENABLE - type: ENUM - variable_name: prot_phase_loss_enable - default: 1 - default_alias: PROT_ENABLE - enum_template: PROTECT_ENABLE_TEMPLATE - unit: '' - read_only: false - comm_addr: 8196 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 7 - accessor_name: prot_phase_loss_enable - init_value: 1 - validation_func: validate_prot_phase_loss_enable - validation_params: - min: 0 # 修正:匹配枚举实际范围 - max: 1 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 28 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2005 - name: - en: "Phase Loss Delay Time" - cn: "缺相保护延时" - id_name: PROT_PHASE_LOSS_DELAY - type: FLOAT - variable_name: prot_phase_loss_delay - default: 0.5 - min: 0.0 - max: 5.0 - step: 0.1 - unit: s - read_only: false - comm_addr: 8197 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 8 - accessor_name: prot_phase_loss_delay - init_value: 0.5 - validation_func: validate_prot_phase_loss_delay - validation_params: - min: 0.0 - max: 5.0 - format_string: '%.1f' - display_precision: 1 - display_unit: s - storage_type: RAM - eeprom_offset: 32 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2006 - name: - en: "Lock Rotor Protection Enable" - cn: "堵转保护投退" - id_name: PROT_LOCK_ROTOR_ENABLE - type: ENUM - variable_name: prot_lock_rotor_enable - default: 1 - default_alias: PROT_ENABLE - enum_template: PROTECT_ENABLE_TEMPLATE - unit: '' - read_only: false - comm_addr: 8198 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 9 - accessor_name: prot_lock_rotor_enable - init_value: 1 - validation_func: validate_prot_lock_rotor_enable - validation_params: - min: 0 # 修正:匹配枚举实际范围 - max: 1 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 36 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2007 - name: - en: "Lock Rotor Current Threshold" - cn: "堵转电流阈值" - id_name: PROT_LOCK_ROTOR_THRESH - type: FLOAT - variable_name: prot_lock_rotor_thresh - default: 5.0 - min: 3.0 - max: 10.0 - step: 0.1 - unit: Ie - read_only: false - comm_addr: 8199 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 10 - accessor_name: prot_lock_rotor_thresh - init_value: 5.0 - validation_func: validate_prot_lock_rotor_thresh - validation_params: - min: 3.0 - max: 10.0 - format_string: '%.1f' - display_precision: 1 - display_unit: Ie - storage_type: RAM - eeprom_offset: 40 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2008 - name: - en: "Phase Unbalance Protection Enable" - cn: "相不平衡保护投退" - id_name: PROT_PHASE_UNBALANCE_ENABLE - type: ENUM - variable_name: prot_phase_unbalance_enable - default: 1 - default_alias: PROT_ENABLE - enum_template: PROTECT_ENABLE_TEMPLATE - unit: '' - read_only: false - comm_addr: 8200 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 11 - accessor_name: prot_phase_unbalance_enable - init_value: 1 - validation_func: validate_prot_phase_unbalance_enable - validation_params: - min: 0 # 修正:匹配枚举实际范围 - max: 1 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 44 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2009 - name: - en: "Phase Unbalance Threshold" - cn: "相不平衡阈值" - id_name: PROT_PHASE_UNBALANCE_THRESH - type: FLOAT - variable_name: prot_phase_unbalance_thresh - default: 20.0 - min: 5.0 - max: 50.0 - step: 1.0 - unit: '%' - read_only: false - comm_addr: 8201 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 12 - accessor_name: prot_phase_unbalance_thresh - init_value: 20.0 - validation_func: validate_prot_phase_unbalance_thresh - validation_params: - min: 5.0 - max: 50.0 - format_string: '%.1f' - display_precision: 1 - display_unit: '%' - storage_type: RAM - eeprom_offset: 48 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2010 - name: - en: "Under Voltage Protection Enable" - cn: "欠压保护投退" - id_name: PROT_UNDERVOLT_ENABLE - type: ENUM - variable_name: prot_undervolt_enable - default: 1 - default_alias: PROT_ENABLE - enum_template: PROTECT_ENABLE_TEMPLATE - unit: '' - read_only: false - comm_addr: 8208 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 13 - accessor_name: prot_undervolt_enable - init_value: 1 - validation_func: validate_prot_undervolt_enable - validation_params: - min: 0 # 修正:匹配枚举实际范围 - max: 1 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 52 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2011 - name: - en: "Under Voltage Threshold" - cn: "欠压保护阈值" - id_name: PROT_UNDERVOLT_THRESH - type: FLOAT - variable_name: prot_undervolt_thresh - default: 85.0 - min: 70.0 - max: 90.0 - step: 1.0 - unit: '%Ue' - read_only: false - comm_addr: 8209 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 14 - accessor_name: prot_undervolt_thresh - init_value: 85.0 - validation_func: validate_prot_undervolt_thresh - validation_params: - min: 70.0 - max: 90.0 - format_string: '%.1f' - display_precision: 1 - display_unit: '%Ue' - storage_type: RAM - eeprom_offset: 56 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2012 - name: - en: "Over Voltage Protection Enable" - cn: "过压保护投退" - id_name: PROT_OVERVOLT_ENABLE - type: ENUM - variable_name: prot_overvolt_enable - default: 1 - default_alias: PROT_ENABLE - enum_template: PROTECT_ENABLE_TEMPLATE - unit: '' - read_only: false - comm_addr: 8210 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 15 - accessor_name: prot_overvolt_enable - init_value: 1 - validation_func: validate_prot_overvolt_enable - validation_params: - min: 0 # 修正:匹配枚举实际范围 - max: 1 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 60 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 2013 - name: - en: "Over Voltage Threshold" - cn: "过压保护阈值" - id_name: PROT_OVERVOLT_THRESH - type: FLOAT - variable_name: prot_overvolt_thresh - default: 110.0 - min: 105.0 - max: 120.0 - step: 1.0 - unit: '%Ue' - read_only: false - comm_addr: 8211 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 16 - accessor_name: prot_overvolt_thresh - init_value: 110.0 - validation_func: validate_prot_overvolt_thresh - validation_params: - min: 105.0 - max: 120.0 - format_string: '%.1f' - display_precision: 1 - display_unit: '%Ue' - storage_type: RAM - eeprom_offset: 64 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - # -------------------- 3. 控制功能参数 -------------------- - - id: 3001 - name: - en: "Start Mode" - cn: "启动方式" - id_name: CONTROL_START_MODE - type: ENUM - variable_name: control_start_mode - default: 0 - default_alias: START_DIRECT - enum_template: START_MODE_TEMPLATE - unit: '' - read_only: false - comm_addr: 12289 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 17 - accessor_name: control_start_mode - init_value: 0 - validation_func: validate_control_start_mode - validation_params: - min: 0 # 修正:匹配枚举实际范围(0-2) - max: 2 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 68 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 3002 - name: - en: "Star-Delta Switch Delay" - cn: "星三角切换延时" - id_name: CONTROL_STAR_DELTA_DELAY - type: FLOAT - variable_name: control_star_delta_delay - default: 5.0 - min: 1.0 - max: 30.0 - step: 0.1 - unit: s - read_only: false - comm_addr: 12290 - comm_rw: 1 - permission_level: 1 - visible_cb: check_star_delta_mode - c_code: - struct_member: true - array_index: 18 - accessor_name: control_star_delta_delay - init_value: 5.0 - validation_func: validate_control_star_delta_delay - validation_params: - min: 1.0 - max: 30.0 - format_string: '%.1f' - display_precision: 1 - display_unit: s - storage_type: RAM - eeprom_offset: 72 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 3003 - name: - en: "Soft Start Time" - cn: "软启动时间" - id_name: CONTROL_SOFT_START_TIME - type: FLOAT - variable_name: control_soft_start_time - default: 10.0 - min: 1.0 - max: 60.0 - step: 1.0 - unit: s - read_only: false - comm_addr: 12291 - comm_rw: 1 - permission_level: 1 - visible_cb: check_soft_start_mode - c_code: - struct_member: true - array_index: 19 - accessor_name: control_soft_start_time - init_value: 10.0 - validation_func: validate_control_soft_start_time - validation_params: - min: 1.0 - max: 60.0 - format_string: '%.1f' - display_precision: 1 - display_unit: s - storage_type: RAM - eeprom_offset: 76 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 3004 - name: - en: "Stop Delay Time" - cn: "停止延时时间" - id_name: CONTROL_STOP_DELAY - type: FLOAT - variable_name: control_stop_delay - default: 0.0 - min: 0.0 - max: 60.0 - step: 0.1 - unit: s - read_only: false - comm_addr: 12292 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 20 - accessor_name: control_stop_delay - init_value: 0.0 - validation_func: validate_control_stop_delay - validation_params: - min: 0.0 - max: 60.0 - format_string: '%.1f' - display_precision: 1 - display_unit: s - storage_type: RAM - eeprom_offset: 80 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 3005 - name: - en: "Remote Control Enable" - cn: "远程控制投退" - id_name: CONTROL_REMOTE_ENABLE - type: ENUM - variable_name: control_remote_enable - default: 0 - default_alias: SWITCH_OFF - enum_template: SWITCH_TEMPLATE - unit: '' - read_only: false - comm_addr: 12293 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 21 - accessor_name: control_remote_enable - init_value: 0 - validation_func: validate_control_remote_enable - validation_params: - min: 0 # 修正:匹配枚举实际范围(0=关闭,1=开启) - max: 1 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 84 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - # -------------------- 4. 系统配置参数 -------------------- - - id: 4001 - name: - en: "Communication Address" - cn: "通讯地址" - id_name: SYS_COMM_ADDR - type: INT - variable_name: sys_comm_addr - default: 1 - min: 1 - max: 247 - step: 1 - unit: '' - read_only: false - comm_addr: 16385 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 22 - accessor_name: sys_comm_addr - init_value: 1 - validation_func: validate_sys_comm_addr - validation_params: - min: 1 - max: 247 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 88 - bit_width: 16 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 4002 - name: - en: "Baud Rate" - cn: "波特率" - id_name: SYS_BAUDRATE - type: ENUM - variable_name: sys_baudrate - default: 9600 - default_alias: BAUD_9600 - enum_options: - 2400: - alias: BAUD_2400 - label: - en: 2400 bps - cn: 2400 波特 - value: 2400 - 4800: - alias: BAUD_4800 - label: - en: 4800 bps - cn: 4800 波特 - value: 4800 - 9600: - alias: BAUD_9600 - label: - en: 9600 bps - cn: 9600 波特 - value: 9600 - 19200: - alias: BAUD_19200 - label: - en: 19200 bps - cn: 19200 波特 - value: 19200 - unit: bps - read_only: false - comm_addr: 16386 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 23 - accessor_name: sys_baudrate - init_value: 9600 - validation_func: validate_sys_baudrate - validation_params: - min: 2400 # 修正:匹配波特率实际范围 - max: 19200 - format_string: '%d' - display_precision: 0 - display_unit: bps - storage_type: RAM - eeprom_offset: 92 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - # 新增:波特率枚举C代码配置 - typedef_name: BaudRateType - enum_name: BaudRateEnum - header_file: menu_enums.h - c_comment: 通讯波特率枚举类型 - use_typedef: true - generate_constants: true - - - id: 4003 - name: - en: "Admin Password" - cn: "管理员密码" - id_name: SYS_ADMIN_PWD - type: INT - variable_name: sys_admin_pwd - default: 123456 - min: 0 - max: 999999 - step: 1 - unit: '' - read_only: false - comm_addr: 16387 - comm_rw: 1 - permission_level: 2 - c_code: - struct_member: true - array_index: 24 - accessor_name: sys_admin_pwd - init_value: 123456 - validation_func: validate_sys_admin_pwd - validation_params: - min: 0 - max: 999999 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 96 - bit_width: 16 - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - - id: 4004 - name: - en: "System Time" - cn: "系统时间" - id_name: SYS_TIME - type: STRING - variable_name: sys_time - default: '2025-01-01 00:00:00' - unit: '' - read_only: false - comm_addr: 16388 - comm_rw: 1 - permission_level: 1 - c_code: - struct_member: true - array_index: 25 - accessor_name: sys_time - init_value: '2025-01-01 00:00:00' - validation_func: validate_sys_time - validation_params: - min: 0 - max: 1000 - format_string: '%s' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 100 - bit_width: 8 - string_length: 20 # 新增:字符串长度(适配"YYYY-MM-DD HH:MM:SS"格式) - scaling_factor: 1.0 - generate_getter: true - generate_setter: true - generate_validator: true - - # -------------------- 5. 状态采集参数(只读) -------------------- - - id: 5001 - name: - en: "Phase Current A" - cn: "A相电流" - id_name: STATUS_CURR_A - type: FLOAT - variable_name: status_curr_a - unit: A - read_only: true - comm_addr: 20481 - comm_rw: 0 - c_code: - struct_member: true - array_index: 26 - accessor_name: status_curr_a - init_value: 0.0 - validation_func: validate_status_curr_a - validation_params: - min: 0.0 - max: 200.0 # 修正:合理的电流测量范围 - format_string: '%.1f' - display_precision: 1 - display_unit: A - storage_type: RAM - eeprom_offset: 104 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: false # 修正:只读参数不生成setter - generate_validator: true - - - id: 5002 - name: - en: "Phase Current B" - cn: "B相电流" - id_name: STATUS_CURR_B - type: FLOAT - variable_name: status_curr_b - unit: A - read_only: true - comm_addr: 20482 - comm_rw: 0 - c_code: - struct_member: true - array_index: 27 - accessor_name: status_curr_b - init_value: 0.0 - validation_func: validate_status_curr_b - validation_params: - min: 0.0 - max: 200.0 - format_string: '%.1f' - display_precision: 1 - display_unit: A - storage_type: RAM - eeprom_offset: 108 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: false # 修正:只读参数不生成setter - generate_validator: true - - - id: 5003 - name: - en: "Phase Current C" - cn: "C相电流" - id_name: STATUS_CURR_C - type: FLOAT - variable_name: status_curr_c - unit: A - read_only: true - comm_addr: 20483 - comm_rw: 0 - c_code: - struct_member: true - array_index: 28 - accessor_name: status_curr_c - init_value: 0.0 - validation_func: validate_status_curr_c - validation_params: - min: 0.0 - max: 200.0 - format_string: '%.1f' - display_precision: 1 - display_unit: A - storage_type: RAM - eeprom_offset: 112 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: false # 修正:只读参数不生成setter - generate_validator: true - - - id: 5004 - name: - en: "Line Voltage AB" - cn: "AB线电压" - id_name: STATUS_VOLT_AB - type: FLOAT - variable_name: status_volt_ab - unit: V - read_only: true - comm_addr: 20484 - comm_rw: 0 - c_code: - struct_member: true - array_index: 29 - accessor_name: status_volt_ab - init_value: 0.0 - validation_func: validate_status_volt_ab - validation_params: - min: 0.0 - max: 800.0 # 修正:合理的电压测量范围 - format_string: '%.1f' - display_precision: 1 - display_unit: V - storage_type: RAM - eeprom_offset: 116 - bit_width: 32 - scaling_factor: 1.0 - generate_getter: true - generate_setter: false # 修正:只读参数不生成setter - generate_validator: true - - - id: 5005 - name: - en: "Motor Running Status" - cn: "电机运行状态" - id_name: STATUS_MOTOR_RUN - type: ENUM - variable_name: status_motor_run - default: 0 - default_alias: STATUS_STOP - enum_options: - 0: - alias: STATUS_STOP - label: - en: Stop - cn: 停止 - value: 0 - 1: - alias: STATUS_RUN - label: - en: Run - cn: 运行 - value: 1 - 2: - alias: STATUS_FAULT - label: - en: Fault - cn: 故障 - value: 2 - unit: '' - read_only: true - comm_addr: 20485 - comm_rw: 0 - c_code: - struct_member: true - array_index: 30 - accessor_name: status_motor_run - init_value: 0 - validation_func: validate_status_motor_run - validation_params: - min: 0 # 修正:匹配枚举实际范围(0-2) - max: 2 - format_string: '%d' - display_precision: 0 - display_unit: '' - storage_type: RAM - eeprom_offset: 120 - bit_width: 8 - scaling_factor: 1.0 - generate_getter: true - generate_setter: false # 修正:只读参数不生成setter - generate_validator: true - # 新增:电机状态枚举C代码配置 - typedef_name: MotorStatusType - enum_name: MotorStatusEnum - header_file: menu_enums.h - c_comment: 电机运行状态枚举类型(0=停止,1=运行,2=故障) - use_typedef: true - generate_constants: true - -# 菜单层级结构(语义化类型,适配C代码生成) -nodes: - - id: 1 - parent_id: 0 - name: - en: "Main Menu" - cn: "主菜单" - id_name: MAIN_MENU - enter_cb: menu_enter_main - c_code: - struct_member: true - menu_item_type: MAIN_MENU # 语义化:主菜单 - function_name: menu_enter_main - header_file: menu_nodes.h - - # -------------------- 一级菜单:实时数据 -------------------- - - id: 10 - parent_id: 1 - name: - en: "Real-Time Data" - cn: "实时数据" - id_name: MENU_REAL_TIME_DATA - enter_cb: menu_enter_real_time_data - c_code: - struct_member: true - menu_item_type: SUB_MENU # 语义化:子菜单 - function_name: menu_enter_real_time_data - header_file: menu_nodes.h - - - id: 1001 - parent_id: 10 - name: - en: "Current Data" - cn: "电流数据" - id_name: MENU_CURRENT_DATA - display_cb: show_phase_current - c_code: - struct_member: true - menu_item_type: DISPLAY_ITEM # 语义化:显示项(无编辑) - function_name: show_phase_current - header_file: menu_nodes.h - - - id: 1002 - parent_id: 10 - name: - en: "Voltage Data" - cn: "电压数据" - id_name: MENU_VOLTAGE_DATA - display_cb: show_line_voltage - c_code: - struct_member: true - menu_item_type: DISPLAY_ITEM - function_name: show_line_voltage - header_file: menu_nodes.h - - - id: 1003 - parent_id: 10 - name: - en: "Motor Status" - cn: "电机状态" - id_name: MENU_MOTOR_STATUS - display_cb: show_motor_status - c_code: - struct_member: true - menu_item_type: DISPLAY_ITEM - function_name: show_motor_status - header_file: menu_nodes.h - - # -------------------- 一级菜单:参数设置 -------------------- - - id: 20 - parent_id: 1 - name: - en: "Parameter Settings" - cn: "参数设置" - id_name: MENU_PARAM_SETTINGS - enter_cb: menu_enter_param_settings - permission_level: 1 - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_param_settings - header_file: menu_nodes.h - - - id: 2001 - parent_id: 20 - name: - en: "Motor Basic Params" - cn: "电机基本参数" - id_name: MENU_MOTOR_BASIC_PARAMS - enter_cb: menu_enter_motor_basic_params - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_motor_basic_params - header_file: menu_nodes.h - - - id: 200101 - parent_id: 2001 - name: - en: "Motor Rated Voltage" - cn: "电机额定电压" - id_name: MENU_MOTOR_RATED_VOLT - bind_param_id: 1001 - enter_cb: menu_enter_param_edit - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM # 语义化:参数编辑项 - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - - id: 200102 - parent_id: 2001 - name: - en: "Motor Rated Current" - cn: "电机额定电流" - id_name: MENU_MOTOR_RATED_CURR - bind_param_id: 1002 - enter_cb: menu_enter_param_edit - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - - id: 200103 - parent_id: 2001 - name: - en: "Motor Rated Power" - cn: "电机额定功率" - id_name: MENU_MOTOR_RATED_POWER - bind_param_id: 1003 - enter_cb: menu_enter_param_edit - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - - id: 2002 - parent_id: 20 - name: - en: "Protection Params" - cn: "保护功能参数" - id_name: MENU_PROTECTION_PARAMS - enter_cb: menu_enter_protection_params - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_protection_params - header_file: menu_nodes.h - - - id: 200201 - parent_id: 2002 - name: - en: "Overload Protection" - cn: "过载保护" - id_name: MENU_OVERLOAD_PROT - enter_cb: menu_enter_overload_prot - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_overload_prot - header_file: menu_nodes.h - - - id: 20020101 - parent_id: 200201 - name: - en: "Overload Protect Enable" - cn: "过载保护投退" - id_name: MENU_OVERLOAD_PROT_ENABLE - bind_param_id: 2001 - enter_cb: menu_enter_param_edit - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - - id: 20020102 - parent_id: 200201 - name: - en: "Overload Current Threshold" - cn: "过载电流阈值" - id_name: MENU_OVERLOAD_PROT_THRESH - bind_param_id: 2002 - enter_cb: menu_enter_param_edit - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - - id: 200202 - parent_id: 2002 - name: - en: "Phase Loss Protection" - cn: "缺相保护" - id_name: MENU_PHASE_LOSS_PROT - enter_cb: menu_enter_phase_loss_prot - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_phase_loss_prot - header_file: menu_nodes.h - - - id: 2003 - parent_id: 20 - name: - en: "Control Function Params" - cn: "控制功能参数" - id_name: MENU_CONTROL_PARAMS - enter_cb: menu_enter_control_params - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_control_params - header_file: menu_nodes.h - - - id: 200301 - parent_id: 2003 - name: - en: "Start Mode" - cn: "启动方式" - id_name: MENU_START_MODE - bind_param_id: 3001 - enter_cb: menu_enter_param_edit - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - - id: 200302 - parent_id: 2003 - name: - en: "Star-Delta Switch Delay" - cn: "星三角切换延时" - id_name: MENU_STAR_DELTA_DELAY - bind_param_id: 3002 - enter_cb: menu_enter_param_edit - visible_cb: check_star_delta_mode - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - - id: 2004 - parent_id: 20 - name: - en: "System Config Params" - cn: "系统配置参数" - id_name: MENU_SYSTEM_PARAMS - enter_cb: menu_enter_system_params - permission_level: 1 - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_system_params - header_file: menu_nodes.h - - # -------------------- 一级菜单:保护投退 -------------------- - - id: 30 - parent_id: 1 - name: - en: "Protection Enable/Disable" - cn: "保护投退" - id_name: MENU_PROTECT_ENABLE - enter_cb: menu_enter_protect_enable - permission_level: 1 - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_protect_enable - header_file: menu_nodes.h - - - id: 3001 - parent_id: 30 - name: - en: "Overload Protect Enable" - cn: "过载保护投退" - id_name: MENU_OVERLOAD_PROT_ENABLE - bind_param_id: 2001 - enter_cb: menu_enter_param_edit - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - - id: 3002 - parent_id: 30 - name: - en: "Phase Loss Protect Enable" - cn: "缺相保护投退" - id_name: MENU_PHASE_LOSS_PROT_ENABLE - bind_param_id: 2004 - enter_cb: menu_enter_param_edit - c_code: - struct_member: true - menu_item_type: PARAM_EDIT_ITEM - function_name: menu_enter_param_edit - header_file: menu_nodes.h - - # -------------------- 一级菜单:控制操作 -------------------- - - id: 40 - parent_id: 1 - name: - en: "Control Operation" - cn: "控制操作" - id_name: MENU_CONTROL_OP - enter_cb: menu_enter_control_op - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_control_op - header_file: menu_nodes.h - - - id: 4001 - parent_id: 40 - name: - en: "Motor Start" - cn: "电机启动" - id_name: MENU_MOTOR_START - action_cb: action_motor_start - confirm_required: true - visible_cb: check_motor_stop - c_code: - struct_member: true - menu_item_type: ACTION_ITEM # 语义化:操作项(执行动作) - function_name: action_motor_start - header_file: menu_nodes.h - - - id: 4002 - parent_id: 40 - name: - en: "Motor Stop" - cn: "电机停止" - id_name: MENU_MOTOR_STOP - action_cb: action_motor_stop - confirm_required: true - visible_cb: check_motor_run - c_code: - struct_member: true - menu_item_type: ACTION_ITEM - function_name: action_motor_stop - header_file: menu_nodes.h - - - id: 4003 - parent_id: 40 - name: - en: "Fault Reset" - cn: "故障复位" - id_name: MENU_FAULT_RESET - action_cb: action_fault_reset - confirm_required: true - visible_cb: check_motor_fault - c_code: - struct_member: true - menu_item_type: ACTION_ITEM - function_name: action_fault_reset - header_file: menu_nodes.h - - # -------------------- 一级菜单:故障记录 -------------------- - - id: 50 - parent_id: 1 - name: - en: "Fault Record" - cn: "故障记录" - id_name: MENU_FAULT_RECORD - enter_cb: menu_enter_fault_record - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_fault_record - header_file: menu_nodes.h - - - id: 5001 - parent_id: 50 - name: - en: "Current Fault" - cn: "当前故障" - id_name: MENU_CURRENT_FAULT - display_cb: show_current_fault - c_code: - struct_member: true - menu_item_type: DISPLAY_ITEM - function_name: show_current_fault - header_file: menu_nodes.h - - - id: 5002 - parent_id: 50 - name: - en: "History Fault" - cn: "历史故障" - id_name: MENU_HISTORY_FAULT - enter_cb: menu_enter_history_fault - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_history_fault - header_file: menu_nodes.h - - - id: 5003 - parent_id: 50 - name: - en: "Clear History Fault" - cn: "清除历史故障" - id_name: MENU_CLEAR_HISTORY_FAULT - action_cb: action_clear_history_fault - confirm_required: true - permission_level: 1 - c_code: - struct_member: true - menu_item_type: ACTION_ITEM - function_name: action_clear_history_fault - header_file: menu_nodes.h - - # -------------------- 一级菜单:系统信息 -------------------- - - id: 60 - parent_id: 1 - name: - en: "System Info" - cn: "系统信息" - id_name: MENU_SYSTEM_INFO - enter_cb: menu_enter_system_info - c_code: - struct_member: true - menu_item_type: SUB_MENU - function_name: menu_enter_system_info - header_file: menu_nodes.h - - - id: 6001 - parent_id: 60 - name: - en: "Device Version" - cn: "设备版本" - id_name: MENU_DEVICE_VERSION - display_cb: show_device_version - c_code: - struct_member: true - menu_item_type: DISPLAY_ITEM - function_name: show_device_version - header_file: menu_nodes.h - - - id: 6002 - parent_id: 60 - name: - en: "Run Time" - cn: "运行时间" - id_name: MENU_RUN_TIME - display_cb: show_run_time - c_code: - struct_member: true - menu_item_type: DISPLAY_ITEM - function_name: show_run_time - header_file: menu_nodes.h \ No newline at end of file