diff --git a/.codespellrc b/.codespellrc index f3daecb6..bbb50c47 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,5 +1,3 @@ [codespell] ignore-words-list = ot -skip = **/sunspec/models/smdx/smdx_*.xml, - **/sunspec/models/smdx/CHANGELOG, - **/templates/mydesigner/** \ No newline at end of file +skip = **/templates/mydesigner/** \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index f308c260..dbec806b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,14 +22,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **SCEPTRE App**: Type annotations on every app function, `Final` on module constants. - **SCEPTRE App**: Validation failures raise `error.AppError` instead of calling `sys.exit(1)`, matching the app contract. - **SCEPTRE App**: `metadata.simulator` matches case-insensitively in both stages, as validation already did; a miscased name used to silently get the default config. -- **Build System**: `package-data` now ships the SunSpec models, the `mydesigner` SCADA tree and the infrastructure table; an installed wheel was missing all three. +- **Build System**: `package-data` ships the `mydesigner` SCADA tree and infrastructure table. ### Removed - **SCEPTRE App**: The `reg_config` manual register-map path. It was dead code: the app never populated it, so every device always took the automatic numbering branch. Output is unchanged. +- **SCEPTRE App**: SunSpec has been burned away by the SCORCHing heat of 3000 Suns and thus no longer exists in this repo. ### Fixed - **SCEPTRE App**: With more than one PowerWorld provider, only the last one's `hil_tags` reached the object list, and only the last one's `objects.txt` was written. Tags now aggregate across providers and every PowerWorld provider gets the combined `objects.txt`. -- **SCEPTRE App**: Every `sunspec` inverter raised `KeyError`: the SunSpec register mappings are keyed `PowerDistribution` but received `power-distribution`. The whole protocol was unusable. - **SCEPTRE App**: `fep` hosts raised `TypeError`, built without the required `device_subtype`. - **SCEPTRE App**: Per-device register overrides raised `RuntimeError` in `SceptreMetadataParser`, which popped keys while iterating a live dict view. - **SCEPTRE App**: A `power-transmission` inverter raised `TypeError`, passing `infrastructure` twice into `Device()`. diff --git a/src/python/AGENTS.md b/src/python/AGENTS.md index d6c39e31..9f858e26 100644 --- a/src/python/AGENTS.md +++ b/src/python/AGENTS.md @@ -81,12 +81,10 @@ scheduling fields, and write only the resulting JSON to stdout. Extend ## Bundled Runtime Data -The SCEPTRE app ships configuration tables, SunSpec XML models, and the -MyDesigner template tree; Ignition ships a Jython 2.7 template tree; SCORCH -ships scripts and binary payloads. Treat all of it as runtime package data. +The SCEPTRE app ships configuration tables and the MyDesigner template tree; +Ignition ships a Jython 2.7 template tree; SCORCH ships scripts and binary +payloads. Treat all of it as runtime package data. -- Leave `phenix_apps/apps/sceptre/protocols/sunspec/` exactly as-is. It is - excluded from Ruff and codespell for that reason. - `phenix_apps/apps/ignition/templates/` is Jython 2.7 and is excluded from Ruff and vulture. Do not modernize it to Python 3 syntax. - Do not reformat, regenerate, or replace bundled third-party or binary assets diff --git a/src/python/phenix_apps/apps/sceptre/README.md b/src/python/phenix_apps/apps/sceptre/README.md index 53960588..8892a35f 100644 --- a/src/python/phenix_apps/apps/sceptre/README.md +++ b/src/python/phenix_apps/apps/sceptre/README.md @@ -3,7 +3,7 @@ The **SCEPTRE app** builds industrial control system (ICS/SCADA) experiments. A simulation *provider* (PowerWorld, PyPower, Simulink, RTDS, ...) models a physical process; *field devices* expose that process over real industrial -protocols (DNP3, Modbus, BACnet, IEC 60870-5-104, SunSpec); and an *OPC server*, +protocols (DNP3, Modbus, BACnet, IEC 60870-5-104); and an *OPC server*, *SCADA server*, *HMIs*, *engineer workstations* and a *historian* sit on top of them the way they would in a real plant. @@ -367,5 +367,4 @@ Pre-existing, and pinned by a test rather than silently carried. | **The ELK restart script points at one provider** | `sceptre_provider_restart.py` is rendered with the last provider's address, so the others cannot be restarted from ELK. Visible in the golden fixture, which has four providers. | | **Inconsistent mgmt-vlan filtering** | The OPC/SCADA/historian code compares `vlan != "mgmt"` case-sensitively; the field device code lowercases first. `MGMT` is therefore excluded in one and not the other. Both now go through `hosts.non_mgmt(case_sensitive=...)`, so the split is visible at each call site and pinned by `test_hosts.py`. | | **`Register.addresses` is global state** | Class-level mutable state reset per `FieldDeviceConfig`, so register numbering is order-dependent. Tests reset it via an autouse fixture. | -| **SunSpec register maps are unreachable** | `SunSpecDevice.Register.mappings` is keyed `PowerDistribution`/`PowerTransmission`, but a device carries the lowercase infrastructure name, so any inverter on the `sunspec` protocol raises `KeyError`. Pinned in `infrastructures_golden.txt`. | | **`reg_config` is never populated** | Nothing in the app builds a manual register map, so the `reg_config` branch in `Register.__init__` is unreachable. Only `protocols/*` remains in the ruff per-file-ignores; everything else in the app is fully linted. | diff --git a/src/python/phenix_apps/apps/sceptre/configs/infrastructures.yaml b/src/python/phenix_apps/apps/sceptre/configs/infrastructures.yaml index e60de992..180f1284 100644 --- a/src/python/phenix_apps/apps/sceptre/configs/infrastructures.yaml +++ b/src/python/phenix_apps/apps/sceptre/configs/infrastructures.yaml @@ -6,8 +6,9 @@ # range the register range for the whole infrastructure, which OpcConfig # reads. A device type repeats it only when it differs. # devices device type -> the fields it exposes per field type. An -# inverter's analog-read-write list holds SunSpec model numbers -# rather than field names. +# inverter's analog-read-write list still holds the SunSpec model +# numbers it was built from when SunSpec was supported; on other +# protocols they become registers named after the numbers. # # Adding a device type here is enough for validation to accept it and for # create_device to build it; tests/test_infrastructures.py pins every diff --git a/src/python/phenix_apps/apps/sceptre/configs/registers.py b/src/python/phenix_apps/apps/sceptre/configs/registers.py index fb475c4e..52c3b467 100644 --- a/src/python/phenix_apps/apps/sceptre/configs/registers.py +++ b/src/python/phenix_apps/apps/sceptre/configs/registers.py @@ -7,8 +7,6 @@ from typing import ClassVar -import phenix_apps.apps.sceptre.protocols.sunspec as sunspec - class Device: def __init__( @@ -36,15 +34,6 @@ def __init__( def __generate_register_list(self) -> None: for field_type, fields in self.fields.items(): - if self.protocol == "sunspec": - # Only an inverter has a SunSpec map, and its models live in the - # analog-read-write list. - if self.device_type == "inverter" and field_type == "analog-read-write": - sunspec.SunSpecDevice( - self.infrastructure, self.device_name, self.registers - ).generate_registers(fields) - continue - self.registers += [ Register( self.device_name, diff --git a/src/python/phenix_apps/apps/sceptre/field_devices.py b/src/python/phenix_apps/apps/sceptre/field_devices.py index b53a40e4..a07b63a6 100644 --- a/src/python/phenix_apps/apps/sceptre/field_devices.py +++ b/src/python/phenix_apps/apps/sceptre/field_devices.py @@ -27,7 +27,6 @@ "bacnet": "47808-local", "goose": "61850", "iec60870-5-104": "2404-local", - "sunspec": "502-local", } # Reported as 0 when unused: dashboards expect the key to exist. @@ -139,34 +138,16 @@ def fd_servers(self) -> None: config_file = fd_directory / "config.xml" - sceptre_type = "field-device" - if "sunspec" in parsed.devices_by_protocol: - sceptre_type = "sunspec" - - if sceptre_type == "sunspec": - self.render( - "sunspec.mako", - config_file, - name=fd_config.name, - cycle_time=fd_cycle_time, - infra=fd_config.infrastructure_name, - device=fd_config.protocols[0].devices[0], - ipaddr=fd_config.ipaddr, - publish_endpoint=fd_config.publish_endpoint, - server_endpoint=fd_config.server_endpoint, - devname=fd_config.protocols[0].devices[0].registers[0].devname, - ) - else: - self.render( - "fd_server.mako", - config_file, - fd_config=fd_config, - logic=fd_logic, - cycle_time=fd_cycle_time, - ) + self.render( + "fd_server.mako", + config_file, + fd_config=fd_config, + logic=fd_logic, + cycle_time=fd_cycle_time, + ) self.app.render_sceptre_start( - fd_, name=sceptre_type, needrestart=needrestart + fd_, name="field-device", needrestart=needrestart ) # What the ELK dashboards read: which ports this device listens on. diff --git a/src/python/phenix_apps/apps/sceptre/metadata.py b/src/python/phenix_apps/apps/sceptre/metadata.py index e1d53712..f4ac80d6 100644 --- a/src/python/phenix_apps/apps/sceptre/metadata.py +++ b/src/python/phenix_apps/apps/sceptre/metadata.py @@ -88,7 +88,6 @@ class SceptreMetadataParser: "dnp3", "dnp3-serial", "modbus", - "sunspec", "iec60870-5-104", ] diff --git a/src/python/phenix_apps/apps/sceptre/protocols/__init__.py b/src/python/phenix_apps/apps/sceptre/protocols/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/__init__.py b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/__init__.py deleted file mode 100644 index 40d47864..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/__init__.py +++ /dev/null @@ -1,276 +0,0 @@ -import random -import string -import xml.etree.ElementTree as ET - -import phenix_apps.common.utils as utils - - -class SunSpecDevice: - """Represents an RTU register config for the given SunSpec device. - - Breaking the SunSpec RTU device into its own class because of - its complexity compared to other RTU devices (Modbus, DNP3, IEC-60870, - etc). This somewhat matches the decision w/in the bennu code base - to create a separate RTU for the SunSpec protocol. - - Parameters: - ----------- - provider : string - Name of infrastructure provider to be used as the data backer for this - device. SCEPTRE RTUs can now have multiple providers per RTU, so each - register configured must specify which provider is backing it. - - devname : string - Unique name of this SunSpec device w/in a SCEPTRE model, pulled from - the JSON metadata. - - registers : array - Array of registers to append each SunSpec register to for this - specific SunSpec device. This array is created in configs.py - prior to being passed here. - """ - - def __init__( - self, infra: str | None, devname: str, registers: list["SunSpecDevice.Register"] - ) -> None: - self.infra = infra - self.devname = devname - self.registers = registers - - if self.infra is None: - self.infra = "PowerDistribution" - else: - # Callers pass the lowercase infrastructure name ("power-distribution"), - # but Register.mappings is keyed CamelCase ("PowerDistribution"). - self.infra = "".join(part.capitalize() for part in self.infra.split("-")) - - # Start the SunSpec register address at 40002 because - # the sunspec_template automatically injects the well-known - # SunSpec device map identifier 'SunS' at register 40000. We - # initialize the address here because multiple SunSpec device - # configurations can be generated in a single phēnix run, and - # each configuration should start out at 40002. - SunSpecDevice.Register.address = 40002 - - def generate_registers(self, models: list[int]) -> None: - """Generates RTU register configs for the given models. - - Parameters: - ----------- - models : array - Integer array of SunSpec models to create registers for. - """ - base_path = utils.abs_path(__file__, "../../") - - for model_id in models: - xml_file = f"smdx_{int(model_id):05d}.xml" - model = ET.ElementTree( - file=f"{base_path}/protocols/sunspec/models/smdx/{xml_file}" - ).getroot() - model = model.find("model") - - register = SunSpecDevice.Register( - self.infra, self.devname, model.get("name"), "uint16", model.get("id") - ) - self.registers.append(register) - - register = SunSpecDevice.Register( - self.infra, self.devname, "length", "uint16", model.get("len") - ) - self.registers.append(register) - - blocks = model.findall("block") - for block in blocks: # model 126 has multiple block elements defined - for point in block: - name = point.get("id") - fieldtype = point.get("type") - field = None - scaling = point.get( - "sf" - ) # Will return `None` if point doesn't have a scaling factor - - # The SCEPTRE Bennu RTU expects string elements to indicate - # the base-8 length of the string (ie. `string8`, `string16`). - if fieldtype == "string": - fieldtype = f"string{point.get('len')}" - - if model_id == 1: # common block -- set some static values - if name == "Mn": - field = "Sandia SCEPTRE" - elif name == "Md": - field = "SunSpec RTU" - elif name == "SN": # generate random string for serial number - field = "".join( - random.choice(string.ascii_uppercase + string.digits) - for _ in range(32) - ) - - register = SunSpecDevice.Register( - self.infra, self.devname, name, fieldtype, field, scaling - ) - self.registers.append(register) - - class Register: - sizes = { - "uint16": 1, - "uint32": 2, - "acc32": 2, - "acc64": 4, - "bitfield16": 1, - "bitfield32": 2, - "enum16": 1, - "int16": 1, - "int32": 2, - "string8": 8, - "string16": 16, - "sunssf": 1, - "float32": 2, - "pad": 1, - } - - disabled = { - "uint16": 65535, - "uint32": 4294967295, - "acc32": 0, - "acc64": 0, - "bitfield16": 65535, - "bitfield32": 4294967295, - "enum16": 65535, - "int16": 32767, - "int32": 2147483648, - "string8": 0, - "string16": 0, - "sunssf": 0, - "float32": 2147483648, - "pad": 0, - } - - mappings = { # array index 0 indicates static value - "PowerDistribution": { - "A": [False, "current_mag_total"], - "AphA": [False, "current_mag_p1"], - "AphB": [False, "current_mag_p2"], - "AphC": [False, "current_mag_p3"], - "PhVphA": [False, "voltage_mag_p1"], - "PhVphB": [False, "voltage_mag_p2"], - "PhVphC": [False, "voltage_mag_p3"], - "W": [False, "real_power_total"], - "Hz": [True, "600"], - "WH": [True, "0"], - "Conn": [False, "active"], - "WMaxLimPct": [True, "100"], - "WMaxLim_Ena": [True, "0"], - "OutPFSet": [True, "100"], - "OutPFSet_Ena": [True, "0"], - "VarPct_Ena": [True, "0"], - "ActCrv": [True, "1"], - "ModEna": [False, "volt_var_enable"], - "NCrv": [True, "1"], - "NPt": [True, "6"], - "ActPt": [True, "6"], - "DeptRef": [False, "volt_var_reference"], - "V1": [False, "curve_volt_pt_1"], - "VAr1": [False, "curve_var_pt_1"], - "V2": [False, "curve_volt_pt_2"], - "VAr2": [False, "curve_var_pt_2"], - "V3": [False, "curve_volt_pt_3"], - "VAr3": [False, "curve_var_pt_3"], - "V4": [False, "curve_volt_pt_4"], - "VAr4": [False, "curve_var_pt_4"], - "V5": [False, "curve_volt_pt_5"], - "VAr5": [False, "curve_var_pt_5"], - "V6": [False, "curve_volt_pt_6"], - "VAr6": [False, "curve_var_pt_6"], - "ReadOnly": [True, "0"], - }, - "PowerTransmission": { # setting all these values using logic - "A": [True, "0"], - "AphA": [True, "0"], - "AphB": [True, "0"], - "AphC": [True, "0"], - "PhVphA": [True, "0"], - "PhVphB": [True, "0"], - "PhVphC": [True, "0"], - "W": [True, "0"], - "Hz": [True, "0"], - "Conn": [True, "0"], - "WMaxLimPct": [True, "0"], - "WMaxLim_Ena": [True, "0"], - "WRtg": [True, "0"], - "VArMaxPct": [True, "0"], - "VArRtg": [True, "0"], - "VAr": [True, "0"], - "ReadOnly": [True, "0"], - }, - } - - scalings = { - "A_SF": "-2", - "V_SF": "-2", - "VAr_SF": "-2", - "W_SF": "-2", - "Hz_SF": "-1", - "WH_SF": "0", - "Tmp_SF": "-1", - "WMaxLimPct_SF": "-2", - "OutPFSet_SF": "-2", - "DeptRef_SF": "-1", - "WRtg_SF": "0", - "VArPct_SF": "-2", - } - - # Start the SunSpec register address at 40002 because the - # sunspec_template automatically injects the well-known SunSpec device - # map identifier 'SunS' at register 40000. - address = 40002 - - def __init__( - self, - infra: str, - devname: str, - name: str, - fieldtype: str, - field: str | None = None, - scaling: str | None = None, - ) -> None: - self.devname = devname - self.name = name - self.fieldtype = fieldtype - self.field = field - self.scaling = None - - mapping = type(self).mappings[infra] - - if scaling is not None and self.name in mapping: - # this is for the case where the register being - # configured has a scaling factor associated with it. - self.scaling = type(self).scalings[scaling] - - self.regtype = "register" - self.addr = type(self).address - self.static = False - - if field is not None: - self.static = True - else: - if self.name in mapping: - self.static = mapping[self.name][0] - self.field = mapping[self.name][1] - elif self.name in type(self).scalings: - # this is for the case where the register being - # configured is the register for an actual scaling factor. - self.static = True - self.field = type(self).scalings[self.name] - else: # set field to disabled value - self.static = True - self.field = type(self).disabled[fieldtype] - - # HACK: The SunSpec Models specify a 'pad' register - # type, but the SCEPTRE sunspec-rtu doesn't, so just - # configure it as an 'int16'. It will only ever be a static - # value set to it's default disabled value of '0', so it's - # OK to just have it in this section of the if-statement. - if fieldtype == "pad": - self.fieldtype = "int16" - - type(self).address += type(self).sizes[self.fieldtype] diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/CHANGELOG b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/CHANGELOG deleted file mode 100644 index dbf4affc..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/CHANGELOG +++ /dev/null @@ -1,71 +0,0 @@ -2012 October 2 : Torben Mueller, Weidmueller DE reported String Combiner event 10 "Combiner Cabinet Open" as missing from the SMDX/PICS. Added back in for points Evt and InEvt. Models affected: All String Combiner models 401,402,403,404. - -2012 October 2 : Bill Randle, AEI reported an incorrect entry for Inverter Control Scheduling. StrTms has a type of uint16 that should be uint32. Type and offests updated. Models affected: IC 133. - -2012 October 2 : Bill Randle, AEI reported an incorrect symbol name in the Inverter Control Basic Settings. A recent 61850 change for the PFSign symbols of EEI .vs. IEEE was not picked up in the SMDX. Models affected: IC 121. - -2012 October 3 : Bill Randle, AEI reported incorrect register names in the Inverter Control Basic Settings. Register 4 named VAMax_SF should be named WMax_SF. Register 14 name VAMax_SF should be VRef_SF Models affected: IC 121. - -2012 Octoboer 23 : Flo Yee, Solectria renewables reported incorrect type of TmpAmb. uint16 should be int16. Models affected: E 308. - -2012 October 26: Bill Randle, AEI reported incorrect type for PF in the Watt-PF function. PF should be a signed value (int16), not unsigned (unit16). Models affected: IC 131 - -2012 November 1: Bob Fox, Loggerware reported use of the degree symbol problematic to denote °C. It was agreed to use just "C" to denote degrees centrigrade in the units. Models affected: E 303, 308 - -2012 November 1: Bob Fox, Loggerware reported missing fixed scalefactors in environmental models. Models affected: E 303, 304, 308 - -2012 November 2: Bob Fox, Loggerware reported pad register not needed in E 302 model. Removed pad. Models affected E 302 - -2012 November 8: Bill Randle, AEI. Updates to incorporate changes from SEP2.0 and IEC 61850-90-7, other errata. Models affected IC 120-134 - -2012 Matthieue Laroche, Mersen. Contributed new vendor extension model for Mersen string monitor. Model affected V 64020. - -2012 December 4: Bob Fox, Loggerware reported typos in the meter models for the TotWhImp measurements. These should be A, B, C. Models affected M 201,202,203,204,211,212,213,214 - -2012 December 6: Phillip Windisch, Fronius. Change request was lost. Readded the DeptRef and DeptRef_SF to the Volt-Watt curve to give more flexibilty to the meaning of DeptRef. Models affected IC 126,132. - -2012 December 7: John Nunneley, SunSpec. Transcription error in SC 402 missing InN. Models affected SC 402. - -2013 February 5: Bob Fox, Loggerware. Change request was lost. Readded 2012 October 3 : Bill Randle, AEI reported incorrect register names in the Inverter Control Basic Settings. Register 4 named VAMax_SF should be named WMax_SF. Models affected IC 121. - -2013 February 6: Andrew Murray, Array Technology. Contributed DRAFT 2 of Tracker Model. Models affected T 601. - -2013 March, April: Bill Randle, AEI. Contributed many corrections and improvements to the IC models. Models affected all IC. - -2013 April 8: Bill Randle, AEI. Contribute DRAFT frequency ride through and voltage ride through models. Models affected IC 135-138 - -2013 April 25: John Blair, Power-One, Contributed Test 1 of MPPT Model. Models affected I 160. - -2013 April 29: Philipp Windisch, Fronius, Bill Randle AEI. Contributed fixes to IC models. Models affected all IC. - -2013 April 29: John Nunneley, SunSpec. Corrected offsets in models. Models affected C 1, NC 16, M 305 - -2013 April 29: John Nunneley, SunSpec. Contributed DRAFT secure read and write models. Models affected SEC 3-4. - ------------------------------------------- -Models moved to SunSpec models repository ------------------------------------------- - -2014 January 9: Bob Fox, Loggerware. Updates from the last SunSpec official release not previously checked in; correction of some model lengths; addition of model/repeating block name attributes; addition of test models 6300x. - -2015 April 7: Bob Fox, SunSpec. Updated model 11 to correct MAC address point; added new point type of eui48. Added storage models 801, 802, and 803. - -2015 June 3: Bob Fox, SunSpec. Updated model 63001. Added a constant scale factor to point uint32_4. Added label information. - -2015 June 3: Bob Fox, SunSpec. Updated model 63002 to include label information. - -2016 February 4: Bob Fox SunSpec. Corrected acc32 to float32 in models 211, 212, 213, 214. - -2016 February 4: Bob Fox SunSpec. Removed scale factor definition from DeptRef definition in model 126. - -2016 April 20: Bob Fox, SunSpec. Corrected model length to the convention of fixed block + one repeating block. - -2016 April 20: Bob Fox SunSpec. Corrected units for model 121 WGra to be per second rather per minute to be consistent with previous correction to IEC 61850-7-420. - -2016 July 14: Andrew Miller, Doosan GridTech. Updated models 801, 802, 803, 804, 805, 806, 807, 808, 809 reflecting changes for the draft 4 revision of the SunSpec storage models. - -2016 Oct 16: Andrew Miller, Doosan GridTech. Updated model 803 correcting miscellaneous issues found in first publication of Draft 4 - -2016 Oct 16: Bob Fox SunSpec. Added proposed models 139-145 in test status. - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/Makefile b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/Makefile deleted file mode 100644 index 598779fb..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# Copyright (c) 2011-2012, John D. Blair -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# * Neither the name of John D. Blair nor his lackeys may be used -# to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -# JOHN D. BLAIR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. - -SUNS=../../src/suns - -SMDXFILES=$(shell (ls smdx*.xml)) - -SCHEMA=smdx.xsd - -all: check - -check: $(SMDXFILES) - @# dump stdout to /dev/null to avoid cluttering the output - @# stuff we care about (errors and pass messages) are written to stderr - @echo Using xmllint to validate all files... - @xmllint --schema $(SCHEMA) $^ > /dev/null - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.py b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.py deleted file mode 100644 index 035bf2a5..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.py +++ /dev/null @@ -1,172 +0,0 @@ - -import os -import hashlib -import xml.etree.ElementTree as ET - -MANIFEST_ROOT = 'manifest' -MANIFEST_FILE = 'file' -MANIFEST_NAME = 'name' -MANIFEST_MD5 = 'md5' - -MANIFEST_FILE_NAME = 'manifest.xml' -MANIFEST_MD5_EXT = '.md5' - -manifest_files = ['CHANGELOG', 'smdx.xsd'] - -""" Simple XML pretty print support function - -""" -def xml_indent(elem, level=0): - i = "\n" + level*" " - if len(elem): - if not elem.text or not elem.text.strip(): - elem.text = i + " " - if not elem.tail or not elem.tail.strip(): - elem.tail = i - for elem in elem: - xml_indent(elem, level+1) - if not elem.tail or not elem.tail.strip(): - elem.tail = i - else: - if level and (not elem.tail or not elem.tail.strip()): - elem.tail = i - -class ManifestError(Exception): - pass - -class File(object): - def __init__(self, name=None, md5=None): - self.name = name - self.md5 = md5 - -class Manifest(object): - def __init__(self, path='.', filename=None): - self.path = path - self.files = {} - self.filename = filename - - if filename: - self.from_xml(filename=filename) - - def create(self): - self.scan() - filename = os.path.join(self.path, MANIFEST_FILE_NAME) - self.to_xml_file(filename=filename) - md5 = hashlib.md5(open(filename, 'rb').read()).hexdigest() - f = open(filename + MANIFEST_MD5_EXT, 'w') - f.write(md5) - f.close() - - def md5(self): - return hashlib.md5(self.to_xml_str()).hexdigest() - - def diff(self, m): - diff_str = '' - for f, md5 in self.files.iteritems(): - m_md5 = m.files.get(f) - if md5 != m_md5: - diff_str += '%s: %s %s\n' % (f, md5, m_md5) - - if len(self.files) != len(m.files): - for f, md5 in m.files.iteritems(): - if self.files.get(f) is None: - diff_str += '%s: "None" %s\n' % (f, md5) - return diff_str - - def scan(self): - try: - files = os.listdir(self.path) - for f in files: - name, ext = os.path.splitext(f) - if f in manifest_files or (ext == '.xml' and f.startswith('smdx_')): - filename = os.path.join(self.path, f) - content = open(filename, 'rb').read() - # if content.find('\r\n') >= 0: - # print 'windows file ', self.path - content = content.replace('\r\n', '\n') - md5 = hashlib.md5(content).hexdigest() - self.files[f] = md5 - except Exception as e: - raise ManifestError('Error scanning directory %s: %s' % (self.path, str(e))) - - def scan_strip(self): - try: - files = os.listdir(self.path) - for f in files: - name, ext = os.path.splitext(f) - if f in manifest_files or (ext == '.xml' and f.startswith('smdx_')): - filename = os.path.join(self.path, f) - content = open(filename, 'rb').read() - if content.find('\r\n') >= 0: - content = content.replace('\r\n', '\n') - fc = open(filename, 'w') - fc.write(content) - fc.close() - md5 = hashlib.md5(content).hexdigest() - self.files[f] = md5 - except Exception as e: - raise ManifestError('Error scanning directory %s: %s' % (self.path, str(e))) - - def to_xml(self, parent=None, filename=None): - if parent is not None: - e = ET.SubElement(parent, MANIFEST_ROOT) - else: - e = ET.Element(MANIFEST_ROOT) - - for f in sorted(self.files.keys()): - attr = {MANIFEST_NAME: f, MANIFEST_MD5: self.files.get(f)} - ET.SubElement(e, MANIFEST_FILE, attrib=attr) - - return e - - def to_xml_str(self, pretty_print=True): - e = self.to_xml() - - if pretty_print: - xml_indent(e) - - return ET.tostring(e) - - def to_xml_file(self, filename=None, pretty_print=True, replace_existing=True): - xml = self.to_xml_str(pretty_print) - - if filename is not None: - if replace_existing is False and os.path.exists(filename): - raise ManifestError('File %s already exists' % (filename)) - f = open(filename, 'w') - f.write(xml) - f.close() - else: - print(xml) - - def from_xml(self, element=None, filename=None): - if element is None and filename is not None: - element = ET.ElementTree(file=filename).getroot() - - if element is None: - raise ManifestError('No xml document element') - - if element.tag != MANIFEST_ROOT: - raise ManifestError('Unexpected test suite root element %s' % (element.tag)) - - for e in element.findall('*'): - if e.tag == MANIFEST_FILE: - name = e.attrib.get(MANIFEST_NAME) - md5 = e.attrib.get(MANIFEST_MD5) - if name and md5: - self.files[name] = md5 - -if __name__ == "__main__": - - - path = os.path.dirname(os.path.realpath(__file__)) - a = Manifest(path) - a.scan() - a.create() - - # b = Manifest(filename=os.path.join(path, 'manifest.xml')) - - # print a.diff(b) - # print '----------------------------------------------------' - # print a.to_xml_str() - # print a.md5() diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.xml deleted file mode 100644 index 280f79aa..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.xml.md5 b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.xml.md5 deleted file mode 100644 index 10d7c6f6..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/manifest.xml.md5 +++ /dev/null @@ -1 +0,0 @@ -295a427b29caf2216800713aa4061bbe \ No newline at end of file diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx.xsd b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx.xsd deleted file mode 100644 index 0ea4c274..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx.xsd +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00001.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00001.xml deleted file mode 100644 index 783f4680..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00001.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - All SunSpec compliant devices must include this as the first model - - - - - Well known value registered with SunSpec for compliance - - - - - Manufacturer specific value (32 chars) - - - - - Manufacturer specific value (16 chars) - - - - - Manufacturer specific value (16 chars) - - - - - Manufacturer specific value (32 chars) - - - - - Modbus device address - - - - - Force even alignment - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00002.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00002.xml deleted file mode 100644 index 304d4273..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00002.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - 1 - 2 - 3 - 4 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - - - - 0 - 1 - 2 - 3 - 4 - - - - - - - - - Aggregates a collection of models for a given model id - - - - - Aggregated model id - - - - - Number of aggregated models - - - - - Update Number. Incrementing nunber each time the mappping is changed. If the number is not changed from thelast reading the direct access to a specific offset will result in reading the same logical model as before. Otherwise the entire model must be read to refresh the changes - - - - - Enumerated status code - - - - - Vendor specific status code - - - - - Bitmask event code - - - - - Vendor specific event code - - - - - Control register for all aggregated devices - - - - - Vendor control register for all aggregated devices - - - - - Numerical value used as a parameter to the control - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00003.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00003.xml deleted file mode 100644 index 0d2cf49c..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00003.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - - - - - - - - - - - Request a digial signature over a specifed set of data registers - Used in conjunction witgh Secure Dataset Read Response Model - - - - Offset of value to read - - - - - Timestamp value is the number of seconds since January 1, 2000 - - - - - Millisecond counter 0-999 - - - - - Algorithm used to compute the digital signature - For future proof - - - No digital signature - For test purposes only - - - - 64 bit AES signature algorithm is used - - - - - 256 bit ECC signature algorithm is used - - - - - - Number of registers comprising the digital signature. - The value of N must be at least 4 (64 bits) - - - - Number of registers being requested - A max of 50 registers are allowed - - - - Copy of value from register Off1. - Unused values shall return 0xFFFF (unimplemented) - - - - Sequence number of request - Shall be advanced for each request - - - - Digital Signature ID - User's role id 0-5 - - - - Digital Signature - The DS covers all registers from X to N and is N registers in length - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00004.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00004.xml deleted file mode 100644 index 05dffe20..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00004.xml +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - 0 - 1 - 2 - 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - 0 - 1 - 2 - - - - - - - - - - - Compute a digial signature over a specifed set of data registers - - - - - Bitmask alarm code - - - - No Alarms - - - - - Security Alarm - Tampered - - - - - Timestamp value is the number of seconds since January 1, 2000 - - - - - Millisecond counter 0-999 - - - - - Algorithm used to compute the digital signature - For future proof - - - No digital signature - For test purposes only - - - - 64 bit AES signature algorithm is used - - - - - 256 bit ECC signature algorithm is used - - - - - - Status of last read operation - - - - Operation succeeded - - - - - Operation failed digital signature check - - - - - Operation failed access control check - One or more registers were not writable by this role - - - - Operation failed offset check - Offset out of range or missing from multi-register value - - - - - Number of registers comprising the digital signature. - The value of N must be at least 4 (64 bits) - - - - Number of values from the request - A max of 50 values are allocated - - - - Copy of value from register Off1. - Unused values shall return 0xFFFF (unimplemented) - - - - Digital Signature - The DS covers all registers from X to N and is N registers in length - - - - Sequence number from the request - - - - - Sequence number of response - Shall be advanced for each reponse - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00005.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00005.xml deleted file mode 100644 index f890e27d..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00005.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - - - - - - - - - - - Include a digial signature along with the control data - - - - - Algorithm used to compute the digital signature - For future proof - - - No digital signature - For test purposes only - - - - 64 bit AES signature algorithm is used - - - - - 256 bit ECC signature algorithm is used - - - - - - Timestamp value is the number of seconds since January 1, 2000 - - - - - Millisecond counter 0-999 - - - - - Sequence number of request - Shall be advanced for each request - - - - Signing key used 0-5 - Each controller is assigned a key index that maps to their access control role - - - - Number of registers comprising the digital signature. - The value of N must be at least 4 (64 bits) - - - - Number of (offset, value) pairs being written - A max of 50 (offset, value) pairs are allocated - - - - Offset of control register to write value to - - - - - Value to write to control register at offset - - - - - Digital Signature - The DS covers all registers from X to N and is N registers in length - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00006.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00006.xml deleted file mode 100644 index 979dfec3..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00006.xml +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - - - - - - - - - - - Include a digial signature along with the control data - - - - - Algorithm used to compute the digital signature - For future proof - - - No digital signature - For test purposes only - - - - 64 bit AES signature algorithm is used - - - - - 256 bit ECC signature algorithm is used - - - - - - Timestamp value is the number of seconds since January 1, 2000 - - - - - Millisecond counter 0-999 - - - - - Sequence number of request - Shall be advanced for each request - - - - Starting offset for write operation - X values to follow - - - - Signing key used 0-5 - Each controller is assigned a key index that maps to their access control role - - - - Number of registers comprising the digital signature. - The value of N must be at least 4 (64 bits) - - - - Number of (offset, value) pairs being written - A max of 50 (offset, value) pairs are allocated - - - - Offset of control register to write value to - - - - - Value to write to control register at offset - - - - - Digital Signature - The DS covers all registers from X to N and is N registers in length - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00007.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00007.xml deleted file mode 100644 index 867697cc..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00007.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - 0 - 1 - 2 - 3 - 4 - - - - - - 0 - 1 - - - - 0 - 1 - 2 - - - - - - - - - - - Include a digital signature over the response - Used in conjunction with a Secure Write Request - - - - Algorithm used to compute the digital signature - For future proof - - - No digital signature - For test purposes only - - - - 64 bit AES signature algorithm is used - - - - - 256 bit ECC signature algorithm is used - - - - - - Status of last write operation - - - - Operation succeeded - - - - - Operation failed digital signature check - The signature was not valid - - - - Operation failed access control check - One or more registers were not writable by this role - - - - Operation failed offset check - Offset out of range or missing from multi-register value - - - - Operation failed valid value check - Value is out of acceptable range - - - - - Number of (offset, value) pairs being written - A max of 50 (offset, value) pairs are allocated - - - - Digital Signature - The DS covers all registers from X to N and is N registers in length - - - - Sequence number from the request - - - - - Sequence number of response - Shall be advanced for each reponse - - - - Timestamp value is the number of seconds since January 1, 2000 - - - - - Millisecond counter 0-999 - - - - - Bitmask alarm code - - - - No Alarms - - - - - Security Alarm - Tampered - - - - - Number of registers comprising the digital signature. - The value of N must be at least 4 (64 bits) - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00008.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00008.xml deleted file mode 100644 index 2ea5ae42..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00008.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - 0 - 1 - 2 - - - - - - - - - - - Security model for PKI - - - - X.509 format of the certificate. DER or PEM. - - - - - - - Number of registers to follow for the certificate - - - - X.509 Certificate of the device - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00009.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00009.xml deleted file mode 100644 index 35b3e482..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00009.xml +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - 0 - 1 - 2 - - - 0 - 1 - 2 - 3 - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - - - - - - - - - - - Security model for PKI - - - - X.509 format of the certificate. DER or PEM. - - - - - - - Number of registers to follow for the certificate - - - - User ID for the request signature - - - - User ID for this certificate - - - - Role for this certificate - - - - Format of this certificate - - - - Type of this certificate - - - - First word of this fragment - - - - Last word of this fragment - - - - Total Length of the Certificate - In registers, zero padded. - - - - Fragmenet sequence number - Starts with 1 - - - - Length of this fragment - Maximum fragment length is 80 registers - - - - Timestamp value is the number of seconds since January 1, 2000 - - - - - Millisecond counter 0-999 - - - - - Sequence number of request - Shall be advanced for each request - - - - Signing key used 0-5 - Each controller is assigned a key index that maps to their access control role - - - - Algorithm used to compute the digital signature - For future proof - - - No digital signature - For test purposes only - - - - 64 bit AES signature algorithm is used - - - - - 256 bit ECC signature algorithm is used - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00010.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00010.xml deleted file mode 100644 index 497e140a..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00010.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - 0 - 1 - 2 - - - - 0 - 1 - 2 - 3 - 4 - - - - - - - - To be included first for a complete interface description - - - - - Overall interface status - - - - Interface is down - - - - - Interface is up - - - - - Interface is in a fault state - - - - - - Overall interface control (TBD) - - - - - Enumerated value. Type of physical media - - - - Unkown media - - - - - Internal e.g. embbedded switch - - - - - Twisted Pair - - - - - Fiber - - - - - WIFI - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00011.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00011.xml deleted file mode 100644 index 41622a99..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00011.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - - - 0 - 1 - 2 - 3 - - - - - 0 - 1 - - - - - - - - Include to support a wired ethernet port - - - - - Interface speed in Mb/s - - - - - Bitmask values Interface flags. - - - - link is up - - - - - link is in full duplex mode - - - - - Auto-negotiation bits are encoded as: 000 - inprogress. 001 - speed detection has failed. 010 - negotiation has failed. 011 - negotiated speed and duplex. 100 - negotiation not attempted. - - - - - See AUTO_NEG1 - - - - - See AUTO_NEG1 - - - - - Setting requires reset - - - - - Hardware fault - - - - - - Enumerated value. State information for this interface - - - - Unknown state - - - - - Link is enabled and read - - - - - Link is disabled - - - - - Link is in test - - - - - - IEEE MAC address of this interface - - - - - Interface name (8 chars) - - - - - Control flags - - - - Enable auto-negotiatition - - - - - Force full duplex - - - - - - Forced interface speed in Mb/s when AUTO is disabled - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00012.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00012.xml deleted file mode 100644 index 2f46f58d..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00012.xml +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - 0 - 1 - 2 - - - 0 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - - - 0 - 1 - 2 - 3 - - - 0 - 1 - - - - - - - - - - - - - - - - - Include to support an IPv4 protocol stack on this interface - - - - - Interface name - - - - - Enumerated value. Configuration status - - - - the stack is not configured - - - - - a valid configuration from BOOTP, DHCP, or NV mem - - - - - a valid configuration from hardware settings - - - - - - Bitmask value. A configuration change is pending - - - - a configuration change is pending - - - - - - Bitmask value. Identify capable sources of configuration - - - - DHCP Client capable - - - - - BOOTP client capable - - - - - Zeroconf capable - - - - - DNS Client capable - - - - - Settable configuration capable - - - - - Hardware configuration capable - - - - - NTP Client capable - - - - - configuration change requires reset - - - - - - Enumerated value. Configuration method used. - - - - Use static IP - - - - - Use DHCP - - - - - Use BOOTP - - - - - Use Zeroconf - - - - - - Configure use of services - - - - Enable DNS - - - - - Enable NTP - - - - - - IPv4 numeric address as a dotted string xxx.xxx.xxx.xxx - - - - - IPv4 numeric netmask as a dotted string xxx.xxx.xxx.xxx - - - - - IPv4 numeric gateway address as a dotted string xxx.xxx.xxx.xxx - - - - - IPv4 numeric DNS address as a dotted string xxx.xxx.xxx.xxx - - - - - IPv4 numeric DNS address as a dotted string xxx.xxx.xxx.xxx - - - - - IPv4 numeric NTP address as a dotted string xxx.xxx.xxx.xxx - - - - - IPv4 numeric NTP address as a dotted string xxx.xxx.xxx.xxx - - - - - Domain name (24 chars max) - - - - - Host name (24 chars max) - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00013.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00013.xml deleted file mode 100644 index 3ebfc90c..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00013.xml +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - 0 - 1 - 2 - - - 0 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - - - 0 - 1 - 2 - 3 - - - 0 - 1 - - - - - - - - - - - - - - - - - Include to support an IPv6 protocol stack on this interface - - - - - Interface name - - - - - Enumerated value. Configuration status - - - - the stack is not configured - - - - - a valid configuration from BOOTP, DHCP, or NV mem - - - - - a valid configuration from hardware settings - - - - - - Bitmask value. A configuration change is pending - - - - a configuration change is pending - - - - - - Bitmask value. Identify capable sources of configuration - - - - DHCP Client capable - - - - - BOOTP client capable - - - - - Zeroconf capable - - - - - DNS Client capable - - - - - Settable configuration capable - - - - - Hardware configuration capable - - - - - NTP Client capable - - - - - configuration change requires reset - - - - - - Enumerated value. Configuration method used. - - - - Use static IP - - - - - Use DHCP - - - - - Use BOOTP - - - - - Use Zeroconf - - - - - - Bitmask value. Configure use of services - - - - Enable DNS - - - - - Enable NTP - - - - - - IPv6 numeric address as a dotted string xxxx.xxxx.xxxx.xxxx - - - - - Classless Inter-Domain Routing Number - - - - - IPv6 numeric address as a dotted string xxxx.xxxx.xxxx.xxxx - - - - - IPv6 numeric DNS address as a dotted string xxxx.xxxx.xxxx.xxxx - - - - - IPv6 numeric DNS address as a dotted string xxxx.xxxx.xxxx.xxxx - - - - - IPv6 numeric NTP address as a name or dotted string xxxx.xxxx.xxxx.xxxx - - - - - IPv6 numeric NTP address as a name or dotted string xxxx.xxxx.xxxx.xxxx - - - - - Domain name (24 chars max) - - - - - Host name (24 chars max) - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00014.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00014.xml deleted file mode 100644 index e67d7240..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00014.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - 0 - 1 - 2 - - - - - - - - - - - - - Include this block to allow for a proxy server - - - - - Interface name (8 chars) - - - - - Bitmask value. Proxy configuration capabilites - - - - Turn off the proxy - - - - - Can proxy IPv4 - - - - - Can proxy IPv6 - - - - - - Enumerated value. Set proxy address type - - - - - Enumerate value. Proxy server type - - - - - IPv4 or IPv6 proxy hostname or dotteed address (40 chars) - - - - - Proxy port number - - - - - Proxy user name - - - - - Proxy password - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00015.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00015.xml deleted file mode 100644 index fa318990..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00015.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Interface counters - - - - - Write a "1" to clear all counters - - - - - Number of bytes received - - - - - Number of Unicast packets received - - - - - Number of non-Unicast packets received - - - - - Number of inbound packets received on the interface but discarded - - - - - Number of inbound packets that contain errors (excluding discards) - - - - - Number of inbound packets with unknown protocol - - - - - Total number of bytes transmitted on this interface - - - - - Number of Unicast packets transmitted - - - - - Number of Non-Unicast packets transmitted - - - - - Number of Discarded output packets - - - - - Number of outbound error packets - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00016.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00016.xml deleted file mode 100644 index d37a28fb..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00016.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - 0 - 1 - - - 0 - 1 - - - - - - - - - 0 - 1 - 2 - 3 - 3 - - - - - - - - Include this model for a simple IPv4 network stack - - - - - Interface name. (8 chars) - - - - - Enumerated value. Force IPv4 configuration method - - - - A static IP address is assigned - - - - - Use DHCP to acquire an IP address - - - - - - Bitmask value Configure use of services - - - - Enable DNS use - - - - - Enable NTP use - - - - - - IP addreess - - - - - Netmask - - - - - Gateway IP address - - - - - 32 bit IP address of DNS server - - - - - 32 bit IP address of DNS server - - - - - IEEE MAC address of this interface - - - - - Bitmask value. Link control flags - - - - Enable auto-negotiation - - - - - Force full duplex operation - - - - - Force 10 Mb/s link speed - - - - - Force 100 Mb/s link speed - - - - - Force 1 Gb/s link speed - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00017.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00017.xml deleted file mode 100644 index 05699bf1..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00017.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - 0 - 1 - 2 - - - 0 - 1 - - - 0 - 1 - 2 - - - 0 - 1 - 2 - - - 0 - 1 - 2 - - - - - - - Include this model for serial interface configuration support - - - - - Interface name (8 chars) - - - - - Interface baud rate in bits per second - - - - - Number of data bits per character - - - - - Bitmask value. Parity setting - - - - No Parity - - - - - Odd Parity - - - - - Even Parity - - - - - - Enumerated value. Duplex mode - - - - Full Duplex - - - - - Half Duplex - - - - - - Flow Control Method - - - - No flow control - - - - - Hardware flow control - - - - - Soft (XON/XOFF) flow control - - - - - - Enumerated value. Interface type - - - - Unknown interface type - - - - - RS232 interface type - - - - - RS485 interface type - - - - - - Enumerated value. Serial protocol selection - - - - Unknown protocol - - - - - Modbus protocol - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00018.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00018.xml deleted file mode 100644 index 402d3b1c..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00018.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - Include this model to support a cellular interface link - - - - - Interface name - - - - - International Mobile Equipment Identifier for the interface - - - - - Access Point Name for the interface - - - - - Phone number for the interface - - - - - Personal Identification Number for the interface - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00019.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00019.xml deleted file mode 100644 index 9d11ce08..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00019.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - 0 - 1 - 2 - - - 0 - 1 - - - 0 - 1 - 2 - - - 0 - 1 - 2 - - - - - - - - - - Include this model to configure a Point-to-Point Protocol link - - - - - Interface name - - - - - Interface baud rate in bits per second - - - - - Number of data bits per character - - - - - Bitmask value. Parity setting - - - - No Parity - - - - - Odd Parity - - - - - Even Parity - - - - - - Enumerated value. Duplex mode - - - - Full Duplex - - - - - Half Duplex - - - - - - Flow Control Method - - - - No flow control - - - - - Hardware flow control - - - - - Soft (XON/XOFF) flow control - - - - - - Enumerated value. Authentication method - - - - No Authentication - - - - - Use PAP authentication - - - - - Use CHAP authentication - - - - - - Username for authentication - - - - - Password for authentication - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00101.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00101.xml deleted file mode 100644 index 4d6d4882..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00101.xml +++ /dev/null @@ -1,359 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - - - - - - - - - - - - Include this model for single phase inverter monitoring - - - - - AC Current - - - - - Phase A Current - Connected Phase - - - - Phase B Current - - - - - Phase C Current - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - - - AC Power - - - - - Line Frequency - - - - - AC Apparent Power - - - - - AC Reactive Power - - - - - AC Power Factor - - - - - AC Energy - - - - - DC Current - - - - - DC Voltage - - - - - DC Power - - - - - Cabinet Temperature - - - - - Heat Sink Temperature - - - - - Transformer Temperature - - - - - Other Temperature - - - - - Enumerated value. Operating state - - - - Device is not operating - - - - - Device is sleeping / auto-shudown - - - - - Device is staring up - - - - - Device is auto tracking maximum power point - - - - - Device is operating at reduced power output - - - - - Device is shutting down - - - - - One or more faults exist - - - - - Device is in standby mode - - - - - - Vendor specific operating state code - - - - - Bitmask value. Event fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reserved for future use - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00102.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00102.xml deleted file mode 100644 index a91f0281..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00102.xml +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - - - - - - - - - - - - Include this model for split phase inverter monitoring - - - - - AC Current - Sum of active phases - - - - Phase A Current - Connected Phase - - - - Phase B Current - Connected Phase - - - - Phase C Current - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - - - AC Power - - - - - Line Frequency - - - - - AC Apparent Power - - - - - AC Reactive Power - - - - - AC Power Factor - - - - - AC Energy - - - - - DC Current - - - - - DC Voltage - - - - - DC Power - - - - - Cabinet Temperature - - - - - Heat Sink Temperature - - - - - Transformer Temperature - - - - - Other Temperature - - - - - Enumerated value. Operating state - - - - Device is not operating - - - - - Device is sleeping / auto-shudown - - - - - Device is staring up - - - - - Device is auto tracking maximum power point - - - - - Device is operating at reduced power output - - - - - Device is shutting down - - - - - One or more faults exist - - - - - Device is in standby mode - - - - - - Vendor specific operating state code - - - - - Bitmask value. Event fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reserved for future use - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00103.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00103.xml deleted file mode 100644 index 98cfe0cb..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00103.xml +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - - - - - - - - - - - - Include this model for three phase inverter monitoring - - - - - AC Current - Sum of active phases - - - - Phase A Current - Connected Phase - - - - Phase B Current - Connected Phase - - - - Phase C Current - Connected Phase - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - - - AC Power - - - - - Line Frequency - - - - - AC Apparent Power - - - - - AC Reactive Power - - - - - AC Power Factor - - - - - AC Energy - - - - - DC Current - - - - - DC Voltage - - - - - DC Power - - - - - Cabinet Temperature - - - - - Heat Sink Temperature - - - - - Transformer Temperature - - - - - Other Temperature - - - - - Enumerated value. Operating state - - - - Device is not operating - - - - - Device is sleeping / auto-shudown - - - - - Device is staring up - - - - - Device is auto tracking maximum power point - - - - - Device is operating at reduced power output - - - - - Device is shutting down - - - - - One or more faults exist - - - - - Device is in standby mode - - - - - - Vendor specific operating state code - - - - - Bitmask value. Event fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reserved for future use - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00111.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00111.xml deleted file mode 100644 index 7cdc6880..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00111.xml +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - - - - - - - - - - - - Include this model for single phase inverter monitoring using float values - - - - - AC Current - - - - - Phase A Current - Connected Phase - - - - Phase B Current - - - - - Phase C Current - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - - - AC Power - - - - - Line Frequency - - - - - AC Apparent Power - - - - - AC Reactive Power - - - - - AC Power Factor - - - - - AC Energy - - - - - DC Current - - - - - DC Voltage - - - - - DC Power - - - - - Cabinet Temperature - - - - - Heat Sink Temperature - - - - - Transformer Temperature - - - - - Other Temperature - - - - - Enumerated value. Operating state - - - - Device is not operating - - - - - Device is sleeping / auto-shudown - - - - - Device is staring up - - - - - Device is auto tracking maximum power point - - - - - Device is operating at reduced power output - - - - - Device is shutting down - - - - - One or more faults exist - - - - - Device is in standby mode - - - - - - Vendor specific operating state code - - - - - Bitmask value. Event fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reserved for future use - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00112.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00112.xml deleted file mode 100644 index 0d0293e8..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00112.xml +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - - - - - - - - - - - - Include this model for split phase inverter monitoring using float values - - - - - AC Current - - - - - Phase A Current - Connected Phase - - - - Phase B Current - Connected Phase - - - - Phase C Current - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - - - AC Power - - - - - Line Frequency - - - - - AC Apparent Power - - - - - AC Reactive Power - - - - - AC Power Factor - - - - - AC Energy - - - - - DC Current - - - - - DC Voltage - - - - - DC Power - - - - - Cabinet Temperature - - - - - Heat Sink Temperature - - - - - Transformer Temperature - - - - - Other Temperature - - - - - Enumerated value. Operating state - - - - Device is not operating - - - - - Device is sleeping / auto-shudown - - - - - Device is staring up - - - - - Device is auto tracking maximum power point - - - - - Device is operating at reduced power output - - - - - Device is shutting down - - - - - One or more faults exist - - - - - Device is in standby mode - - - - - - Vendor specific operating state code - - - - - Bitmask value. Event fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reserved for future use - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00113.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00113.xml deleted file mode 100644 index c0ffb5b2..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00113.xml +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - - - - - - - - - - - - Include this model for three phase inverter monitoring using float values - - - - - AC Current - Sum of active phases - - - - Phase A Current - Connected Phase - - - - Phase B Current - Connected Phase - - - - Phase C Current - Connected Phase - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - - - AC Power - - - - - Line Frequency - - - - - AC Apparent Power - - - - - AC Reactive Power - - - - - AC Power Factor - - - - - AC Energy - - - - - DC Current - - - - - DC Voltage - - - - - DC Power - - - - - Cabinet Temperature - - - - - Heat Sink Temperature - - - - - Transformer Temperature - - - - - Other Temperature - - - - - Enumerated value. Operating state - - - - Device is not operating - - - - - Device is sleeping / auto-shudown - - - - - Device is staring up - - - - - Device is auto tracking maximum power point - - - - - Device is operating at reduced power output - - - - - Device is shutting down - - - - - One or more faults exist - - - - - Device is in standby mode - - - - - - Vendor specific operating state code - - - - - Bitmask value. Event fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reserved for future use - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - - Vendor defined events - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00120.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00120.xml deleted file mode 100644 index c05fda11..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00120.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - 4 - 82 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Inverter Controls Nameplate Ratings - Ref 3: 8.14.3.2, Ref 4: 17 - - - - Type of DER device. Default value is 4 to indicate PV device. - - - - - Continuous power output capability of the inverter. - - - - - Scale factor - - - - - Continuous Volt-Ampere capability of the inverter. - - - - - Scale factor - - - - - Continuous VAR capability of the inverter in quadrant 1. - - - - - Continuous VAR capability of the inverter in quadrant 2. - - - - - Continuous VAR capability of the inverter in quadrant 3. - - - - - Continuous VAR capability of the inverter in quadrant 4. - - - - - Scale factor - - - - - Maximum RMS AC current level capability of the inverter. - Sum of all connected phases. Current rating under nominal voltage under nominal power factor. - - - - Scale factor - - - - - Minimum power factor capability of the inverter in quadrant 1. - EEI sign convention. - - - - Minimum power factor capability of the inverter in quadrant 2. - EEI sign convention. - - - - Minimum power factor capability of the inverter in quadrant 3. - EEI sign convention. - - - - Minimum power factor capability of the inverter in quadrant 4. - EEI sign convention. - - - - Scale factor - - - - - Nominal energy rating of storage device. - - - - - Scale factor - - - - - The useable capacity of the battery. Maximum charge minus minimum charge from a technology capability perspective (Amp-hour capacity rating). - - - - - Scale factor for amp-hour rating. - - - - - Maximum rate of energy transfer into the storage device. - - - - - Scale factor - - - - - Maximum rate of energy transfer out of the storage device. - - - - - Scale factor - - - - - Pad register. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00121.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00121.xml deleted file mode 100644 index aaf046d9..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00121.xml +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - 1 - 2 - - - 1 - 2 - - - - - 1 - 2 - 3 - - - - - - - - - - - - - - - - - Inverter Controls Basic Settings - Ref 3: 8.4.2.1, Ref 4: 17 - - - - Setting for maximum power output. Default to WRtg. - - - - - Scale factor for real power. - - - - - Setpoint for maximum voltage. - - - - - Setpoint for minimum voltage. - - - - - Scale factor for min/max voltages. - - - - - Setpoint for maximum apparent power. Default to VARtg. - - - - - Scale factor for apparent power. - - - - - Setting for maximum reactive power in quadrant 1. Default to VArRtgQ1. - - - - - Setting for maximum reactive power in quadrant 2. Default to VArRtgQ2. - - - - - Setting for maximum reactive power in quadrant 3. Default to VArRtgQ3. - - - - - Setting for maximum reactive power in quadrant 4. Default to VArRtgQ4. - - - - - Scale factor for reactive power. - - - - - Voltage at the PCC. - - - - - Scale factor for voltage at the PCC. - - - - - Offset from PCC to inverter. - - - - - Scale factor for offset voltage. - - - - - Default ramp rate of change of active power due to command or internal action. - - - - - Scale factor for default ramp rate. - - - - - Setpoint for minimum power factor value in quadrant 1. Default to PFRtgQ1. - EEI sign convention. - - - - Setpoint for minimum power factor value in quadrant 2. Default to PFRtgQ2. - EEI sign convention. - - - - Setpoint for minimum power factor value in quadrant 3. Default to PFRtgQ3. - EEI sign convention. - - - - Setpoint for minimum power factor value in quadrant 4. Default to PFRtgQ4. - EEI sign convention. - - - - Scale factor for minimum power factor. - - - - - VAR action on change between charging and discharging: 1=switch 2=maintain VAR characterization. - - - - - Calculation method for total apparent power. 1=vector 2=arithmetic. - - - - - Setpoint for maximum ramp rate as percentage of nominal maximum ramp rate. This setting will limit the rate that watts delivery to the grid can increase or decrease in response to intermittent PV generation. - - - - - Scale factor for maximum ramp percentage. - - - - - Setpoint for nominal frequency at the ECP. - - - - - Scale factor for nominal frequency. - - - - - Identity of connected phase for single phase inverters. A=1 B=2 C=3. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00122.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00122.xml deleted file mode 100644 index 188ca148..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00122.xml +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - 0 - 1 - 2 - 3 - - - 0 - 1 - 2 - 3 - - - 0 - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 12 - 13 - 14 - - - - - 0 - 1 - 2 - 3 - - - - - - - - - Inverter Controls Extended Measurements and Status - Ref 3: 8.14.3.2, Ref 4: 17 - - - - PV inverter present/available status. Enumerated value. - - - - - Storage inverter present/available status. Enumerated value. - - - - - ECP connection status: disconnected=0 connected=1. - - - - - AC lifetime active (real) energy output. - - - - - AC lifetime apparent energy output. - - - - - AC lifetime reactive energy output in quadrant 1. - - - - - AC lifetime reactive energy output in quadrant 2. - - - - - AC lifetime negative energy output in quadrant 3. - - - - - AC lifetime reactive energy output in quadrant 4. - - - - - Amount of VARs available without impacting watts output. - - - - - Scale factor for available VARs. - - - - - Amount of Watts available. - - - - - Scale factor for available Watts. - - - - - Bit Mask indicating setpoint limit(s) reached. - Bits shall be automatically cleared on read. - - - - Bit Mask indicating which inverter controls are currently active. - - - - - Source of time synchronization. - - - - - Seconds since 01-01-2000 00:00 UTC - - - - - Bit Mask indicating active ride-through status. - - - - - Isolation resistance. - - - - - Scale factor for isolation resistance. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00123.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00123.xml deleted file mode 100644 index 49375f51..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00123.xml +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - 0 - 1 - - - - - - - 0 - 1 - - - - - - - 0 - 1 - - - - - - - - - 0 - 1 - 2 - 3 - - - 0 - 1 - - - - - - - - - - Immediate Inverter Controls - Ref 3: 8.7.1.2, 8.7.2.2, 8.7.3.2 - - - - Enumerated valued. Connection control. - - - - - Time window for connect/disconnect. - - - - - Timeout period for connect/disconnect. - - - - - Set power output to specified level. - - - - - Scale factor for power output percent. - - - - - Time window for power limit change. - - - - - Timeout period for power limit. - - - - - Ramp time for moving from current setpoint to new setpoint. - - - - - Enumerated valued. Throttle enable/disable control. - - - - - Set power factor to specific value - cosine of angle. - - - - - Scale factor for power factor. - - - - - Time window for power factor change. - - - - - Timeout period for power factor. - - - - - Ramp time for moving from current setpoint to new setpoint. - - - - - Enumerated valued. Fixed power factor enable/disable control. - - - - - Enumerated value. VAR percent limit mode. - - - No VAR limit - - - VAR limit as a % of Wmax - - - VAR limit as a % of VArMax - - - VAR limit as a % of VArAval - - - - - Reactive power in percent of WMax. - - - - - Scale factor for reactive power as percent of WMax. - - - - - Reactive power in percent of VArMax. - - - - - Reactive power in percent of VArAval. - - - - - Scale factor for reactive power percent. - - - - - Time window for VAR limit change. - - - - - Timeout period for VAR limit. - - - - - Ramp time for moving from current setpoint to new setpoint. - - - - - Enumerated valued. Percent limit VAr enable/disable control. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00124.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00124.xml deleted file mode 100644 index 0868a4e6..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00124.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - - 0 - 1 - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - - - - - - - - 0 - 1 - - - - - - - - - - - - - - - Basic Storage Controls - Ref 3: 8.7.4.2 - - - - Setpoint for maximum charge. - - - - - Scale factor for maximum charge. - - - - - Setpoint for maximum charging VA. - - - - - Scale factor for maximum charging VA. - - - - - Setpoint for maximum charging rate. Default is MaxChaRte. - - - - - Setpoint for maximum discharge rate. Default is MaxDisChaRte. - - - - - Scale factor for maximum charge and discharge rate. - - - - - Setpoint for minimum reserve for storage as a percentage of the nominal maximum storage. - - - - - Scale factor for minimum reserve percentage. - - - - - Currently available energy as a percent of the capacity rating. - - - - - Scale factor for available energy percent. - - - - - State of charge (ChaState) minus storage reserve (MinRsvPct) times capacity rating (AhrRtg). - - - - - Scale factor for state of charge. - - - - - Internal battery voltage. - - - - - Scale factor for battery voltage. - - - - - Charge status of storage device. Enumerated value. - - - - - Activate hold/discharge/charge storage control mode. Bitfield value. - - - - - Percent of max discharge rate. - - - - - Percent of max charging rate. - - - - - Scale factor for percent charge/discharge rate. - - - - - Time window for charge/discharge rate change. - - - - - Timeout period for charge/discharge rate. - - - - - Ramp time for moving from current setpoint to new setpoint. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00125.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00125.xml deleted file mode 100644 index 59b1d9f9..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00125.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - 0 - - - 0 - 1 - 2 - 3 - 4 - - - - - - - - - - - - - Pricing Signal - Ref 3: 8.7.5.1; Ref 4: 6 - - - - Is price-based charge/dischage mode active? - - - - - Meaning of the pricing signal. When a Price schedule is used, type must match the schedule range variable description. - - - Signal type is unknown or other type of value - - - Signal is an absolute price value in local rate. E.g. 23 (cents/kWh) - - - Signal is a relative price in local rate. E.g. -5 (cents/kWh) - - - Signal is a price multiplier (percentage). E.g. 15 % uplift in the rate - - - Signal is a price level. E.g. 0=lowest 1=low 2=normal 3=high 4=highest - - - - - Utility/ESP specific pricing signal. Content depends on pricing signal type. When H/M/L type is specified. Low=0; Med=1; High=2. - - - - - Pricing signal scale factor. - - - - - Time window for charge/discharge pricing change. - - - - - Timeout period for charge/discharge pricing change. - - - - - Ramp time for moving from current charge or discharge level to new level. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00126.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00126.xml deleted file mode 100644 index 25a9de87..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00126.xml +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - 1 - 2 - 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - Static Volt-VAR Arrays - Ref 3: 8.8.1.2 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximum of 20). - - - - - Is Volt-VAR control active. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for volt-VAR change. - - - - - Timeout period for volt-VAR curve selection. - - - - - Ramp time for moving from current mode to new mode. - - - - - Scale factor for percent VRef. - - - - - Scale factor for power output percent. - - - - - Scale factor for reactive power percent. - - - - - Scale factor for increment and decrement ramps. - - - - - Pad register. - - - - - Optional description for curve. (Max 16 chars) - - - - - Number of active points in array. - - - - - Meaning of dependent variable: 1=%WMax 2=%VArMax 3=%VArAval. - - - - - scale factor for dependent variable. - - - - - The time of the PT1 in seconds (time to accomplish a change of 95%). - - - - - The maximum rate at which the VAR value may be reduced in response to changes in the voltage value. %refVal is %WMax %VArMax or %VArAval depending on value of DeptRef. - - - - - The maximum rate at which the VAR value may be increased in response to changes in the voltage value. %refVal is %WMax %VArMax or %VArAval depending on value of DeptRef. - - - - - Point 1 Volts. - - - - - Point 1 VARs. - - - - - Point 2 Volts. - - - - - Point 2 VARs. - - - - - Point 2 Volts. - - - - - Point 3 VARs. - - - - - Point 4 Volts. - - - - - Point 4 VARs. - - - - - Point 5 Volts. - - - - - Point 5 VARs. - - - - - Point 6 Volts. - - - - - Point 6 VARs. - - - - - Point 7 Volts. - - - - - Point 7 VARs. - - - - - Point 8 Volts. - - - - - Point 8 VARs. - - - - - Point 9 Volts. - - - - - Point 9 VARs. - - - - - Point 10 Volts. - - - - - Point 10 VARs. - - - - - Point 11 Volts. - - - - - Point 11 VARs. - - - - - Point 12 Volts. - - - - - Point 12 VARs. - - - - - Point 13 Volts. - - - - - Point 13 VARs. - - - - - Point 14 Volts. - - - - - Point 14 VARs. - - - - - Point 15 Volts. - - - - - Point 15 VARs. - - - - - Point 16 Volts. - - - - - Point 16 VARs. - - - - - Point 17 Volts. - - - - - Point 17 VARs. - - - - - Point 18 Volts. - - - - - Point 18 VARs. - - - - - Point 19 Volts. - - - - - Point 19 VARs. - - - - - Point 20 Volts. - - - - - Point 20 VARs. - - - - - Boolean flag indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00127.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00127.xml deleted file mode 100644 index f3b4591a..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00127.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - 0 - - - 0 - - - - - - - - - - - - Parameterized Frequency-Watt - Ref 3: 8.9.1.2, 8.9.4.2 - - - - Is Parameterized Frequency-Watt control active. - - - - - The slope of the reduction in the maximum allowed watts output as a function of frequency. - - - - - Scale factor for output gradient. - - - - - The frequency deviation from nominal frequency (ECPNomHz) at which a snapshot of the instantaneous power output is taken to act as the CAPPED power level (PM) and above which reduction in power output occurs. - - - - - The frequency deviation from nominal frequency (ECPNomHz) at which curtailed power output may return to normal and the cap on the power level value is removed. - - - - - Scale factor for frequency deviations. - - - - - Enable hysterisis - - - - - The maximum time-based rate of change at which power output returns to normal after having been capped by an over frequency event. - - - - - Scale factor for increment and decrement ramps. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00128.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00128.xml deleted file mode 100644 index e2b343f2..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00128.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - 0 - 1 - - - - - 0 - - - - - - - - - - - - - - - - - Dynamic Reactive Current - Ref 3: 8.10.1.2; Ref 4: 12 - - - - Activate dynamic reactive current model - - - - - Indicates if gradients trend toward zero at the edges of the deadband or trend toward zero at the center of the deadband. - - - - - The gradient used to increase capacitive dynamic current. A value of 0 indicates no additional reactive current support. - - - - - The gradient used to increase inductive dynamic current. A value of 0 indicates no additional reactive current support. - - - - - Scale factor for the gradients. - - - - - The time window used to calculate the moving average voltage. - - - - - The lower delta voltage limit for which negative voltage deviations less than this value no dynamic vars are produced. - - - - - The upper delta voltage limit for which positive voltage deviations less than this value no dynamic current produced. - - - - - Scale factor for the voltage zone and limit settings. - - - - - Block zone voltage which defines a lower voltage boundary below which no dynamic current is produced. - - - - - Hysteresis voltage used with BlkZnV. - - - - - Block zone time the time before which reactive current support remains active regardless of how low the voltage drops. - - - - - Hold time during which reactive current support continues after the average voltage has entered the dead zone. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00129.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00129.xml deleted file mode 100644 index d4da51b0..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00129.xml +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - LVRT Must Disconnect - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LVRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LVRT change. - Setting is ignored for LVRT controls. - - - - Timeout period for LVRT curve selection. - Setting is ignored for LVRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LVRT controls. - - - - Scale factor for duration. - - - - - Scale factor for percent VRef. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 must disconnect duration. - - - - - Point 1 must disconnect voltage. - - - - - Point 2 must disconnect duration. - - - - - Point 2 must disconnect voltage. - - - - - Point 3 must disconnect duration. - - - - - Point 3 must disconnect voltage. - - - - - Point 4 must disconnect duration. - - - - - Point 4 must disconnect voltage. - - - - - Point 5 must disconnect duration. - - - - - Point 5 must disconnect voltage. - - - - - Point 6 must disconnect duration. - - - - - Point 6 must disconnect voltage. - - - - - Point 7 must disconnect duration. - - - - - Point 7 must disconnect voltage. - - - - - Point 8 must disconnect duration. - - - - - Point 8 must disconnect voltage. - - - - - Point 9 must disconnect duration. - - - - - Point 9 must disconnect voltage. - - - - - Point 10 must disconnect duration. - - - - - Point 10 must disconnect voltage. - - - - - Point 11 must disconnect duration. - - - - - Point 11 must disconnect voltage. - - - - - Point 12 must disconnect duration. - - - - - Point 12 must disconnect voltage. - - - - - Point 13 must disconnect duration. - - - - - Point 13 must disconnect voltage. - - - - - Point 14 must disconnect duration. - - - - - Point 14 must disconnect voltage. - - - - - Point 15 must disconnect duration. - - - - - Point 15 must disconnect voltage. - - - - - Point 16 must disconnect duration. - - - - - Point 16 must disconnect voltage. - - - - - Point 17 must disconnect duration. - - - - - Point 17 must disconnect voltage. - - - - - Point 18 must disconnect duration. - - - - - Point 18 must disconnect voltage. - - - - - Point 19 must disconnect duration. - - - - - Point 19 must disconnect voltage. - - - - - Point 20 must disconnect duration. - - - - - Point 20 must disconnect voltage. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00130.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00130.xml deleted file mode 100644 index ea57e777..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00130.xml +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - HVRT Must Disconnect - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - HVRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for HVRT change. - Setting is ignored for HVRT controls. - - - - Timeout period for HVRT curve selection. - Setting is ignored for HVRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for HVRT controls. - - - - Scale factor for duration. - - - - - Scale factor for percent VRef. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 must disconnect duration. - - - - - Point 1 must disconnect voltage. - - - - - Point 2 must disconnect duration. - - - - - Point 2 must disconnect voltage. - - - - - Point 3 must disconnect duration. - - - - - Point 3 must disconnect voltage. - - - - - Point 4 must disconnect duration. - - - - - Point 4 must disconnect voltage. - - - - - Point 5 must disconnect duration. - - - - - Point 5 must disconnect voltage. - - - - - Point 6 must disconnect duration. - - - - - Point 6 must disconnect voltage. - - - - - Point 7 must disconnect duration. - - - - - Point 7 must disconnect voltage. - - - - - Point 8 must disconnect duration. - - - - - Point 8 must disconnect voltage. - - - - - Point 9 must disconnect duration. - - - - - Point 9 must disconnect voltage. - - - - - Point 10 must disconnect duration. - - - - - Point 10 must disconnect voltage. - - - - - Point 11 must disconnect duration. - - - - - Point 11 must disconnect voltage. - - - - - Point 12 must disconnect duration. - - - - - Point 12 must disconnect voltage. - - - - - Point 13 must disconnect duration. - - - - - Point 13 must disconnect voltage. - - - - - Point 14 must disconnect duration. - - - - - Point 14 must disconnect voltage. - - - - - Point 15 must disconnect duration. - - - - - Point 15 must disconnect voltage. - - - - - Point 16 must disconnect duration. - - - - - Point 16 must disconnect voltage. - - - - - Point 17 must disconnect duration. - - - - - Point 17 must disconnect voltage. - - - - - Point 18 must disconnect duration. - - - - - Point 18 must disconnect voltage. - - - - - Point 19 must disconnect duration. - - - - - Point 19 must disconnect voltage. - - - - - Point 20 must disconnect duration. - - - - - Point 20 must disconnect voltage. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00131.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00131.xml deleted file mode 100644 index fac3c3c9..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00131.xml +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - - Watt-Power Factor - Ref 3: 8.11.1.2 - - - - Number of curves supported (recommend 4). - - - - - Max number of points in array. - - - - - Is watt-PF mode active. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for watt-PF change. - - - - - Timeout period for watt-PF curve selection. - - - - - Ramp time for moving from current mode to new mode. - - - - - Scale factor for percent WMax. - - - - - Scale factor for PF. - - - - - Scale factor for increment and decrement ramps. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - The time of the PT1 in seconds (time to accomplish a change of 95%). - - - - - The maximum rate at which the power factor may be reduced in response to changes in the power value. - - - - - The maximum rate at which the power factor may be increased in response to changes in the power value. - - - - - Point 1 Watts. - - - - - Point 1 PF in EEI notation. - - - - - Point 2 Watts. - - - - - Point 2 PF in EEI notation. - - - - - Point 3 Watts. - - - - - Point 3 PF in EEI notation. - - - - - Point 4 Watts. - - - - - Point 4 PF in EEI notation. - - - - - Point 5 Watts. - - - - - Point 5 PF in EEI notation. - - - - - Point 6 Watts. - - - - - Point 6 PF in EEI notation. - - - - - Point 7 Watts. - - - - - Point 7 PF in EEI notation. - - - - - Point 8 Watts. - - - - - Point 8 PF in EEI notation. - - - - - Point 9 Watts. - - - - - Point 9 PF in EEI notation. - - - - - Point 10 Watts. - - - - - Point 10 PF in EEI notation. - - - - - Point 11 Watts. - - - - - Point 11 PF in EEI notation. - - - - - Point 12 Watts. - - - - - Point 12 PF in EEI notation. - - - - - Point 13 Watts. - - - - - Point 13 PF in EEI notation. - - - - - Point 14 Watts. - - - - - Point 14 PF in EEI notation. - - - - - Point 15 Watts. - - - - - Point 15 PF in EEI notation. - - - - - Point 16 Watts. - - - - - Point 16 PF in EEI notation. - - - - - Point 17 Watts. - - - - - Point 17 PF in EEI notation. - - - - - Point 18 Watts. - - - - - Point 18 PF in EEI notation. - - - - - Point 19 Watts. - - - - - Point 19 PF in EEI notation. - - - - - Point 20 Watts. - - - - - Point 20 PF in EEI notation. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00132.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00132.xml deleted file mode 100644 index b703bb73..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00132.xml +++ /dev/null @@ -1,381 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - 1 - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - Volt-Watt - Ref 3: 8.12.1.2 - - - - Number of curves supported (recommend min. 4). - - - - - Number of points in array (maximum 20). - - - - - Is Volt-Watt control active. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for volt-watt change. - - - - - Timeout period for volt-watt curve selection. - - - - - Ramp time for moving from current mode to new mode. - - - - - Scale factor for percent VRef. - - - - - Scale factor for percent WMax. - - - - - Scale factor for % DeptRef. - - - - - Scale factor for increment and decrement ramps. - - - - - null - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Defines the meaning of the Watts DeptRef. 1=% WMax 2=% WAvail - - - - - Scale Factor for % DeptRef - - - - - The time of the PT1 in seconds (time to accomplish a change of 95%). - - - - - The maximum rate at which the watt value may be reduced in response to changes in the voltage value. - - - - - The maximum rate at which the watt value may be increased in response to changes in the voltage value. - - - - - Point 1 Volts. - - - - - Point 1 Watts. - - - - - Point 2 Volts. - - - - - Point 2 Watts. - - - - - Point 3 Volts. - - - - - Point 3 Watts. - - - - - Point 4 Volts. - - - - - Point 4 Watts. - - - - - Point 5 Volts. - - - - - Point 5 Watts. - - - - - Point 6 Volts. - - - - - Point 6 Watts. - - - - - Point 7 Volts. - - - - - Point 7 Watts. - - - - - Point 8 Volts. - - - - - Point 8 Watts. - - - - - Point 9 Volts. - - - - - Point 9 Watts. - - - - - Point 10 Volts. - - - - - Point 10 Watts. - - - - - Point 11 Volts. - - - - - Point 11 Watts. - - - - - Point 12 Volts. - - - - - Point 12 Watts. - - - - - Point 13 Volts. - - - - - Point 13 Watts. - - - - - Point 14 Volts. - - - - - Point 14 Watts. - - - - - Point 15 Volts. - - - - - Point 15 Watts. - - - - - Point 16 Volts. - - - - - Point 16 Watts. - - - - - Point 17 Volts. - - - - - Point 17 Watts. - - - - - Point 18 Volts. - - - - - Point 18 Watts. - - - - - Point 19 Volts. - - - - - Point 19 Watts. - - - - - Point 20 Volts. - - - - - Point 20 Watts. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00133.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00133.xml deleted file mode 100644 index 341f1dce..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00133.xml +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - - - 0 - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - - - 0 - 1 - 2 - 3 - 99 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 99 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Basic Scheduling - Ref 2: 2.2.8 - - - - Number of schedules supported (recommend min. 4, max 32) - - - - - Number of schedule entries supuported (maximum of 10). - - - - - Is basic scheduling active. - - - - - Bitfield of active schedules - - - - - Optional description for schedule. - - - - - Number of active entries in schedule. - - - - - Index of active entry in the active schedule. - - - - - Schedule start in seconds since 2000 JAN 01 00:00:00 UTC. - - - - - The repetition count for time-based schedules (0=repeat forever) - - - - - The repetition frequency for time-based schedules: no repeat=0 - - - - - The meaning of the X-values in the array. - - - - - Scale factor for schedule range values. - - - - - The meaning of the Y-values in the array. - - - - - Scale factor for schedule target values. - - - - - Time window for schedule entry change. - - - - - Ramp time for moving from current target to new target. - - - - - Pad register. - - - - - Entry 1 range. - - - - - Entry 1 target. - - - - - Entry 2 range. - - - - - Entry 2 target. - - - - - Entry 3 range. - - - - - Entry 3 target. - - - - - Entry 4 range. - - - - - Entry 4 target. - - - - - Entry 15range. - - - - - Entry 5 target. - - - - - Entry 6 range. - - - - - Entry 6 target. - - - - - Entry 7 range. - - - - - Entry 7 target. - - - - - Entry 8 range. - - - - - Entry 8 target. - - - - - Entry 9 range. - - - - - Entry 9 target. - - - - - Entry 10 range. - - - - - Entry 10 target. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00134.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00134.xml deleted file mode 100644 index 35bbcaee..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00134.xml +++ /dev/null @@ -1,387 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - Curve-Based Frequency-Watt - Ref 3: 8.9.1.2, 8.9.4.2 - - - - Number of curves supported (recommend min. 4). - - - - - Number of curve points supported (maximum of 10). - - - - - Is curve-based Frequency-Watt control active. - - - - - Index of active curve. 0=no active curve. - - - - - 1=enable snapshot/capture mode - - - - - Reference active power (default = WMax). - - - - - Frequency deviation from nominal frequency at the time of the snapshot to start constraining power output. - - - - - Frequency deviation from nominal frequency at which to release the power output. - - - - - Time window for freq-watt change. - - - - - Timeout period for freq-watt curve selection. - - - - - Ramp time for moving from current mode to new mode. - - - - - Scale factor for frequency. - - - - - Scale factor for percent WRef. - - - - - Scale factor for increment and decrement ramps. - - - - - Optional description for curve. (Max 16 chars) - - - - - Number of active points in array. - - - - - The time of the PT1 in seconds (time to accomplish a change of 95%). - - - - - The maximum rate at which the power value may be reduced in response to changes in the frequency value. - - - - - The maximum rate at which the power value may be increased in response to changes in the frequency value. - - - - - The maximum rate at which the power may be increased after releasing the frozen value of snap shot function. - - - - - Point 1 Hertz. - - - - - Point 1 Watts. - - - - - Point 2 Hertz. - - - - - Point 2 Watts. - - - - - Point 3 Hertz. - - - - - Point 3 Watts. - - - - - Point 4 Hertz. - - - - - Point 4 Watts. - - - - - Point 5 Hertz. - - - - - Point 5 Watts. - - - - - Point 6 Hertz. - - - - - Point 6 Watts. - - - - - Point 7 Hertz. - - - - - Point 7 Watts. - - - - - Point 8 Hertz. - - - - - Point 8 Watts. - - - - - Point 9 Hertz. - - - - - Point 9 Watts. - - - - - Point 10 Hertz. - - - - - Point 10 Watts. - - - - - Point 11 Hertz. - - - - - Point 11 Watts. - - - - - Point 12 Hertz. - - - - - Point 12 Watts. - - - - - Point 13 Hertz. - - - - - Point 13 Watts. - - - - - Point 14 Hertz. - - - - - Point 14 Watts. - - - - - Point 15 Hertz. - - - - - Point 15 Watts. - - - - - Point 16 Hertz. - - - - - Point 16 Watts. - - - - - Point 17 Hertz. - - - - - Point 17 Watts. - - - - - Point 18 Hertz. - - - - - Point 18 Watts. - - - - - Point 19 Hertz. - - - - - Point 19 Watts. - - - - - Point 20 Hertz. - - - - - Point 20 Watts. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00135.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00135.xml deleted file mode 100644 index 313c6864..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00135.xml +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - Low Frequency Ride-through - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LHzRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LFRT change. - Setting is ignored for LFRT controls. - - - - Timeout period for LFRT curve selection. - Setting is ignored for LFRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LFRT controls. - - - - Scale factor for duration. - - - - - Scale factor for frequency. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 must disconnect duration. - - - - - Point 1 must disconnect frequency. - - - - - Point 2 must disconnect duration. - - - - - Point 2 must disconnect frequency. - - - - - Point 3 must disconnect duration. - - - - - Point 3 must disconnect frequency. - - - - - Point 4 must disconnect duration. - - - - - Point 4 must disconnect frequency. - - - - - Point 5 must disconnect duration. - - - - - Point 5 must disconnect frequency. - - - - - Point 6 must disconnect duration. - - - - - Point 6 must disconnect frequency. - - - - - Point 7 must disconnect duration. - - - - - Point 7 must disconnect frequency. - - - - - Point 8 must disconnect duration. - - - - - Point 8 must disconnect frequency. - - - - - Point 9 must disconnect duration. - - - - - Point 9 must disconnect frequency. - - - - - Point 10 must disconnect duration. - - - - - Point 10 must disconnect frequency. - - - - - Point 11 must disconnect duration. - - - - - Point 11 must disconnect frequency. - - - - - Point 12 must disconnect duration. - - - - - Point 12 must disconnect frequency. - - - - - Point 13 must disconnect duration. - - - - - Point 13 must disconnect frequency. - - - - - Point 14 must disconnect duration. - - - - - Point 14 must disconnect frequency. - - - - - Point 15 must disconnect duration. - - - - - Point 15 must disconnect frequency. - - - - - Point 16 must disconnect duration. - - - - - Point 16 must disconnect frequency. - - - - - Point 17 must disconnect duration. - - - - - Point 17 must disconnect frequency. - - - - - Point 18 must disconnect duration. - - - - - Point 18 must disconnect frequency. - - - - - Point 19 must disconnect duration. - - - - - Point 19 must disconnect frequency. - - - - - Point 20 must disconnect duration. - - - - - Point 20 must disconnect frequency. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00136.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00136.xml deleted file mode 100644 index 88619de1..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00136.xml +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - High Frequency Ride-through - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - HFRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for HFRT change. - Setting is ignored for HFRT controls. - - - - Timeout period for HFRT curve selection. - Setting is ignored for HFRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for HFRT controls. - - - - Scale factor for duration. - - - - - Scale factor for frequency. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 must disconnect duration. - - - - - Point 1 must disconnect frequency. - - - - - Point 2 must disconnect duration. - - - - - Point 2 must disconnect frequency. - - - - - Point 3 must disconnect duration. - - - - - Point 3 must disconnect frequency. - - - - - Point 4 must disconnect duration. - - - - - Point 4 must disconnect frequency. - - - - - Point 5 must disconnect duration. - - - - - Point 5 must disconnect frequency. - - - - - Point 6 must disconnect duration. - - - - - Point 6 must disconnect frequency. - - - - - Point 7 must disconnect duration. - - - - - Point 7 must disconnect frequency. - - - - - Point 8 must disconnect duration. - - - - - Point 8 must disconnect frequency. - - - - - Point 9 must disconnect duration. - - - - - Point 9 must disconnect frequency. - - - - - Point 10 must disconnect duration. - - - - - Point 10 must disconnect frequency. - - - - - Point 11 must disconnect duration. - - - - - Point 11 must disconnect frequency. - - - - - Point 12 must disconnect duration. - - - - - Point 12 must disconnect frequency. - - - - - Point 13 must disconnect duration. - - - - - Point 13 must disconnect frequency. - - - - - Point 14 must disconnect duration. - - - - - Point 14 must disconnect frequency. - - - - - Point 15 must disconnect duration. - - - - - Point 15 must disconnect frequency. - - - - - Point 16 must disconnect duration. - - - - - Point 16 must disconnect frequency. - - - - - Point 17 must disconnect duration. - - - - - Point 17 must disconnect frequency. - - - - - Point 18 must disconnect duration. - - - - - Point 18 must disconnect frequency. - - - - - Point 19 must disconnect duration. - - - - - Point 19 must disconnect frequency. - - - - - Point 20 must disconnect duration. - - - - - Point 20 must disconnect frequency. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00137.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00137.xml deleted file mode 100644 index 6c00878a..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00137.xml +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - LVRT must remain connected - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LVRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LVRT change. - Setting is ignored for LVRT controls. - - - - Timeout period for LVRT curve selection. - Setting is ignored for LVRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LVRT controls. - - - - Scale factor for duration. - - - - - Scale factor for percent VRef. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 must remain connected duration. - - - - - Point 1 must remain connected voltage. - - - - - Point 2 must remain connected duration. - - - - - Point 2 must remain connected voltage. - - - - - Point 3 must remain connected duration. - - - - - Point 3 must remain connected voltage. - - - - - Point 4 must remain connected duration. - - - - - Point 4 must remain connected voltage. - - - - - Point 5 must remain connected duration. - - - - - Point 5 must remain connected voltage. - - - - - Point 6 must remain connected duration. - - - - - Point 6 must remain connected voltage. - - - - - Point 7 must remain connected duration. - - - - - Point 7 must remain connected voltage. - - - - - Point 8 must remain connected duration. - - - - - Point 8 must remain connected voltage. - - - - - Point 9 must remain connected duration. - - - - - Point 9 must remain connected voltage. - - - - - Point 10 must remain connected duration. - - - - - Point 10 must remain connected voltage. - - - - - Point 11 must remain connected duration. - - - - - Point 11 must remain connected voltage. - - - - - Point 12 must remain connected duration. - - - - - Point 12 must remain connected voltage. - - - - - Point 13 must remain connected duration. - - - - - Point 13 must remain connected voltage. - - - - - Point 14 must remain connected duration. - - - - - Point 14 must remain connected voltage. - - - - - Point 15 must remain connected duration. - - - - - Point 15 must remain connected voltage. - - - - - Point 16 must remain connected duration. - - - - - Point 16 must remain connected voltage. - - - - - Point 17 must remain connected duration. - - - - - Point 17 must remain connected voltage. - - - - - Point 18 must remain connected duration. - - - - - Point 18 must remain connected voltage. - - - - - Point 19 must remain connected duration. - - - - - Point 19 must remain connected voltage. - - - - - Point 20 must remain connected duration. - - - - - Point 20 must remain connected voltage. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00138.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00138.xml deleted file mode 100644 index 08bdf1e3..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00138.xml +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - HVRT must remain connected - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - HVRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for HVRT change. - Setting is ignored for HVRT controls. - - - - Timeout period for HVRT curve selection. - Setting is ignored for HVRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for HVRT controls. - - - - Scale factor for duration. - - - - - Scale factor for percent VRef. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 must remain connected duration. - - - - - Point 1 must remain connected voltage. - - - - - Point 2 must remain connected duration. - - - - - Point 2 must remain connected voltage. - - - - - Point 3 must remain connected duration. - - - - - Point 3 must remain connected voltage. - - - - - Point 4 must remain connected duration. - - - - - Point 4 must remain connected voltage. - - - - - Point 5 must remain connected duration. - - - - - Point 5 must remain connected voltage. - - - - - Point 6 must remain connected duration. - - - - - Point 6 must remain connected voltage. - - - - - Point 7 must remain connected duration. - - - - - Point 7 must remain connected voltage. - - - - - Point 8 must remain connected duration. - - - - - Point 8 must remain connected voltage. - - - - - Point 9 must remain connected duration. - - - - - Point 9 must remain connected voltage. - - - - - Point 10 must remain connected duration. - - - - - Point 10 must remain connected voltage. - - - - - Point 11 must remain connected duration. - - - - - Point 11 must remain connected voltage. - - - - - Point 12 must remain connected duration. - - - - - Point 12 must remain connected voltage. - - - - - Point 13 must remain connected duration. - - - - - Point 13 must remain connected voltage. - - - - - Point 14 must remain connected duration. - - - - - Point 14 must remain connected voltage. - - - - - Point 15 must remain connected duration. - - - - - Point 15 must remain connected voltage. - - - - - Point 16 must remain connected duration. - - - - - Point 16 must remain connected voltage. - - - - - Point 17 must remain connected duration. - - - - - Point 17 must remain connected voltage. - - - - - Point 18 must remain connected duration. - - - - - Point 18 must remain connected voltage. - - - - - Point 19 must remain connected duration. - - - - - Point 19 must remain connected voltage. - - - - - Point 20 must remain connected duration. - - - - - Point 20 must remain connected voltage. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00139.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00139.xml deleted file mode 100644 index c165571e..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00139.xml +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - 0 - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - LVRT extended curve - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LVRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LVRT change. - Setting is ignored for LVRT controls. - - - - Timeout period for LVRT curve selection. - Setting is ignored for LVRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LVRT controls. - - - - Scale factor for duration. - - - - - Scale factor for percent VRef. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 duration. - - - - - Point 1 voltage. - - - - - Point 2 duration. - - - - - Point 2 voltage. - - - - - Point 3 duration. - - - - - Point 3 voltage. - - - - - Point 4 duration. - - - - - Point 4 voltage. - - - - - Point 5 duration. - - - - - Point 5 voltage. - - - - - Point 6 duration. - - - - - Point 6 voltage. - - - - - Point 7 duration. - - - - - Point 7 voltage. - - - - - Point 8 duration. - - - - - Point 8 voltage. - - - - - Point 9 duration. - - - - - Point 9 voltage. - - - - - Point 10 duration. - - - - - Point 10 voltage. - - - - - Point 11 duration. - - - - - Point 11 voltage. - - - - - Point 12 duration. - - - - - Point 12 voltage. - - - - - Point 13 duration. - - - - - Point 13 voltage. - - - - - Point 14 duration. - - - - - Point 14 voltage. - - - - - Point 15 duration. - - - - - Point 15 voltage. - - - - - Point 16 duration. - - - - - Point 16 voltage. - - - - - Point 17 duration. - - - - - Point 17 voltage. - - - - - Point 18 duration. - - - - - Point 18 voltage. - - - - - Point 19 duration. - - - - - Point 19 voltage. - - - - - Point 20 duration. - - - - - Point 20 voltage. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00140.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00140.xml deleted file mode 100644 index 31ea48cd..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00140.xml +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - 0 - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - HVRT extended curve - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LVRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LVRT change. - Setting is ignored for LVRT controls. - - - - Timeout period for LVRT curve selection. - Setting is ignored for LVRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LVRT controls. - - - - Scale factor for duration. - - - - - Scale factor for percent VRef. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 duration. - - - - - Point 1 voltage. - - - - - Point 2 duration. - - - - - Point 2 voltage. - - - - - Point 3 duration. - - - - - Point 3 voltage. - - - - - Point 4 duration. - - - - - Point 4 voltage. - - - - - Point 5 duration. - - - - - Point 5 voltage. - - - - - Point 6 duration. - - - - - Point 6 voltage. - - - - - Point 7 duration. - - - - - Point 7 voltage. - - - - - Point 8 duration. - - - - - Point 8 voltage. - - - - - Point 9 duration. - - - - - Point 9 voltage. - - - - - Point 10 duration. - - - - - Point 10 voltage. - - - - - Point 11 duration. - - - - - Point 11 voltage. - - - - - Point 12 duration. - - - - - Point 12 voltage. - - - - - Point 13 duration. - - - - - Point 13 voltage. - - - - - Point 14 duration. - - - - - Point 14 voltage. - - - - - Point 15 duration. - - - - - Point 15 voltage. - - - - - Point 16 duration. - - - - - Point 16 voltage. - - - - - Point 17 duration. - - - - - Point 17 voltage. - - - - - Point 18 duration. - - - - - Point 18 voltage. - - - - - Point 19 duration. - - - - - Point 19 voltage. - - - - - Point 20 duration. - - - - - Point 20 voltage. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00141.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00141.xml deleted file mode 100644 index 073ab141..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00141.xml +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - LFRT must remain connected - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LHzRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LFRT change. - Setting is ignored for LFRT controls. - - - - Timeout period for LFRT curve selection. - Setting is ignored for LFRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LFRT controls. - - - - Scale factor for duration. - - - - - Scale factor for frequency. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 must remain connected duration. - - - - - Point 1 must remain connected frequency. - - - - - Point 2 must remain connected duration. - - - - - Point 2 must remain connected frequency. - - - - - Point 3 must remain connected duration. - - - - - Point 3 must remain connected frequency. - - - - - Point 4 must remain connected duration. - - - - - Point 4 must remain connected frequency. - - - - - Point 5 must remain connected duration. - - - - - Point 5 must remain connected frequency. - - - - - Point 6 must remain connected duration. - - - - - Point 6 must remain connected frequency. - - - - - Point 7 must remain connected duration. - - - - - Point 7 must remain connected frequency. - - - - - Point 8 must remain connected duration. - - - - - Point 8 must remain connected frequency. - - - - - Point 9 must remain connected duration. - - - - - Point 9 must remain connected frequency. - - - - - Point 10 must remain connected duration. - - - - - Point 10 must remain connected frequency. - - - - - Point 11 must remain connected duration. - - - - - Point 11 must remain connected frequency. - - - - - Point 12 must remain connected duration. - - - - - Point 12 must remain connected frequency. - - - - - Point 13 must remain connected duration. - - - - - Point 13 must remain connected frequency. - - - - - Point 14 must remain connected duration. - - - - - Point 14 must remain connected frequency. - - - - - Point 15 must remain connected duration. - - - - - Point 15 must remain connected frequency. - - - - - Point 16 must remain connected duration. - - - - - Point 16 must remain connected frequency. - - - - - Point 17 must remain connected duration. - - - - - Point 17 must remain connected frequency. - - - - - Point 18 must remain connected duration. - - - - - Point 18 must remain connected frequency. - - - - - Point 19 must remain connected duration. - - - - - Point 19 must remain connected frequency. - - - - - Point 20 must remain connected duration. - - - - - Point 20 must remain connected frequency. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00142.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00142.xml deleted file mode 100644 index 6b407fd0..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00142.xml +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - HFRT must remain connected - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LHzRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LFRT change. - Setting is ignored for LFRT controls. - - - - Timeout period for LFRT curve selection. - Setting is ignored for LFRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LFRT controls. - - - - Scale factor for duration. - - - - - Scale factor for frequency. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 must remain connected duration. - - - - - Point 1 must remain connected frequency. - - - - - Point 2 must remain connected duration. - - - - - Point 2 must remain connected frequency. - - - - - Point 3 must remain connected duration. - - - - - Point 3 must remain connected frequency. - - - - - Point 4 must remain connected duration. - - - - - Point 4 must remain connected frequency. - - - - - Point 5 must remain connected duration. - - - - - Point 5 must remain connected frequency. - - - - - Point 6 must remain connected duration. - - - - - Point 6 must remain connected frequency. - - - - - Point 7 must remain connected duration. - - - - - Point 7 must remain connected frequency. - - - - - Point 8 must remain connected duration. - - - - - Point 8 must remain connected frequency. - - - - - Point 9 must remain connected duration. - - - - - Point 9 must remain connected frequency. - - - - - Point 10 must remain connected duration. - - - - - Point 10 must remain connected frequency. - - - - - Point 11 must remain connected duration. - - - - - Point 11 must remain connected frequency. - - - - - Point 12 must remain connected duration. - - - - - Point 12 must remain connected frequency. - - - - - Point 13 must remain connected duration. - - - - - Point 13 must remain connected frequency. - - - - - Point 14 must remain connected duration. - - - - - Point 14 must remain connected frequency. - - - - - Point 15 must remain connected duration. - - - - - Point 15 must remain connected frequency. - - - - - Point 16 must remain connected duration. - - - - - Point 16 must remain connected frequency. - - - - - Point 17 must remain connected duration. - - - - - Point 17 must remain connected frequency. - - - - - Point 18 must remain connected duration. - - - - - Point 18 must remain connected frequency. - - - - - Point 19 must remain connected duration. - - - - - Point 19 must remain connected frequency. - - - - - Point 20 must remain connected duration. - - - - - Point 20 must remain connected frequency. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00143.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00143.xml deleted file mode 100644 index db9a5963..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00143.xml +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - 0 - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - LFRT extended curve - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LHzRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LFRT change. - Setting is ignored for LFRT controls. - - - - Timeout period for LFRT curve selection. - Setting is ignored for LFRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LFRT controls. - - - - Scale factor for duration. - - - - - Scale factor for frequency. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 duration. - - - - - Point 1 frequency. - - - - - Point 2 duration. - - - - - Point 2 frequency. - - - - - Point 3 duration. - - - - - Point 3 frequency. - - - - - Point 4 duration. - - - - - Point 4 frequency. - - - - - Point 5 duration. - - - - - Point 5 frequency. - - - - - Point 6 duration. - - - - - Point 6 frequency. - - - - - Point 7 duration. - - - - - Point 7 frequency. - - - - - Point 8 duration. - - - - - Point 8 frequency. - - - - - Point 9 duration. - - - - - Point 9 frequency. - - - - - Point 10 duration. - - - - - Point 10 frequency. - - - - - Point 11 duration. - - - - - Point 11 frequency. - - - - - Point 12 duration. - - - - - Point 12 frequency. - - - - - Point 13 duration. - - - - - Point 13 frequency. - - - - - Point 14 duration. - - - - - Point 14 frequency. - - - - - Point 15 duration. - - - - - Point 15 frequency. - - - - - Point 16 duration. - - - - - Point 16 frequency. - - - - - Point 17 duration. - - - - - Point 17 frequency. - - - - - Point 18 duration. - - - - - Point 18 frequency. - - - - - Point 19 duration. - - - - - Point 19 frequency. - - - - - Point 20 duration. - - - - - Point 20 frequency. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00144.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00144.xml deleted file mode 100644 index ab8ef4ac..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00144.xml +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - 0 - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - HFRT extended curve - Ref 4: 11 - - - - Number of curves supported (recommend 4). - - - - - Number of curve points supported (maximumn of 20). - - - - - LHzRT control mode. Enable active curve. Bitfield value. - - - - - Index of active curve. 0=no active curve. - - - - - Time window for LFRT change. - Setting is ignored for LFRT controls. - - - - Timeout period for LFRT curve selection. - Setting is ignored for LFRT controls. - - - - Ramp time for moving from current mode to new mode. - Setting is ignored for LFRT controls. - - - - Scale factor for duration. - - - - - Scale factor for frequency. - - - - - Optional description for curve. - - - - - Number of active points in array. - - - - - Point 1 duration. - - - - - Point 1 frequency. - - - - - Point 2 duration. - - - - - Point 2 frequency. - - - - - Point 3 duration. - - - - - Point 3 frequency. - - - - - Point 4 duration. - - - - - Point 4 frequency. - - - - - Point 5 duration. - - - - - Point 5 frequency. - - - - - Point 6 duration. - - - - - Point 6 frequency. - - - - - Point 7 duration. - - - - - Point 7 frequency. - - - - - Point 8 duration. - - - - - Point 8 frequency. - - - - - Point 9 duration. - - - - - Point 9 frequency. - - - - - Point 10 duration. - - - - - Point 10 frequency. - - - - - Point 11 duration. - - - - - Point 11 frequency. - - - - - Point 12 duration. - - - - - Point 12 frequency. - - - - - Point 13 duration. - - - - - Point 13 frequency. - - - - - Point 14 duration. - - - - - Point 14 frequency. - - - - - Point 15 duration. - - - - - Point 15 frequency. - - - - - Point 16 duration. - - - - - Point 16 frequency. - - - - - Point 17 duration. - - - - - Point 17 frequency. - - - - - Point 18 duration. - - - - - Point 18 frequency. - - - - - Point 19 duration. - - - - - Point 19 frequency. - - - - - Point 20 duration. - - - - - Point 20 frequency. - - - - - Enumerated value indicates if curve is read-only or can be modified. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00145.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00145.xml deleted file mode 100644 index 0a75a6a0..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00145.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - Inverter controls extended settings - - - - - Ramp up rate as a percentage of max current. - - - - - Ramp down rate as a percentage of max current. - - - - - Emergency ramp up rate as a percentage of max current. - - - - - Emergency ramp down rate as a percentage of max current. - - - - - Connect ramp up rate as a percentage of max current. - - - - - Connect ramp down rate as a percentage of max current. - - - - - Ramp rate specified in percent of max current. - - - - - Ramp Rate Scale Factor - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00160.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00160.xml deleted file mode 100644 index 02e3ec86..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00160.xml +++ /dev/null @@ -1,459 +0,0 @@ - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00201.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00201.xml deleted file mode 100644 index f2485b88..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00201.xml +++ /dev/null @@ -1,538 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - Include this model for single phase (AN or AB) metering - - - - - Total AC Current - - - - - Phase A Current - - - - - Phase B Current - - - - - Phase C Current - - - Current scale factor - - - Line to Neutral AC Voltage (average of active phases) - Conditional AN connection - - - - Phase Voltage AB - Conditional AB connection - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Line to Line AC Voltage (average of active phases) - - - - - Phase Voltage AN - Conditional AN connection - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - - - - - - - - - - - - - - - - AC Apparent Power - - - Apparent Power scale factor - - - - - - - - - - - - - - - - - - Reactive Power - - - Reactive Power scale factor - - - - - - - - - - - - - - - - - - Power Factor - - - Power Factor scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Exported - - - Real Energy scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Imported - - - - - - - - - - - - - - - - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - - - - - - - - - - - - - - - - Total Apparent Energy Imported - - - - - - - - - - - - - - - - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Imported Quadrant 2 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 3 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 4 - - - - - - - - - - - - - - - - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00202.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00202.xml deleted file mode 100644 index 37b9ccff..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00202.xml +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - - - - - - Total AC Current - - - - - Phase A Current - - - - - Phase B Current - - - - - Phase C Current - - - Current scale factor - - - Line to Neutral AC Voltage (average of active phases) - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Line to Line AC Voltage (average of active phases) - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - - - - - - - - - - - - - - - - AC Apparent Power - - - Apparent Power scale factor - - - - - - - - - - - - - - - - - - Reactive Power - - - Reactive Power scale factor - - - - - - - - - - - - - - - - - - Power Factor - - - Power Factor scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Exported - - - Real Energy scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Imported - - - - - - - - - - - - - - - - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - - - - - - - - - - - - - - - - Total Apparent Energy Imported - - - - - - - - - - - - - - - - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Imported Quadrant 2 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 3 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 4 - - - - - - - - - - - - - - - - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00203.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00203.xml deleted file mode 100644 index 0d9a0abc..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00203.xml +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - - - - - - Total AC Current - - - - - Phase A Current - - - - - Phase B Current - - - - - Phase C Current - - - Current scale factor - - - Line to Neutral AC Voltage (average of active phases) - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Line to Line AC Voltage (average of active phases) - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - - - - - - - - - - - - - - - - AC Apparent Power - - - Apparent Power scale factor - - - - - - - - - - - - - - - - - - Reactive Power - - - Reactive Power scale factor - - - - - - - - - - - - - - - - - - Power Factor - - - Power Factor scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Exported - - - Real Energy scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Imported - - - - - - - - - - - - - - - - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - - - - - - - - - - - - - - - - Total Apparent Energy Imported - - - - - - - - - - - - - - - - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Imported Quadrant 2 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 3 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 4 - - - - - - - - - - - - - - - - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00204.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00204.xml deleted file mode 100644 index 5af868ba..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00204.xml +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - - - - - - Total AC Current - - - - - Phase A Current - - - - - Phase B Current - - - - - Phase C Current - - - Current scale factor - - - Line to Neutral AC Voltage (average of active phases) - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Line to Line AC Voltage (average of active phases) - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - - - - - - - - - - - - - - - - AC Apparent Power - - - Apparent Power scale factor - - - - - - - - - - - - - - - - - - Reactive Power - - - Reactive Power scale factor - - - - - - - - - - - - - - - - - - Power Factor - - - Power Factor scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Exported - - - Real Energy scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Imported - - - - - - - - - - - - - - - - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - - - - - - - - - - - - - - - - Total Apparent Energy Imported - - - - - - - - - - - - - - - - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Imported Quadrant 2 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 3 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 4 - - - - - - - - - - - - - - - - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00211.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00211.xml deleted file mode 100644 index 3b1429e7..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00211.xml +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - - Float - - - - Total AC Current - - - - - Phase A Current - - - - - Phase B Current - - - - - Phase C Current - - - Current scale factor - - - Line to Neutral AC Voltage (average of active phases) - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Line to Line AC Voltage (average of active phases) - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - - - - - - - - - - - - - - - - AC Apparent Power - - - Apparent Power scale factor - - - - - - - - - - - - - - - - - - Reactive Power - - - Reactive Power scale factor - - - - - - - - - - - - - - - - - - Power Factor - - - Power Factor scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Exported - - - Real Energy scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Imported - - - - - - - - - - - - - - - - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - - - - - - - - - - - - - - - - Total Apparent Energy Imported - - - - - - - - - - - - - - - - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Imported Quadrant 2 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 3 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 4 - - - - - - - - - - - - - - - - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00212.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00212.xml deleted file mode 100644 index 519c10e5..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00212.xml +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - - Float - - - - Total AC Current - - - - - Phase A Current - - - - - Phase B Current - - - - - Phase C Current - - - Current scale factor - - - Line to Neutral AC Voltage (average of active phases) - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Line to Line AC Voltage (average of active phases) - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - - - - - - - - - - - - - - - - AC Apparent Power - - - Apparent Power scale factor - - - - - - - - - - - - - - - - - - Reactive Power - - - Reactive Power scale factor - - - - - - - - - - - - - - - - - - Power Factor - - - Power Factor scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Exported - - - Real Energy scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Imported - - - - - - - - - - - - - - - - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - - - - - - - - - - - - - - - - Total Apparent Energy Imported - - - - - - - - - - - - - - - - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Imported Quadrant 2 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 3 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 4 - - - - - - - - - - - - - - - - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00213.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00213.xml deleted file mode 100644 index ebcce190..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00213.xml +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - - Float - - - - Total AC Current - - - - - Phase A Current - - - - - Phase B Current - - - - - Phase C Current - - - Current scale factor - - - Line to Neutral AC Voltage (average of active phases) - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Line to Line AC Voltage (average of active phases) - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - - - - - - - - - - - - - - - - AC Apparent Power - - - Apparent Power scale factor - - - - - - - - - - - - - - - - - - Reactive Power - - - Reactive Power scale factor - - - - - - - - - - - - - - - - - - Power Factor - - - Power Factor scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Exported - - - Real Energy scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Imported - - - - - - - - - - - - - - - - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - - - - - - - - - - - - - - - - Total Apparent Energy Imported - - - - - - - - - - - - - - - - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Imported Quadrant 2 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 3 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 4 - - - - - - - - - - - - - - - - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00214.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00214.xml deleted file mode 100644 index 54fa89a1..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00214.xml +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - - Float - - - - Total AC Current - - - - - Phase A Current - - - - - Phase B Current - - - - - Phase C Current - - - Current scale factor - - - Line to Neutral AC Voltage (average of active phases) - - - - - Phase Voltage AB - - - - - Phase Voltage BC - - - - - Phase Voltage CA - - - - - Line to Line AC Voltage (average of active phases) - - - - - Phase Voltage AN - - - - - Phase Voltage BN - - - - - Phase Voltage CN - - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - - - - - - - - - - - - - - - - AC Apparent Power - - - Apparent Power scale factor - - - - - - - - - - - - - - - - - - Reactive Power - - - Reactive Power scale factor - - - - - - - - - - - - - - - - - - Power Factor - - - Power Factor scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Exported - - - Real Energy scale factor - - - - - - - - - - - - - - - - - - Total Real Energy Imported - - - - - - - - - - - - - - - - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - - - - - - - - - - - - - - - - Total Apparent Energy Imported - - - - - - - - - - - - - - - - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Imported Quadrant 2 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 3 - - - - - - - - - - - - - - - - - - - - Total Reactive Power Exported Quadrant 4 - - - - - - - - - - - - - - - - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00220.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00220.xml deleted file mode 100644 index bc26cd07..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00220.xml +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 3 - 4 - 5 - 6 - 7 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - - - - - 0 - 1 - 2 - - - - - - - - - - - Include this model for secure metering - - - - - Total AC Current - - - Current scale factor - - - Average phase or line voltage - - Voltage scale factor - - - Frequency - - - Frequency scale factor - - - Total Real Power - - - Real Power scale factor - - - AC Apparent Power - - - Apparent Power scale factor - - - Reactive Power - - - Reactive Power scale factor - - - Power Factor - - - Power Factor scale factor - - - Total Real Energy Exported - - - Real Energy scale factor - - - Total Real Energy Imported - - - - - Total Apparent Energy Exported - - - Apparent Energy scale factor - - - Total Apparent Energy Imported - - - Reactive Energy scale factor - - - Total Reactive Energy Imported Quadrant 1 - - - - - Total Reactive Power Imported Quadrant 2 - - - - - Total Reactive Power Exported Quadrant 3 - - - - - Total Reactive Power Exported Quadrant 4 - - - - - Meter Event Flags - - - - Loss of power or phase - - - - - Voltage below threshold (Phase Loss) - - - - - Power Factor below threshold - - - - - Current Input over threshold - - - - - Voltage Input over threshold - - - - - Sensor not connected - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - Reserved for OEM use - - - - - - Timestamp value is the number of seconds since January 1, 2000 - - - - - Millisecond counter 0-999 - - - - - Algorithm used to compute the digital signature - For future proof - - - No digital signature - For test purposes only - - - - 64 bit AES signature algorithm is used - - - - - 256 bit ECC signature algorithm is used - - - - - - Number of registers comprising the digital signature. - The value of N must be at least 4 (64 bits) - - - - Sequence number of request - Shall be advanced for each request - - - - Digital Signature ID - User's role id 0-5 - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00302.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00302.xml deleted file mode 100644 index 75ebabc0..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00302.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - Include to support various irradiance measurements - - - - - Global Horizontal Irradiance - - - - - Plane-of-Array Irradiance - - - - - Diffuse Irradiance - - - - - Direct Normal Irradiance - - - - - Other Irradiance - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00303.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00303.xml deleted file mode 100644 index b29d8965..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00303.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - Include to support variable number of back of module temperature measurements - - - - - Back of module temperature measurement - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00304.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00304.xml deleted file mode 100644 index d7c9bbdb..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00304.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - Include to support orienation measurements - - - - - X-Axis inclination - - - - - Y-Axis inclination - - - - - Z-Axis inclination - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00305.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00305.xml deleted file mode 100644 index f4555f83..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00305.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - Include to support location measurements - - - - - UTC 24 hour time stamp to millisecond hhmmss.sssZ format - - - - - UTC Date string YYYYMMDD format - - - - - Location string (40 chars max) - - - - - Lattitude with seven degrees of precision - - - - - Longitude with seven degrees of precision - - - - - Altitude measurement in meters - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00306.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00306.xml deleted file mode 100644 index b2716fe5..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00306.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - Include to support a standard reference point - - - - - Global Horizontal Irrandiance - - - - - Current measurment at reference point - - - - - Voltage measurment at reference point - - - - - Temperature measurment at reference point - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00307.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00307.xml deleted file mode 100644 index 079e2225..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00307.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Base Meteorolgical Model - This model supersedes model 301 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  Precipitation Type (WMO 4680 SYNOP code reference) - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00308.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00308.xml deleted file mode 100644 index 2ac82ba2..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00308.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - Include to support a few basic measurements - - - - - Global Horizontal Irradiance - - - - - Back of module temperature measurement - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00401.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00401.xml deleted file mode 100644 index dc4930df..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00401.xml +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - - - - - - - - - - A basic string combiner - This model is SUPERSEDED by model 403 - - Current scale factor - Current scale factor for inputs - Amp-hour scale factor - Amp-hour scale factor for inputs - Voltage scale factor - Voltage scale factor for inputs - Power scale factor - Power scale factor for inputs - Energy scale factor - Energy scale factor for inputs - - - Maximum DC Current Rating - - - - - Number of Inputs - - - - - Bitmask value. Events - - - - - Bitmask value. Vendor defnied events - - - - - Total measured current - - - - - Total metered Amp-hours - - - - - Output Voltage - - - - - Internal operating temperature - - - - - Output power - - - - - Output energy - - - - - DC Performance ratio value - - - - - Uniquely identifies this input set - - - - - String Input Event Flags - - - - - String Input Vendor Event Flags - - - - - String Input Current - - - - - String Input Amp-Hours - - - - - String Input Voltage - - - - - String Input Power - - - - - String Input Energy - - - - - String Performance Ratio - - - - - Number of modules in this input string - Configured value - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00402.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00402.xml deleted file mode 100644 index aee9bfa9..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00402.xml +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - - - - - - - - - - - - - - - An advanced string combiner - This model is SUPERSEDED by model 404 - - Current scale factor - Current scale factor for inputs - Amp-hour scale factor - Amp-hour scale factor for inputs - Voltage scale factor - Voltage scale factor for inputs - Power scale factor - Power scale factor for inputs - Energy scale factor - Energy scale factor for inputs - - - Maximum DC Current Rating - - - - - Number of Inputs - - - - - Bitmask value. Events - - - - - Bitmask value. Vendor defnied events - - - - - Total measured current - - - - - Total metered Amp-hours - - - - - Output Voltage - - - - - Internal operating temperature - - - - - Output power - - - - - Output energy - - - - - DC Performance ratio value - - - - - Uniquely identifies this input set - - - - - String Input Event Flags - - - - - String Input Vendor Event Flags - - - - - String Input Current - - - - - String Input Amp-Hours - - - - - String Input Voltage - - - - - String Input Power - - - - - String Input Energy - - - - - String Performance Ratio - - - - - Number of modules in this input string - Configured value - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00403.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00403.xml deleted file mode 100644 index 0ec64f89..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00403.xml +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - - - - - - - - - - A basic string combiner model - This model supersedes model 401 - - Current scale factor - Current scale factor for inputs - Amp-hour scale factor - Amp-hour scale factor for inputs - Voltage scale factor - Voltage scale factor for inputs - Power scale factor - Power scale factor for inputs - Energy scale factor - Energy scale factor for inputs - - - Maximum DC Current Rating - - - - - Number of Inputs - - - - - Bitmask value. Events - - - - - Bitmask value. Vendor defnied events - - - - - Total measured current - - - - - Total metered Amp-hours - - - - - Output Voltage - - - - - Internal operating temperature - - - - - Output power - - - - - Output energy - - - - - DC Performance ratio value - - - - - Uniquely identifies this input set - - - - - String Input Event Flags - - - - - String Input Vendor Event Flags - - - - - String Input Current - - - - - String Input Amp-Hours - - - - - String Input Voltage - - - - - String Input Power - - - - - String Input Energy - - - - - String Performance Ratio - - - - - Number of modules in this input string - Configured value - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00404.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00404.xml deleted file mode 100644 index a4382a50..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00404.xml +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - - - - - - - - - - - - - - - An advanced string combiner including voltage and energy measurements - This model supersedes model 402 - - Current scale factor - Current scale factor for inputs - Amp-hour scale factor - Amp-hour scale factor for inputs - Voltage scale factor - Voltage scale factor for inputs - Power scale factor - Power scale factor for inputs - Energy scale factor - Energy scale factor for inputs - - - Maximum DC Current Rating - - - - - Number of Inputs - - - - - Bitmask value. Events - - - - - Bitmask value. Vendor defnied events - - - - - Total measured current - - - - - Total metered Amp-hours - - - - - Output Voltage - - - - - Internal operating temperature - - - - - Output power - - - - - Output energy - - - - - DC Performance ratio value - - - - - Uniquely identifies this input set - - - - - String Input Event Flags - - - - - String Input Vendor Event Flags - - - - - String Input Current - - - - - String Input Amp-Hours - - - - - String Input Voltage - - - - - String Input Power - - - - - String Input Energy - - - - - String Performance Ratio - - - - - Number of modules in this input string - Configured value - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00501.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00501.xml deleted file mode 100644 index 4e621fb1..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00501.xml +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - - - - - - - - - - - - - - - - - - - - - A solar module model supporing DC-DC converter - Float - - - - Enumerated value. Module Status Code - - - - Module is in the OFF state - - - - - Sleeping (auto-shutdown) or panel is at low/safe output power/voltage - - - - - Starting up or ON but not producting power; panel might have high voltage but is not producing power - - - - - Tracking MPPT power point - - - - - Forced power reduction / power de-rating - - - - - Shutting down - - - - - One or more faults exist - - - - - Standby (service or unit) - unlike SLEEPING in this mode the module might be at a high (unsafe) output voltage or power - - - - - Test mode - - - - - As defined in vendor specific status - - - - - - Module Vendor Status Code - - - - - Bitmask value. Module Event Flags - - - - Ground Fault - - - - - DC input over-voltage - - - - - Reserved - Reserved for u-inverter compatibility - - - - DC disconnect open - - - - - Reserved - Reserved for u-inverter compatibility - - - - Reserved - Reserved for u-inverter compatibility - - - - Manual shutdown - - - - - Over Temperature - - - - - Reserved - Reserved for u-inverter compatibility - - - - Reserved - Reserved for u-inverter compatibility - - - - Reserved - Reserved for u-inverter compatibility - - - - Reserved - Reserved for u-inverter compatibility - - - - Input fuse is blown - - - - - Under Temperature - - - - - Generic Memory or Communication Error - - - - - Arc Detection - - - - - Theft Detection - - - - - Output Over Current - - - - - DC Output Over Voltage - - - - - DC Output Under Voltage - - - - - Last Self Test failed; see vendor event for details - - - - - - Vendor specific flags - - - - - Current scale factor - - - - - Voltage scale factor - - - - - Power scale factor - - - - - Energy scale factor - - - - - Module Control - - - - - Vendor Module Control - - - - - Module Control Value - - - - - Time in seconds since 2000 epoch - - - - - Output Current - - - - - Output Voltage - - - - - Output Energy - - - - - Output Power - - - - - Module Temperature - - - - - Input Current - - - - - Input Voltage - - - - - Input Energy - - - - - Input Power - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00502.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00502.xml deleted file mode 100644 index 09dcaabd..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00502.xml +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - - - - - - - - - - - - - - - - - - - - - A solar module model supporing DC-DC converter - Integer - - - - Enumerated value. Module Status Code - - - - Module is in the OFF state - - - - - Sleeping (auto-shutdown) or panel is at low/safe output power/voltage - - - - - Starting up or ON but not producting power; panel might have high voltage but is not producing power - - - - - Tracking MPPT power point - - - - - Forced power reduction / power de-rating - - - - - Shutting down - - - - - One or more faults exist - - - - - Standby (service or unit) - unlike SLEEPING in this mode the module might be at a high (unsafe) output voltage or power - - - - - Test mode - - - - - As defined in vendor specific status - - - - - - Module Vendor Status Code - - - - - Bitmask value. Module Event Flags - - - - Ground Fault - - - - - DC input over-voltage - - - - - Reserved - Reserved for u-inverter compatibility - - - - DC disconnect open - - - - - Reserved - Reserved for u-inverter compatibility - - - - Reserved - Reserved for u-inverter compatibility - - - - Manual shutdown - - - - - Over Temperature - - - - - Reserved - Reserved for u-inverter compatibility - - - - Reserved - Reserved for u-inverter compatibility - - - - Reserved - Reserved for u-inverter compatibility - - - - Reserved - Reserved for u-inverter compatibility - - - - Input fuse is blown - - - - - Under Temperature - - - - - Generic Memory or Communication Error - - - - - Arc Detection - - - - - Theft Detection - - - - - Output Over Current - - - - - DC Output Over Voltage - - - - - DC Output Under Voltage - - - - - Last Self Test failed; see vendor event for details - - - - - - Vendor specific flags - - - - - Current scale factor - - - - - Voltage scale factor - - - - - Power scale factor - - - - - Energy scale factor - - - - - Module Control - - - - - Vendor Module Control - - - - - Module Control Value - - - - - Time in seconds since 2000 epoch - - - - - Output Current - - - - - Output Voltage - - - - - Output Energy - - - - - Output Power - - - - - Module Temperature - - - - - Input Current - - - - - Input Voltage - - - - - Input Energy - - - - - Input Power - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00601.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00601.xml deleted file mode 100644 index 9ac246dc..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00601.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 99 - - - - - - - - 0 - 1 - 2 - - - 0 - 1 - 2 - - - - - - - - - - - - - - 0 - 1 - 2 - - - 0 - 1 - 2 - - - - - - - Monitors and controls multiple trackers - Trackers may include GPS model 305 for location information - - 24 hour local time stamp to second - Local date in YYYYMMDD format - Number of the day in the year (1-366) - Number of trackers being controlled. Size of repeating block. - - Type of tracker - Not Set - Documented orientation information - Single Axis Horizontal - Single Axis Tilted Horizontal - Single Axis Azimuth - Dual Axis - Other type - - Descriptive name for this control unit - Descriptive name for this tracker unit - Auto target elevation in degrees from horizontal. Unimplemented for single axis azimuth tracker typeConformant implementations shall implement El or Az - Auto target azimuth in degrees from true north towards east. Unimplemented for single axis horizontal tracker typeConformant implementations shall implement El or Az - Actual elevation position in degrees from horizontal. Unimplemented for single axis azimuth tracker typeConformant implementations shall implement El or Az - Actual azimuth position in degrees from true north towards east. Unimplemented for single axis horizontal tracker typeConformant implementations shall implement El or Az - Scale Factor for targets and position measurements in degrees - Tracker alarm conditions - Tracker NOT at SetPoint - Tracker ELEVATION motor is obstructed - Tracker AZIMUTH motor is obstructed - - Global tracker alarm conditionsCombined tracker alarm conditions. See individual trackers for alarms - One or more trackers are NOT at SetPoint - One or more trackers ELEVATION motor is obstructed - One or more trackers AZIMUTH motor is obstructed - - Global manual override target position of elevation in degreees from horizontal. Unimplemented for single axis azimuth tracker type - Global manual override target position of azimuth in degrees from true north towards east. Unimplemented for single axis azimuth tracker type - Global Control register operates on all trackers. Normal operation is automatic. Operator can override the position by setting the ElCtl, AzCtl and enabling Manual operation. Entering calibration mode will revert to automatic operation after calibration is complete.The global controls all trackers - Follow programmed path - Go to a fixed position - Execute test mode - - Manual override target position of elevation in degreees from horizontal. Unimplemented for single axis azimuth tracker type - Manual override target position of azimuth in degrees from true north towards east. Unimplemented for single axis azimuth tracker type - Control register. Normal operation is automatic. Operator can override the position by setting the ElCtl, AzCtl and enabling Manual operation. Entering calibration mode will revert to automatic operation after calibration is complete. - Follow programmed path - Go to a fixed position - Execute test mode - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00801.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00801.xml deleted file mode 100644 index 77483a63..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00801.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - This model has been deprecated. - - - - - This model has been deprecated. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00802.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00802.xml deleted file mode 100644 index dc42277b..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00802.xml +++ /dev/null @@ -1,766 +0,0 @@ - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - - - 0 - 1 - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 99 - - - 1 - 2 - 3 - 4 - 5 - 6 - 99 - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - - - - 1 - 2 - - - 1 - 2 - 3 - - - - - - - - - - - - - - - - - - - - - - - - Nameplate charge capacity in amp-hours. - - - - - Nameplate energy capacity in DC watt-hours. - - - - - Maximum rate of energy transfer into the storage device in DC watts. - - - - - Maximum rate of energy transfer out of the storage device in DC watts. - - - - - Self discharge rate. Percentage of capacity (WHRtg) discharged per day. - - - - - Manufacturer maximum state of charge, expressed as a percentage. - - - - - Manufacturer minimum state of charge, expressed as a percentage. - - - - - Setpoint for maximum reserve for storage as a percentage of the nominal maximum storage. - - - - - Setpoint for maximum reserve for storage as a percentage of the nominal maximum storage. - - - - - State of charge, expressed as a percentage. - Measurement. - - - - Depth of discharge, expressed as a percentage. - Measurement. - - - - Charge status of storage device. Enumeration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Battery control mode. Enumeration. - Maps to DRCC.LocRemCtl in IEC 61850. - - - Battery is controlled remotely (e.g. by the site controller). - Value of 0 matches LocRemCtl in IEC 61850. - - - - Battery is controlled by a local operator (e.g. through battery HMI). - Value of 1 matches LocRemCtl in IEC 61850. - - - - - Value is incremented every second with periodic resets to zero. - - - - - Value is incremented every second with periodic resets to zero. - - - - - Used to reset any latched alarms. 1 = Reset. - Battery should reset to 0 when reset is complete. - - - - Type of battery. Enumeration. - Maps to DBAT.BatTyp in 61850. - - - Battery type is not applicable or unknown. - - - - - Lead-acid battery type. - - - - - Nickel-metal hydrate battery type. - - - - - Nickel-cadmium battery type. - - - - - Lithium-ion battery type. - - - - - Carbon-zinc battery type. - - - - - Zinc chloride battery type. - - - - - Alkaline battery type. - - - - - Rechargeable alkaline battery type. - - - - - Sodium-sulfur battery type. - - - - - Flow battery type. - - - - - Other battery type. - - - - - - State of the battery bank. Enumeration. - Must be reconciled with State in IEC 61850. - - - Battery bank is disconnected. All contactors are open. - - - - - Battery bank is initializing but not ready for operating. String balancing may occur. - - - - - Battery bank is ready for operation. All enabled contactors are closed. - - - - - Battery bank is connected and in standby/power saving mode. - - - - - Battery bank is connected but SoC is too low. Battery should be considered "offline". - - - - - Battery bank is suspending operation and will disconnect. - - - - - The battery has experienced a critical failure and may not be operated. - - - - - - Vendor specific battery bank state. Enumeration. - - - - - Number of cycles executed in the battery. - - - - - Percentage of battery life remaining. - - - - - Pad register. - - - - - Date the device warranty expires. - Number of days since 1/1/2000. - - - - Alarms and warnings. Bit flags. - - - - Unable to communcate with BMS or BMS is unable to communicate with battery strings. - - - - - Battery has exceeded maximum operating temperature - - - - - Battery is approaching maximum operating temperature. - - - - - Battery has exceeded minimum operating temperature - - - - - Battery is approaching minimum operating temperature. - - - - - Battery maximum charge current has been exceeded. - See AChaMax. - - - - Approaching battery maximum charge current. - See AChaMax. - - - - Battery maximum discharge current has been exceeded. - See ADisChaMax. - - - - Approaching battery maximum discharge current. - See ADisChaMax. - - - - Battery voltage has exceeded maximum limit. - - - - - Battery voltage is approaching maximum limit. - - - - - Battery voltage has exceeded minimum limit. - - - - - Battery voltage is approaching minimum limit. - - - - - Battery state of charge has reached or exceeded SoCMin - - - - - Battery state of charge is approaching SoCMin - - - - - Battery state of charge has reached or exceeded SoCMax - - - - - Battery state of charge is approaching SoCMax - - - - - A voltage imbalance exists between the strings in the battery bank. - - - - - A temperature imbalance exists between the strings in the battery bank. - - - - - A temperature imbalance is developing between the strings in the battery bank. - - - - - A contactor failed to open or close as requested. - - - - - One or more battery fans has failed. - - - - - Ground fault detected. - - - - - One or more doors are open. - - - - - A current imbalance exists between the strings in the battery bank. - - - - - A vendor specific alarm has occurred. - See EvtVnd1 and EvtVnd2 for more information. - - - - A vendor specific warning has occurred. - See EvtVnd1 and EvtVnd2 for more information. - - - - Reserved bit. - Do not implement. - - - - The battery bank has been configured incorrectly and will not operate. - - - - - The battery bank has been configured incorrectly and may not operated as expected. - - - - - - Alarms and warnings. Bit flags. - Reserved for future use. - - - - Vendor defined events. - - - - - Vendor defined events. - - - - - DC Bus Voltage. - Maps to ZBAT.V in IEC 61850. - - - - Instantaneous maximum battery voltage. - If not implemented, must implement AChaMax and ADisChaMax. - - - - Instantaneous minimum battery voltage. - If not implemented, must implement AChaMax and ADisChaMax. - - - - Maximum voltage for all cells in the bank. - Measurement. - - - - String containing the cell with maximum voltage. - - - - - Module containing the cell with maximum voltage. - - - - - Minimum voltage for all cells in the bank. - Measurement. - - - - String containing the cell with minimum voltage. - - - - - Module containing the cell with minimum voltage. - - - - - Average cell voltage for all cells in the bank. - Calculation based on measurements. - - - - Total DC current flowing to/from the battery bank. - Measurement. - - - - Instantaneous maximum DC charge current. - Calculation. If not implemented, must implement VMax and VMin. - - - - Instantaneous maximum DC discharge current. - Calculation. If not implemented, must implement VMax and VMin. - - - - Total power flowing to/from the battery bank. - Measurement. - - - - Request from battery to start or stop the inverter. Enumeration. - Used in special states such as manual battery charging. - - - Battery has no requests of the inverter. - - - - - Battery requests that the inverter be started. - Battery is notified of inverter state change through SetInvState. - - - - Battery requests that the inverter be stopped. - Battery is notified of inverter state change through SetInvState. - - - - - AC Power requested by battery. - Used in special states such as string balancing. - - - - Instruct the battery bank to perform an operation such as connecting. Enumeration. - - - - Initialize the battery bank and close contactors for all enabled strings. - - - - - Open contactors for all strings. - - - - - - Set the current state of the inverter. - Information needed by battery for some operations. - - - - - - - - - - - - - - - - - - - Scale factor for charge capacity. - - - - - Scale factor for energy capacity. - - - - - Scale factor for maximum charge and discharge rate. - - - - - Scale factor for self discharge rate. - - - - - Scale factor for state of charge values. - - - - - Scale factor for depth of discharge. - - - - - Scale factor for state of health. - - - - - Scale factor for DC bus voltage. - - - - - Scale factor for cell voltage. - - - - - Scale factor for DC current. - - - - - Scale factor for instantationous DC charge/discharge current. - - - - - Scale factor for AC power request. - - - - - Pad register. - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00803.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00803.xml deleted file mode 100644 index d5aa7973..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00803.xml +++ /dev/null @@ -1,822 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - - - - - - 1 - 2 - - - 1 - 2 - - - - - - - - - - - - - - Number of strings in the bank. - - - - - Number of strings with contactor closed. - - - - - Maximum temperature for all modules in the bank. - Measurement. - - - - String containing the module with maximum temperature. - - - - - Module with maximum temperature. - - - - - Minimum temperature for all modules in the bank. - Measurement. - - - - String containing the module with minimum temperature. - - - - - Module with minimum temperature. - - - - - Average temperature for all modules in the bank. - Calculation based on measurements. - - - - Maximum string voltage for all strings in the bank. - Measurement. - - - - String with maximum voltage. - - - - - Minimum string voltage for all strings in the bank. - Measurement. - - - - String with minimum voltage. - - - - - Average string voltage for all strings in the bank. - Calculation based on measurements. - - - - Maximum current of any string in the bank. - Measurement. - - - - String with the maximum current. - - - - - Minimm current of any string in the bank. - Measurement. - - - - String with the minimum current. - - - - - Average string current for all strings in the bank. - Calculation based on measurements. - - - - Total number of cells that are currently being balanced. - - - - - Scale factor for cell voltage. - - - - - Scale factor for module temperatures. - - - - - Scale factor for Max String Current and Min String Current. - - - - - Scale factor for String State of Health. - - - - - Pad register. - - - - - Pad register. - - - - - Count of modules in the string. - - - - - Current status of the string. - - - - String is enabled and will connect next time battery is asked to connect. - - - - - String contactor is closed. - If string has multiple contactors, indicates that all contactors are closed. - - - - - Battery string state of charge, expressed as a percentage. - Measurement. - - - - Battery string state of health, expressed as a percentage. - Measurement. - - - - String current measurement. - Measurement. - - - - Maximum voltage for all cells in the string. - Measurement. - - - - Module containing the maximum cell voltage. - - - - - Minimum voltage for all cells in the string. - Measurement. - - - - Module containing the minimum cell voltage. - - - - - Average voltage for all cells in the string. - Calculation based on measurements. - - - - Maximum temperature for all modules in the bank. - Measurement. - - - - Module with the maximum temperature. - - - - - Minimum temperature for all modules in the bank. - Measurement. - - - - Module with the miniumum temperature. - - - - - Average temperature for all modules in the bank. - Calculation based on measurements. - - - - Reason why the string is currently disabled. - - - - No reason provided. - - - - - A fault has occurred which caused the string to be disabled. - - - - - The string has been disabled for maintenance reasons. - - - - - The string has been disabled by an external user or controller. - - - - - The string has been disabled for some other reason. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Alarms, warnings and status values. Bit flags. - - - - String is unable to communicate with battery modules. - - - - - Battery string has exceeded maximum operating temperature - - - - - Battery string is approaching maximum operating temperature. - - - - - Battery string has exceeded minimum operating temperature - - - - - Battery string is approaching minimum operating temperature. - - - - - Battery string maximum charge current has been exceeded. - See AChaMax in model S 802. - - - - Approaching battery string maximum charge current. - See AChaMax in model S 802. - - - - Battery string maximum discharge current has been exceeded. - See ADisChaMax in model S 802. - - - - Approaching battery string maximum discharge current. - See ADisChaMax in model S 802. - - - - Battery string voltage has exceeded maximum limit. - - - - - Battery string voltage is approaching maximum limit. - - - - - Battery string voltage has exceeded minimum limit. - - - - - Battery string voltage is approaching minimum limit. - - - - - Battery string state of charge has reached or exceeded SoCMin - - - - - Battery string state of charge is approaching SoCMin - - - - - Battery string state of charge has reached or exceeded SoCMax - - - - - Battery string state of charge is approaching SoCMax - - - - - A voltage imbalance exists between the modules in the battery string. - - - - - A temperature imbalance exists between the modules in the battery string. - - - - - A temperature imbalance is developing between the modules in the battery string. - - - - - A contactor failed to open or close as requested. - - - - - One or more battery fans has failed. - - - - - Ground fault detected. - - - - - One or more doors are open. - - - - - Reserved bit. - Do not implement. - - - - A vendor specific alarm has occurred. - See EvtVnd1 and EvtVnd2 for more information. - - - - A vendor specific warning has occurred. - See EvtVnd1 and EvtVnd2 for more information. - - - - Reserved bit. - Do not implement. - - - - The battery string has been configured incorrectly and will not operate. - - - - - The battery string has been configured incorrectly and may not operate as expected. - - - - - - Alarms, warnings and status values. Bit flags. - Reserved for future use. - - - - Vendor defined events. - - - - - Vendor defined events. - - - - - - - - - Connect did not fail. - - - - - A button was pushed which prevented connection. - - - - - Ground fault during auto-connect. - - - - - Outside voltage target window during auto-connect. - - - - - The string is not enabled. - - - - - A fuse is open which prevents connection. - - - - - A contactor failed to operate. - - - - - A failure during precharge occurred. - - - - - A string fault has occurred. - See StrEvt1 for more information. - - - - - Enables and disables the string. - Should reset to 0 upon completion. - - - Enable the string. - - - - - Disable the string. - - - - - - Connects and disconnects the string. - Should reset to 0 upon completion. - - - Connect the string. - - - - - Disconnect the string. - - - - - - Pad register. - - - - - Pad register. - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00804.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00804.xml deleted file mode 100644 index 0cf9e443..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00804.xml +++ /dev/null @@ -1,600 +0,0 @@ - - - - - - - - - 0 - 1 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - - - - - - - 1 - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Index of the string within the bank. - Indices are one-based. - - - - Count of modules in the string. - - - - - Current status of the string. - - - - String is enabled and will connect next time battery is asked to connect. - - - - - String contactor is closed. - If string has multiple contactors, indicates that all contactors are closed. - - - - - Battery string state of charge, expressed as a percentage. - Measurement. - - - - Battery string state of health, expressed as a percentage. - Measurement. - - - - Depth of discharge for the string, expressed as a percentage. - Measurement. - - - - String current measurement. - Measurement. - - - - String voltage measurement. - Measurement. - - - - Maximum voltage for all cells in the string. - Measurement. - - - - Module containing the cell with maximum cell voltage. - - - - - Minimum voltage for all cells in the string. - Measurement. - - - - Module containing the cell with minimum cell voltage. - - - - - Average voltage for all cells in the string. - Calculation based on measurements. - - - - Maximum temperature for all modules in the bank. - Measurement. - - - - Module with the maximum temperature. - - - - - Minimum temperature for all modules in the bank. - Measurement. - - - - Module with the minimum temperature. - - - - - Average temperature for all modules in the bank. - Calculation based on measurements. - - - - Pad register. - - - - - Alarms, warnings and status values. Bit flags. - - - - String is unable to communicate with battery modules. - - - - - Battery string has exceeded maximum operating temperature - - - - - Battery string is approaching maximum operating temperature. - - - - - Battery string has exceeded minimum operating temperature - - - - - Battery string is approaching minimum operating temperature. - - - - - Battery string maximum charge current has been exceeded. - See AChaMax in model S 802. - - - - Approaching battery string maximum charge current. - See AChaMax in model S 802. - - - - Battery string maximum discharge current has been exceeded. - See ADisChaMax in model S 802. - - - - Approaching battery string maximum discharge current. - See ADisChaMax in model S 802. - - - - Battery string voltage has exceeded maximum limit. - - - - - Battery string voltage is approaching maximum limit. - - - - - Battery string voltage has exceeded minimum limit. - - - - - Battery string voltage is approaching minimum limit. - - - - - Battery string state of charge has reached or exceeded SoCMin. - - - - - Battery string state of charge is approaching SoCMin. - - - - - Battery string state of charge has reached or exceeded SoCMax. - - - - - Battery string state of charge is approaching SoCMax. - - - - - A voltage imbalance exists between the modules in the battery string. - - - - - A temperature imbalance exists between the modules in the battery string. - - - - - A temperature imbalance is developing between the modules in the battery string. - - - - - A contactor failed to open or close as requested. - - - - - One or more battery fans has failed. - - - - - Ground fault detected. - - - - - One or more doors are open. - - - - - Reserved bit. - Do not implement. - - - - A vendor specific alarm has occurred. - See EvtVnd1 and EvtVnd2 for more information. - - - - A vendor specific warning has occurred. - See EvtVnd1 and EvtVnd2 for more information. - - - - Reserved bit. - Do not implement. - - - - The battery string has been configured incorrectly and will not operate as expected. - - - - - The battery string has been configured incorrectly and may not operate as expected. - - - - - - Alarms, warnings and status values. Bit flags. - Reserved for future use. - - - - Vendor defined events. - - - - - Vendor defined events. - - - - - - - - - Connect did not fail. - - - - - A button was pushed which prevented connection. - - - - - Ground fault during auto-connect. - - - - - Outside voltage target window during auto-connect. - - - - - The string is not enabled. - - - - - A fuse is open which prevents connection. - - - - - A contactor failed to operate. - - - - - A precharge failure occurred. - - - - - A string fault has occurred. - See Evt1 for more information. - - - - - Enables and disables the string. Should reset to 0 upon completion. - - - - - Connects and disconnects the string. - Should reset to 0 upon completion. - - - Connect the string. - - - - - Disconnect the string. - - - - - - Number of cells currently being balanced in the string. - - - - - Number of discharge cycles executed upon the string. - - - - - Scale factor for string state of charge. - - - - - Scale factor for string state of health. - - - - - Scale factor for string depth of discharge. - - - - - Scale factor for string current. - - - - - Scale factor for string voltage. - - - - - Scale factor for cell voltage. - - - - - Scale factor for module temperature. - - - - - Pad register. - - - - - - - - Count of all cells in the module. - - - - - Module state of charge, expressed as a percentage. - - - - - Module state of health, expressed as a percentage. - - - - - Maximum voltage for all cells in the module. - Measurement. - - - - Cell with maximum voltage. - - - - - Minimum voltage for all cells in the module. - Measurement. - - - - Cell with minimum voltage. - - - - - Average voltage for all cells in the module. - Calculation based on measurements. - - - - Maximum temperature for all cells in the module. - Measurement. - - - - Cell with maximum temperature. - - - - - Minimum temperature for all cells in the module. - Measurement. - - - - Cell with minimum temperature. - - - - - Average temperature for all cells in the module. - Calculation based on measurements. - - - - Pad register. - - - - - Pad register. - - - - - Pad register. - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00805.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00805.xml deleted file mode 100644 index b3409168..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00805.xml +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - Index of the module within the string. - Indices are one-based. - - - - Count of all cells in the module. - - - - - Module state of charge, expressed as a percentage. - - - - - Module state of health, expressed as a percentage. - - - - - Voltage of the module. - Measurement. - - - - Depth ofdischarge for the module. - Measurement. - - - - Maximum voltage for all cells in the module. - Measurement. - - - - Cell with the maximum voltage. - - - - - Minimum voltage for all cells in the module. - Measurement. - - - - Cell with the minimum voltage. - - - - - Average voltage for all cells in the module. - Calculation based on measurements. - - - - Maximum temperature for all cells in the module. - Measurement. - - - - Cell with the maximum cell temperature. - - - - - Minimum temperature for all cells in the module. - Measurement. - - - - Cell with the maximum cell temperature. - - - - - Average temperature for all cells in the module. - Calculation based on measurements. - - - - Serial number for the module. - - - - Number of cells currently being balanced in the module. - - - - Count of cycles executed. - - - - Scale factor for module voltage. - - - - - Scale factor for module state of charge. - - - - - Scale factor for module state of health. - - - - - Scale factor for module depth of discharge. - - - - - Scale factor for cell voltage. - - - - - Scale factor for module temperature. - - - - - Pad register. - - - - - - - - Cell terminal voltage. - Measurement. - - - - Cell temperature. - Measurement. - - - - Status of the cell. - - - - Cell is currently being balanced. - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00806.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00806.xml deleted file mode 100644 index eed4b31e..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00806.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00807.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00807.xml deleted file mode 100644 index e44f9330..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00807.xml +++ /dev/null @@ -1,1064 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - - - 0 - 1 - 2 - 3 - 4 - 5 - - - - - - - - - - - - - - - 0 - 1 - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - - - 0 - 1 - 2 - 3 - 4 - 5 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - 1 - 2 - - - 1 - 2 - - - 0 - 1 - 2 - 3 - 4 - - - - - - - - - - - - Index of the string within the bank. - Indices are one-based. - - - - Number of modules in this string. - - - - - Number of electrically connected modules in this string. - - - - - Maximum voltage for all modules in the string. - Measurement. - - - - Module with the maximum voltage. - - - - - Minimum voltage for all modules in the string. - Measurement. - - - - Module with the minimum voltage. - - - - - Average voltage for all modules in the string. - Calculation based on measurements. - - - - Maximum voltage for all cells in the string. - Measurement. - - - - Module containing the cell with the maximum voltage. - - - - - Stack containing the cell with the maximum voltage. - - - - - Minimum voltage for all cells in the string. - Measurement. - - - - Module containing the cell with the minimum voltage. - - - - - Stack containing the cell with the minimum voltage. - - - - - Average voltage for all cells in the string. - Calculation based on measurements. - - - - Maximum electrolyte temperature for all modules in the string. - Measurement. - - - - Module with the maximum temperature. - - - - - Minimum electrolyte temperature for all modules in the string. - Measurement. - - - - Module with the minimum temperature. - - - - - Average electrolyte temperature for all modules in the string. - Calculation based on measurements. - - - - Alarms, warnings and status values. Bit flags. - - - - BMS is unable to communicate with modules. - - - - - Battery string has exceeded maximum operating temperature - - - - - Battery string is approaching maximum operating temperature. - - - - - Battery string has exceeded minimum operating temperature - - - - - Battery string is approaching minimum operating temperature. - - - - - Battery string maximum charge current has been exceeded. - See AChaMax in model S 802. - - - - Approaching battery string maximum charge current. - See AChaMax in model S 802. - - - - Battery string maximum discharge current has been exceeded. - See ADisChaMax in model S 802. - - - - Approaching battery string maximum discharge current. - See ADisChaMax in model S 802. - - - - Battery string voltage has exceeded maximum limit. - - - - - Battery string voltage is approaching maximum limit. - - - - - Battery string voltage has exceeded minimum limit. - - - - - Battery string voltage is approaching minimum limit. - - - - - Battery string state of charge has reached or exceeded SoCMin. - - - - - Battery string state of charge is approaching SoCMin. - - - - - Battery string state of charge has reached or exceeded SoCMax. - - - - - Battery string state of charge is approaching SoCMax - - - - - A voltage imbalance exists between the modules in the string. - - - - - Reserved bit. - Do not implement. - - - - Reserved bit. - Do not implement. - - - - A contactor failed to open or close as requested. - - - - - One or more battery string fans has failed. - - - - - Ground fault detected. - - - - - One or more doors are open. - - - - - Reserved bit. - Do not implement. - - - - A vendor specific alarm has occurred. - See EvtVnd1 and EvtVnd2 for more information. - - - - A vendor specific warning has occurred. - See EvtVnd1 and EvtVnd2 for more information. - - - - A fire has been detected. - - - - - The battery string has been configured incorrectly and will not operate. - - - - - The battery string has been configured incorrectly and may not operate as expected. - - - - - - Alarms, warnings and status values. Bit flags. - - - - A leak has been detected. - - - - - A pump has experienced an alarm condition or some other error. - - - - - Pressure exceeds maximum value. - - - - - Pressure approaching maximum value. - - - - - Flow exceeds minimum value. - - - - - Flow approaching minimum value. - - - - - - Vendor defined events. - - - - - Vendor defined events. - - - - - Scale factor for voltage. - - - - - Scale factor for temperature. - - - - - Scale factor for state of charge. - - - - - Scale factor for open circuit voltage. - - - - - Pad register. - - - - - - - - Index of the module within the string. - Indices are one-based. - - - - Number of stacks in this module. - - - - - Current status of the module. - - - - Module is enabled and will connect next time battery is asked to connect. - - - - - Module contactor is closed. - If module has multiple contactors, indicates that all contactors are closed. - - - - - State of charge for this module. - - - - - Open circuit voltage for this module. - - - - - External voltage fo this module. - - - - - Maximum voltage for all cells in this module. - Measurement. - - - - Cell with the maximum cell voltage. - - - - - Minimum voltage for all cells in this module. - Measurement. - - - - Cell with the minimum cell voltage. - - - - - Average voltage for all cells in this module. - Calculation based on measurements. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Alarms, warnings and status values. Bit flags. - - - - Module is unable to communicate with the BMS or other components. - - - - - Module has exceeded maximum operating temperature - - - - - Module is approaching maximum operating temperature. - - - - - Module has exceeded minimum operating temperature - - - - - Module is approaching minimum operating temperature. - - - - - Module maximum charge current has been exceeded. - See AChaMax in model S 802. - - - - Approaching module maximum charge current. - See AChaMax in model S 802. - - - - Module maximum discharge current has been exceeded. - See ADisChaMax in model S 802. - - - - Approaching module maximum discharge current. - See ADisChaMax in model S 802. - - - - Module voltage has exceeded maximum limit. - - - - - Module voltage is approaching maximum limit. - - - - - Module voltage has exceeded minimum limit. - - - - - Module voltage is approaching minimum limit. - - - - - Module state of charge has reached or exceeded SoCMin. - - - - - Module state of charge is approaching SoCMin. - - - - - Module state of charge has reached or exceeded SoCMax. - - - - - Module state of charge is approaching SoCMax. - - - - - A voltage imbalance exists between the stacks in the module. - - - - - Reserved bit. - Do not implement. - - - - Reserved bit. - Do not implement. - - - - A contactor failed to open or close as requested. - - - - - One or more module fans has failed. - - - - - Ground fault detected. - - - - - One or more doors are open. - - - - - Reserved bit. - Do not implement. - - - - Reserved bit. - Do not implement. - - - - Reserved bit. - Do not implement. - - - - A fire has been detected. - - - - - The battery module has been configured incorrectly and will not operate. - - - - - The battery module has been configured incorrectly and may not operate as expected. - - - - - - Alarms, warnings and status values. Bit flags. - - - - A leak has been detected. - - - - - A pump has experienced an alarm condition or some other error. - - - - - Pressure exceeds maximum value. - - - - - Pressure approaching maximum value. - - - - - Flow exceeds minimum value. - - - - - Flow approaching minimum value. - - - - - - - - - - Connect did not fail. - - - - - A button was pushed which prevented connection. - - - - - Ground fault during auto-connect. - - - - - Outside voltage target window during auto-connect. - - - - - The module is not enabled. - - - - - A fuse is open which prevents connection. - - - - - A contactor failed to operate. - - - - - A failure during precharge occurred. - - - - - A module fault has occurred. - See ModEvt1 and ModEvt2 for more information. - - - - - Enables and disables the module. - Should reset to 0 upon completion. - - - Enable the module. - - - - - Disable the module. - - - - - - Connects and disconnects the module. - Should reset to 0 upon completion. - - - Connect the module. - - - - - Disconnect the module. - - - - - - Reason why the module is currently disabled. - - - - No reason provided. - - - - - A fault has occurred which caused the module to be disabled. - - - - - The module has been disabled for maintenance reasons. - - - - - The module has been disabled by an external user or controller. - - - - - The module has been disabled for some other reason. - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00808.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00808.xml deleted file mode 100644 index 88bd1849..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00808.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00809.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00809.xml deleted file mode 100644 index 9f950c47..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_00809.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_63001.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_63001.xml deleted file mode 100644 index 42fb57c5..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_63001.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_63002.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_63002.xml deleted file mode 100644 index 4eeff79e..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_63002.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64001.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64001.xml deleted file mode 100644 index 00bd60ea..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64001.xml +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64020.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64020.xml deleted file mode 100644 index d08c200e..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64020.xml +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - scale of 0-10V - - - - - scale of 0-10V - - - - - scale of 0-10V - - - - - scale of 0-10V - - - - - scale of 0-10V - - - - - scale of 0-10V - - - - - scale of 0-10V - - - - - scale of 4-20mA - - - - - in 4-20mA or 4-20mA - - - - - in 4-20mA or 4-20mA - - - - - in 4-20mA or 4-20mA - - - - - in 4-20mA or 4-20mA - - - - - in 4-20mA or 4-20mA - - - - - in 4-20mA or 4-20mA - - - - - frequency in Hz - - - - - - - - - - - - - - - - - - - - always 0 in reading, used the code 0xC0DA during the writting for resetting them - - - - - always 0 in reading, used the code 0xC0DA during the writting for resetting the system - - - - - strings of 16 caracters - - - - - string of 11 caracters - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64101.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64101.xml deleted file mode 100644 index 98164c8b..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64101.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64110.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64110.xml deleted file mode 100644 index 360783d2..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64110.xml +++ /dev/null @@ -1,350 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - - - - - - - - - - 0 - 1 - - - - - - - - - - 0 - 1 - 2 - - - - 0 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64111.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64111.xml deleted file mode 100644 index 52526f31..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64111.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - 0 - 1 - 2 - 3 - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64112.xml b/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64112.xml deleted file mode 100644 index 6a92215a..00000000 --- a/src/python/phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/smdx_64112.xml +++ /dev/null @@ -1,571 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - 0 - 1 - 2 - - - 0 - 1 - - - 0 - 1 - 2 - 3 - - - - 0 - 1 - - - 0 - 1 - - - - - 0 - 1 - 2 - - - - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - - - 0 - 1 - 2 - - - 0 - 1 - - - 0 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/python/phenix_apps/apps/sceptre/templates/fep_template.mako b/src/python/phenix_apps/apps/sceptre/templates/fep_template.mako index d0d3325a..3c877d6c 100644 --- a/src/python/phenix_apps/apps/sceptre/templates/fep_template.mako +++ b/src/python/phenix_apps/apps/sceptre/templates/fep_template.mako @@ -13,59 +13,11 @@ def intercambio(dictionary, string): string = string.replace(item, dictionary[item]) return string -sunspec_register = '' %>\ % for fd_config in server_configs: % for protocol in fd_config.protocols: - % if protocol.protocol == 'sunspec': - - - identifier - 1400204883 - - - end - 65535 - - - end-length - 0 - - % endif % for device in protocol.devices: % for register in device.registers: - % if device.protocol == 'sunspec': - % if register.static: - <% - if register.name == 'length': - sunspec_register += '-length' - else: - sunspec_register = register.name - %> - - ${sunspec_register} - % if 'string' in register.fieldtype: - ${register.field} - % else: - ${register.field} - % endif - - % else: - <% - io_name = fd_config.name + '_' + 'O' + str(register.addr) - %> - - ${register.name} - ${io_name} - % if register.field in ['active']: - binary - % else: - analog - % endif - - % endif - % else: <% input_regs = ['analog-input', 'binary-input', 'input-register', 'discrete-input'] @@ -80,7 +32,6 @@ sunspec_register = '' ${io_name} ${type_} - % endif % endfor % endfor % endfor @@ -202,15 +153,6 @@ sunspec_register = '' tcp://${fep_config.ipaddr}:502 ${fep_config.name}-modbus-server.log - % elif fep_protocol.protocol == 'sunspec': - - 5502 - ${fep_config.name}-sunspec-tcp-server.log - -
40000
- identifier -
- ${fep_config.ipaddr} % elif fep_protocol.protocol == 'iec60870-5-104': 2 @@ -227,22 +169,6 @@ sunspec_register = '' <% fep_device = next(fep_device_iter) %> <% fep_register_iter = iter(fep_device.registers) %> % for register in device.registers: - % if protocol.protocol == 'sunspec': - <% - sunspec_reg_addr = next(fep_register_iter).addr - if register.name == 'length': - sunspec_reg_name += '-length' - else: - sunspec_reg_name = register.name - %> - -
${sunspec_reg_addr}
- % if register.scaling: - ${register.scaling} - % endif - <${register.fieldtype}>${sunspec_reg_name} -
- % else: <% input_regs = ['analog-input', 'binary-input', 'input-register', 'discrete-input'] @@ -260,7 +186,6 @@ sunspec_register = '' % endif var_${io_name} - % endif % endfor % endfor % endif @@ -270,16 +195,6 @@ sunspec_register = '' % elif fep_protocol.protocol == 'modbus' or fep_protocol.protocol == 'modbus-serial':
- % elif fep_protocol.protocol == 'sunspec': - -
${sunspec_reg_addr + 1}
- end -
- -
${sunspec_reg_addr + 2}
- end-length -
- % elif fep_protocol.protocol == 'iec60870-5-104': % else: @@ -298,25 +213,6 @@ mapa_nombre_entrada = {} % for protocol in fd_config.protocols: % for device in protocol.devices: % for register in device.registers: - % if protocol.protocol == 'sunspec': - % if not register.static: - <% - io_name = fd_config.name + '_' + 'I' + str(register.addr) - %> - % if register.field in ['active']: - - % else: - - % endif - ${io_name} - ${register.devname}.${register.field} - % if register.field in ['active']: - - % else: - - % endif - % endif - % else: <% input_regs = ['analog-input', 'binary-input', 'input-register', 'discrete-input'] @@ -340,7 +236,6 @@ mapa_nombre_entrada = {} % else: % endif - % endif % endfor % endfor % endfor @@ -355,25 +250,6 @@ mapa_nombre_salida = {} % for protocol in fd_config.protocols: % for device in protocol.devices: % for register in device.registers: - % if protocol.protocol == 'sunspec': - % if not register.static: - <% - io_name = fd_config.name + '_' + 'O' + str(register.addr) - %> - % if register.field in ['active']: - - % else: - - % endif - ${io_name} - ${register.devname}.${register.field} - % if register.field in ['active']: - - % else: - - % endif - % endif - % else: <% input_regs = ['analog-input', 'binary-input', 'input-register', 'discrete-input'] @@ -398,7 +274,6 @@ mapa_nombre_salida = {} % else: % endif - % endif % endfor % endfor % endfor diff --git a/src/python/phenix_apps/apps/sceptre/templates/sceptre_start.mako b/src/python/phenix_apps/apps/sceptre/templates/sceptre_start.mako index 426c47ff..3ae7603d 100644 --- a/src/python/phenix_apps/apps/sceptre/templates/sceptre_start.mako +++ b/src/python/phenix_apps/apps/sceptre/templates/sceptre_start.mako @@ -34,9 +34,6 @@ cd /root/OpenPLC_v2 ./iec2c st_files/openplc.st mv -f POUS.c POUS.h LOCATED_VARIABLES.h VARIABLES.csv Config0.c Config0.h Res0.c ./core/ ./build_core.sh - % elif name.lower() == 'sunspec': -echo -e "LD_LIBRARY_PATH=/usr/local/lib\nGOBENNU_CONFIG_FILE=/etc/sceptre/config.xml" > /etc/gobennu-environment -systemctl start gobennu % elif name.lower() == 'field-device': echo "[Hashes] reghash = `sha256sum /usr/bin/bennu-field-deviced | awk '{print $1}'` diff --git a/src/python/phenix_apps/apps/sceptre/templates/sunspec.mako b/src/python/phenix_apps/apps/sceptre/templates/sunspec.mako deleted file mode 100644 index 63bd610e..00000000 --- a/src/python/phenix_apps/apps/sceptre/templates/sunspec.mako +++ /dev/null @@ -1,293 +0,0 @@ - - - - ${name} -% if cycle_time: - ${cycle_time} -% else: - 1000 -% endif - -% if infra == 'power-transmission': - - bus - I0 - analog - - - base_kv - I1 - analog - - - mvar - I2 - analog - - - mw_max - I3 - analog - - - mw_min - I4 - analog - - - mva_base - I5 - analog - - - freq - I6 - analog - - - voltage_setpoint - I7 - analog - - - voltage_angle - I8 - analog - - - current - I9 - analog - - - active - O0 - binary - - - voltage - O1 - analog - - - mw - O2 - analog - -% endif - - - identifier - 1400204883 - - - end - 65535 - - - end-length - 0 - -<% -sunspec_reg_name = '' -%> -% for register in device.registers: - % if register.static: - <% - if register.name == 'length': - sunspec_reg_name += '-length' - else: - sunspec_reg_name = register.name - %> - - ${sunspec_reg_name} - % if 'string' in register.fieldtype: - ${register.field} - % else: - ${register.field} - % endif - - % else: - <% - io_name = 'O' + str(register.addr + 100) - %> - - ${register.name} - ${io_name} - % if register.field in ['active']: - binary - % else: - analog - % endif - - % endif -% endfor - - - - ${ipaddr} - 502 - ${name}-sunspec-tcp-server.log - -
40000
- identifier -
-<% -sunspec_reg_addr = 0 -sunspec_reg_name = '' -%> -% for register in device.registers: - <% - sunspec_reg_addr = register.addr - if register.name == 'length': - sunspec_reg_name += '-length' - else: - sunspec_reg_name = register.name - %> - -
${register.addr}
- % if register.scaling: - ${register.scaling} - % endif - <${register.fieldtype}>${sunspec_reg_name} -
-% endfor - -
${sunspec_reg_addr + 1}
- end -
- -
${sunspec_reg_addr + 2}
- end-length -
-
-
- - ${publish_endpoint} -% if infra == 'power-transmission': - - I0 - ${devname}.bus - - - I1 - ${devname}.base_kv - - - I2 - ${devname}.mvar - - - I3 - ${devname}.mw_max - - - I4 - ${devname}.mw_min - - - I5 - ${devname}.mva_base - - - I6 - ${devname}.freq - - - I7 - ${devname}.voltage_setpoint - - - I8 - ${devname}.voltage_angle - - - I9 - ${devname}.current - -% endif -% for register in device.registers: - % if not register.static: - <% - io_name = 'I' + str(register.addr + 100) - %> - % if register.field in ['active']: - - % else: - - % endif - ${io_name} - ${register.devname}.${register.field} - % if register.field in ['active']: - - % else: - - % endif - % endif -% endfor - - - ${server_endpoint} -% if infra == 'power-transmission': - - O0 - ${devname}.active - - - O1 - ${devname}.voltage - - - O2 - ${devname}.mw - -% endif -% for register in device.registers: - % if not register.static: - <% - io_name = 'O' + str(register.addr + 100) - %> - % if register.field in ['active']: - - % else: - - % endif - ${io_name} - ${register.devname}.${register.field} - % if register.field in ['active']: - - % else: - - % endif - % endif -% endfor - -% if infra == 'power-transmission': - - - -% endif -
-
diff --git a/src/python/phenix_apps/apps/sceptre/tests/infrastructures_golden.txt b/src/python/phenix_apps/apps/sceptre/tests/infrastructures_golden.txt index fe8c63f5..87d4de2a 100644 --- a/src/python/phenix_apps/apps/sceptre/tests/infrastructures_golden.txt +++ b/src/python/phenix_apps/apps/sceptre/tests/infrastructures_golden.txt @@ -18,7 +18,6 @@ batch-process | 'fillingstation' | modbus | range=(0, 1000) infrastructure=batch batch-process | 'fillingstation' | modbus-serial | range=(0, 1000) infrastructure=batch-process analog-read=['request', 'volume_wasted', 'backlog'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 request; input-register:30001 volume_wasted; input-register:30002 backlog batch-process | 'fillingstation' | bacnet | range=(0, 1000) infrastructure=batch-process analog-read=['request', 'volume_wasted', 'backlog'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 request; analog-input:1 volume_wasted; analog-input:2 backlog batch-process | 'fillingstation' | iec60870-5-104 | range=(0, 1000) infrastructure=batch-process analog-read=['request', 'volume_wasted', 'backlog'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 request; analog-input:2 volume_wasted; analog-input:3 backlog -batch-process | 'fillingstation' | sunspec | range=(0, 1000) infrastructure=batch-process analog-read=['request', 'volume_wasted', 'backlog'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 batch-process | 'gate' | * | raises AppError batch-process | 'generator' | dnp3 | range=(0, 1000) infrastructure=batch-process analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 fuel batch-process | 'generator' | dnp3-serial | range=(0, 1000) infrastructure=batch-process analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 fuel @@ -26,7 +25,6 @@ batch-process | 'generator' | modbus | range=(0, 1000) infrastructure=batch-proc batch-process | 'generator' | modbus-serial | range=(0, 1000) infrastructure=batch-process analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 fuel batch-process | 'generator' | bacnet | range=(0, 1000) infrastructure=batch-process analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 fuel batch-process | 'generator' | iec60870-5-104 | range=(0, 1000) infrastructure=batch-process analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 fuel -batch-process | 'generator' | sunspec | range=(0, 1000) infrastructure=batch-process analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 batch-process | 'heater' | * | raises AppError batch-process | 'heatingtank' | dnp3 | range=(0, 1000) infrastructure=batch-process analog-read=['heating_rate', 'level_setpoint', 'flow_in', 'flow_out', 'temperature_setpoint', 'tank_level', 'tank_volume', 'temperature'] analog-read-write=['heating_rate', 'level_setpoint', 'temperature_setpoint'] binary-read=['fill_control', 'empty_control', 'heater_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'heater_control'] registers=analog-input:0 heating_rate; analog-input:1 level_setpoint; analog-input:2 flow_in; analog-input:3 flow_out; analog-input:4 temperature_setpoint; analog-input:5 tank_level; analog-input:6 tank_volume; analog-input:7 temperature; analog-output:8 heating_rate; analog-output:9 level_setpoint; analog-output:10 temperature_setpoint; binary-input:11 fill_control; binary-input:12 empty_control; binary-input:13 heater_control; binary-input:14 emergency_shutoff; binary-output:15 fill_control; binary-output:16 empty_control; binary-output:17 heater_control batch-process | 'heatingtank' | dnp3-serial | range=(0, 1000) infrastructure=batch-process analog-read=['heating_rate', 'level_setpoint', 'flow_in', 'flow_out', 'temperature_setpoint', 'tank_level', 'tank_volume', 'temperature'] analog-read-write=['heating_rate', 'level_setpoint', 'temperature_setpoint'] binary-read=['fill_control', 'empty_control', 'heater_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'heater_control'] registers=analog-input:0 heating_rate; analog-input:1 level_setpoint; analog-input:2 flow_in; analog-input:3 flow_out; analog-input:4 temperature_setpoint; analog-input:5 tank_level; analog-input:6 tank_volume; analog-input:7 temperature; analog-output:8 heating_rate; analog-output:9 level_setpoint; analog-output:10 temperature_setpoint; binary-input:11 fill_control; binary-input:12 empty_control; binary-input:13 heater_control; binary-input:14 emergency_shutoff; binary-output:15 fill_control; binary-output:16 empty_control; binary-output:17 heater_control @@ -34,7 +32,6 @@ batch-process | 'heatingtank' | modbus | range=(0, 1000) infrastructure=batch-pr batch-process | 'heatingtank' | modbus-serial | range=(0, 1000) infrastructure=batch-process analog-read=['heating_rate', 'level_setpoint', 'flow_in', 'flow_out', 'temperature_setpoint', 'tank_level', 'tank_volume', 'temperature'] analog-read-write=['heating_rate', 'level_setpoint', 'temperature_setpoint'] binary-read=['fill_control', 'empty_control', 'heater_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'heater_control'] registers=input-register:30000 heating_rate; input-register:30001 level_setpoint; input-register:30002 flow_in; input-register:30003 flow_out; input-register:30004 temperature_setpoint; input-register:30005 tank_level; input-register:30006 tank_volume; input-register:30007 temperature; holding-register:40000 heating_rate; holding-register:40001 level_setpoint; holding-register:40002 temperature_setpoint; discrete-input:10000 fill_control; discrete-input:10001 empty_control; discrete-input:10002 heater_control; discrete-input:10003 emergency_shutoff; coil:0 fill_control; coil:1 empty_control; coil:2 heater_control batch-process | 'heatingtank' | bacnet | range=(0, 1000) infrastructure=batch-process analog-read=['heating_rate', 'level_setpoint', 'flow_in', 'flow_out', 'temperature_setpoint', 'tank_level', 'tank_volume', 'temperature'] analog-read-write=['heating_rate', 'level_setpoint', 'temperature_setpoint'] binary-read=['fill_control', 'empty_control', 'heater_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'heater_control'] registers=analog-input:0 heating_rate; analog-input:1 level_setpoint; analog-input:2 flow_in; analog-input:3 flow_out; analog-input:4 temperature_setpoint; analog-input:5 tank_level; analog-input:6 tank_volume; analog-input:7 temperature; analog-output:8 heating_rate; analog-output:9 level_setpoint; analog-output:10 temperature_setpoint; binary-input:11 fill_control; binary-input:12 empty_control; binary-input:13 heater_control; binary-input:14 emergency_shutoff; binary-output:15 fill_control; binary-output:16 empty_control; binary-output:17 heater_control batch-process | 'heatingtank' | iec60870-5-104 | range=(0, 1000) infrastructure=batch-process analog-read=['heating_rate', 'level_setpoint', 'flow_in', 'flow_out', 'temperature_setpoint', 'tank_level', 'tank_volume', 'temperature'] analog-read-write=['heating_rate', 'level_setpoint', 'temperature_setpoint'] binary-read=['fill_control', 'empty_control', 'heater_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'heater_control'] registers=analog-input:1 heating_rate; analog-input:2 level_setpoint; analog-input:3 flow_in; analog-input:4 flow_out; analog-input:5 temperature_setpoint; analog-input:6 tank_level; analog-input:7 tank_volume; analog-input:8 temperature; analog-output:9 heating_rate; analog-output:10 level_setpoint; analog-output:11 temperature_setpoint; binary-input:12 fill_control; binary-input:13 empty_control; binary-input:14 heater_control; binary-input:15 emergency_shutoff; binary-output:16 fill_control; binary-output:17 empty_control; binary-output:18 heater_control -batch-process | 'heatingtank' | sunspec | range=(0, 1000) infrastructure=batch-process analog-read=['heating_rate', 'level_setpoint', 'flow_in', 'flow_out', 'temperature_setpoint', 'tank_level', 'tank_volume', 'temperature'] analog-read-write=['heating_rate', 'level_setpoint', 'temperature_setpoint'] binary-read=['fill_control', 'empty_control', 'heater_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'heater_control'] registers=0 batch-process | 'inverter' | * | raises AppError batch-process | 'load' | * | raises AppError batch-process | 'mixingtank' | dnp3 | range=(0, 1000) infrastructure=batch-process analog-read=['requested_fill_rate', 'mixing_rate', 'requested_empty_rate', 'level_setpoint', 'flow_in', 'flow_out', 'mix_percent_setpoint', 'tank_level', 'tank_volume', 'mix_percent', 'temperature'] analog-read-write=['mixing_rate', 'level_setpoint', 'mix_percent_setpoint'] binary-read=['fill_control', 'empty_control', 'mixing_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'mixing_control'] registers=analog-input:0 requested_fill_rate; analog-input:1 mixing_rate; analog-input:2 requested_empty_rate; analog-input:3 level_setpoint; analog-input:4 flow_in; analog-input:5 flow_out; analog-input:6 mix_percent_setpoint; analog-input:7 tank_level; analog-input:8 tank_volume; analog-input:9 mix_percent; analog-input:10 temperature; analog-output:11 mixing_rate; analog-output:12 level_setpoint; analog-output:13 mix_percent_setpoint; binary-input:14 fill_control; binary-input:15 empty_control; binary-input:16 mixing_control; binary-input:17 emergency_shutoff; binary-output:18 fill_control; binary-output:19 empty_control; binary-output:20 mixing_control @@ -43,14 +40,12 @@ batch-process | 'mixingtank' | modbus | range=(0, 1000) infrastructure=batch-pro batch-process | 'mixingtank' | modbus-serial | range=(0, 1000) infrastructure=batch-process analog-read=['requested_fill_rate', 'mixing_rate', 'requested_empty_rate', 'level_setpoint', 'flow_in', 'flow_out', 'mix_percent_setpoint', 'tank_level', 'tank_volume', 'mix_percent', 'temperature'] analog-read-write=['mixing_rate', 'level_setpoint', 'mix_percent_setpoint'] binary-read=['fill_control', 'empty_control', 'mixing_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'mixing_control'] registers=input-register:30000 requested_fill_rate; input-register:30001 mixing_rate; input-register:30002 requested_empty_rate; input-register:30003 level_setpoint; input-register:30004 flow_in; input-register:30005 flow_out; input-register:30006 mix_percent_setpoint; input-register:30007 tank_level; input-register:30008 tank_volume; input-register:30009 mix_percent; input-register:30010 temperature; holding-register:40000 mixing_rate; holding-register:40001 level_setpoint; holding-register:40002 mix_percent_setpoint; discrete-input:10000 fill_control; discrete-input:10001 empty_control; discrete-input:10002 mixing_control; discrete-input:10003 emergency_shutoff; coil:0 fill_control; coil:1 empty_control; coil:2 mixing_control batch-process | 'mixingtank' | bacnet | range=(0, 1000) infrastructure=batch-process analog-read=['requested_fill_rate', 'mixing_rate', 'requested_empty_rate', 'level_setpoint', 'flow_in', 'flow_out', 'mix_percent_setpoint', 'tank_level', 'tank_volume', 'mix_percent', 'temperature'] analog-read-write=['mixing_rate', 'level_setpoint', 'mix_percent_setpoint'] binary-read=['fill_control', 'empty_control', 'mixing_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'mixing_control'] registers=analog-input:0 requested_fill_rate; analog-input:1 mixing_rate; analog-input:2 requested_empty_rate; analog-input:3 level_setpoint; analog-input:4 flow_in; analog-input:5 flow_out; analog-input:6 mix_percent_setpoint; analog-input:7 tank_level; analog-input:8 tank_volume; analog-input:9 mix_percent; analog-input:10 temperature; analog-output:11 mixing_rate; analog-output:12 level_setpoint; analog-output:13 mix_percent_setpoint; binary-input:14 fill_control; binary-input:15 empty_control; binary-input:16 mixing_control; binary-input:17 emergency_shutoff; binary-output:18 fill_control; binary-output:19 empty_control; binary-output:20 mixing_control batch-process | 'mixingtank' | iec60870-5-104 | range=(0, 1000) infrastructure=batch-process analog-read=['requested_fill_rate', 'mixing_rate', 'requested_empty_rate', 'level_setpoint', 'flow_in', 'flow_out', 'mix_percent_setpoint', 'tank_level', 'tank_volume', 'mix_percent', 'temperature'] analog-read-write=['mixing_rate', 'level_setpoint', 'mix_percent_setpoint'] binary-read=['fill_control', 'empty_control', 'mixing_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'mixing_control'] registers=analog-input:1 requested_fill_rate; analog-input:2 mixing_rate; analog-input:3 requested_empty_rate; analog-input:4 level_setpoint; analog-input:5 flow_in; analog-input:6 flow_out; analog-input:7 mix_percent_setpoint; analog-input:8 tank_level; analog-input:9 tank_volume; analog-input:10 mix_percent; analog-input:11 temperature; analog-output:12 mixing_rate; analog-output:13 level_setpoint; analog-output:14 mix_percent_setpoint; binary-input:15 fill_control; binary-input:16 empty_control; binary-input:17 mixing_control; binary-input:18 emergency_shutoff; binary-output:19 fill_control; binary-output:20 empty_control; binary-output:21 mixing_control -batch-process | 'mixingtank' | sunspec | range=(0, 1000) infrastructure=batch-process analog-read=['requested_fill_rate', 'mixing_rate', 'requested_empty_rate', 'level_setpoint', 'flow_in', 'flow_out', 'mix_percent_setpoint', 'tank_level', 'tank_volume', 'mix_percent', 'temperature'] analog-read-write=['mixing_rate', 'level_setpoint', 'mix_percent_setpoint'] binary-read=['fill_control', 'empty_control', 'mixing_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control', 'mixing_control'] registers=0 batch-process | 'pump' | dnp3 | range=(0, 1000) infrastructure=batch-process analog-read=['flow', 'temperature'] analog-read-write=['flow'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=analog-input:0 flow; analog-input:1 temperature; analog-output:2 flow; binary-input:3 active; binary-input:4 control; binary-output:5 active; binary-output:6 control batch-process | 'pump' | dnp3-serial | range=(0, 1000) infrastructure=batch-process analog-read=['flow', 'temperature'] analog-read-write=['flow'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=analog-input:0 flow; analog-input:1 temperature; analog-output:2 flow; binary-input:3 active; binary-input:4 control; binary-output:5 active; binary-output:6 control batch-process | 'pump' | modbus | range=(0, 1000) infrastructure=batch-process analog-read=['flow', 'temperature'] analog-read-write=['flow'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=input-register:30000 flow; input-register:30001 temperature; holding-register:40000 flow; discrete-input:10000 active; discrete-input:10001 control; coil:0 active; coil:1 control batch-process | 'pump' | modbus-serial | range=(0, 1000) infrastructure=batch-process analog-read=['flow', 'temperature'] analog-read-write=['flow'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=input-register:30000 flow; input-register:30001 temperature; holding-register:40000 flow; discrete-input:10000 active; discrete-input:10001 control; coil:0 active; coil:1 control batch-process | 'pump' | bacnet | range=(0, 1000) infrastructure=batch-process analog-read=['flow', 'temperature'] analog-read-write=['flow'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=analog-input:0 flow; analog-input:1 temperature; analog-output:2 flow; binary-input:3 active; binary-input:4 control; binary-output:5 active; binary-output:6 control batch-process | 'pump' | iec60870-5-104 | range=(0, 1000) infrastructure=batch-process analog-read=['flow', 'temperature'] analog-read-write=['flow'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=analog-input:1 flow; analog-input:2 temperature; analog-output:3 flow; binary-input:4 active; binary-input:5 control; binary-output:6 active; binary-output:7 control -batch-process | 'pump' | sunspec | range=(0, 1000) infrastructure=batch-process analog-read=['flow', 'temperature'] analog-read-write=['flow'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=0 batch-process | 'room' | * | raises AppError batch-process | 'shunt' | * | raises AppError batch-process | 'storagetank' | dnp3 | range=(0, 1000) infrastructure=batch-process analog-read=['level_setpoint', 'flow_in', 'flow_out', 'tank_level', 'tank_volume', 'temperature', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control', 'empty_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control'] registers=analog-input:0 level_setpoint; analog-input:1 flow_in; analog-input:2 flow_out; analog-input:3 tank_level; analog-input:4 tank_volume; analog-input:5 temperature; analog-input:6 volume_to_drain; analog-output:7 flow_in; analog-output:8 level_setpoint; binary-input:9 fill_control; binary-input:10 empty_control; binary-input:11 emergency_shutoff; binary-output:12 fill_control; binary-output:13 empty_control @@ -59,7 +54,6 @@ batch-process | 'storagetank' | modbus | range=(0, 1000) infrastructure=batch-pr batch-process | 'storagetank' | modbus-serial | range=(0, 1000) infrastructure=batch-process analog-read=['level_setpoint', 'flow_in', 'flow_out', 'tank_level', 'tank_volume', 'temperature', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control', 'empty_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control'] registers=input-register:30000 level_setpoint; input-register:30001 flow_in; input-register:30002 flow_out; input-register:30003 tank_level; input-register:30004 tank_volume; input-register:30005 temperature; input-register:30006 volume_to_drain; holding-register:40000 flow_in; holding-register:40001 level_setpoint; discrete-input:10000 fill_control; discrete-input:10001 empty_control; discrete-input:10002 emergency_shutoff; coil:0 fill_control; coil:1 empty_control batch-process | 'storagetank' | bacnet | range=(0, 1000) infrastructure=batch-process analog-read=['level_setpoint', 'flow_in', 'flow_out', 'tank_level', 'tank_volume', 'temperature', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control', 'empty_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control'] registers=analog-input:0 level_setpoint; analog-input:1 flow_in; analog-input:2 flow_out; analog-input:3 tank_level; analog-input:4 tank_volume; analog-input:5 temperature; analog-input:6 volume_to_drain; analog-output:7 flow_in; analog-output:8 level_setpoint; binary-input:9 fill_control; binary-input:10 empty_control; binary-input:11 emergency_shutoff; binary-output:12 fill_control; binary-output:13 empty_control batch-process | 'storagetank' | iec60870-5-104 | range=(0, 1000) infrastructure=batch-process analog-read=['level_setpoint', 'flow_in', 'flow_out', 'tank_level', 'tank_volume', 'temperature', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control', 'empty_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control'] registers=analog-input:1 level_setpoint; analog-input:2 flow_in; analog-input:3 flow_out; analog-input:4 tank_level; analog-input:5 tank_volume; analog-input:6 temperature; analog-input:7 volume_to_drain; analog-output:8 flow_in; analog-output:9 level_setpoint; binary-input:10 fill_control; binary-input:11 empty_control; binary-input:12 emergency_shutoff; binary-output:13 fill_control; binary-output:14 empty_control -batch-process | 'storagetank' | sunspec | range=(0, 1000) infrastructure=batch-process analog-read=['level_setpoint', 'flow_in', 'flow_out', 'tank_level', 'tank_volume', 'temperature', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control', 'empty_control', 'emergency_shutoff'] binary-read-write=['fill_control', 'empty_control'] registers=0 batch-process | 'thermostat' | * | raises AppError batch-process | 'transformer' | * | raises AppError batch-process | 'valve' | dnp3 | range=(0, 1000) infrastructure=batch-process analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=binary-input:0 open; binary-output:1 open @@ -68,7 +62,6 @@ batch-process | 'valve' | modbus | range=(0, 1000) infrastructure=batch-process batch-process | 'valve' | modbus-serial | range=(0, 1000) infrastructure=batch-process analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=discrete-input:10000 open; coil:0 open batch-process | 'valve' | bacnet | range=(0, 1000) infrastructure=batch-process analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=binary-input:0 open; binary-output:1 open batch-process | 'valve' | iec60870-5-104 | range=(0, 1000) infrastructure=batch-process analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=binary-input:1 open; binary-output:2 open -batch-process | 'valve' | sunspec | range=(0, 1000) infrastructure=batch-process analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=0 batch-process | 'water' | * | raises AppError batch-process | 5 | * | raises AppError battery | 'analog-read' | * | raises AppError @@ -79,7 +72,6 @@ battery | 'battstack' | modbus | range=(-32767.0, 32767.0) infrastructure=batter battery | 'battstack' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 istack; input-register:30001 vstack battery | 'battstack' | bacnet | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 istack; analog-input:1 vstack battery | 'battstack' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 istack; analog-input:2 vstack -battery | 'battstack' | sunspec | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 battery | 'binary-read' | * | raises AppError battery | 'binary-read-write' | * | raises AppError battery | 'bmsscrtu' | dnp3 | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=['disconnect'] registers=analog-input:0 istack; analog-input:1 vstack; analog-input:2 socstack; binary-output:3 disconnect @@ -88,14 +80,12 @@ battery | 'bmsscrtu' | modbus | range=(-32767.0, 32767.0) infrastructure=battery battery | 'bmsscrtu' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=['disconnect'] registers=input-register:30000 istack; input-register:30001 vstack; input-register:30002 socstack; coil:0 disconnect battery | 'bmsscrtu' | bacnet | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=['disconnect'] registers=analog-input:0 istack; analog-input:1 vstack; analog-input:2 socstack; binary-output:3 disconnect battery | 'bmsscrtu' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=['disconnect'] registers=analog-input:1 istack; analog-input:2 vstack; analog-input:3 socstack; binary-output:4 disconnect -battery | 'bmsscrtu' | sunspec | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=['disconnect'] registers=0 battery | 'bmsse' | dnp3 | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 istack; analog-input:1 vstack; analog-input:2 socstack battery | 'bmsse' | dnp3-serial | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 istack; analog-input:1 vstack; analog-input:2 socstack battery | 'bmsse' | modbus | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 istack; input-register:30001 vstack; input-register:30002 socstack battery | 'bmsse' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 istack; input-register:30001 vstack; input-register:30002 socstack battery | 'bmsse' | bacnet | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 istack; analog-input:1 vstack; analog-input:2 socstack battery | 'bmsse' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 istack; analog-input:2 vstack; analog-input:3 socstack -battery | 'bmsse' | sunspec | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['istack', 'vstack', 'socstack'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 battery | 'boat' | * | raises AppError battery | 'boat-sensor' | * | raises AppError battery | 'branch' | * | raises AppError @@ -107,7 +97,6 @@ battery | 'cps' | modbus | range=(-32767.0, 32767.0) infrastructure=battery anal battery | 'cps' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['pinj', 'qinj', 'vbess', 'ibess'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 pinj; input-register:30001 qinj; input-register:30002 vbess; input-register:30003 ibess battery | 'cps' | bacnet | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['pinj', 'qinj', 'vbess', 'ibess'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 pinj; analog-input:1 qinj; analog-input:2 vbess; analog-input:3 ibess battery | 'cps' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['pinj', 'qinj', 'vbess', 'ibess'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 pinj; analog-input:2 qinj; analog-input:3 vbess; analog-input:4 ibess -battery | 'cps' | sunspec | range=(-32767.0, 32767.0) infrastructure=battery analog-read=['pinj', 'qinj', 'vbess', 'ibess'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 battery | 'fan' | * | raises AppError battery | 'fillingstation' | * | raises AppError battery | 'gate' | * | raises AppError @@ -146,7 +135,6 @@ fuel | 'fillingstation' | modbus | range=(0, 1000) infrastructure=fuel analog-re fuel | 'fillingstation' | modbus-serial | range=(0, 1000) infrastructure=fuel analog-read=['request', 'volume_wasted', 'backlog'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 request; input-register:30001 volume_wasted; input-register:30002 backlog fuel | 'fillingstation' | bacnet | range=(0, 1000) infrastructure=fuel analog-read=['request', 'volume_wasted', 'backlog'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 request; analog-input:1 volume_wasted; analog-input:2 backlog fuel | 'fillingstation' | iec60870-5-104 | range=(0, 1000) infrastructure=fuel analog-read=['request', 'volume_wasted', 'backlog'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 request; analog-input:2 volume_wasted; analog-input:3 backlog -fuel | 'fillingstation' | sunspec | range=(0, 1000) infrastructure=fuel analog-read=['request', 'volume_wasted', 'backlog'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 fuel | 'gate' | * | raises AppError fuel | 'generator' | dnp3 | range=(0, 1000) infrastructure=fuel analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 fuel fuel | 'generator' | dnp3-serial | range=(0, 1000) infrastructure=fuel analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 fuel @@ -154,7 +142,6 @@ fuel | 'generator' | modbus | range=(0, 1000) infrastructure=fuel analog-read=[' fuel | 'generator' | modbus-serial | range=(0, 1000) infrastructure=fuel analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 fuel fuel | 'generator' | bacnet | range=(0, 1000) infrastructure=fuel analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 fuel fuel | 'generator' | iec60870-5-104 | range=(0, 1000) infrastructure=fuel analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 fuel -fuel | 'generator' | sunspec | range=(0, 1000) infrastructure=fuel analog-read=['fuel'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 fuel | 'heater' | * | raises AppError fuel | 'heatingtank' | * | raises AppError fuel | 'inverter' | * | raises AppError @@ -166,7 +153,6 @@ fuel | 'pump' | modbus | range=(0, 1000) infrastructure=fuel analog-read=['flow' fuel | 'pump' | modbus-serial | range=(0, 1000) infrastructure=fuel analog-read=['flow', 'voltage_in'] analog-read-write=['flow', 'voltage_in'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=input-register:30000 flow; input-register:30001 voltage_in; holding-register:40000 flow; holding-register:40001 voltage_in; discrete-input:10000 active; discrete-input:10001 control; coil:0 active; coil:1 control fuel | 'pump' | bacnet | range=(0, 1000) infrastructure=fuel analog-read=['flow', 'voltage_in'] analog-read-write=['flow', 'voltage_in'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=analog-input:0 flow; analog-input:1 voltage_in; analog-output:2 flow; analog-output:3 voltage_in; binary-input:4 active; binary-input:5 control; binary-output:6 active; binary-output:7 control fuel | 'pump' | iec60870-5-104 | range=(0, 1000) infrastructure=fuel analog-read=['flow', 'voltage_in'] analog-read-write=['flow', 'voltage_in'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=analog-input:1 flow; analog-input:2 voltage_in; analog-output:3 flow; analog-output:4 voltage_in; binary-input:5 active; binary-input:6 control; binary-output:7 active; binary-output:8 control -fuel | 'pump' | sunspec | range=(0, 1000) infrastructure=fuel analog-read=['flow', 'voltage_in'] analog-read-write=['flow', 'voltage_in'] binary-read=['active', 'control'] binary-read-write=['active', 'control'] registers=0 fuel | 'room' | * | raises AppError fuel | 'shunt' | * | raises AppError fuel | 'storagetank' | dnp3 | range=(0, 1000) infrastructure=fuel analog-read=['level_setpoint', 'flow_in', 'tank_volume', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control'] binary-read-write=['fill_control'] registers=analog-input:0 level_setpoint; analog-input:1 flow_in; analog-input:2 tank_volume; analog-input:3 volume_to_drain; analog-output:4 flow_in; analog-output:5 level_setpoint; binary-input:6 fill_control; binary-output:7 fill_control @@ -175,7 +161,6 @@ fuel | 'storagetank' | modbus | range=(0, 1000) infrastructure=fuel analog-read= fuel | 'storagetank' | modbus-serial | range=(0, 1000) infrastructure=fuel analog-read=['level_setpoint', 'flow_in', 'tank_volume', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control'] binary-read-write=['fill_control'] registers=input-register:30000 level_setpoint; input-register:30001 flow_in; input-register:30002 tank_volume; input-register:30003 volume_to_drain; holding-register:40000 flow_in; holding-register:40001 level_setpoint; discrete-input:10000 fill_control; coil:0 fill_control fuel | 'storagetank' | bacnet | range=(0, 1000) infrastructure=fuel analog-read=['level_setpoint', 'flow_in', 'tank_volume', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control'] binary-read-write=['fill_control'] registers=analog-input:0 level_setpoint; analog-input:1 flow_in; analog-input:2 tank_volume; analog-input:3 volume_to_drain; analog-output:4 flow_in; analog-output:5 level_setpoint; binary-input:6 fill_control; binary-output:7 fill_control fuel | 'storagetank' | iec60870-5-104 | range=(0, 1000) infrastructure=fuel analog-read=['level_setpoint', 'flow_in', 'tank_volume', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control'] binary-read-write=['fill_control'] registers=analog-input:1 level_setpoint; analog-input:2 flow_in; analog-input:3 tank_volume; analog-input:4 volume_to_drain; analog-output:5 flow_in; analog-output:6 level_setpoint; binary-input:7 fill_control; binary-output:8 fill_control -fuel | 'storagetank' | sunspec | range=(0, 1000) infrastructure=fuel analog-read=['level_setpoint', 'flow_in', 'tank_volume', 'volume_to_drain'] analog-read-write=['flow_in', 'level_setpoint'] binary-read=['fill_control'] binary-read-write=['fill_control'] registers=0 fuel | 'thermostat' | * | raises AppError fuel | 'transformer' | * | raises AppError fuel | 'valve' | dnp3 | range=(0, 1000) infrastructure=fuel analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=binary-input:0 open; binary-output:1 open @@ -184,7 +169,6 @@ fuel | 'valve' | modbus | range=(0, 1000) infrastructure=fuel analog-read=[] ana fuel | 'valve' | modbus-serial | range=(0, 1000) infrastructure=fuel analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=discrete-input:10000 open; coil:0 open fuel | 'valve' | bacnet | range=(0, 1000) infrastructure=fuel analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=binary-input:0 open; binary-output:1 open fuel | 'valve' | iec60870-5-104 | range=(0, 1000) infrastructure=fuel analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=binary-input:1 open; binary-output:2 open -fuel | 'valve' | sunspec | range=(0, 1000) infrastructure=fuel analog-read=[] analog-read-write=[] binary-read=['open'] binary-read-write=['open'] registers=0 fuel | 'water' | * | raises AppError fuel | 5 | * | raises AppError generic | 'analog-read' | dnp3 | range=(-32767.0, 32767.0) infrastructure=generic analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 value @@ -193,14 +177,12 @@ generic | 'analog-read' | modbus | range=(-32767.0, 32767.0) infrastructure=gene generic | 'analog-read' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=generic analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 value generic | 'analog-read' | bacnet | range=(-32767.0, 32767.0) infrastructure=generic analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 value generic | 'analog-read' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=generic analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 value -generic | 'analog-read' | sunspec | range=(-32767.0, 32767.0) infrastructure=generic analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 generic | 'analog-read-write' | dnp3 | range=(-32767.0, 32767.0) infrastructure=generic analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value generic | 'analog-read-write' | dnp3-serial | range=(-32767.0, 32767.0) infrastructure=generic analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value generic | 'analog-read-write' | modbus | range=(-32767.0, 32767.0) infrastructure=generic analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=holding-register:40000 value generic | 'analog-read-write' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=generic analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=holding-register:40000 value generic | 'analog-read-write' | bacnet | range=(-32767.0, 32767.0) infrastructure=generic analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value generic | 'analog-read-write' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=generic analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:1 value -generic | 'analog-read-write' | sunspec | range=(-32767.0, 32767.0) infrastructure=generic analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=0 generic | 'battstack' | * | raises AppError generic | 'binary-read' | dnp3 | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=['status'] binary-read-write=[] registers=binary-input:0 status generic | 'binary-read' | dnp3-serial | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=['status'] binary-read-write=[] registers=binary-input:0 status @@ -208,14 +190,12 @@ generic | 'binary-read' | modbus | range=(0, 1000) infrastructure=generic analog generic | 'binary-read' | modbus-serial | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=['status'] binary-read-write=[] registers=discrete-input:10000 status generic | 'binary-read' | bacnet | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=['status'] binary-read-write=[] registers=binary-input:0 status generic | 'binary-read' | iec60870-5-104 | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=['status'] binary-read-write=[] registers=binary-input:1 status -generic | 'binary-read' | sunspec | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=['status'] binary-read-write=[] registers=0 generic | 'binary-read-write' | dnp3 | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['status'] registers=binary-output:0 status generic | 'binary-read-write' | dnp3-serial | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['status'] registers=binary-output:0 status generic | 'binary-read-write' | modbus | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['status'] registers=coil:0 status generic | 'binary-read-write' | modbus-serial | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['status'] registers=coil:0 status generic | 'binary-read-write' | bacnet | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['status'] registers=binary-output:0 status generic | 'binary-read-write' | iec60870-5-104 | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['status'] registers=binary-output:1 status -generic | 'binary-read-write' | sunspec | range=(0, 1000) infrastructure=generic analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['status'] registers=0 generic | 'bmsscrtu' | * | raises AppError generic | 'bmsse' | * | raises AppError generic | 'boat' | * | raises AppError @@ -259,7 +239,6 @@ hvac | 'cooler' | modbus | range=(0, 1000) infrastructure=hvac analog-read=[] an hvac | 'cooler' | modbus-serial | range=(0, 1000) infrastructure=hvac analog-read=[] analog-read-write=[] binary-read=['on'] binary-read-write=['turn_on'] registers=discrete-input:10000 on; coil:0 turn_on hvac | 'cooler' | bacnet | range=(0, 1000) infrastructure=hvac analog-read=[] analog-read-write=[] binary-read=['on'] binary-read-write=['turn_on'] registers=binary-input:0 on; binary-output:1 turn_on hvac | 'cooler' | iec60870-5-104 | range=(0, 1000) infrastructure=hvac analog-read=[] analog-read-write=[] binary-read=['on'] binary-read-write=['turn_on'] registers=binary-input:1 on; binary-output:2 turn_on -hvac | 'cooler' | sunspec | range=(0, 1000) infrastructure=hvac analog-read=[] analog-read-write=[] binary-read=['on'] binary-read-write=['turn_on'] registers=0 hvac | 'cps' | * | raises AppError hvac | 'fan' | dnp3 | range=(0, 1000) infrastructure=hvac analog-read=['speed'] analog-read-write=['change_speed'] binary-read=[] binary-read-write=[] registers=analog-input:0 speed; analog-output:1 change_speed hvac | 'fan' | dnp3-serial | range=(0, 1000) infrastructure=hvac analog-read=['speed'] analog-read-write=['change_speed'] binary-read=[] binary-read-write=[] registers=analog-input:0 speed; analog-output:1 change_speed @@ -267,7 +246,6 @@ hvac | 'fan' | modbus | range=(0, 1000) infrastructure=hvac analog-read=['speed' hvac | 'fan' | modbus-serial | range=(0, 1000) infrastructure=hvac analog-read=['speed'] analog-read-write=['change_speed'] binary-read=[] binary-read-write=[] registers=input-register:30000 speed; holding-register:40000 change_speed hvac | 'fan' | bacnet | range=(0, 1000) infrastructure=hvac analog-read=['speed'] analog-read-write=['change_speed'] binary-read=[] binary-read-write=[] registers=analog-input:0 speed; analog-output:1 change_speed hvac | 'fan' | iec60870-5-104 | range=(0, 1000) infrastructure=hvac analog-read=['speed'] analog-read-write=['change_speed'] binary-read=[] binary-read-write=[] registers=analog-input:1 speed; analog-output:2 change_speed -hvac | 'fan' | sunspec | range=(0, 1000) infrastructure=hvac analog-read=['speed'] analog-read-write=['change_speed'] binary-read=[] binary-read-write=[] registers=0 hvac | 'fillingstation' | * | raises AppError hvac | 'gate' | * | raises AppError hvac | 'generator' | * | raises AppError @@ -277,7 +255,6 @@ hvac | 'heater' | modbus | range=(0, 1000) infrastructure=hvac analog-read=[] an hvac | 'heater' | modbus-serial | range=(0, 1000) infrastructure=hvac analog-read=[] analog-read-write=[] binary-read=['on'] binary-read-write=['turn_on'] registers=discrete-input:10000 on; coil:0 turn_on hvac | 'heater' | bacnet | range=(0, 1000) infrastructure=hvac analog-read=[] analog-read-write=[] binary-read=['on'] binary-read-write=['turn_on'] registers=binary-input:0 on; binary-output:1 turn_on hvac | 'heater' | iec60870-5-104 | range=(0, 1000) infrastructure=hvac analog-read=[] analog-read-write=[] binary-read=['on'] binary-read-write=['turn_on'] registers=binary-input:1 on; binary-output:2 turn_on -hvac | 'heater' | sunspec | range=(0, 1000) infrastructure=hvac analog-read=[] analog-read-write=[] binary-read=['on'] binary-read-write=['turn_on'] registers=0 hvac | 'heatingtank' | * | raises AppError hvac | 'inverter' | * | raises AppError hvac | 'load' | * | raises AppError @@ -289,7 +266,6 @@ hvac | 'room' | modbus | range=(0, 1000) infrastructure=hvac analog-read=['tempe hvac | 'room' | modbus-serial | range=(0, 1000) infrastructure=hvac analog-read=['temperature'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 temperature hvac | 'room' | bacnet | range=(0, 1000) infrastructure=hvac analog-read=['temperature'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 temperature hvac | 'room' | iec60870-5-104 | range=(0, 1000) infrastructure=hvac analog-read=['temperature'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 temperature -hvac | 'room' | sunspec | range=(0, 1000) infrastructure=hvac analog-read=['temperature'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 hvac | 'shunt' | * | raises AppError hvac | 'storagetank' | * | raises AppError hvac | 'thermostat' | dnp3 | range=(0, 1000) infrastructure=hvac analog-read=['setpoint', 'margin'] analog-read-write=['change_setpoint', 'change_margin'] binary-read=[] binary-read-write=[] registers=analog-input:0 setpoint; analog-input:1 margin; analog-output:2 change_setpoint; analog-output:3 change_margin @@ -298,7 +274,6 @@ hvac | 'thermostat' | modbus | range=(0, 1000) infrastructure=hvac analog-read=[ hvac | 'thermostat' | modbus-serial | range=(0, 1000) infrastructure=hvac analog-read=['setpoint', 'margin'] analog-read-write=['change_setpoint', 'change_margin'] binary-read=[] binary-read-write=[] registers=input-register:30000 setpoint; input-register:30001 margin; holding-register:40000 change_setpoint; holding-register:40001 change_margin hvac | 'thermostat' | bacnet | range=(0, 1000) infrastructure=hvac analog-read=['setpoint', 'margin'] analog-read-write=['change_setpoint', 'change_margin'] binary-read=[] binary-read-write=[] registers=analog-input:0 setpoint; analog-input:1 margin; analog-output:2 change_setpoint; analog-output:3 change_margin hvac | 'thermostat' | iec60870-5-104 | range=(0, 1000) infrastructure=hvac analog-read=['setpoint', 'margin'] analog-read-write=['change_setpoint', 'change_margin'] binary-read=[] binary-read-write=[] registers=analog-input:1 setpoint; analog-input:2 margin; analog-output:3 change_setpoint; analog-output:4 change_margin -hvac | 'thermostat' | sunspec | range=(0, 1000) infrastructure=hvac analog-read=['setpoint', 'margin'] analog-read-write=['change_setpoint', 'change_margin'] binary-read=[] binary-read-write=[] registers=0 hvac | 'transformer' | * | raises AppError hvac | 'valve' | * | raises AppError hvac | 'water' | * | raises AppError @@ -309,14 +284,12 @@ opalrt | 'analog-read' | modbus | range=(-32767.0, 32767.0) infrastructure=opalr opalrt | 'analog-read' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 value opalrt | 'analog-read' | bacnet | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 value opalrt | 'analog-read' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 value -opalrt | 'analog-read' | sunspec | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=['value'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 opalrt | 'analog-read-write' | dnp3 | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value opalrt | 'analog-read-write' | dnp3-serial | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value opalrt | 'analog-read-write' | modbus | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=holding-register:40000 value opalrt | 'analog-read-write' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=holding-register:40000 value opalrt | 'analog-read-write' | bacnet | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value opalrt | 'analog-read-write' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:1 value -opalrt | 'analog-read-write' | sunspec | range=(-32767.0, 32767.0) infrastructure=opalrt analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=0 opalrt | 'battstack' | * | raises AppError opalrt | 'binary-read' | dnp3 | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=['value'] binary-read-write=[] registers=binary-input:0 value opalrt | 'binary-read' | dnp3-serial | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=['value'] binary-read-write=[] registers=binary-input:0 value @@ -324,14 +297,12 @@ opalrt | 'binary-read' | modbus | range=(0, 1000) infrastructure=opalrt analog-r opalrt | 'binary-read' | modbus-serial | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=['value'] binary-read-write=[] registers=discrete-input:10000 value opalrt | 'binary-read' | bacnet | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=['value'] binary-read-write=[] registers=binary-input:0 value opalrt | 'binary-read' | iec60870-5-104 | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=['value'] binary-read-write=[] registers=binary-input:1 value -opalrt | 'binary-read' | sunspec | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=['value'] binary-read-write=[] registers=0 opalrt | 'binary-read-write' | dnp3 | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['value'] registers=binary-output:0 value opalrt | 'binary-read-write' | dnp3-serial | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['value'] registers=binary-output:0 value opalrt | 'binary-read-write' | modbus | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['value'] registers=coil:0 value opalrt | 'binary-read-write' | modbus-serial | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['value'] registers=coil:0 value opalrt | 'binary-read-write' | bacnet | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['value'] registers=binary-output:0 value opalrt | 'binary-read-write' | iec60870-5-104 | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['value'] registers=binary-output:1 value -opalrt | 'binary-read-write' | sunspec | range=(0, 1000) infrastructure=opalrt analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['value'] registers=0 opalrt | 'bmsscrtu' | * | raises AppError opalrt | 'bmsse' | * | raises AppError opalrt | 'boat' | * | raises AppError @@ -373,14 +344,12 @@ power-distribution | 'branch' | modbus | range=(-600, 1800) infrastructure=power power-distribution | 'branch' | modbus-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_src_p1', 'voltage_mag_src_p2', 'voltage_mag_src_p3', 'voltage_ang_src_p1', 'voltage_ang_src_p2', 'voltage_ang_src_p3', 'current_mag_src_p1', 'current_mag_src_p2', 'current_mag_src_p3', 'current_ang_src_p1', 'current_ang_src_p2', 'current_ang_src_p3', 'real_power_src_p1', 'real_power_src_p2', 'real_power_src_p3', 'reactive_power_src_p1', 'reactive_power_src_p2', 'reactive_power_src_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 voltage_mag_src_p1; input-register:30001 voltage_mag_src_p2; input-register:30002 voltage_mag_src_p3; input-register:30003 voltage_ang_src_p1; input-register:30004 voltage_ang_src_p2; input-register:30005 voltage_ang_src_p3; input-register:30006 current_mag_src_p1; input-register:30007 current_mag_src_p2; input-register:30008 current_mag_src_p3; input-register:30009 current_ang_src_p1; input-register:30010 current_ang_src_p2; input-register:30011 current_ang_src_p3; input-register:30012 real_power_src_p1; input-register:30013 real_power_src_p2; input-register:30014 real_power_src_p3; input-register:30015 reactive_power_src_p1; input-register:30016 reactive_power_src_p2; input-register:30017 reactive_power_src_p3; discrete-input:10000 active; coil:0 active power-distribution | 'branch' | bacnet | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_src_p1', 'voltage_mag_src_p2', 'voltage_mag_src_p3', 'voltage_ang_src_p1', 'voltage_ang_src_p2', 'voltage_ang_src_p3', 'current_mag_src_p1', 'current_mag_src_p2', 'current_mag_src_p3', 'current_ang_src_p1', 'current_ang_src_p2', 'current_ang_src_p3', 'real_power_src_p1', 'real_power_src_p2', 'real_power_src_p3', 'reactive_power_src_p1', 'reactive_power_src_p2', 'reactive_power_src_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_src_p1; analog-input:1 voltage_mag_src_p2; analog-input:2 voltage_mag_src_p3; analog-input:3 voltage_ang_src_p1; analog-input:4 voltage_ang_src_p2; analog-input:5 voltage_ang_src_p3; analog-input:6 current_mag_src_p1; analog-input:7 current_mag_src_p2; analog-input:8 current_mag_src_p3; analog-input:9 current_ang_src_p1; analog-input:10 current_ang_src_p2; analog-input:11 current_ang_src_p3; analog-input:12 real_power_src_p1; analog-input:13 real_power_src_p2; analog-input:14 real_power_src_p3; analog-input:15 reactive_power_src_p1; analog-input:16 reactive_power_src_p2; analog-input:17 reactive_power_src_p3; binary-input:18 active; binary-output:19 active power-distribution | 'branch' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_src_p1', 'voltage_mag_src_p2', 'voltage_mag_src_p3', 'voltage_ang_src_p1', 'voltage_ang_src_p2', 'voltage_ang_src_p3', 'current_mag_src_p1', 'current_mag_src_p2', 'current_mag_src_p3', 'current_ang_src_p1', 'current_ang_src_p2', 'current_ang_src_p3', 'real_power_src_p1', 'real_power_src_p2', 'real_power_src_p3', 'reactive_power_src_p1', 'reactive_power_src_p2', 'reactive_power_src_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 voltage_mag_src_p1; analog-input:2 voltage_mag_src_p2; analog-input:3 voltage_mag_src_p3; analog-input:4 voltage_ang_src_p1; analog-input:5 voltage_ang_src_p2; analog-input:6 voltage_ang_src_p3; analog-input:7 current_mag_src_p1; analog-input:8 current_mag_src_p2; analog-input:9 current_mag_src_p3; analog-input:10 current_ang_src_p1; analog-input:11 current_ang_src_p2; analog-input:12 current_ang_src_p3; analog-input:13 real_power_src_p1; analog-input:14 real_power_src_p2; analog-input:15 real_power_src_p3; analog-input:16 reactive_power_src_p1; analog-input:17 reactive_power_src_p2; analog-input:18 reactive_power_src_p3; binary-input:19 active; binary-output:20 active -power-distribution | 'branch' | sunspec | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_src_p1', 'voltage_mag_src_p2', 'voltage_mag_src_p3', 'voltage_ang_src_p1', 'voltage_ang_src_p2', 'voltage_ang_src_p3', 'current_mag_src_p1', 'current_mag_src_p2', 'current_mag_src_p3', 'current_ang_src_p1', 'current_ang_src_p2', 'current_ang_src_p3', 'real_power_src_p1', 'real_power_src_p2', 'real_power_src_p3', 'reactive_power_src_p1', 'reactive_power_src_p2', 'reactive_power_src_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=0 power-distribution | 'bus' | dnp3 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3 power-distribution | 'bus' | dnp3-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3 power-distribution | 'bus' | modbus | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 voltage_mag_p1; input-register:30001 voltage_mag_p2; input-register:30002 voltage_mag_p3; input-register:30003 voltage_ang_p1; input-register:30004 voltage_ang_p2; input-register:30005 voltage_ang_p3 power-distribution | 'bus' | modbus-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 voltage_mag_p1; input-register:30001 voltage_mag_p2; input-register:30002 voltage_mag_p3; input-register:30003 voltage_ang_p1; input-register:30004 voltage_ang_p2; input-register:30005 voltage_ang_p3 power-distribution | 'bus' | bacnet | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3 power-distribution | 'bus' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 voltage_mag_p1; analog-input:2 voltage_mag_p2; analog-input:3 voltage_mag_p3; analog-input:4 voltage_ang_p1; analog-input:5 voltage_ang_p2; analog-input:6 voltage_ang_p3 -power-distribution | 'bus' | sunspec | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 power-distribution | 'cooler' | * | raises AppError power-distribution | 'cps' | * | raises AppError power-distribution | 'fan' | * | raises AppError @@ -392,7 +361,6 @@ power-distribution | 'generator' | modbus | range=(-600, 1800) infrastructure=po power-distribution | 'generator' | modbus-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'power_factor'] analog-read-write=['active_power_output', 'power_factor'] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 voltage_mag_p1; input-register:30001 voltage_mag_p2; input-register:30002 voltage_mag_p3; input-register:30003 voltage_ang_p1; input-register:30004 voltage_ang_p2; input-register:30005 voltage_ang_p3; input-register:30006 current_mag_p1; input-register:30007 current_mag_p2; input-register:30008 current_mag_p3; input-register:30009 current_ang_p1; input-register:30010 current_ang_p2; input-register:30011 current_ang_p3; input-register:30012 active_power_output; input-register:30013 real_power_p1; input-register:30014 real_power_p2; input-register:30015 real_power_p3; input-register:30016 reactive_power_p1; input-register:30017 reactive_power_p2; input-register:30018 reactive_power_p3; input-register:30019 power_factor; holding-register:40000 active_power_output; holding-register:40001 power_factor; discrete-input:10000 active; coil:0 active power-distribution | 'generator' | bacnet | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'power_factor'] analog-read-write=['active_power_output', 'power_factor'] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3; analog-input:6 current_mag_p1; analog-input:7 current_mag_p2; analog-input:8 current_mag_p3; analog-input:9 current_ang_p1; analog-input:10 current_ang_p2; analog-input:11 current_ang_p3; analog-input:12 active_power_output; analog-input:13 real_power_p1; analog-input:14 real_power_p2; analog-input:15 real_power_p3; analog-input:16 reactive_power_p1; analog-input:17 reactive_power_p2; analog-input:18 reactive_power_p3; analog-input:19 power_factor; analog-output:20 active_power_output; analog-output:21 power_factor; binary-input:22 active; binary-output:23 active power-distribution | 'generator' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'power_factor'] analog-read-write=['active_power_output', 'power_factor'] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 voltage_mag_p1; analog-input:2 voltage_mag_p2; analog-input:3 voltage_mag_p3; analog-input:4 voltage_ang_p1; analog-input:5 voltage_ang_p2; analog-input:6 voltage_ang_p3; analog-input:7 current_mag_p1; analog-input:8 current_mag_p2; analog-input:9 current_mag_p3; analog-input:10 current_ang_p1; analog-input:11 current_ang_p2; analog-input:12 current_ang_p3; analog-input:13 active_power_output; analog-input:14 real_power_p1; analog-input:15 real_power_p2; analog-input:16 real_power_p3; analog-input:17 reactive_power_p1; analog-input:18 reactive_power_p2; analog-input:19 reactive_power_p3; analog-input:20 power_factor; analog-output:21 active_power_output; analog-output:22 power_factor; binary-input:23 active; binary-output:24 active -power-distribution | 'generator' | sunspec | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'power_factor'] analog-read-write=['active_power_output', 'power_factor'] binary-read=['active'] binary-read-write=['active'] registers=0 power-distribution | 'heater' | * | raises AppError power-distribution | 'heatingtank' | * | raises AppError power-distribution | 'inverter' | dnp3 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[1, 101, 123, 126] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3; analog-input:6 current_mag_p1; analog-input:7 current_mag_p2; analog-input:8 current_mag_p3; analog-input:9 current_ang_p1; analog-input:10 current_ang_p2; analog-input:11 current_ang_p3; analog-input:12 active_power_output; analog-input:13 real_power_p1; analog-input:14 real_power_p2; analog-input:15 real_power_p3; analog-input:16 reactive_power_p1; analog-input:17 reactive_power_p2; analog-input:18 reactive_power_p3; analog-output:19 1; analog-output:20 101; analog-output:21 123; analog-output:22 126; binary-input:23 active; binary-output:24 active @@ -401,14 +369,12 @@ power-distribution | 'inverter' | modbus | range=(-600, 1800) infrastructure=pow power-distribution | 'inverter' | modbus-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[1, 101, 123, 126] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 voltage_mag_p1; input-register:30001 voltage_mag_p2; input-register:30002 voltage_mag_p3; input-register:30003 voltage_ang_p1; input-register:30004 voltage_ang_p2; input-register:30005 voltage_ang_p3; input-register:30006 current_mag_p1; input-register:30007 current_mag_p2; input-register:30008 current_mag_p3; input-register:30009 current_ang_p1; input-register:30010 current_ang_p2; input-register:30011 current_ang_p3; input-register:30012 active_power_output; input-register:30013 real_power_p1; input-register:30014 real_power_p2; input-register:30015 real_power_p3; input-register:30016 reactive_power_p1; input-register:30017 reactive_power_p2; input-register:30018 reactive_power_p3; holding-register:40000 1; holding-register:40001 101; holding-register:40002 123; holding-register:40003 126; discrete-input:10000 active; coil:0 active power-distribution | 'inverter' | bacnet | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[1, 101, 123, 126] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3; analog-input:6 current_mag_p1; analog-input:7 current_mag_p2; analog-input:8 current_mag_p3; analog-input:9 current_ang_p1; analog-input:10 current_ang_p2; analog-input:11 current_ang_p3; analog-input:12 active_power_output; analog-input:13 real_power_p1; analog-input:14 real_power_p2; analog-input:15 real_power_p3; analog-input:16 reactive_power_p1; analog-input:17 reactive_power_p2; analog-input:18 reactive_power_p3; analog-output:19 1; analog-output:20 101; analog-output:21 123; analog-output:22 126; binary-input:23 active; binary-output:24 active power-distribution | 'inverter' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[1, 101, 123, 126] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 voltage_mag_p1; analog-input:2 voltage_mag_p2; analog-input:3 voltage_mag_p3; analog-input:4 voltage_ang_p1; analog-input:5 voltage_ang_p2; analog-input:6 voltage_ang_p3; analog-input:7 current_mag_p1; analog-input:8 current_mag_p2; analog-input:9 current_mag_p3; analog-input:10 current_ang_p1; analog-input:11 current_ang_p2; analog-input:12 current_ang_p3; analog-input:13 active_power_output; analog-input:14 real_power_p1; analog-input:15 real_power_p2; analog-input:16 real_power_p3; analog-input:17 reactive_power_p1; analog-input:18 reactive_power_p2; analog-input:19 reactive_power_p3; analog-output:20 1; analog-output:21 101; analog-output:22 123; analog-output:23 126; binary-input:24 active; binary-output:25 active -power-distribution | 'inverter' | sunspec | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'active_power_output', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[1, 101, 123, 126] binary-read=['active'] binary-read-write=['active'] registers=139 power-distribution | 'load' | dnp3 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3; analog-input:6 current_mag_p1; analog-input:7 current_mag_p2; analog-input:8 current_mag_p3; analog-input:9 current_ang_p1; analog-input:10 current_ang_p2; analog-input:11 current_ang_p3; analog-input:12 real_power_p1; analog-input:13 real_power_p2; analog-input:14 real_power_p3; analog-input:15 reactive_power_p1; analog-input:16 reactive_power_p2; analog-input:17 reactive_power_p3; binary-input:18 active; binary-output:19 active power-distribution | 'load' | dnp3-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3; analog-input:6 current_mag_p1; analog-input:7 current_mag_p2; analog-input:8 current_mag_p3; analog-input:9 current_ang_p1; analog-input:10 current_ang_p2; analog-input:11 current_ang_p3; analog-input:12 real_power_p1; analog-input:13 real_power_p2; analog-input:14 real_power_p3; analog-input:15 reactive_power_p1; analog-input:16 reactive_power_p2; analog-input:17 reactive_power_p3; binary-input:18 active; binary-output:19 active power-distribution | 'load' | modbus | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 voltage_mag_p1; input-register:30001 voltage_mag_p2; input-register:30002 voltage_mag_p3; input-register:30003 voltage_ang_p1; input-register:30004 voltage_ang_p2; input-register:30005 voltage_ang_p3; input-register:30006 current_mag_p1; input-register:30007 current_mag_p2; input-register:30008 current_mag_p3; input-register:30009 current_ang_p1; input-register:30010 current_ang_p2; input-register:30011 current_ang_p3; input-register:30012 real_power_p1; input-register:30013 real_power_p2; input-register:30014 real_power_p3; input-register:30015 reactive_power_p1; input-register:30016 reactive_power_p2; input-register:30017 reactive_power_p3; discrete-input:10000 active; coil:0 active power-distribution | 'load' | modbus-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 voltage_mag_p1; input-register:30001 voltage_mag_p2; input-register:30002 voltage_mag_p3; input-register:30003 voltage_ang_p1; input-register:30004 voltage_ang_p2; input-register:30005 voltage_ang_p3; input-register:30006 current_mag_p1; input-register:30007 current_mag_p2; input-register:30008 current_mag_p3; input-register:30009 current_ang_p1; input-register:30010 current_ang_p2; input-register:30011 current_ang_p3; input-register:30012 real_power_p1; input-register:30013 real_power_p2; input-register:30014 real_power_p3; input-register:30015 reactive_power_p1; input-register:30016 reactive_power_p2; input-register:30017 reactive_power_p3; discrete-input:10000 active; coil:0 active power-distribution | 'load' | bacnet | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3; analog-input:6 current_mag_p1; analog-input:7 current_mag_p2; analog-input:8 current_mag_p3; analog-input:9 current_ang_p1; analog-input:10 current_ang_p2; analog-input:11 current_ang_p3; analog-input:12 real_power_p1; analog-input:13 real_power_p2; analog-input:14 real_power_p3; analog-input:15 reactive_power_p1; analog-input:16 reactive_power_p2; analog-input:17 reactive_power_p3; binary-input:18 active; binary-output:19 active power-distribution | 'load' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 voltage_mag_p1; analog-input:2 voltage_mag_p2; analog-input:3 voltage_mag_p3; analog-input:4 voltage_ang_p1; analog-input:5 voltage_ang_p2; analog-input:6 voltage_ang_p3; analog-input:7 current_mag_p1; analog-input:8 current_mag_p2; analog-input:9 current_mag_p3; analog-input:10 current_ang_p1; analog-input:11 current_ang_p2; analog-input:12 current_ang_p3; analog-input:13 real_power_p1; analog-input:14 real_power_p2; analog-input:15 real_power_p3; analog-input:16 reactive_power_p1; analog-input:17 reactive_power_p2; analog-input:18 reactive_power_p3; binary-input:19 active; binary-output:20 active -power-distribution | 'load' | sunspec | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=0 power-distribution | 'mixingtank' | * | raises AppError power-distribution | 'pump' | * | raises AppError power-distribution | 'room' | * | raises AppError @@ -418,7 +384,6 @@ power-distribution | 'shunt' | modbus | range=(-600, 1800) infrastructure=power- power-distribution | 'shunt' | modbus-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 voltage_mag_p1; input-register:30001 voltage_mag_p2; input-register:30002 voltage_mag_p3; input-register:30003 voltage_ang_p1; input-register:30004 voltage_ang_p2; input-register:30005 voltage_ang_p3; input-register:30006 current_mag_p1; input-register:30007 current_mag_p2; input-register:30008 current_mag_p3; input-register:30009 current_ang_p1; input-register:30010 current_ang_p2; input-register:30011 current_ang_p3; input-register:30012 real_power_p1; input-register:30013 real_power_p2; input-register:30014 real_power_p3; input-register:30015 reactive_power_p1; input-register:30016 reactive_power_p2; input-register:30017 reactive_power_p3; discrete-input:10000 active; coil:0 active power-distribution | 'shunt' | bacnet | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_p1; analog-input:1 voltage_mag_p2; analog-input:2 voltage_mag_p3; analog-input:3 voltage_ang_p1; analog-input:4 voltage_ang_p2; analog-input:5 voltage_ang_p3; analog-input:6 current_mag_p1; analog-input:7 current_mag_p2; analog-input:8 current_mag_p3; analog-input:9 current_ang_p1; analog-input:10 current_ang_p2; analog-input:11 current_ang_p3; analog-input:12 real_power_p1; analog-input:13 real_power_p2; analog-input:14 real_power_p3; analog-input:15 reactive_power_p1; analog-input:16 reactive_power_p2; analog-input:17 reactive_power_p3; binary-input:18 active; binary-output:19 active power-distribution | 'shunt' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 voltage_mag_p1; analog-input:2 voltage_mag_p2; analog-input:3 voltage_mag_p3; analog-input:4 voltage_ang_p1; analog-input:5 voltage_ang_p2; analog-input:6 voltage_ang_p3; analog-input:7 current_mag_p1; analog-input:8 current_mag_p2; analog-input:9 current_mag_p3; analog-input:10 current_ang_p1; analog-input:11 current_ang_p2; analog-input:12 current_ang_p3; analog-input:13 real_power_p1; analog-input:14 real_power_p2; analog-input:15 real_power_p3; analog-input:16 reactive_power_p1; analog-input:17 reactive_power_p2; analog-input:18 reactive_power_p3; binary-input:19 active; binary-output:20 active -power-distribution | 'shunt' | sunspec | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_p1', 'voltage_mag_p2', 'voltage_mag_p3', 'voltage_ang_p1', 'voltage_ang_p2', 'voltage_ang_p3', 'current_mag_p1', 'current_mag_p2', 'current_mag_p3', 'current_ang_p1', 'current_ang_p2', 'current_ang_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=0 power-distribution | 'storagetank' | * | raises AppError power-distribution | 'thermostat' | * | raises AppError power-distribution | 'transformer' | dnp3 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_wdg1_p1', 'voltage_mag_wdg1_p2', 'voltage_mag_wdg1_p3', 'voltage_ang_wdg1_p1', 'voltage_ang_wdg1_p2', 'voltage_ang_wdg1_p3', 'current_mag_wdg1_p1', 'current_mag_wdg1_p2', 'current_mag_wdg1_p3', 'current_ang_wdg1_p1', 'current_ang_wdg1_p2', 'current_ang_wdg1_p3', 'voltage_mag_wdg2_p1', 'voltage_mag_wdg2_p2', 'voltage_mag_wdg2_p3', 'voltage_ang_wdg2_p1', 'voltage_ang_wdg2_p2', 'voltage_ang_wdg2_p3', 'current_mag_wdg2_p1', 'current_mag_wdg2_p2', 'current_mag_wdg2_p3', 'current_ang_wdg2_p1', 'current_ang_wdg2_p2', 'current_ang_wdg2_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'tap_setting_wdg1', 'tap_setting_wdg2'] analog-read-write=['tap_setting_wdg1', 'tap_setting_wdg2'] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_wdg1_p1; analog-input:1 voltage_mag_wdg1_p2; analog-input:2 voltage_mag_wdg1_p3; analog-input:3 voltage_ang_wdg1_p1; analog-input:4 voltage_ang_wdg1_p2; analog-input:5 voltage_ang_wdg1_p3; analog-input:6 current_mag_wdg1_p1; analog-input:7 current_mag_wdg1_p2; analog-input:8 current_mag_wdg1_p3; analog-input:9 current_ang_wdg1_p1; analog-input:10 current_ang_wdg1_p2; analog-input:11 current_ang_wdg1_p3; analog-input:12 voltage_mag_wdg2_p1; analog-input:13 voltage_mag_wdg2_p2; analog-input:14 voltage_mag_wdg2_p3; analog-input:15 voltage_ang_wdg2_p1; analog-input:16 voltage_ang_wdg2_p2; analog-input:17 voltage_ang_wdg2_p3; analog-input:18 current_mag_wdg2_p1; analog-input:19 current_mag_wdg2_p2; analog-input:20 current_mag_wdg2_p3; analog-input:21 current_ang_wdg2_p1; analog-input:22 current_ang_wdg2_p2; analog-input:23 current_ang_wdg2_p3; analog-input:24 real_power_p1; analog-input:25 real_power_p2; analog-input:26 real_power_p3; analog-input:27 reactive_power_p1; analog-input:28 reactive_power_p2; analog-input:29 reactive_power_p3; analog-input:30 tap_setting_wdg1; analog-input:31 tap_setting_wdg2; analog-output:32 tap_setting_wdg1; analog-output:33 tap_setting_wdg2; binary-input:34 active; binary-output:35 active @@ -427,7 +392,6 @@ power-distribution | 'transformer' | modbus | range=(-600, 1800) infrastructure= power-distribution | 'transformer' | modbus-serial | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_wdg1_p1', 'voltage_mag_wdg1_p2', 'voltage_mag_wdg1_p3', 'voltage_ang_wdg1_p1', 'voltage_ang_wdg1_p2', 'voltage_ang_wdg1_p3', 'current_mag_wdg1_p1', 'current_mag_wdg1_p2', 'current_mag_wdg1_p3', 'current_ang_wdg1_p1', 'current_ang_wdg1_p2', 'current_ang_wdg1_p3', 'voltage_mag_wdg2_p1', 'voltage_mag_wdg2_p2', 'voltage_mag_wdg2_p3', 'voltage_ang_wdg2_p1', 'voltage_ang_wdg2_p2', 'voltage_ang_wdg2_p3', 'current_mag_wdg2_p1', 'current_mag_wdg2_p2', 'current_mag_wdg2_p3', 'current_ang_wdg2_p1', 'current_ang_wdg2_p2', 'current_ang_wdg2_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'tap_setting_wdg1', 'tap_setting_wdg2'] analog-read-write=['tap_setting_wdg1', 'tap_setting_wdg2'] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 voltage_mag_wdg1_p1; input-register:30001 voltage_mag_wdg1_p2; input-register:30002 voltage_mag_wdg1_p3; input-register:30003 voltage_ang_wdg1_p1; input-register:30004 voltage_ang_wdg1_p2; input-register:30005 voltage_ang_wdg1_p3; input-register:30006 current_mag_wdg1_p1; input-register:30007 current_mag_wdg1_p2; input-register:30008 current_mag_wdg1_p3; input-register:30009 current_ang_wdg1_p1; input-register:30010 current_ang_wdg1_p2; input-register:30011 current_ang_wdg1_p3; input-register:30012 voltage_mag_wdg2_p1; input-register:30013 voltage_mag_wdg2_p2; input-register:30014 voltage_mag_wdg2_p3; input-register:30015 voltage_ang_wdg2_p1; input-register:30016 voltage_ang_wdg2_p2; input-register:30017 voltage_ang_wdg2_p3; input-register:30018 current_mag_wdg2_p1; input-register:30019 current_mag_wdg2_p2; input-register:30020 current_mag_wdg2_p3; input-register:30021 current_ang_wdg2_p1; input-register:30022 current_ang_wdg2_p2; input-register:30023 current_ang_wdg2_p3; input-register:30024 real_power_p1; input-register:30025 real_power_p2; input-register:30026 real_power_p3; input-register:30027 reactive_power_p1; input-register:30028 reactive_power_p2; input-register:30029 reactive_power_p3; input-register:30030 tap_setting_wdg1; input-register:30031 tap_setting_wdg2; holding-register:40000 tap_setting_wdg1; holding-register:40001 tap_setting_wdg2; discrete-input:10000 active; coil:0 active power-distribution | 'transformer' | bacnet | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_wdg1_p1', 'voltage_mag_wdg1_p2', 'voltage_mag_wdg1_p3', 'voltage_ang_wdg1_p1', 'voltage_ang_wdg1_p2', 'voltage_ang_wdg1_p3', 'current_mag_wdg1_p1', 'current_mag_wdg1_p2', 'current_mag_wdg1_p3', 'current_ang_wdg1_p1', 'current_ang_wdg1_p2', 'current_ang_wdg1_p3', 'voltage_mag_wdg2_p1', 'voltage_mag_wdg2_p2', 'voltage_mag_wdg2_p3', 'voltage_ang_wdg2_p1', 'voltage_ang_wdg2_p2', 'voltage_ang_wdg2_p3', 'current_mag_wdg2_p1', 'current_mag_wdg2_p2', 'current_mag_wdg2_p3', 'current_ang_wdg2_p1', 'current_ang_wdg2_p2', 'current_ang_wdg2_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'tap_setting_wdg1', 'tap_setting_wdg2'] analog-read-write=['tap_setting_wdg1', 'tap_setting_wdg2'] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage_mag_wdg1_p1; analog-input:1 voltage_mag_wdg1_p2; analog-input:2 voltage_mag_wdg1_p3; analog-input:3 voltage_ang_wdg1_p1; analog-input:4 voltage_ang_wdg1_p2; analog-input:5 voltage_ang_wdg1_p3; analog-input:6 current_mag_wdg1_p1; analog-input:7 current_mag_wdg1_p2; analog-input:8 current_mag_wdg1_p3; analog-input:9 current_ang_wdg1_p1; analog-input:10 current_ang_wdg1_p2; analog-input:11 current_ang_wdg1_p3; analog-input:12 voltage_mag_wdg2_p1; analog-input:13 voltage_mag_wdg2_p2; analog-input:14 voltage_mag_wdg2_p3; analog-input:15 voltage_ang_wdg2_p1; analog-input:16 voltage_ang_wdg2_p2; analog-input:17 voltage_ang_wdg2_p3; analog-input:18 current_mag_wdg2_p1; analog-input:19 current_mag_wdg2_p2; analog-input:20 current_mag_wdg2_p3; analog-input:21 current_ang_wdg2_p1; analog-input:22 current_ang_wdg2_p2; analog-input:23 current_ang_wdg2_p3; analog-input:24 real_power_p1; analog-input:25 real_power_p2; analog-input:26 real_power_p3; analog-input:27 reactive_power_p1; analog-input:28 reactive_power_p2; analog-input:29 reactive_power_p3; analog-input:30 tap_setting_wdg1; analog-input:31 tap_setting_wdg2; analog-output:32 tap_setting_wdg1; analog-output:33 tap_setting_wdg2; binary-input:34 active; binary-output:35 active power-distribution | 'transformer' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_wdg1_p1', 'voltage_mag_wdg1_p2', 'voltage_mag_wdg1_p3', 'voltage_ang_wdg1_p1', 'voltage_ang_wdg1_p2', 'voltage_ang_wdg1_p3', 'current_mag_wdg1_p1', 'current_mag_wdg1_p2', 'current_mag_wdg1_p3', 'current_ang_wdg1_p1', 'current_ang_wdg1_p2', 'current_ang_wdg1_p3', 'voltage_mag_wdg2_p1', 'voltage_mag_wdg2_p2', 'voltage_mag_wdg2_p3', 'voltage_ang_wdg2_p1', 'voltage_ang_wdg2_p2', 'voltage_ang_wdg2_p3', 'current_mag_wdg2_p1', 'current_mag_wdg2_p2', 'current_mag_wdg2_p3', 'current_ang_wdg2_p1', 'current_ang_wdg2_p2', 'current_ang_wdg2_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'tap_setting_wdg1', 'tap_setting_wdg2'] analog-read-write=['tap_setting_wdg1', 'tap_setting_wdg2'] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 voltage_mag_wdg1_p1; analog-input:2 voltage_mag_wdg1_p2; analog-input:3 voltage_mag_wdg1_p3; analog-input:4 voltage_ang_wdg1_p1; analog-input:5 voltage_ang_wdg1_p2; analog-input:6 voltage_ang_wdg1_p3; analog-input:7 current_mag_wdg1_p1; analog-input:8 current_mag_wdg1_p2; analog-input:9 current_mag_wdg1_p3; analog-input:10 current_ang_wdg1_p1; analog-input:11 current_ang_wdg1_p2; analog-input:12 current_ang_wdg1_p3; analog-input:13 voltage_mag_wdg2_p1; analog-input:14 voltage_mag_wdg2_p2; analog-input:15 voltage_mag_wdg2_p3; analog-input:16 voltage_ang_wdg2_p1; analog-input:17 voltage_ang_wdg2_p2; analog-input:18 voltage_ang_wdg2_p3; analog-input:19 current_mag_wdg2_p1; analog-input:20 current_mag_wdg2_p2; analog-input:21 current_mag_wdg2_p3; analog-input:22 current_ang_wdg2_p1; analog-input:23 current_ang_wdg2_p2; analog-input:24 current_ang_wdg2_p3; analog-input:25 real_power_p1; analog-input:26 real_power_p2; analog-input:27 real_power_p3; analog-input:28 reactive_power_p1; analog-input:29 reactive_power_p2; analog-input:30 reactive_power_p3; analog-input:31 tap_setting_wdg1; analog-input:32 tap_setting_wdg2; analog-output:33 tap_setting_wdg1; analog-output:34 tap_setting_wdg2; binary-input:35 active; binary-output:36 active -power-distribution | 'transformer' | sunspec | range=(-600, 1800) infrastructure=power-distribution analog-read=['voltage_mag_wdg1_p1', 'voltage_mag_wdg1_p2', 'voltage_mag_wdg1_p3', 'voltage_ang_wdg1_p1', 'voltage_ang_wdg1_p2', 'voltage_ang_wdg1_p3', 'current_mag_wdg1_p1', 'current_mag_wdg1_p2', 'current_mag_wdg1_p3', 'current_ang_wdg1_p1', 'current_ang_wdg1_p2', 'current_ang_wdg1_p3', 'voltage_mag_wdg2_p1', 'voltage_mag_wdg2_p2', 'voltage_mag_wdg2_p3', 'voltage_ang_wdg2_p1', 'voltage_ang_wdg2_p2', 'voltage_ang_wdg2_p3', 'current_mag_wdg2_p1', 'current_mag_wdg2_p2', 'current_mag_wdg2_p3', 'current_ang_wdg2_p1', 'current_ang_wdg2_p2', 'current_ang_wdg2_p3', 'real_power_p1', 'real_power_p2', 'real_power_p3', 'reactive_power_p1', 'reactive_power_p2', 'reactive_power_p3', 'tap_setting_wdg1', 'tap_setting_wdg2'] analog-read-write=['tap_setting_wdg1', 'tap_setting_wdg2'] binary-read=['active'] binary-read-write=['active'] registers=0 power-distribution | 'valve' | * | raises AppError power-distribution | 'water' | * | raises AppError power-distribution | 5 | * | raises AppError @@ -446,14 +410,12 @@ power-transmission | 'branch' | modbus | range=(-600, 1800) infrastructure=power power-transmission | 'branch' | modbus-serial | range=(-600, 1800) infrastructure=power-transmission analog-read=['charging', 'current', 'source_mw', 'target_mw', 'phase_angle'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 charging; input-register:30001 current; input-register:30002 source_mw; input-register:30003 target_mw; input-register:30004 phase_angle; discrete-input:10000 active; coil:0 active power-transmission | 'branch' | bacnet | range=(-600, 1800) infrastructure=power-transmission analog-read=['charging', 'current', 'source_mw', 'target_mw', 'phase_angle'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 charging; analog-input:1 current; analog-input:2 source_mw; analog-input:3 target_mw; analog-input:4 phase_angle; binary-input:5 active; binary-output:6 active power-transmission | 'branch' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-transmission analog-read=['charging', 'current', 'source_mw', 'target_mw', 'phase_angle'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 charging; analog-input:2 current; analog-input:3 source_mw; analog-input:4 target_mw; analog-input:5 phase_angle; binary-input:6 active; binary-output:7 active -power-transmission | 'branch' | sunspec | range=(-600, 1800) infrastructure=power-transmission analog-read=['charging', 'current', 'source_mw', 'target_mw', 'phase_angle'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=0 power-transmission | 'bus' | dnp3 | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'angle', 'gen_mw', 'gen_mvar', 'load_mw', 'load_mvar', 'shunt_mvar'] analog-read-write=[] binary-read=['active', 'slack'] binary-read-write=['active'] registers=analog-input:0 voltage; analog-input:1 angle; analog-input:2 gen_mw; analog-input:3 gen_mvar; analog-input:4 load_mw; analog-input:5 load_mvar; analog-input:6 shunt_mvar; binary-input:7 active; binary-input:8 slack; binary-output:9 active power-transmission | 'bus' | dnp3-serial | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'angle', 'gen_mw', 'gen_mvar', 'load_mw', 'load_mvar', 'shunt_mvar'] analog-read-write=[] binary-read=['active', 'slack'] binary-read-write=['active'] registers=analog-input:0 voltage; analog-input:1 angle; analog-input:2 gen_mw; analog-input:3 gen_mvar; analog-input:4 load_mw; analog-input:5 load_mvar; analog-input:6 shunt_mvar; binary-input:7 active; binary-input:8 slack; binary-output:9 active power-transmission | 'bus' | modbus | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'angle', 'gen_mw', 'gen_mvar', 'load_mw', 'load_mvar', 'shunt_mvar'] analog-read-write=[] binary-read=['active', 'slack'] binary-read-write=['active'] registers=input-register:30000 voltage; input-register:30001 angle; input-register:30002 gen_mw; input-register:30003 gen_mvar; input-register:30004 load_mw; input-register:30005 load_mvar; input-register:30006 shunt_mvar; discrete-input:10000 active; discrete-input:10001 slack; coil:0 active power-transmission | 'bus' | modbus-serial | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'angle', 'gen_mw', 'gen_mvar', 'load_mw', 'load_mvar', 'shunt_mvar'] analog-read-write=[] binary-read=['active', 'slack'] binary-read-write=['active'] registers=input-register:30000 voltage; input-register:30001 angle; input-register:30002 gen_mw; input-register:30003 gen_mvar; input-register:30004 load_mw; input-register:30005 load_mvar; input-register:30006 shunt_mvar; discrete-input:10000 active; discrete-input:10001 slack; coil:0 active power-transmission | 'bus' | bacnet | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'angle', 'gen_mw', 'gen_mvar', 'load_mw', 'load_mvar', 'shunt_mvar'] analog-read-write=[] binary-read=['active', 'slack'] binary-read-write=['active'] registers=analog-input:0 voltage; analog-input:1 angle; analog-input:2 gen_mw; analog-input:3 gen_mvar; analog-input:4 load_mw; analog-input:5 load_mvar; analog-input:6 shunt_mvar; binary-input:7 active; binary-input:8 slack; binary-output:9 active power-transmission | 'bus' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'angle', 'gen_mw', 'gen_mvar', 'load_mw', 'load_mvar', 'shunt_mvar'] analog-read-write=[] binary-read=['active', 'slack'] binary-read-write=['active'] registers=analog-input:1 voltage; analog-input:2 angle; analog-input:3 gen_mw; analog-input:4 gen_mvar; analog-input:5 load_mw; analog-input:6 load_mvar; analog-input:7 shunt_mvar; binary-input:8 active; binary-input:9 slack; binary-output:10 active -power-transmission | 'bus' | sunspec | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'angle', 'gen_mw', 'gen_mvar', 'load_mw', 'load_mvar', 'shunt_mvar'] analog-read-write=[] binary-read=['active', 'slack'] binary-read-write=['active'] registers=0 power-transmission | 'cooler' | * | raises AppError power-transmission | 'cps' | * | raises AppError power-transmission | 'fan' | * | raises AppError @@ -465,7 +427,6 @@ power-transmission | 'generator' | modbus | range=(-600, 1800) infrastructure=po power-transmission | 'generator' | modbus-serial | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 voltage; input-register:30001 mw; input-register:30002 mvar; discrete-input:10000 active; coil:0 active power-transmission | 'generator' | bacnet | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 voltage; analog-input:1 mw; analog-input:2 mvar; binary-input:3 active; binary-output:4 active power-transmission | 'generator' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 voltage; analog-input:2 mw; analog-input:3 mvar; binary-input:4 active; binary-output:5 active -power-transmission | 'generator' | sunspec | range=(-600, 1800) infrastructure=power-transmission analog-read=['voltage', 'mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=0 power-transmission | 'heater' | * | raises AppError power-transmission | 'heatingtank' | * | raises AppError power-transmission | 'inverter' | dnp3 | range=(-600, 1800) infrastructure=power-transmission analog-read=[] analog-read-write=[1, 103, 120, 123] binary-read=[] binary-read-write=[] registers=analog-output:0 1; analog-output:1 103; analog-output:2 120; analog-output:3 123 @@ -474,14 +435,12 @@ power-transmission | 'inverter' | modbus | range=(-600, 1800) infrastructure=pow power-transmission | 'inverter' | modbus-serial | range=(-600, 1800) infrastructure=power-transmission analog-read=[] analog-read-write=[1, 103, 120, 123] binary-read=[] binary-read-write=[] registers=holding-register:40000 1; holding-register:40001 103; holding-register:40002 120; holding-register:40003 123 power-transmission | 'inverter' | bacnet | range=(-600, 1800) infrastructure=power-transmission analog-read=[] analog-read-write=[1, 103, 120, 123] binary-read=[] binary-read-write=[] registers=analog-output:0 1; analog-output:1 103; analog-output:2 120; analog-output:3 123 power-transmission | 'inverter' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-transmission analog-read=[] analog-read-write=[1, 103, 120, 123] binary-read=[] binary-read-write=[] registers=analog-output:1 1; analog-output:2 103; analog-output:3 120; analog-output:4 123 -power-transmission | 'inverter' | sunspec | range=(-600, 1800) infrastructure=power-transmission analog-read=[] analog-read-write=[1, 103, 120, 123] binary-read=[] binary-read-write=[] registers=108 power-transmission | 'load' | dnp3 | range=(-600, 1800) infrastructure=power-transmission analog-read=['mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 mw; analog-input:1 mvar; binary-input:2 active; binary-output:3 active power-transmission | 'load' | dnp3-serial | range=(-600, 1800) infrastructure=power-transmission analog-read=['mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 mw; analog-input:1 mvar; binary-input:2 active; binary-output:3 active power-transmission | 'load' | modbus | range=(-600, 1800) infrastructure=power-transmission analog-read=['mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 mw; input-register:30001 mvar; discrete-input:10000 active; coil:0 active power-transmission | 'load' | modbus-serial | range=(-600, 1800) infrastructure=power-transmission analog-read=['mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 mw; input-register:30001 mvar; discrete-input:10000 active; coil:0 active power-transmission | 'load' | bacnet | range=(-600, 1800) infrastructure=power-transmission analog-read=['mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 mw; analog-input:1 mvar; binary-input:2 active; binary-output:3 active power-transmission | 'load' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-transmission analog-read=['mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 mw; analog-input:2 mvar; binary-input:3 active; binary-output:4 active -power-transmission | 'load' | sunspec | range=(-600, 1800) infrastructure=power-transmission analog-read=['mw', 'mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=0 power-transmission | 'mixingtank' | * | raises AppError power-transmission | 'pump' | * | raises AppError power-transmission | 'room' | * | raises AppError @@ -491,7 +450,6 @@ power-transmission | 'shunt' | modbus | range=(-600, 1800) infrastructure=power- power-transmission | 'shunt' | modbus-serial | range=(-600, 1800) infrastructure=power-transmission analog-read=['actual_mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=input-register:30000 actual_mvar; discrete-input:10000 active; coil:0 active power-transmission | 'shunt' | bacnet | range=(-600, 1800) infrastructure=power-transmission analog-read=['actual_mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:0 actual_mvar; binary-input:1 active; binary-output:2 active power-transmission | 'shunt' | iec60870-5-104 | range=(-600, 1800) infrastructure=power-transmission analog-read=['actual_mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=analog-input:1 actual_mvar; binary-input:2 active; binary-output:3 active -power-transmission | 'shunt' | sunspec | range=(-600, 1800) infrastructure=power-transmission analog-read=['actual_mvar'] analog-read-write=[] binary-read=['active'] binary-read-write=['active'] registers=0 power-transmission | 'storagetank' | * | raises AppError power-transmission | 'thermostat' | * | raises AppError power-transmission | 'transformer' | * | raises AppError @@ -504,14 +462,12 @@ rtds | 'analog-read' | modbus | range=(-32767.0, 32767.0) infrastructure=rtds an rtds | 'analog-read' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=['real', 'angle'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 real; input-register:30001 angle rtds | 'analog-read' | bacnet | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=['real', 'angle'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 real; analog-input:1 angle rtds | 'analog-read' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=['real', 'angle'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 real; analog-input:2 angle -rtds | 'analog-read' | sunspec | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=['real', 'angle'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 rtds | 'analog-read-write' | dnp3 | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value rtds | 'analog-read-write' | dnp3-serial | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value rtds | 'analog-read-write' | modbus | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=holding-register:40000 value rtds | 'analog-read-write' | modbus-serial | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=holding-register:40000 value rtds | 'analog-read-write' | bacnet | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:0 value rtds | 'analog-read-write' | iec60870-5-104 | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=analog-output:1 value -rtds | 'analog-read-write' | sunspec | range=(-32767.0, 32767.0) infrastructure=rtds analog-read=[] analog-read-write=['value'] binary-read=[] binary-read-write=[] registers=0 rtds | 'battstack' | * | raises AppError rtds | 'binary-read' | * | raises AppError rtds | 'binary-read-write' | dnp3 | range=(0, 1000) infrastructure=rtds analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['closed'] registers=binary-output:0 closed @@ -520,7 +476,6 @@ rtds | 'binary-read-write' | modbus | range=(0, 1000) infrastructure=rtds analog rtds | 'binary-read-write' | modbus-serial | range=(0, 1000) infrastructure=rtds analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['closed'] registers=coil:0 closed rtds | 'binary-read-write' | bacnet | range=(0, 1000) infrastructure=rtds analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['closed'] registers=binary-output:0 closed rtds | 'binary-read-write' | iec60870-5-104 | range=(0, 1000) infrastructure=rtds analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['closed'] registers=binary-output:1 closed -rtds | 'binary-read-write' | sunspec | range=(0, 1000) infrastructure=rtds analog-read=[] analog-read-write=[] binary-read=[] binary-read-write=['closed'] registers=0 rtds | 'bmsscrtu' | * | raises AppError rtds | 'bmsse' | * | raises AppError rtds | 'boat' | * | raises AppError @@ -560,14 +515,12 @@ waterway | 'boat' | modbus | range=(0, 1000) infrastructure=waterway analog-read waterway | 'boat' | modbus-serial | range=(0, 1000) infrastructure=waterway analog-read=['location', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 location; input-register:30001 direction waterway | 'boat' | bacnet | range=(0, 1000) infrastructure=waterway analog-read=['location', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 location; analog-input:1 direction waterway | 'boat' | iec60870-5-104 | range=(0, 1000) infrastructure=waterway analog-read=['location', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 location; analog-input:2 direction -waterway | 'boat' | sunspec | range=(0, 1000) infrastructure=waterway analog-read=['location', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 waterway | 'boat-sensor' | dnp3 | range=(0, 1000) infrastructure=waterway analog-read=['active', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 active; analog-input:1 direction waterway | 'boat-sensor' | dnp3-serial | range=(0, 1000) infrastructure=waterway analog-read=['active', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 active; analog-input:1 direction waterway | 'boat-sensor' | modbus | range=(0, 1000) infrastructure=waterway analog-read=['active', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 active; input-register:30001 direction waterway | 'boat-sensor' | modbus-serial | range=(0, 1000) infrastructure=waterway analog-read=['active', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 active; input-register:30001 direction waterway | 'boat-sensor' | bacnet | range=(0, 1000) infrastructure=waterway analog-read=['active', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 active; analog-input:1 direction waterway | 'boat-sensor' | iec60870-5-104 | range=(0, 1000) infrastructure=waterway analog-read=['active', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 active; analog-input:2 direction -waterway | 'boat-sensor' | sunspec | range=(0, 1000) infrastructure=waterway analog-read=['active', 'direction'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 waterway | 'branch' | * | raises AppError waterway | 'bus' | * | raises AppError waterway | 'cooler' | * | raises AppError @@ -580,7 +533,6 @@ waterway | 'gate' | modbus | range=(0, 1000) infrastructure=waterway analog-read waterway | 'gate' | modbus-serial | range=(0, 1000) infrastructure=waterway analog-read=['open'] analog-read-write=['open'] binary-read=[] binary-read-write=[] registers=input-register:30000 open; holding-register:40000 open waterway | 'gate' | bacnet | range=(0, 1000) infrastructure=waterway analog-read=['open'] analog-read-write=['open'] binary-read=[] binary-read-write=[] registers=analog-input:0 open; analog-output:1 open waterway | 'gate' | iec60870-5-104 | range=(0, 1000) infrastructure=waterway analog-read=['open'] analog-read-write=['open'] binary-read=[] binary-read-write=[] registers=analog-input:1 open; analog-output:2 open -waterway | 'gate' | sunspec | range=(0, 1000) infrastructure=waterway analog-read=['open'] analog-read-write=['open'] binary-read=[] binary-read-write=[] registers=0 waterway | 'generator' | * | raises AppError waterway | 'heater' | * | raises AppError waterway | 'heatingtank' | * | raises AppError @@ -599,12 +551,10 @@ waterway | 'valve' | modbus | range=(0, 1000) infrastructure=waterway analog-rea waterway | 'valve' | modbus-serial | range=(0, 1000) infrastructure=waterway analog-read=['open'] analog-read-write=['open'] binary-read=[] binary-read-write=[] registers=input-register:30000 open; holding-register:40000 open waterway | 'valve' | bacnet | range=(0, 1000) infrastructure=waterway analog-read=['open'] analog-read-write=['open'] binary-read=[] binary-read-write=[] registers=analog-input:0 open; analog-output:1 open waterway | 'valve' | iec60870-5-104 | range=(0, 1000) infrastructure=waterway analog-read=['open'] analog-read-write=['open'] binary-read=[] binary-read-write=[] registers=analog-input:1 open; analog-output:2 open -waterway | 'valve' | sunspec | range=(0, 1000) infrastructure=waterway analog-read=['open'] analog-read-write=['open'] binary-read=[] binary-read-write=[] registers=0 waterway | 'water' | dnp3 | range=(0, 1000) infrastructure=waterway analog-read=['height'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 height waterway | 'water' | dnp3-serial | range=(0, 1000) infrastructure=waterway analog-read=['height'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 height waterway | 'water' | modbus | range=(0, 1000) infrastructure=waterway analog-read=['height'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 height waterway | 'water' | modbus-serial | range=(0, 1000) infrastructure=waterway analog-read=['height'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=input-register:30000 height waterway | 'water' | bacnet | range=(0, 1000) infrastructure=waterway analog-read=['height'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:0 height waterway | 'water' | iec60870-5-104 | range=(0, 1000) infrastructure=waterway analog-read=['height'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=analog-input:1 height -waterway | 'water' | sunspec | range=(0, 1000) infrastructure=waterway analog-read=['height'] analog-read-write=[] binary-read=[] binary-read-write=[] registers=0 waterway | 5 | * | raises AppError diff --git a/src/python/phenix_apps/apps/sceptre/tests/test_infrastructures.py b/src/python/phenix_apps/apps/sceptre/tests/test_infrastructures.py index 91a7a9ed..60165dd2 100644 --- a/src/python/phenix_apps/apps/sceptre/tests/test_infrastructures.py +++ b/src/python/phenix_apps/apps/sceptre/tests/test_infrastructures.py @@ -29,7 +29,7 @@ GOLDEN_FILE = Path(__file__).parent / "infrastructures_golden.txt" -PROTOCOLS = (*Register.TYPE, "sunspec") +PROTOCOLS = tuple(Register.TYPE) # The union of every device type any infrastructure accepts, so each one is # also asked for the types it does *not* support -- that is what pins which @@ -85,18 +85,13 @@ def render(infrastructure: str, device_type, protocol: str) -> str: fields = " ".join(f"{name}={device.fields[name]}" for name in FIELD_TYPES) parts = [f"range={device.range}", f"infrastructure={device.infrastructure}", fields] - if protocol == "sunspec": - # SunSpec register contents include a random serial number; the count is - # enough to show the models list above reached the generator. - parts.append(f"registers={len(device.registers)}") - else: - parts.append( - "registers=" - + ( - "; ".join(f"{r.regtype}:{r.addr} {r.field}" for r in device.registers) - or "-" - ) + parts.append( + "registers=" + + ( + "; ".join(f"{r.regtype}:{r.addr} {r.field}" for r in device.registers) + or "-" ) + ) return " ".join(parts) diff --git a/src/python/phenix_apps/apps/sceptre/tests/test_validation.py b/src/python/phenix_apps/apps/sceptre/tests/test_validation.py index 70b9132a..0665de9b 100644 --- a/src/python/phenix_apps/apps/sceptre/tests/test_validation.py +++ b/src/python/phenix_apps/apps/sceptre/tests/test_validation.py @@ -218,6 +218,14 @@ def test_clean_scenario_has_no_problems(scenario): False, "declares no protocol", ), + ( + "fd-server still declares sunspec", + lambda e: host(e, "rtu-1").metadata.update( + sunspec=[{"type": "inverter", "name": "inverter-1"}] + ), + True, + "SunSpec was removed", + ), ( "provider without a simulator", lambda e: host(e, "provider-pp").metadata.pop("simulator"), diff --git a/src/python/phenix_apps/apps/sceptre/validation.py b/src/python/phenix_apps/apps/sceptre/validation.py index 3c11cfb6..26afa658 100644 --- a/src/python/phenix_apps/apps/sceptre/validation.py +++ b/src/python/phenix_apps/apps/sceptre/validation.py @@ -54,7 +54,6 @@ "dnp3": "dnp3", "dnp3-serial": "dnp3_serial", "modbus": "modbus", - "sunspec": "sunspec", "iec60870-5-104": "iec104", } @@ -115,7 +114,6 @@ class Device(BaseModel): Its identity, plus the optional per-device register overrides that replace the infrastructure's default fields. Anything else is dropped by SceptreMetadataParser, so it is rejected here rather than silently ignored. - An inverter's overrides are SunSpec model numbers, hence the ints. """ model_config = ConfigDict(extra="forbid", populate_by_name=True) @@ -197,7 +195,6 @@ class FdServerMeta(Meta): dnp3: list[Device] | None = None dnp3_serial: list[Device] | None = Field(None, alias="dnp3-serial") modbus: list[Device] | None = None - sunspec: list[Device] | None = None iec104: list[Device] | None = Field(None, alias="iec60870-5-104") def check(self, host: "Host", ctx: Context) -> None: @@ -220,6 +217,13 @@ def check(self, host: "Host", ctx: Context) -> None: else: self._check_device_types(host, ctx, infrastructure) + if "sunspec" in (self.model_extra or {}): + host.flag( + ctx, + "metadata.sunspec is no longer supported; SunSpec was removed", + "expected one of: " + ", ".join(PROTOCOL_FIELDS), + ) + server = self.server_hostname if server and server not in ctx["hostnames"]: host.flag( diff --git a/src/python/pyproject.toml b/src/python/pyproject.toml index a027659e..8b1bf2f3 100644 --- a/src/python/pyproject.toml +++ b/src/python/pyproject.toml @@ -108,9 +108,8 @@ phenix_apps = [ "apps/scorch/opcexport/*.ps1", "apps/scorch/opcexport/*.zip", "apps/scorch/opcexport/*.exe", - # sceptre reads all three of these at runtime + # sceptre reads both of these at runtime "apps/sceptre/configs/*.yaml", - "apps/sceptre/protocols/sunspec/models/smdx/*", "apps/sceptre/templates/mydesigner/**/*", "apps/ignition/templates/**/*" ] @@ -129,7 +128,6 @@ target-version = "py312" # exclude 'vendored' directories outright exclude = [ - "phenix_apps/apps/sceptre/protocols/sunspec/models/smdx/", "phenix_apps/apps/sceptre/templates/mydesigner/", "phenix_apps/apps/ignition/templates/", # Jython 2.7 scripts ] @@ -163,7 +161,6 @@ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.ruff.lint.per-file-ignores] "test_*.py" = ["ARG"] # ignore unused-argument in test files -"phenix_apps/apps/sceptre/protocols/*" = ["RUF012"] [tool.ruff.lint.isort]