I need to simulate a power conversion system (using SIMetrix/SIMPLIS) in which solar energy is captured by a solar panel, which is then connected to an inverter for supplying current to the grid. Since I need to simulate this, I am struggling in finding a way to model the whole panel: it is clear to me that a single solar cell can be modeled through this circuit (keeping it as simple as possible)


simulate this circuit – Schematic created using CircuitLab

for which hold

\begin{eqnarray} I_{out} = I_{PV} - I_D &=& I_{PV} - I_0\left(e^{\frac{V}{V_{th}}}-1\right)\\ I_{out}|_{V=0} = I_{SC} &=& I_{PV}\\ I_{out} = 0 &=& I_{PV} - I_0\left(e^{\frac{V_{OC}}{V_{th}}}-1\right) \end{eqnarray} where \$V_{th}\$ is the thermal voltage and the last two equations correspond to the short circuit and open circuit case, respectively, which for my case (the photovoltaic module is a BP MSX 110) are \$I_{SC}=3.6\:A\$ and \$V_{OC}=41.6\:V\$. If I try to model the whole panel using the aforementioned parameters I obviously am not able to compute \$I_0\$, since \$e^{41.6/0.026}\$ is a huge number; of course, if I just consider the fact that the module is made up of 72 cells connected in series I can model the single cell just fine (\$V_{OC} = 0.58\:V\$).

Then, my question is: is there a way (even different to the one I wrote about) to model one solar panel as a whole or have I got to actually connect 72 equivalent solar cells in series?

  • 1
    \$\begingroup\$ There are lots of ways, depending on how precise you need to be. Here's one place you might go and look: intusoft.com/nlhtm/nl78.htm#The_Solar_Cell_SPICE_Model -- found it in about one second from google. You know how to create your own .subckt/.end model, yes? I'm not writing an answer, so just using a comment to point you somewhere, for now. \$\endgroup\$
    – jonk
    Sep 11, 2016 at 18:11
  • \$\begingroup\$ It wasn't the simplest thing, since I had never done something like that, but in the end it worked out, yielding a sufficient good result. Many thanks. \$\endgroup\$
    – DavideM
    Sep 12, 2016 at 8:50
  • \$\begingroup\$ That's good to hear. It looked like a reasoned approach. I saved the page for later, myself. I'm glad to hear it seemed to yield reasonable results. Since I didn't provide that answer and don't intend on replicating it here, I think the question will remain open here until and unless someone else wants to document that here on this site. Not for me to try. \$\endgroup\$
    – jonk
    Sep 12, 2016 at 9:00

1 Answer 1


Having succeeding in my attempt, thanks to user jonk for pointing out this link, I'm showing the results as a reference.

With the aforementioned panel characteristics, stripping the panel down to its single cells (a series of 72 of them to form a single module) yields a saturation current \$I_0 = 8.0411\cdot10^{-10}\:A\$ and an open circuit voltage \$V_{OC,cell} = V_{OC}/72=0.5788\:V\$.

Following the method exposed in the link, I computed the emission coefficient \$N=\frac{38.6V_{OC}}{\ln(I_{SC}/I_0)}\$, which is then used to scale the SPICE diode model according to the following equations:

\begin{eqnarray} XTI &=& 3N\\ IS &=& I_0\\ EG &=& 1.11N \end{eqnarray} where \$XTI\$ is the exponent temperature coefficient, \$IS\$ is the saturation current and \$EG\$ is the energy gap.

The above is accomplished by writing a .subckt/.ends model in a plain text file (*.txt) as follows:

.subckt panel_diode Anode Kathode
D1 A K D1

.model D1 D(LEVEL=1 IS=8.0411e-10 N=72.2592 EG=80.2077 XTI=216.7776)

As simple as that, what remains to do is to import the newly created model into the simulation tool and use it to implement the panel model as described in the question. As can be seen by a simulation of the behaviour of the model thus created, its V-I (green curve) and V-P (red curve) characteristics are what one would expect from a solar panel. Quantitatively, the maximum power point lies at \$V_{MPP}=35.6\:V\$, \$I_{MPP}=3.5\:A\$ and corresponds to \$122\:W\$, against the nominal \$33.6\:V\$, \$3.3\:A\$ and \$110\:W\$, respectively. Anyhow, this seems a rather good result, since the model doesn't account for any non idealities. enter image description here

  • 1
    \$\begingroup\$ There is a typo on one of the formulas. It is supposed to be N=38.6*Voc* not Vsc. Other than that, +2 for following up your question. \$\endgroup\$ Jun 20, 2017 at 15:43
  • \$\begingroup\$ Very nice work, I am trying myself something similar, but for a 60 cell panel with 10 series and 6 parallel cells (I think. Because it isn't specified in the datasheet). I was able to calculate Isc=1.67A and Voc=0.67, but I am having trouble in understanding why did you use the value 38.6 * Voc in calculating N and in understanding how to calculate I0. If you could provide some more explanation I would be very grateful. \$\endgroup\$
    – Senpai
    Apr 30, 2021 at 9:51
  • \$\begingroup\$ @Senpai Answers should not be used for comments - but new members cannot post comments :-( SO I have converted your 'answer' to a comment. DavideM is a currently active member so can answer if he chooses. But note that he says he got the formula from here \$\endgroup\$
    – Russell McMahon
    Apr 30, 2021 at 10:55
  • 1
    \$\begingroup\$ @FluffytheTogekiss The thermal voltage is indeed \$V_{th}=kT/q\$, where \$T\$ may be the actual temperature the solar panel is working at or, more commonly (at least according to my experience), some "standard" value like 25 °C or 300 K. \$\endgroup\$
    – DavideM
    Jun 1, 2021 at 6:31
  • 1
    \$\begingroup\$ Ah, gotcha. Thanks! \$\endgroup\$ Jun 2, 2021 at 15:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.