如何实施基尔霍夫规则

时间:2014-03-21 18:31:11

标签: java data-structures simulation evaluation

1.用于电路表示的数据结构

  • 用于Kirchoff规则计算目的
  • 如何区分不同类型的电子元件
  • 如何“识别”他们之间的电线互连

2.如何实施基尔霍夫规则

  • 如何获得电流和电压回路
  • 如何存储和评估基尔霍夫方程式

[原始问题文本] 具体来说,该程序如何识别串联和并联的东西,以及它如何区分电池,电阻器,电容器,电感器等。

2 个答案:

答案 0 :(得分:3)

Java是一种面向对象的语言。开始考虑如何将系统建模为对象。

你已经有了一些候选对象:

  • 电池
  • 电阻
  • 电容器
  • 电感

这些将具有输入和输出节点。一个输出是下一个的输入。

晶体管怎么样?你将有多个输入。然后怎样呢?那些都是非线性的。你是如何建模的?

您将为每个人构建正确的行为并将它们连接在一起。

这里你会有一些瞬态强制功能。输入电流或电压波形。输出是每个节点的电流和电压与时间的关系。

这是电气工程师相当于有限元分析。

这些都是短暂的ODE,对吗?你打算怎么解决这些问题?数值积分?

答案 1 :(得分:2)

同意duffymo的回答只是添加一些东西(我是C ++友好所以我坚持下去)

  1. 首先表示组件的一些数据
  2.     struct pin
         {
         char name[];  // name id for pin ("C","B","E"...
    
         int part_ix,pin_ix;  // connected to patrs[part_ix].pins[pin_ix]
    
         double i,u;  // actual: current,voltage
         int direction; // in,out,bidirectional
         };
    
        struct part
         {
         char name[];  // name id for part ("resistor","diode",...
         pin pins[n];  // n pins of the part (resistor has 2 , transistor has 3, ...) 
         // here add all values you need for simulation like:
         double R,H21E,...
         // or even better do a matrix for it so when you multiply it by input currents and voltages
         // of every pin you get the correct currents and voltages
         double m[n][n+n];
         };
    

    您也可以添加引脚连接列表而不是part_ix,pin_ix来节省一些处理时间。

    1. 电路

      part parts[];
      

      互连内部的简单动态组件列表

    2. <强>环

      您必须从电流方程的互连中提取闭合回路,并获得连接电流方程的电流回路的节点。这会引导你进入方程组。节点有更多的2连接和闭合电流环只是连接序列导致自身。看这里:

      这是我的答案之一,其中部分代码找到闭环

    3. <强>评价

      可以使用高斯消除。有问题的是非线性元件,如二极管,晶体管......因此,您可能需要添加更多矩阵(接近更大程度的多项式),然后您需要乘以(0,1,2,3,...)驱动的所有电流和电压。我认为^ 3对于大多数组件来说已经足够了,不要忘记一些非线性组件也需要记住它们的状态(或最后的电流,电压......)。

      有时候使用符号表达式代替矩阵方法更好,但为此你需要表达式评估引擎。我在CAD / CAM网格中自行调整几何尺寸时使用了这种方法。