找回密码
 立即注册
首页 业界区 业界 在 GeckoCIRCUITS 上开发新工具模块的方法

在 GeckoCIRCUITS 上开发新工具模块的方法

蓬森莉 2 小时前
简介

最近在使用开源电力电子仿真软件 GeckoCIRCUITS 进行仿真时,我想使用离散时间控制器,但是 GeckoCIRCUITS 中没有这个模块,需要使用工具栏中自带的 JAVA 模块添加算法代码。但是我想把类似这样常用的模块固定在工具栏里,方便使用。于是我找到软件的源代码 (https://github.com/geckocircuits/GeckoCIRCUITS),在工具类中进行了添加和修改。
步骤1:新建一个工具类

在源文件目录中找到 src/main/java/ch/technokrat/gecko/geckocircuits/control 文件夹, 新建 ReglerDPRCONTROL.java, 添加如下代码,内容是定义器件名称、尺寸、IO 名称,关联描述键值、计算函数等。
  1. package ch.technokrat.gecko.geckocircuits.control;
  2. import ch.technokrat.gecko.geckocircuits.allg.AbstractComponentTyp;
  3. import ch.technokrat.gecko.geckocircuits.control.calculators.AbstractControlCalculatable;
  4. import ch.technokrat.gecko.geckocircuits.control.calculators.DPRControlCalculator;
  5. import ch.technokrat.gecko.i18n.resources.I18nKeys;
  6. import java.awt.Window;
  7. public final class ReglerDPRCONTROL extends RegelBlock{
  8.     private static final int BLOCK_WIDTH = 5;
  9.     public static final ControlTypeInfo tinfo = new ControlTypeInfo(ReglerDPRCONTROL.class, "DIGITAL_PR_CTRL", I18nKeys.DIGITAL_PR_CONTROL);
  10.     public ReglerDPRCONTROL() {
  11.         super();
  12.         
  13.         XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "input"));
  14.         XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "kp"));
  15.         XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "kr"));
  16.         XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "wo"));        
  17.         XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "fs"));
  18.         XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "wrc"));
  19.         XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "max"));
  20.         XIN.add(new TerminalControlInputWithLabel(this, -3, -XIN.size(), "min"));
  21.         
  22.         YOUT.add(new TerminalControlOutputWithLabel(this, 3, -YOUT.size(), "output"));
  23.     }
  24.     @Override
  25.     public int getBlockWidth() {
  26.         return BLOCK_WIDTH * dpix;
  27.     }
  28.    
  29.    
  30.     @Override
  31.     public String[] getOutputNames() {
  32.         return new String[]{"output"};
  33.     }
  34.     @Override
  35.     public I18nKeys[] getOutputDescription() {
  36.         return new I18nKeys[]{
  37.             };
  38.     }
  39.    
  40.     @Override
  41.     public double getXShift() {
  42.         return 1 / 2.0;
  43.     }
  44.     @Override
  45.     public AbstractControlCalculatable getInternalControlCalculatableForSimulationStart() {
  46.         return new DPRControlCalculator();
  47.     }
  48.     @Override
  49.     protected String getCenteredDrawString() {
  50.         return "DIGITAL\nPR\nCTRL";
  51.     }
  52.                
  53.     @Override
  54.     protected final Window openDialogWindow() {
  55.         return new DialogWindowWithoutInput(this);
  56.     }
  57. }
复制代码
步骤2:添加工具计算函数

在源文件目录中找到 src/main/java/ch/technokrat/gecko/geckocircuits/control/calculators 文件夹,新建 DPRControlCalculator.java,添加如下代码,内容是定义器件 IO 数量,设计模块算法。
  1. package ch.technokrat.gecko.geckocircuits.control.calculators;
  2. public class DPRControlCalculator extends AbstractControlCalculatable{
  3.     //variables
  4.     public DPRControlCalculator() {
  5.         super(8, 1);
  6.     }
  7.     @Override
  8.     public void berechneYOUT(final double deltaT) {        
  9.         //algorithm
  10.         }
  11.    
  12. }
复制代码
步骤3:添加工具字符串键值

在 src/main/java/ch/technokrat/gecko/i18n/resources/I18nKeys.java 中添加工具的描述键值:
  1. DIGITAL_PR_CONTROL("Digital PR controller")
复制代码
在 src/main/java/ch/technokrat/gecko/geckocircuits/control/ControlTyp.java 中添加它在控制类工具中的键值:
  1. C_DIGITAL_PR_CTRL(92, ReglerDPRCONTROL.tinfo)
复制代码
步骤4:新建和初始化工具组

在 src/main/java/ch/technokrat/gecko/geckocircuits/circuit/SchematischeEingabeAuswahl2.java 中添加新的工具组,将新建工具的键值放到工具组里:
  1. private AbstractComponentTyp[] _typDSPTOOLS = new AbstractComponentTyp[]{
  2.         ControlTyp.C_DIGITAL_PR_CTRL
  3.     };
复制代码
在初始化方法中添加新的工具组:
  1. createJPanelForTypes(_typDSPTOOLS, "DSP Tools");
复制代码
步骤5: 编译和运行

使用命令编译项目:
  1. mvn package assembly:single
复制代码
将在target 目录下生成 target/gecko-1.0-jar-with-dependencies.jar 文件,运行命令:
  1. java -Xmx3G -Dpolyglot.js.nashorn-compat=true -jar target/gecko-1.0-jar-with-dependencies.jar
复制代码
打开软件界面后验证,新建的工具已添加成功。
1.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册