Exemplo n.º 1
0
        private Device CreateDevice(XElement deviceDefinition, FaultAlgorithmsSet defaultFaultAlgorithms)
        {
            XElement deviceAttributes;
            XElement deviceLines;
            Device   device;

            // Get the attributes and lines XML elements
            deviceAttributes = deviceDefinition.Element("attributes") ?? new XElement("attributes");
            deviceLines      = deviceDefinition.Element("lines") ?? new XElement("lines");

            // Create new device and set the attributes
            device = new Device()
            {
                ID          = (string)deviceDefinition.Attribute("id"),
                Make        = (string)deviceAttributes.Element("make"),
                Model       = (string)deviceAttributes.Element("model"),
                StationID   = (string)deviceAttributes.Element("stationID"),
                StationName = (string)deviceAttributes.Element("stationName")
            };

            // Add lines based on the line definitions
            foreach (XElement lineDefinition in deviceLines.Elements("line"))
            {
                device.Lines.Add(CreateLine(lineDefinition, defaultFaultAlgorithms));
            }

            // Return the device
            return(device);
        }
Exemplo n.º 2
0
        private FaultAlgorithmsSet GetFaultAlgorithms(XElement parentElement)
        {
            FaultAlgorithmsSet faultAlgorithms = new FaultAlgorithmsSet();

            LoadFaultTriggerAlgorithm(parentElement, out faultAlgorithms.FaultTriggerAlgorithm, out faultAlgorithms.FaultTriggerParameters);
            LoadFaultTypeAlgorithm(parentElement, out faultAlgorithms.FaultTypeAlgorithm, out faultAlgorithms.FaultTypeParameters);
            LoadFaultLocationAlgorithms(parentElement, out faultAlgorithms.FaultLocationAlgorithms, out faultAlgorithms.FaultLocationParameters);

            return(faultAlgorithms);
        }
Exemplo n.º 3
0
        private Line CreateLine(XElement lineDefinition, FaultAlgorithmsSet defaultFaultAlgorithms)
        {
            Line               line;
            XElement           impedancesElement;
            FaultAlgorithmsSet faultAlgorithms;

            double rating50F;
            double length;

            double r1;
            double x1;
            double r0;
            double x0;

            // Create new line
            line = new Line()
            {
                ID              = (string)lineDefinition.Attribute("id"),
                Name            = (string)lineDefinition.Element("name"),
                Voltage         = (string)lineDefinition.Element("voltage"),
                EndStationID    = (string)lineDefinition.Element("endStationID"),
                EndStationName  = (string)lineDefinition.Element("endStationName"),
                ChannelsElement = lineDefinition.Element("channels") ?? new XElement("channels")
            };

            // Get the XML element that contains impedances
            impedancesElement = lineDefinition.Element("impedances") ?? new XElement("impedances");

            // Get fault algorithms for this line
            faultAlgorithms = GetFaultAlgorithms(lineDefinition);

            if ((object)faultAlgorithms.FaultTriggerAlgorithm == null)
            {
                faultAlgorithms.FaultTriggerAlgorithm  = defaultFaultAlgorithms.FaultTriggerAlgorithm;
                faultAlgorithms.FaultTriggerParameters = defaultFaultAlgorithms.FaultTriggerParameters;
            }

            if ((object)faultAlgorithms.FaultTypeAlgorithm == null)
            {
                faultAlgorithms.FaultTypeAlgorithm  = defaultFaultAlgorithms.FaultTypeAlgorithm;
                faultAlgorithms.FaultTypeParameters = defaultFaultAlgorithms.FaultTypeParameters;
            }

            if ((object)faultAlgorithms.FaultLocationAlgorithms == null || faultAlgorithms.FaultLocationAlgorithms.Length == 0)
            {
                faultAlgorithms.FaultLocationAlgorithms = defaultFaultAlgorithms.FaultLocationAlgorithms;
                faultAlgorithms.FaultLocationParameters = defaultFaultAlgorithms.FaultLocationParameters;
            }

            line.FaultAlgorithmsSet = faultAlgorithms;

            // Set parameters that require parsing
            if (double.TryParse((string)lineDefinition.Element("rating50F"), out rating50F))
            {
                line.Rating50F = rating50F;
            }

            if (double.TryParse((string)lineDefinition.Element("length"), out length))
            {
                line.Length = length;
            }

            if (double.TryParse((string)impedancesElement.Element("R1"), out r1))
            {
                line.R1 = r1;
            }

            if (double.TryParse((string)impedancesElement.Element("X1"), out x1))
            {
                line.X1 = x1;
            }

            if (double.TryParse((string)impedancesElement.Element("R0"), out r0))
            {
                line.R0 = r0;
            }

            if (double.TryParse((string)impedancesElement.Element("X0"), out x0))
            {
                line.X0 = x0;
            }

            // Return the line
            return(line);
        }