Can I create a report for a specific relay type listing only few settings of interest?

Category:
Scripts
Answer

Yes, this task can be done by using our Python Scripting feature.

For example, create a report of the I>, I>> and I>>> functions of a P139 relay.

Do the following three operations:

  1. Define the "Default" layout.
  2. Activate the PDF/HTML/Excel layout option.
  3. Write a Python script to fill the report with data.
  • Defining the "Default" layout: Definition of the information that will be represented in the report. For example:
 <Table tableXpath="./P139" rowXpath="./Row">
<Item label="Index" valueXpath="./Index" width="4%" />
<Item label="Substation" valueXpath="./Substation" width="8%" />
<Item label="DeviceName" valueXpath="./DeviceName" width="8%" />
<Item label="Type" valueXpath="./Type" width="8%" />
<Item label="CTpri [A]" valueXpath="./CTpri" width="9%" />
<Item label="CTsec [A]" valueXpath="./CTsec" width="9%" />
<Item label="I> [Inom]" valueXpath="./Ig" width="9%" />
<Item label="t> [sec]" valueXpath="./Tg" width="9%" />
<Item label="I>> [Inom]" valueXpath="./Igg" width="9%" />
<Item label="t>> [sec]" valueXpath="./Tgg" width="9%" />
<Item label="I>>> [Inom]" valueXpath="./Iggg" width="9%" />
<Item label="t>>> [sec]" valueXpath="./Tggg" width="9%" />
</Table>
  • Activation of the PDF/HTML/Excel layout.
  • Write a Python script to assign values from StationWare to reserved <Items> defined in the default layout.
    • If we have a list of all devices in StationWare, we will loop through the list to find the device type of interest.
    • Start addressing values that will be written in the rowXpath="./Row" from the default layout by using WriteStartElement() method.
    • Get a list of all available settings in a device and look for the one that is in the phase Applied.
    • If you have accessed the Applied setting, look for the settings groups and settings of interest.
    • By using Output.WriteElementString(valueXpath,Value) you can assign the value of interest to this one specific <Item> in the active rowXpath="./Row" of the report.
for eachDevice in allDevices:
if eachDevice.DeviceType.Name=="P139_602_EN":
 Output.WriteStartElement("Row") # <Row>
index=index+1
Output.WriteElementString("Index",str(index))
Output.WriteElementString("Substation",eachSubSubstation.Name)
listOfSettings=Service.DeviceGetAllSettings(eachDevice.Info.Id)
for eachSettings in listOfSettings:
if eachSettings.PhaseName=="Applied":
SettingGroupInfosList=Service.SettingsGetSettingsGroupList(eachSettings.Id)
for eachSettingsGroupInfo in SettingGroupInfosList:
if eachSettingsGroupInfo.Name=="Parameters->Function parameters":
settingsGroupParameters=Service.SettingsGroupGetParameters(eachSettingsGroupInfo.Id)
for eachsettingsGroupParameter in settingsGroupParameters:
if eachsettingsGroupParameter.Name=="x010_u002E_001":
Output.WriteElementString("CTpri",eachsettingsGroupParameter.Value)
if eachsettingsGroupParameter.Name=="x010_u002E_003":
Output.WriteElementString("CTsec",eachsettingsGroupParameter.Value)
.....

if eachsettingsGroupParameter.Name=="x017_u002E_002":
Output.WriteElementString("Iggg",eachsettingsGroupParameter.Value)
if eachsettingsGroupParameter.Name=="x017_u002E_007":
Output.WriteElementString("Tggg",eachsettingsGroupParameter.Value)
Output.WriteEndElement()# </Row>
Back