InterPSS Community

Latest News

InterPSS Cloud Edition released

IEEE ODM Release V0.4 is now available to download

InterPSS Dev Release 1.5.00 is currently available to download
Home‎ > ‎

Extension Guide


There are two ways to extend InterPSS:
  • Development - InterPSS has a plugin architecture, where one can write some Java code and plugin to InterPSS to augment or change InterPSS's behavior. You can find more about this approach at the InterPSS Development Guide. Using this appraoch, you need to go through a full software development cycle, including analysis, design, implementation and testing, to develop a robust plugin, which may sometimes be too overwhelming for a power engineer.
  • Scripting - InterPSS Graphic Editor allows one to write few lines of code, in Java, JavaScript or InterPSS Controller Modeling Language(CML), to define, for example, a custom excitation system model, for a specific simulation case. This approach is much simpler as compared with the formal development approach. It is our goal to make the scripting approach as simple and intuitive as possible. Also, we will provide a way for you to package the scripting code and plugin into InterPSS as a formal plugin, after you are satisfied with your scripts and want to distribute your solution to a wide audience.


InterPSS Scripting will play a very important role in extending InterPSS functionality. With the scripting capability, the GEditor becomes a MatLab-like development environment. InterPSS at runtime consists of a set of objects, such as AclfNetwork object for loadflow study, or DStabilityNetwork object for transient stability simulation. An AclfNetwork object, in turn, contains a set of connected AclfBus objects and AclfBranch objects. Fundamentally, InterPSS allows you to define scripts at individual object level to augment and/or alter its behavior, which gives the user a very powerful way to extend InterPSS with ulimited possibilities.

The MatLab approach is very popular in the power system academic and research world. However, MatLab based solutions can only stay at university or research lab, since, in our opinion, a MatLab-based solution is not robust and efficient enough for solving large scale power system simulation problems. InterPSS allows you to turn your scripting solution to a formal Java plugin and deployed into InterPSS. Therefore, there is no compromise in performance and scalability.

InterPSS Controller Modeling Language (CML) -InterPSS Controller Modeling Language (CML) is designed to simplify controller modeling for transient stability simulation. One can write CML scripts to define a custom controller, including excitation system, governor system and power system stabilizer. You can find more info about CML at the following link:

Dynamic Bus Device - In transient stability simulation, you may want to define a dynamic source or load at a bus, where source/load injection current into the network is a function of the bus voltage and time I = f(V, t), where, f(V, t) could consist of a set of differential and/or algebraic equations. Dynamic Bus Device gives you a generic way to script such as a function. It could be used to model dynamic load including motors, SVC, FACTS or complex generation station dynamics.

Dynamic Branch Device (Future) - In transient stability simulation, you may want to adjust a branch Y or branch injection currents into the network based on certain conditions, for example, branch opening or branch reclosure. Dynamic Branch Device will give you a generic way to script such a device. It could be used to implement protective devices. This feature will be available in the near future.

Bus/Branch Object Scripting - InterPSS, though its GUI, provides standard models for modeling Bus and Branch for purpose of Loadflow analysis, such as Swing, PV and PQ bus, and Short Circuit analysis, such as contributing and non-contributing bus. However, we realized that there might be situations that these models are not detailed enough to solve a particular problem. If this happens, you can either contact the InterPSS development team to add a new model, which may take time, or you can extend InterPSS yourself by adding your own models, using the Bus/Branch object scripting approach.

Custom Analysis Run Scripting - Some times you may want to control how to run your project. InterPSS allows you to define a set of scripts to fully control the run process. For example, you may want to increase step-by-step the power exchange at a particular interchange interface to find out system voltage stability limit.

Package Scripting Solution as InterPSS Plugin - After completing your scripting and finishing testing, you may want to add a user friendly GUI to hide your implementation details to make it easy to use. You may also want to distribute your solution to other users or contribute your solution back to the InterPSS user community. This section will guide your to package your scripting solution as an InterPSS plugin and to make it ready to be re-distributed to other users.