Contingency Analysis Results: Violation CTG Notes Added in Version 20
Violation CTG Notes are special notations about contingency violations that commonly occur in your system. If you know ahead of time that a particular contingency often causes violations on a particular set of branches, then you may want to provide some text notes about these. A ViolationCTGNote has the fields which are described below. A ViolationCTGNote will be considered to apply to a particular ViolationCTG or LimitViol object if all of the logic described below the list of fields evaluates to true.
On the Contingency Violations Display, there are then fields which can show the Notes on the case information display as well as a right-click option to open up any ViolationCTGNotes that may apply to a particular Violation.
Also, associated with the development of the Violation CTG Notes was work to make viewing contingency analysis results from an EMS system easier. In order to facilitate this, special fields were added to a Bus, Branch, Interface, BusPair, LimitViol and ViolationCTG object which identify these objects in a syntax used with one EMS system. These fields are available under the Topology Folder of the list of fields for particular objects. The field names are EMSViolID for most object, but for the ViolationCTG object the field name is LV_EMSViolID.
Contingency
(KEY FIELD) Name of the contingency to which the note applies. Can be specified as blank meaning this note applies under all contingencies for objects below.
ObjectType
(KEY FIELD) The type of object to which this note applies. Can be specified as blank meaning this note applies to all violations for Contingency above. Note: The ObjectType must be specified as a valid ObjectType recognized by Simulator.
Object
(KEY FIELD) object identifying string indicating the object to which the note applies (example SUBSTATION$ND$891 to designate a particular ND to monitor) If this field is left blank, then this note applies to all objects of the type ObjectType. The type of the Object also does not have to match the ObjectType.
Category
(KEY FIELD) String used to be a filter on the Category of the limit violation. The check will be if the Violation's Category contains the string defined by the field. Thus if you wanted a ViolationCTGNote to apply to either a "Branch MVA" or a "Branch Amp" then you would just set Category to "Branch". Similarly you could just enter Category to "Bus" if you wanted to this note to apply to any of the various types of bus violations. The list of Category possible can be found in the Contingency Violations Display help.
FilterSubstation
(KEY FIELD) This could be blank in which case we would ignore the value. Otherwise it is the Name of the substation at which the violation occurs.
- For bus violations this would mean the bus must belong to the substation.
- For branch violations this means the violated end must match the substation.
- For bus pair violations this means that either the from bus or the to bus of the Bus Pair belongs to the substation.
- For interface violations this would be ignored
FilterNomkVMin
(KEY FIELD) This could be blank in which case we would ignore the value.
If this value is specified and the FilterNomkVMax value is not specified, then the bus associated with the violation must be equal to this value
If this value is specified AND FilterNomkVMax is also specified, then the bus associated with the violation must be between FilterNomkVMin and FilterNomkVMax.
This would apply to bus object directly. For branches it applies to the violated end. For Bus Pair violations then if either bus meets the criteria it passes. For interface violations this is ignored.
To avoid worrying about floating point comparisons such as does 137.9999 = 138.0000, comparison are done with a 0.1% tolerance. Thus any nominal voltage that is within 0.1% of either FilterNomkVMin or FilterNomkVMax values will always be treated as though they are equal. Thus a value of nominal voltage of 100.09 would be treated as equal to 100.00 because it's within 0.1%..
FilterNomkVMax
(KEY FIELD) This could be blank in which case we would ignore the value.
If this value is specified and FilterNomkVMin is not specified, then the bus associated with the violation must be equal to this value. If FilterNomkVMin is specified then see discussion above.
The note regarding floating point comparisons in the FilterNomkVMin text above also applies to FilterNomkVMax.
Filter
(KEY FIELD) Name of a filter that is applied to the objects of type ObjectType (this is not applied to the ViolationCTG or LimitViol objects). The user may also enter a simple string defining a single field comparison such as “NomkV = 500” so that a named filter need not be created.
Note
This is the string containing the note being maintained. The ViolationCTGNote can also be displayed in a dialog. When shown in a dialog the note can be very long and have multiple lines of text. The field shown in the case information display however will always contain only 1 line of text. To signify a new line of text the special characters /n/r should be added to the text. Thus the following string
Xena Warrior/n/rHarley
would appear in the dialog as
Xena Warrier
Harley
NoteNew
This is a string that would be a potential “new note” that would be applied. Same rules about new lines being represented by /n/r in the string as done for the Note field also apply to this field.
Modified
This is a YES/NO field that can be changed by the user. It will also be changed to YES every time that the Note field changes. This is meant to help a user keep track of which ViolationCTGNotes that have been changed.
ContingencyValid
Will show YES if the Contingency Name specified matches a presently defined contingency in the case (or if the Contingency is blank). Otherwise it will show NO.
FilterSubstationValid
Will show YES if the FilterSubstation Name specified matches a presently define contingency in the case (or if the FilterSubstation is blank). Otherwise will show NO.
Logic Used to determine if a ViolationCTGNote Applies to a particular ViolationCTG
// Check that Contingencies match ( (ViolationCTGNote.Contingency is not specified) // applies to all OR (ViolationCTGNote.Contingency = ViolationCTG.Contingency) ) AND |
|
// Check that objects match ( (ViolationCTGNote.ObjectType is not specified) // applies to all OR (ViolationCTGNote.Object = ViolationCTG.Object) // direct match OR ( // check for a match of the type (ViolationCTGNote.ObjectType = type of ViolationCTG.Object) AND ( (ViolationCTGNote.Object is not specified) OR (ViolationCTGNote.Object contains the ViolationCTG.Object) ) ) ) AND |
|
Make sure the category matches AND (ViolationCTG.Category contains the string ViolationCTGNote.Category) |
|
// Make sure that the violated object meets the filter specified ( (ViolationCTGNote.Filter is not specified) OR (ViolationCTG.Object meets the filter ViolationCTGNote.Filter) ) AND |
|
// Logic for checks against FilterSubstation ( (ViolationCTGNote.FilterSubstation is not specified) OR (Substation location of violation is at a substation with the name FilterSubstation) // For a branch the violated end will matter ) AND |
|
// If only one value of FilterNomkVMin and FilterNomkVMax // is specified then do an equality check. // If both are specified do a between check. ( ( (FilterNomkVMin is not specified) AND (FilterNomkVMax is not specified) ) OR ( (FilterNomkVMin is specified) AND (FilterNomkVMax is not specified) AND (Bus at which violation occurs has a NomkV = FilterNomkVMin) ) OR ( (FilterNomkVMin is not specified) AND (FilterNomkVMax is specified) AND (Bus at which violation occurs has a NomkV= FilterNomkVMax) ) OR ( (FilterNomkVMin is specified) AND (FilterNomkVMax is specified) AND (Bus at which violation occurs has a NomkV >= FilterNomkVMin) AND (Bus at which violation occurs has a NomkV <= FilterNomkVMax) ) ) |