Libraryboy 2024-03-29 17:38 采纳率: 0%
浏览 297

用simulink,simscape仿真电力电子时出现这报错,怎么解决呀

img


用simulink,simscape仿真电力电子时出现这报错,怎么解决呀

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-29 17:38
    关注

    引自免费微信小程序:皆我百晓生

    在MATLAB Simulink中,Simulink Academic Use(官方使用场合)环境中出现以下问题的解决方案通常涉及链接库模块使用、特殊函数和设置以及正确配置外部模块。

    1. Simulink Academy Use环境中的报错提示:

      "报警:尝试使用链接库模块。当使用链接库模块时,请创建链接库模块的子系统,然后使用新子系统作为DUT。"

      代码示例:

      % 创建新的链接库模块
      add_module('LinkLib', 'Eql仿真', [], ['powergui/EquivalentModel1'], 'state-Space');
      
      % 检查并加载单相半波整流的模拟模块
      load('PowerGUI_Simulator單相HalfWaveRectifier.mat');
      
      % 设置单相半波整流输入电压范围
      set([Vref, Vcc], [0, 5]);
      
      % 配置单元内电流源与电压源对称条件
      rectifier(numOutput, numInput, 'Sinc', [], ...
          'UseSource', 'MΩ', 'Use Voltage Source', 'kOhm', ...
          'MinimumValue', 0, 'MaximumValue', Vref);
      
      % 打印初始状态
      disp(['Single Phase Half-Wave Rectifier Initial State: ', num2str(Vref), ' V']);
      
      % 设定DUT参数,包括零欧姆电阻
      [R_mΩ, U] = get_step_inputs('DUTparameters.m', 'R', 'U', 'SCK');
      
      % 运行仿真
      start_time = 0.1; % 开始时间,单位为秒
      stop_time = 5; % 结束时间,单位为秒
      
      while (stop_time <= stop_time + step_time) do
          % 程序逻辑执行
          % ...
      
          % 将输出值写入断路器状态空间
          write_sense(iOut, state_space);
      
          % 更新DUT参数
          [R_mΩ, U] = get_step_inputs('DUTparameters.m', 'R', 'U', 'SCK');
      end
      
      % 退出仿真流程
      stopSimulation();
      
    2. 解决方法:

      a. 确保使用的链接库模块是正确的类型: 在上述代码中,我们导入了一个名为LinkLib的链接库模块,该模块允许我们在state-Space子系统中引用其他库和模型。single_phase_half_wave_rectifier是一个模拟模块,因此你需要确保在创建或加载此模块时选择正确的LinkLib子系统,并正确地配置其位置(即添加到Simulink Academy Use环境中)。如果你尝试将single_phase_half_wave_rectifier存储为静态变量或全局变量,例如m.SIMULINK.ADMINS(single_phase_half_wave_rectifier),则必须创建一个关联式表达式(ARX)或库引用。

      b. 检查和修复Module setup(模块初始化)过程中的设置:

      % 创建新的链接库模块
      add_module('LinkLib', 'Eql仿真', [], ['powergui/EquivalentModel1'], 'state-Space');
      
      % 确保链接库模块包含`single_phase_half_wave_rectifier`模块的正确路径
      set(Param.Value(), [], 'Path', {'linklib/MG_Simulink_StateSpace});
      
      % 检查和修正单相半波整流模块的输入电压范围设置
      set([Vref, Vcc], [0, 5]);
      
      % 修改错误的索引设置,因为该类型变量不支持点索引
      set([Vref, Vcc], [0, 5], 'SourceIndex', 0);
      
      % 调整任何需要的设置以匹配`Set initial parameters` (initializing DUT parameters)
      set([R_mΩ, U], [0, 5], 'useSource', 'MΩ', 'useVoltageSource', 'kOhm', ...
          'MinimumValue', 0, 'MaximumValue', Vref);
      

      c. 尝试使用模块成员变量设置SHEM:

      % 创建新的链接库模块
      add_module('LinkLib', 'SHEM', [], ['powergui/EquivalentModel1'], 'state-Space');
      
      % 调用`simplified_shearmodule`模块实例设置SHEM参数
      simplified_shearmodule(numInput, numOutput, 'SHEMConfig', SHELMTwoPhaseTwoTruncate);
      
      % 在SHEM内设置端口电流与电压参数
      sim.SHEMnumPortA.set('R', R_mΩ);
      sim.SHEMnumPortB.set('V', Vcc);
      sim.SHEMnumPortC.set('RdutT1b', 0);
      sim.SHEMnumPortC.set('RdutT1a', 0);
      

      d. 重新编译和加载模块:

      % 编译和加载链接库模块
      add_link_library('LinkLib', 'LinkLib', [], ['powergui/EquivalentModel1']);
      compile_and_load_link_lib('LinkLib', 'LinkLib', ['powergui/EquivalentModel1']);
      

      e. 如果上述步骤仍无法解决问题,请参考文献或联系给定的链接库文档查找更详细的API指导。若需要绘制示意图,可能需要使用MATLAB图形库或其他可视化工具,如simplotplot3d。以下是一个简单的示例,显示了如何使用MATLAB plot3dplotSphere 库绘制单相半波整流模型的断路器节点(见代码示例附后):

      % 绘制单相半波整流模型的断路器节点
      figure;
      plot3d([], [0, Vref, 0], [], 'ro');
      hold on;
      
      % 添加断路器输出波形和电压到断路器上下标
      subplot(1, 2, 1);
      plotSphere([0, 5], [0, Vref, 0], 40, 'r', 'MarkerSize', 20, 'LineWidth', 2);
      title('Full-Scale斩波器电感-电压波形');
      xlabel('Impedance (Ohms)');
      ylabel('Voltage (V)');
      zlabel('Frequency (Hz)');
      
      subplot(1, 2, 2);
      plotSphere([0, 0], [0, Vref, 0], 40, 'b', 'MarkerSize', 20, 'LineWidth', 2);
      title('Short-circuit斩波器电感-电压波形');
      xlabel('Impedance (Ohms)');
      ylabel('Voltage (V)');
      zlabel('Frequency (Hz)');
      
      % 设置标签、轴标签和网格线颜色
      legend('Full-Scale (Sinc)', 'Short-circuit (Sinc)', 'Location', 'North East');
      legend('Horizontal Line (One Port)', 'Vertical Line (One Port)');
      grid on;
      

    end

    注意:在上述示例中,`PowerGUI_Simulator_single_phase_half_wave_rectifier.mat` 是一个用于模拟单相半波整流的MATLAB Simulink模块。要修改或应用这个模块的现有设置,确保相应配置已更新,并且可以成功加载此模块。例如,如果你将模块放置在一个单独的``directory`下,修改以下目录结构即可:
    
    ```bash
    /path/to/module/directory/
    ├── Eql_SIMULATOR_
    │   ├── single_phase_half_wave_rectifier_
    │   │   └── PowerGUI_Simulator_single_phase_half_wave_rectifier.mat
    └── Simulink_ADMINS_
        ├── single_phase_half_wave_rectifier_
        │    └── single_phase_half_wave_rectifier.xml
    

    在这段代码中,将原始模块'PowerGUI_Simulator_single_phase_half_wave_rectifier.mat'的位置替换为你新定义的模块名称(如'PowerGUI_Simulator_EQL_SIMULATION_one_port_half_wave_rectifier'),并且确保添加了必要的依赖项以从正确的模块路径中导入和加载。对于模板中的代码,只需将其替换为对应模块的代码即可。在single_phase_half_wave_rectifier.xml文件中,您可以修改设置和约束以适应您的特定需求。

    希望以上解决方案能帮助您解决Simulink Academy Use环境中单相半波整流的故障问题。如果仍然遇到问题,请提供更多详细信息,以便我们更好地定位问题和提供有效的解决方案。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月29日