Frequency tracking, C37.118.1a compliant, P and M class PMU (Phasor Measurement Unit) algorithm examples for MATLAB Simulink

This archive contains compiled MATLAB® Simulink "S functions" for P and M class PMUs ( Phasor Measurement Units ) using adaptive filters. They can be inserted into Simulink models/simulations and executed, using the “"mexw64" files provided. The algorithms are designed to be compliant with the C37.118.1a-2014 amendment to C37.118.1-2011. Nominal frequencies of 50 and 60 Hz are supported, together will all valid reporting rates listed in C37.118.1a. Test results obtained using a simulated C37.118.1a test environment are also presented. I have been working on a new version with improved frequency and ROCOF measurements during balanced and unbalanced faults & transient, and it should also have a slightly faster execution time. I hope to have this available late 2015. There is documentation included with the archive, in particular 2 IEEE journal papers are referred to, that refer to C37.118.1 (2011). However, the exact filter design process used to attain C37.118.1a(2014) compliance in this software goes beyond any as-yet publically available documentation. There is a new paper which describes the derivation of the masks used for C37.118.1a filter design at Also you may want to refer to the presentation at and

Contributor Email
Research / Testing
Local Application
64-bit Windows
PMU software
License Comments
Executable dll libraries (mexw64) for Simulink, with useful but not fully-exposed functionality. Low-level source code is not provided.
First Use Date
Documentation Available