One of the most useful and handy methods used in electrical engineering to analyze incipient faults in a power transformer is Duval triangle. This methods provides a concise graphical way to map the concentrations of three key gases to one of several fault types.
The method is defined in IEC 60599 standard and uses the concentrations of methane (CH4), ethylene (C2H4) and acetylene (C2H2) to calculate the relative concentrations:
These values provide the coordinates for a point inside a triangle called Duval's triangle. Each side of the triangle serves as an axis with 0 to 100 range. 7 polygonal regions are defined inside the triangle. Transformer's fault is defined by determining which of these regions the point set by relative concentrations falls into. The picture below shows a complete view of the Duval triangle.
Apparently all three relative concentrations add up to 1:
This means each point inside the triangle can be defined by any two of these concentrations, making the triangle a coordinate system with a 60 degree angle between axes. The relative concentrations itself are the coordinates of this system.
We'll see in this article how to transform such coordinates to regular cartesian coordinates so it will be easy to plot the triangle with its regions in a graphical interface.
First, we'll define the two axes we'll work with the way shown on the picture below. This also means we'll use the relative concentrations of methane (CH4) and ethylene (C2H4) as the coordinates. This also the horizontal axis of this coordinate system runs in the opposite direction of the scale on horizontal side of Duval's triangle and uses C2H4 but not C2H2 values.
Then we'll define the coordinates we want to map the triangular coordinates into. For this purpose we'll use regular cartesian coordinates. We'll also apply the scaling so the side of the triangle of the length 100 will be mapped to the side of the new triangle of the length 500. The picture below shows two coordinate system we want to calculate transition between.
Calculating the relations between both coordinates is an easy task if we see which components a single point coordinates comprised of:
In this case, given the (x', y') triangular coordinates, the (x, y) cartesian coordinates are defined as:
These formulas map the 0 to 100 range from the triangle to the same range of cartesian coordinates. After we apply the scaling by the factor k, the formulas will look like:
Those familiar with affine transformations can see the analogy with affine transformation matrix. With this analogy we can write a single formula to transition triangular coordinates into cartesian:
Here:
u is a row vector with the triangular C2H2 (x') and CH4 (y') coordinates of the points:
v is a row vector with the corresponding cartesian coordinates:
A is a transformation matrix.
For the transition of coordinates discussed here (axes tilted by the angle 60, stretched by k and offset by Δx and Δy) the A matrix looks this:
This formula can be applied both to a single row vector with the coordinates of a single point and to a matrix containing concatenated row vectors.
Now let's see how this works.
Say, we want to draw Duval's triangle by means of Python matplotlib library. To do this we need to convert the coordinates of all of Duval triangle regions into cartesian. These points, totaling the number of 18, are shown on the image below.
Duval triangle definition provides triangular coordinates of all of these points.
For example, the point p7 refers to the relative concentrations:
This mean the triangular coordinates for this point will be (64, 23).
We'll also set the offset values Δx and Δy both to 50. With the k factor being 5 the transformation matrix for this case looks like this:
The table below shows both relative concentrations, rectangular coordinates and cartesian coordinates calculated with the formula above for each point.
Each region inside the triangle is defined by various combinations of these points.
So, filling these regions with different colors will show each of Duval's triangle region. With some additional coding applied to create axes captions, the results is shown on the picture below.
To plot a certain point inside the triangle we need to apply a matrix multiplication of a row vector with relative concentrations to the transposed transformation matrix. Say, if we want to plot a point for the relative concentrations:
These values give us the row vector containing triangular coordinates:
And next to calculate the corresponding cartesian coordinates:
Which gives us the row vector with coordinates:
The picture below shows the final result.
Further reading:
GitHub repository with Python code for this article https://github.com/leonidpospeev/Plotting-the-Duval-triangle
Affine transformations, University of Texas at Austin https://www.cs.utexas.edu/users/fussell/courses/cs384g-fall2011/lectures/lecture07-Affine.pdf
Introduction to Duval's diagnostic triangles http://engineering.richmondcc.edu/Courses/EUS%20210/Notes/7-Duval-triangles.pdf