OpenPMU Version 2.0 - Code name: Faraday
The OpenPMU V2.0 is a radical departure from the design of earlier OpenPMU devices. The main difference is that the main elements of the PMU device have been modularised, and data exchange occurs between them using an open and easy to understand format.
The three key modules are shown in the diagram above. These are Data Acquisition (or Measurement), Phase Estimation, and the Telecommunications stage.
The Data Acquisition Module is responsible for acquiring the raw sample data representing the voltage or current waveforms under test. In hardware, this consists of an analog-to-digital converter, strictly disciplined to an external time source. In software, this can be a simulated sampling process in a numerical environment such as Matlab, PSSE/Python or Labview.
The Phase Estimation Module is responsible for operating the phase estimation algorithm employed. This can be the users choice. At present, a reference module is available in Python using a least-squares method which obtains excellent results under IEEE C37.118.1 compliance requirements. The phase estimation stage is agnostic to how the sample data is derived and is essentially 'hot-swappable'.
The Telecommunications Module is tasked with providing the external communication functions of the device. At the time of writing, a reference implementation of IEEE C37.118.2 data comms is under test, but the OpenPMU project prefers a more open communication module with security built into its design. More details on this will be published during 2015.
Other modules can be inserted into the OpenPMU system as required, such as advanced transient detection and fault recording algorithms, and local storage of synchrophasors.
Inter-module communication is achieved using a method based on XML. For example, sending from the data acquisition stage to the phase estimation stage, raw sample data is first encoded in Base64, then encapsulated in XML along with relevant waveform metadata, and transmitted via UDP. Multicast UDP can be employed for add-in modules. This yields an communication solution that can be rapidly implemented in many environments. Reference implementations are provided for Labview and Python.