OpenModelica仿真RLC电路

前几天课程设计做电机仿真要用MATLAB,当时想找有没有Python做的类似simulink的程序,后来就找到了OpenModelica,模型是用建模语言modelica写的,查看了modelica的官网才知道Wolfram旗下的SystemMolder也是基于modelica做出来的,之前接触过一下,而OpenModelica是开源免费的,其功能也非常强大,刚学习不久,这里就写下短文记录一下

安装

官网下载,多个平台(LINUX、WIN、MAC)均有,本人的安装环境是WIN 64.

本来一般软件在win下安装都是没什么问题的,但是我在安装OpenModelica的时候,第一次,先是下载了最新版本,(没有选择以管理员身份运行)自定义安装目录,安装快完成的时候提示安装失败。第二次,以为最新版不稳定,重新下载了OpenModelica-v1.11.0-64bit.exe这个版本,同样没有以管理员身份运行,选择了自定义安装目录,依然失败告终;第三次,用OpenModelica-v1.11.0-64bit.exe这个版本选择了管理员身份运行,默认的安装目录(C盘),最后安装成功了,问题不知道出在了哪里,因为有两个影响因素,本人就不折腾了,有兴趣的同学可以分别试一下。

程序运行

安装完之后,在所有程序那里会找到几个程序,打开OpenModelica Connection Editor,最后如下图,注意红色方框的地方,左边是各种库文件,默认的只有上面几个,下面几个要自己添加进去,右下角是界面切换的按钮,编译之后会出现绘图界面,返回到模型界面需要那里转换
这里写图片描述

添加库

OpenModelica安装之后会有很多库了,位于"C:\OpenModelica1.11.0-64bit\lib\omlibrary"
这里写图片描述
具体安装如下图
这里写图片描述

建立模型

下面仿真两种RLC电路,新建一个Model,如图,
(1)代码1

model rlc_demo "A resistor-inductor-capacitor circuit model"
  type Voltage=Real(unit="V");
  type Current=Real(unit="A");
  type Resistance=Real(unit="Ohm");
  type Capacitance=Real(unit="F");
  type Inductance=Real(unit="H");
  parameter Voltage Vb=24 "Battery voltage";    // 电源电压24V
  parameter Inductance L = 1;
  parameter Resistance R = 100;
  parameter Capacitance C = 1e-3;

  Voltage V_R;
  Voltage V_L;
  Voltage V_C;

  Current i;

// RLC 二阶电路
equation

  C*der(V_C) = i;     // 电容通过的电流
  V_R = i * R;
  V_L = L * der(i);   // 电感上的电压
  Vb = V_R + V_C + V_L;


end rlc_demo;

(2)代码2

model RLC1 "A resistor-inductor-capacitor circuit model"
  type Voltage=Real(unit="V");
  type Current=Real(unit="A");
  type Resistance=Real(unit="Ohm");
  type Capacitance=Real(unit="F");
  type Inductance=Real(unit="H");
  parameter Voltage Vb=24 "Battery voltage";
  parameter Inductance L = 1;
  parameter Resistance R = 100;
  parameter Capacitance C = 1e-3;
  Voltage V;
  Current i_L;
  Current i_R;
  Current i_C;
equation
  V = i_R*R;
  C*der(V) = i_C;       // 流进电容的电流公式
  L*der(i_L) = (Vb-V);  // 电感上的电压
  i_L=i_R+i_C;          // 基尔霍夫电流定律
end RLC1;

模型中的变量名和方程数要保持一致,不然会报错.

der(V)是对时间的求导(derivative),这点和一般的求微分方程不同,der(var)都是变量var对时间的求导,由下面的绘图结果也可以知道横坐标为时间time,即der(x)看作是

der(x)=>dxdt

模型编译及绘图

(1)编译

点击仿真运行,运行后会出现一个界面显示编译状态
这里写图片描述

(2)绘图
1) RLC1
这里写图片描述
2) RLC2
这里写图片描述

暂时写到这里,后续补充

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值