I just started a project in the Smart Grids area. It involves the recognition and quick extinction of earth faults in a medium voltage system. The system works automatically and pretty much gets rid of earth faults very quickly.
My task is to make and algorithm to also know where the earth fault happened along the network. For that, the system is programmed to send a rectangular pulse train in the line, which modulates the neutral current (which is close to zero much of the time). Once the current is modulated with the pulse train, the work I have to do is to recognize the pulse train by analyzing the neutral current. Once the pulse train is recognized at a given substation I know where the fault happened.
The pulse train that is sent is always the same and has known amplitude, frequency and number of pulses (6 amperes, t_on=t_off=1s and 5 pulses, for example) and cannot be changed for this project. Right now the system has an algorithm running to locate the fault by doing an FFT on each pulse it encounters and measures the harmonics energy in order to see if it is in fact a rectangular pulse or not (since the FFT of a rectangular pulse has a know spectrum). Once the five pulses are positively recognized one after the other, the Earth Fault Detected flag is raised.
The problem is that outside pulses can also come on the line randomly, from say a wash machine being turned on and off or a blender, for example. This leads to false earth faults being detected.
My initial solution and recommendation is to use the cross-correlation and auto-correlation function on the whole pulse train in order to check periodicity of the signal. Once that's done I can know if the signal does in fact have this particular pulse train or not. I did a small Matlab simulation to see the ACF of my pulse train and of a random set of pulses to further cement my hypothesis:
Does this though process make sense? Does anyone have any other recommendations to accomplish this?