如何实施基尔霍夫规则

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

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

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

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

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

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

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

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

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

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

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

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

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

这些都是瞬态ODE,对吧? 你打算如何解决这些问题? 数值积分?

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

  1. 首先是一些数据来表示组件
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网格中自我调整几何体的大小使用了这种方法。