diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8f924539779c4462a277dddb644799c03a7b277d
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,152 @@
+name: Tests
+
+on:
+  release:
+    types: [ published ]
+  pull_request:
+  push:
+
+env:
+  PY_COLORS: "1"
+
+jobs:
+  test:
+    runs-on: ${{ matrix.os }}
+    continue-on-error: ${{ matrix.experimental }} # See: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error
+    strategy:
+      matrix:
+        os: [ubuntu-latest, windows-latest]
+        # os: [ubuntu-latest]
+        experimental: [false]
+        # python-version: ["2.7","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11","3.12"]
+        python-version: ["3.8","3.9","3.10","3.11","3.12"]
+      fail-fast: false
+    steps:
+    - uses: actions/checkout@v4
+    - name: Set up Python ${{ matrix.python-version }}
+      uses: actions/setup-python@v4
+      with:
+        python-version: ${{ matrix.python-version }}
+    - name: Install dependencies
+      run: |
+        python -m pip install --upgrade pip
+        pip install tox
+    - name: Test with pytest via tox
+      run: |
+        tox -e gh
+    - name: Coveralls
+      uses: coverallsapp/github-action@v2.3.0
+      with:
+        github-token: ${{ secrets.github_token }}
+        flag-name: Test_${{ matrix.os }}_${{ matrix.python-version }}
+        parallel: true
+        path-to-lcov: ./coverage.lcov
+
+  coveralls:
+    needs: test
+    runs-on: ubuntu-latest
+    steps:
+      - name: Coveralls Finished
+        uses: coverallsapp/github-action@v2.3.0
+        with:
+          github-token: ${{ secrets.github_token }}
+          parallel-finished: true
+
+  # static-code-analysis:
+  #   runs-on: ubuntu-latest
+  #   steps:
+  #   - uses: actions/checkout@v3
+  #   - name: Set up Python
+  #     uses: actions/setup-python@v4
+  #     with:
+  #       python-version: "3.10"
+  #   - name: Install dependencies
+  #     run: |
+  #       python -m pip install --upgrade pip
+  #       pip install -e .[lint]
+  #   - name: ruff
+  #     run: |
+  #       ruff check can
+  #   - name: pylint
+  #     run: |
+  #       pylint \
+  #       src/**.py \
+  #       can/io \
+  #       doc/conf.py \
+  #       examples/**.py \
+
+  # format:
+  #   runs-on: ubuntu-latest
+  #   steps:
+  #   - uses: actions/checkout@v3
+  #   - name: Set up Python
+  #     uses: actions/setup-python@v4
+  #     with:
+  #       python-version: "3.10"
+  #   - name: Install dependencies
+  #     run: |
+  #       python -m pip install --upgrade pip
+  #       pip install -e .[lint]
+  #   - name: Code Format Check with Black
+  #     run: |
+  #       black --check --verbose .
+
+  # docs:
+  #   runs-on: ubuntu-latest
+  #   steps:
+  #   - uses: actions/checkout@v3
+  #   - name: Set up Python
+  #     uses: actions/setup-python@v4
+  #     with:
+  #       python-version: "3.10"
+  #   - name: Install dependencies
+  #     run: |
+  #       python -m pip install --upgrade pip
+  #       pip install -e .[canalystii,gs_usb,mf4]
+  #       pip install -r doc/doc-requirements.txt
+  #   - name: Build documentation
+  #     run: |
+  #       python -m sphinx -Wan --keep-going doc build
+  #   - name: Run doctest
+  #     run: |
+  #       python -m sphinx -b doctest -W --keep-going doc build
+  #   - uses: actions/upload-artifact@v3
+  #     with:
+  #       name: sphinx-out
+  #       path: ./build/
+  #       retention-days: 5
+
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - name: Set up Python
+        uses: actions/setup-python@v4
+        with:
+          python-version: "3.10"
+      - name: Build wheel and sdist
+        run: pipx run build
+      - name: Check build artifacts
+        run: pipx run twine check --strict dist/*
+      - name: Save artifacts
+        uses: actions/upload-artifact@v3
+        with:
+          name: python-can-dist
+          path: ./dist
+
+  upload_pypi:
+    needs: [build]
+    runs-on: ubuntu-latest
+
+    # upload to PyPI only on release
+    if: github.event.release && github.event.action == 'published'
+    steps:
+      - uses: actions/download-artifact@v4.1.7
+        with:
+          name: python-can-dist
+          path: dist
+
+      - uses: pypa/gh-action-pypi-publish@v1.4.2
+        with:
+          user: __token__
+          password: ${{ secrets.PYPI_API_TOKEN }}
diff --git a/appveyor.yml b/appveyor.yml
index f993c54ef797e2cc07730cdf8e068f8060630bf4..33e358833079537835e755f4f35c9858c05f5695 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -7,7 +7,6 @@ skip_branch_with_pr: true
 
 environment:
   matrix:
-    - TOXENV: py37
     - TOXENV: py38
     - TOXENV: py39
     - TOXENV: py310
diff --git a/cmTemplate.xlsx b/cmTemplate.xlsx
deleted file mode 100644
index 5b5bacaf5f34fd3d6f37109fe13bde3b42347c42..0000000000000000000000000000000000000000
Binary files a/cmTemplate.xlsx and /dev/null differ
diff --git a/examples/BusmasterRestbus.py b/examples/BusmasterRestbus.py
index 96bc2b599c814bee8adc3142a6eb0b7cab6ce83f..61941f827eefc171f006f327c11be623b21198d9 100755
--- a/examples/BusmasterRestbus.py
+++ b/examples/BusmasterRestbus.py
@@ -19,7 +19,6 @@
 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 # DAMAGE.
 
-from __future__ import division
 import math
 from struct import *
 import zipfile
diff --git a/examples/j1939_test.py b/examples/j1939_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..7dc0ab066e48a3a0d523393e3a3315c33ab21125
--- /dev/null
+++ b/examples/j1939_test.py
@@ -0,0 +1,11 @@
+import canmatrix.formats
+
+my_matrix = canmatrix.formats.loadp_flat(r"C:\Users\edu\Downloads\obd2-test\CSS-Electronics-OBD2-incl-extended-v2.0.dbc")
+
+for num, frame in enumerate(my_matrix.frames):
+    print(f"Frame {num}: {frame}")
+    print(f" is j1939: {frame.is_j1939}")
+    print(f" id:  {frame.arbitration_id}")
+    print(f' Format: {frame.attributes["VFrameFormat"]}')
+    if frame.is_j1939:
+        print(f" pgn: {hex(frame.arbitration_id.pgn)}")
diff --git a/mypy.ini b/mypy.ini
index d65d4e93a7dfb5bf94bdb46e9c8316d17d2482d7..fab3a87205c054ce730c6f1aef1a96016d720ab6 100644
--- a/mypy.ini
+++ b/mypy.ini
@@ -34,5 +34,5 @@ ignore_errors = True
 ignore_errors = True
 
 # other settings:
-[mypy-xlsxwriter,past,past.builtins,pathlib2]
+[mypy-xlsxwriter,pathlib2]
 ignore_missing_imports = True
diff --git a/requirements_docs.txt b/requirements_docs.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f0f5c31be63000de43da9991665c5bbe00e5bc11
--- /dev/null
+++ b/requirements_docs.txt
@@ -0,0 +1,6 @@
+lxml
+ldfparser
+xlrd
+xlwt
+openpyxl
+pyyaml
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 16368ce9338b5a5194c086ef43df2546a2f2cbb8..bc7ffd1c343930caf8334342c1e31cfdbcfe02db 100644
--- a/setup.py
+++ b/setup.py
@@ -22,6 +22,13 @@ There are also some extract and merge options for dealing with can databases.
 
             .sym peak pcan can description
 
+            .xml (fibex)
+
+            .ldf (lin bus) 
+
+            .odx (diagnostic file)
+
+
 **supported file formats for export:**
 
             .dbc
@@ -42,6 +49,10 @@ There are also some extract and merge options for dealing with can databases.
 
             .xml (fibex)
 
+            .lua (wireshark script)
+
+            .scapy 
+
 """
 
 classifiers = """\
@@ -50,7 +61,6 @@ Environment :: Console
 License :: OSI Approved :: BSD License
 Topic :: Scientific/Engineering
 Programming Language :: Python
-Programming Language :: Python :: 2.7
 Programming Language :: Python :: 3.4
 Programming Language :: Python :: 3.5
 Programming Language :: Python :: 3.6
@@ -58,6 +68,7 @@ Programming Language :: Python :: 3.7
 Programming Language :: Python :: 3.8
 Programming Language :: Python :: 3.9
 Programming Language :: Python :: 3.10
+Programming Language :: Python :: 3.11
 """
 
 from setuptools import find_packages, setup
@@ -70,6 +81,7 @@ setup(
     name = "canmatrix",
     version = versioneer.get_version(),
     cmdclass = versioneer.get_cmdclass(),
+    long_description_content_type='text/x-rst',
     maintainer = "Eduard Broecker",
     maintainer_email = "eduard@gmx.de",
     url = "http://github.com/ebroecker/canmatrix",
@@ -82,10 +94,7 @@ setup(
     install_requires = [
         "attrs>=19.2.0",
         "click",
-        "enum34; python_version < '3.4'",
-        "future",
         "importlib-metadata; python_version < '3.8'",
-        "six",
         "typing; python_version < '3.5'",
     ],
     extras_require = {
@@ -102,9 +111,10 @@ setup(
         "sym": [],
         "test": ["pathlib2; python_version < '3.4'", "pytest"],
         "wireshark": [],
-        "xls": ["xlrd", "xlwt"],
-        "xlsx": ["xlsxwriter"],
+        "xls": ["xlrd==1.2.0", "xlwt"],
+        "xlsx": ["openpyxl"],
         "yaml": ["pyyaml"],
+        "eds": ["canopen"]
     },
 
     packages = find_packages("src"),
diff --git a/src/canmatrix/__init__.py b/src/canmatrix/__init__.py
index f8ddc5c8d990a74a1a88164be4212a974e7293a6..b8cb9a9b55df8ad9836805517f5fb9fdbbd6b5b6 100644
--- a/src/canmatrix/__init__.py
+++ b/src/canmatrix/__init__.py
@@ -1,5 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import
 import logging
 
 import canmatrix._version
diff --git a/src/canmatrix/cancluster.py b/src/canmatrix/cancluster.py
index 54155bff3d9d54bf69ff4c8b74a41264121bbb9f..81e0bcd32b6823fbdb4ddc7af0a21d11332678d9 100644
--- a/src/canmatrix/cancluster.py
+++ b/src/canmatrix/cancluster.py
@@ -1,5 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import, division, print_function
 
 import typing
 from builtins import *
diff --git a/src/canmatrix/canmatrix.py b/src/canmatrix/canmatrix.py
index ac80a9f4b84c4e0916dee4d648441c4e8592db88..bb759acd4eac99ca518ddc3459915e834293ba1e 100644
--- a/src/canmatrix/canmatrix.py
+++ b/src/canmatrix/canmatrix.py
@@ -26,8 +26,6 @@
 
 # TODO: Definitions should be disassembled
 
-from __future__ import absolute_import, division, print_function
-
 import decimal
 import fnmatch
 import itertools
@@ -40,8 +38,7 @@ import warnings
 from builtins import *
 
 import attr
-from past.builtins import basestring
-from six.moves import zip_longest
+from itertools import zip_longest
 
 import canmatrix.copy
 import canmatrix.types
@@ -163,7 +160,14 @@ class Signal(object):
     is_little_endian = attr.ib(default=True)  # type: bool
     is_signed = attr.ib(default=True)  # type: bool
     offset = attr.ib(converter=float_factory, default=float_factory(0.0))  # type: canmatrix.types.PhysicalValue
-    factor = attr.ib(converter=float_factory, default=float_factory(1.0))  # type: canmatrix.types.PhysicalValue
+    factor = attr.ib(
+        converter=lambda value, float_factory=float_factory: (
+            float_factory(value)
+            if float(value) != 0
+            else float_factory(1.0)
+        ),
+        default=float_factory(1.0)
+    )  # type: canmatrix.types.PhysicalValue
 
     unit = attr.ib(default="")  # type: str
     receivers = attr.ib(factory=list)  # type: typing.MutableSequence[str]
@@ -187,7 +191,7 @@ class Signal(object):
 
     cycle_time = attr.ib(default=0)  # type: int
     initial_value = attr.ib(converter=float_factory, default=float_factory(0.0))  # type: canmatrix.types.PhysicalValue
-
+    scale_ranges = attr.ib(factory=list)
     min = attr.ib(
         converter=lambda value, float_factory=float_factory: (
             float_factory(value)
@@ -432,18 +436,20 @@ class Signal(object):
             if not (self.min <= value <= self.max):
                 value = self.min
 
-        if isinstance(value, basestring):
+        if isinstance(value, str) and self.values:
             for value_key, value_string in self.values.items():
                 if value_string == value:
                     value = value_key
                     return value
-            else:
-                raise ValueError(
-                        "{} is invalid value choice for {}".format(value, self)
-                )
 
+        try:
+            value = decimal.Decimal(value)
+        except Exception as e:
+            raise e
+
+        # if not (0 <= value <= 10):
         if not (self.min <= value <= self.max):
-            logger.info(
+            logger.warning(
                 "Value {} is not valid for {}. Min={} and Max={}".format(
                     value, self, self.min, self.max)
                 )
@@ -451,6 +457,7 @@ class Signal(object):
 
         if not self.is_float:
             raw_value = int(round(raw_value))
+
         return raw_value
 
     def raw2phys(self, value, decode_to_str=False):
@@ -463,6 +470,7 @@ class Signal(object):
         """
         if self.is_float:
             value = self.float_factory(value)
+
         if decode_to_str:
             for value_key, value_string in self.values.items():
                 if value_key == value:
@@ -485,7 +493,8 @@ class SignalGroup(object):
     name = attr.ib()  # type: str
     id = attr.ib()  # type: int
     signals = attr.ib(factory=list, repr=False)  # type: typing.MutableSequence[Signal]
-    e2e_trans = attr.ib(default=None)
+    e2e_properties = attr.ib(default=None)  # type: Optional[AutosarE2EProperties]
+    secOC_properties= attr.ib(default=None)  # type: Optional[AutosarSecOCProperties]
 
     def add_signal(self, signal):  # type: (Signal) -> None
         """Add a Signal to SignalGroup.
@@ -672,8 +681,6 @@ class ArbitrationId(object):
         self.id &= 0xfc0000ff
         self.id |= (_pgn << 8 & 0x3FFFF00)  # default pgn is None -> mypy reports error
 
-
-
     @property
     def j1939_tuple(self):  # type: () -> typing.Tuple[int, int, int]
         """Get tuple (destination, PGN, source)
@@ -778,6 +785,36 @@ class ArbitrationId(object):
         )
 
 
+@attr.s(eq=False)
+class Endpoint(object):
+    """
+    Represents a Endpoint.
+
+    AUTOSAR Ethernet Frames Endpoints
+    """
+    server_ip = attr.ib(default="")  # type: str
+    server_port = attr.ib(default=0)  # type: int
+    client_ip = attr.ib(default="")  # type: str
+    client_port = attr.ib(default=0)  # type: int
+    ttl = attr.ib(default=0)  # type: int
+
+
+@attr.s(eq=False)
+class AutosarE2EProperties(object):
+    profile = attr.ib(default=None)  # type: str
+    data_ids = attr.ib(default=None) # type: List[int]
+    data_length = attr.ib(default=None)  # type: int
+
+
+@attr.s(eq=False)
+class AutosarSecOCProperties(object):
+    auth_algorithm = attr.ib(default="")  # type: str
+    payload_length = attr.ib(default=0)  # type: int
+    auth_tx_length = attr.ib(default=0)  # type: int
+    data_id = attr.ib(default=0)  # type: int
+    freshness_length = attr.ib(default=0)  # type: int
+    freshness_tx_length = attr.ib(default=0)  # type: int
+
 @attr.s(eq=False)
 class Pdu(object):
     """
@@ -810,15 +847,18 @@ class Pdu(object):
         self.signals.append(signal)
         return self.signals[len(self.signals) - 1]
 
-    def add_signal_group(self, Name, Id, signalNames, e2e_trans=None):
-        # type: (str, int, typing.Sequence[str]) -> None
+    def add_signal_group(self, 
+                         Name: str, 
+                         Id: int, 
+                         signalNames: typing.Sequence[str], 
+                         e2e_properties: typing.Optional[AutosarE2EProperties] = None) -> None:
         """Add new SignalGroup to the Frame. Add given signals to the group.
 
         :param str Name: Group name
         :param int Id: Group id
         :param list of str signalNames: list of Signal names to add. Non existing names are ignored.
         """
-        newGroup = SignalGroup(Name, Id, e2e_trans=e2e_trans)
+        newGroup = SignalGroup(Name, Id, e2e_properties=e2e_properties)
         self.signalGroups.append(newGroup)
         for signal in signalNames:
             signal = signal.strip()
@@ -854,7 +894,7 @@ class Frame(object):
     """
     Represents CAN Frame.
 
-    The Frame has  following mandatory attributes
+    The Frame has following mandatory attributes
 
     * arbitration_id,
     * name,
@@ -892,10 +932,13 @@ class Frame(object):
     # ('sendType', '_sendType', str, None),
 
     pdus = attr.ib(factory=list)  # type: typing.MutableSequence[Pdu]
-    header_id = attr.ib(default=None)  #type: int
-    # header_id
     pdu_name = attr.ib(default="")  # type: str
 
+    header_id = attr.ib(default=None)  # type: int
+    endpoints = attr.ib(default=None)  # type: typing.MutableSequence[Endpoint]
+
+    secOC_properties = attr.ib(default=None)  # type:  Optional[AutosarSecOCProperties]
+
     @property
     def is_multiplexed(self):  # type: () -> bool
         """Frame is multiplexed if at least one of its signals is a multiplexer."""
@@ -1019,15 +1062,18 @@ class Frame(object):
 
         return iter(self.signals)
 
-    def add_signal_group(self, Name, Id, signalNames, e2e_trans=None):
-        # type: (str, int, typing.Sequence[str]) -> None
+    def add_signal_group(self,
+                         Name: str, 
+                         Id: int, 
+                         signalNames: typing.Sequence[str], 
+                         e2e_properties: typing.Optional[AutosarE2EProperties] = None) -> None:
         """Add new SignalGroup to the Frame. Add given signals to the group.
 
         :param str Name: Group name
         :param int Id: Group id
         :param list of str signalNames: list of Signal names to add. Non existing names are ignored.
         """
-        newGroup = SignalGroup(Name, Id, e2e_trans=e2e_trans)
+        newGroup = SignalGroup(Name, Id, e2e_properties=e2e_properties)
         self.signalGroups.append(newGroup)
         for signal in signalNames:
             signal = signal.strip()
@@ -1275,6 +1321,7 @@ class Frame(object):
         """
         Collect Frame receivers out of receiver given in each signal. Add them to `self.receiver` list.
         """
+        self.receivers = []
         for sig in self.signals:
             for receiver in sig.receivers:
                 self.add_receiver(receiver)
@@ -1293,6 +1340,11 @@ class Frame(object):
         for signal in self.signals:
             if signal.name in data:
                 value = data.get(signal.name)
+                if isinstance(value, str):
+                    value = signal.phys2raw(value)
+                    if value is None:
+                        # TODO Error Handling
+                        value = 0
                 bits = pack_bitstring(signal.size, signal.is_float, value, signal.is_signed)
 
                 if signal.is_little_endian:
@@ -1327,7 +1379,6 @@ class Frame(object):
         """
 
         data = dict() if data is None else data
-
         if self.is_complex_multiplexed:
             raise EncodingComplexMultiplexed
         elif self.is_pdu_container:
@@ -1392,12 +1443,15 @@ class Frame(object):
                 least = most + signal.size
 
                 bits = big[most:least]
+
             unpacked.append(unpack_bitstring(signal.size, signal.is_float, signal.is_signed, bits))
 
         return unpacked
 
-    def unpack(self, data, report_error=True):
-        # type: (bytes, bool) -> typing.Mapping[str, DecodedSignal]
+    def unpack(self, data: bytes,
+               allow_truncated: bool = False,
+               allow_exceeded: bool = False,
+               ) -> typing.Mapping[str, DecodedSignal]:
         """Return OrderedDictionary with Signal Name: object decodedSignal (flat / without support for multiplexed frames)
         decodes every signal in signal-list.
 
@@ -1408,12 +1462,26 @@ class Frame(object):
         """
 
         rx_length = len(data)
-        if rx_length != self.size and report_error:
-            raise DecodingFrameLength(
-                'Received message 0x{self.arbitration_id.id:08X} '
-                'with length {rx_length}, expected {self.size}'.format(**locals())
-            )
-        elif self.is_pdu_container:
+        if rx_length != self.size:
+            msg_id = self.arbitration_id.id if self.arbitration_id.id != 0 else self.header_id
+
+            logging.warning(f"Received message 0x{msg_id:08X} with length {rx_length}, expected {self.size}")
+
+            if allow_truncated:
+                # pad the data with 0xff to prevent the codec from
+                # raising an exception.
+                data = data.ljust(self.size, b"\xFF")
+
+            if allow_exceeded:
+                # trim the payload data to match the expected size
+                data = data[:self.size]
+
+            if len(data) != self.size:
+                # return None
+                raise DecodingFrameLength(
+                    f"Received message 0x{msg_id:04X} with wrong data size: {rx_length} instead of {self.size}")
+
+        if self.is_pdu_container:
             header_id_signal = self.signal_by_name("Header_ID")
             header_dlc_signal = self.signal_by_name("Header_DLC")
             if header_id_signal is None or header_dlc_signal is None:
@@ -1555,7 +1623,7 @@ class Frame(object):
 
         else:
             return decoded
-    
+
     def _compress_little(self):
         for signal in self.signals:
             if not signal.is_little_endian:
@@ -1576,7 +1644,7 @@ class Frame(object):
                             gap_len += 1
                     else:
                         if gap_len is not None:
-                            signal = layout[bit_nr][0] 
+                            signal = layout[bit_nr][0]
                             signal.start_bit -= gap_len
                             gap_found = True
                             break
@@ -1598,11 +1666,23 @@ class Frame(object):
                         free_start = bit_nr
                 else:
                     if free_start is not None:
-                        signal = layout[bit_nr][0] 
+                        signal = layout[bit_nr][0]
                         signal.start_bit = free_start
                         gap_found = True
                         break
 
+    def multiplex_signals(self):
+        """Assign multiplexer to signals. When a multiplexor is in the frame."""
+        multiplexor = self.get_multiplexer
+        if multiplexor is None:
+            return
+
+        for signal in self.signals:
+            if signal.is_multiplexer or (signal.muxer_for_signal is not None):
+                continue
+            signal.mux_val = signal.multiplex
+            if signal.multiplex is not None:
+                signal.muxer_for_signal = multiplexor.name
 
     def __str__(self):  # type: () -> str
         """Represent the frame by its name only."""
@@ -1712,6 +1792,9 @@ class CanMatrix(object):
     ecus = attr.ib(factory=list)  # type: typing.MutableSequence[Ecu]
     frames = attr.ib(factory=list)  # type: typing.MutableSequence[Frame]
 
+    frames_dict_name = attr.ib(factory=dict)  # type: typing.MutableSequence[Frame]
+    frames_dict_id = attr.ib(factory=dict)  # type: typing.MutableSequence[Frame]
+    _frames_dict_id_extend = {}
     signal_defines = attr.ib(factory=dict)  # type: typing.MutableMapping[str, Define]
     frame_defines = attr.ib(factory=dict)  # type: typing.MutableMapping[str, Define]
     global_defines = attr.ib(factory=dict)  # type: typing.MutableMapping[str, Define]
@@ -1720,10 +1803,9 @@ class CanMatrix(object):
     value_tables = attr.ib(factory=dict)  # type: typing.MutableMapping[str, typing.MutableMapping]
     env_vars = attr.ib(factory=dict)  # type: typing.MutableMapping[str, typing.MutableMapping]
     signals = attr.ib(factory=list)  # type: typing.MutableSequence[Signal]
-
     baudrate = attr.ib(default=0)  # type:int
     fd_baudrate = attr.ib(default=0)  # type:int
-
+    vlan = attr.ib(default=None)  # type:int
     load_errors = attr.ib(factory=list)  # type: typing.MutableSequence[Exception]
 
     def __iter__(self):  # type: () -> typing.Iterator[Frame]
@@ -1904,12 +1986,39 @@ class CanMatrix(object):
         :param ArbitrationId arbitration_id: Frame id as canmatrix.ArbitrationId
         :rtype: Frame or None
         """
-        for test in self.frames:
-            if test.arbitration_id == arbitration_id:
+        hash_name = f"{arbitration_id.id}_{arbitration_id.extended}"
+        
+        frame = self._frames_dict_id_extend.get(hash_name, None)
+        if frame is not None:
+            return frame
+        for frame in self.frames:
+            if frame.arbitration_id == arbitration_id:
                 # found ID while ignoring extended or standard
+                self._frames_dict_id_extend[hash_name] = frame
+                return frame
+        return None
+
+    def frame_by_header_id(self, header_id):  # type: (HeaderId) -> typing.Union[Frame, None]
+        """Get Frame by its Header id.
+
+        :param HeaderId header_id: Header id as canmatrix.header_id
+        :rtype: Frame or None
+        """
+        for test in self.frames:
+            if test.header_id == header_id:
                 return test
         return None
 
+    def get_frame_by_id(self, id: int
+                        ) -> typing.Union[Frame, None]:
+        """Get Frame by id.
+
+        :param str name: Frame id to search for
+        :rtype: Frame or None
+        """
+
+        return self.frames_dict_id[id]
+
     def frame_by_pgn(self, pgn):  # type: (int) -> typing.Union[Frame, None]
         """Get Frame by pgn (j1939).
 
@@ -1924,7 +2033,6 @@ class CanMatrix(object):
                 return test
         return None
 
-
     def frame_by_name(self, name):  # type: (str) -> typing.Union[Frame, None]
         """Get Frame by name.
 
@@ -1936,6 +2044,15 @@ class CanMatrix(object):
                 return test
         return None
 
+    def get_frame_by_name(self, name):  # type: (str) -> typing.Union[Frame, None]
+        """Get Frame by name.
+
+        :param str name: Frame name to search for
+        :rtype: Frame or None
+        """
+
+        return self.frames_dict_name[name]
+
     def glob_frames(self, globStr):  # type: (str) -> typing.List[Frame]
         """Find Frames by given glob pattern.
 
@@ -1980,6 +2097,13 @@ class CanMatrix(object):
         :return: the inserted Frame
         """
         self.frames.append(frame)
+        self._frames_dict_id_extend = {}
+        self.frames_dict_name[frame.name] = frame
+        if frame.header_id:
+            self.frames_dict_id[frame.header_id] = frame
+        elif frame.arbitration_id.id:
+            self.frames_dict_id[frame.arbitration_id.id] = frame
+
         return self.frames[len(self.frames) - 1]
 
     def remove_frame(self, frame):  # type: (Frame) -> None
@@ -1988,6 +2112,7 @@ class CanMatrix(object):
         :param Frame frame: frame to remove from CAN Matrix
         """
         self.frames.remove(frame)
+        self._frames_dict_id_extend = {}
 
     def add_signal(self, signal):  # type: (Signal) -> Signal
         """
@@ -2082,6 +2207,8 @@ class CanMatrix(object):
             if bu.name.strip() == ecu.name:
                 return
         self.ecus.append(ecu)
+        self._frames_dict_id_extend = {}
+
 
     def del_ecu(self, ecu_or_glob):  # type: (typing.Union[Ecu, str]) -> None
         """Remove ECU from Matrix and all Frames.
@@ -2252,8 +2379,9 @@ class CanMatrix(object):
                 else:
                     logger.error(
                         "Name Conflict, could not copy/merge EnvVar " + envVar)
+        self._frames_dict_id_extend = {}
 
-    def set_fd_type(self):  # type: () -> None
+    def set_fd_type(self) -> None:
         """Try to guess and set the CAN type for every frame.
 
         If a Frame is longer than 8 bytes, it must be Flexible Data Rate frame (CAN-FD).
@@ -2263,7 +2391,10 @@ class CanMatrix(object):
             if frame.size > 8:
                 frame.is_fd = True
 
-    def encode(self, frame_id, data):  # type: (ArbitrationId, typing.Mapping[str, typing.Any]) -> bytes
+    def encode(self,
+               frame_id: ArbitrationId,
+               data: typing.Mapping[str, typing.Any]
+               ) -> bytes:
         """Return a byte string containing the values from data packed
         according to the frame format.
 
@@ -2308,20 +2439,20 @@ class CanMatrix(object):
             if self.ecu_defines[define].type == "ENUM":
                 for bu in self.ecus:
                     if define in bu.attributes:
-                        bu.attributes[define] = self.ecu_defines[define].values[int(bu.attributes[define])]
+                        bu.attributes[define] = self.ecu_defines[define].values[int(float(bu.attributes[define]))]
 
         for define in self.frame_defines:
             if self.frame_defines[define].type == "ENUM":
                 for frame in self.frames:
                     if define in frame.attributes:
-                        frame.attributes[define] = self.frame_defines[define].values[int(frame.attributes[define])]
+                        frame.attributes[define] = self.frame_defines[define].values[int(float(frame.attributes[define]))]
 
         for define in self.signal_defines:
             if self.signal_defines[define].type == "ENUM":
                 for frame in self.frames:
                     for signal in frame.signals:
                         if define in signal.attributes:
-                            signal.attributes[define] = self.signal_defines[define].values[int(signal.attributes[define])]
+                            signal.attributes[define] = self.signal_defines[define].values[int(float(signal.attributes[define]))]
 
     def enum_attribs_to_keys(self):  # type: () -> None
         for define in self.ecu_defines:
diff --git a/src/canmatrix/cli/compare.py b/src/canmatrix/cli/compare.py
index 2718b8a332166f7d7d5c2211683e5b755dbbef67..c34c374dd8835b71face8c446cd6c7df82316de1 100644
--- a/src/canmatrix/cli/compare.py
+++ b/src/canmatrix/cli/compare.py
@@ -21,8 +21,6 @@
 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 # DAMAGE.
 
-from __future__ import absolute_import, division, print_function
-
 import logging
 import sys
 import typing
diff --git a/src/canmatrix/cli/convert.py b/src/canmatrix/cli/convert.py
index e8caa851765b86f8761214d4ae9718be19b9d139..ef67152af9a5885593f1e46d1254655f548d925b 100644
--- a/src/canmatrix/cli/convert.py
+++ b/src/canmatrix/cli/convert.py
@@ -21,8 +21,6 @@
 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 # DAMAGE.
 
-from __future__ import absolute_import, division, print_function
-
 import logging
 import sys
 
@@ -94,7 +92,7 @@ Example --signalNameFromAttrib SysSignalName\nARXML known Attributes: SysSignalN
 
 # arxml switches
 @click.option('--arxmlIgnoreClusterInfo/--no-arxmlIgnoreClusterInfo', 'arxmlIgnoreClusterInfo', default=False, help="Ignore any can cluster info from arxml; Import all frames in one matrix\ndefault False")
-@click.option('--arxmlExportVersion', 'arVersion',  default="3.2.3", help="Set output AUTOSAR version\ncurrently only 3.2.3 and 4.1.0 are supported\ndefault 3.2.3")
+@click.option('--arxmlExportVersion', 'arVersion',  default="4.1.0", help="Set output AUTOSAR version\ncurrently only 3.2.3 and 4.1.0 are supported\ndefault 4.1.0")
 @click.option('--arxmlFlexray/--no-arxmlFlexray', 'decode_flexray', default = False, help="EXPERIMENTAL: import basic flexray data from ARXML")
 @click.option('--arxmlEthernet/--no-arxmlEthernet', 'decode_ethernet', default = False, help="EXPERIMENTAL: import basic ethernet data from ARXML")
 
@@ -126,6 +124,9 @@ Example --signalNameFromAttrib SysSignalName\nARXML known Attributes: SysSignalN
 @click.option('--jsonNativeTypes/--no-jsonNativeTypes', 'jsonNativeTypes', default=False, help="Uses native json representation for decimals instead of string.")
 #sym switches
 @click.option('--symExportEncoding', 'symExportEncoding', default="iso-8859-1", help="Export charset of sym format, maybe utf-8\ndefault iso-8859-1")
+#eds switches
+@click.option('--edsImportEncoding', 'edsImportEncoding', default="iso-8859-1", help="Import charset of EDS format\ndefault iso-8859-1")
+@click.option('--edsNode', 'eds_node_id', default=1, help="Node-Id for EDS format\ndefault 1")
 # in and out file
 @click.argument('infile', required=True)
 @click.argument('outfile', required=True)
@@ -137,7 +138,7 @@ def cli_convert(infile, outfile, silent, verbosity, **options):
     import-file: *.dbc|*.dbf|*.kcd|*.arxml|*.json|*.xls(x)|*.sym
     export-file: *.dbc|*.dbf|*.kcd|*.arxml|*.json|*.xls(x)|*.sym|*.py
 
-    \n"""
+    """
 
     root_logger = canmatrix.log.setup_logger()
 
diff --git a/src/canmatrix/compare.py b/src/canmatrix/compare.py
index c18a83161eca67d4eeee6345e06f2e2987980b46..24ce0dccc8fa54f348b72957e52f9b27220fe189 100644
--- a/src/canmatrix/compare.py
+++ b/src/canmatrix/compare.py
@@ -19,8 +19,6 @@
 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 # DAMAGE.
 
-from __future__ import absolute_import, division, print_function
-
 import logging
 import sys
 import typing
@@ -36,7 +34,7 @@ WithAttribute = typing.TypeVar("WithAttribute", canmatrix.CanMatrix, canmatrix.E
 
 
 @attr.s
-class CompareResult(object):
+class CompareResult:
     """Hold comparison results in logical tree."""
     result = attr.ib(default=None)  # type: typing.Optional[str]    # any of equal, added, deleted, changed
     type = attr.ib(default=None)  # type: typing.Optional[str]      # db, ecu, frame, signal, signalGroup or attribute
@@ -508,4 +506,4 @@ def dump_result(res, depth=0):
                   " new: " +
                   str(res.changes[1]))
     for child in res.children:
-        dump_result(child, depth + 1)
\ No newline at end of file
+        dump_result(child, depth + 1)
diff --git a/src/canmatrix/convert.py b/src/canmatrix/convert.py
index 7e329b87b049dbf25eb492c3c5c93e35a8115f9a..4c4151ca4026dd3ed852382f4a48ac1e6b6ec6f8 100644
--- a/src/canmatrix/convert.py
+++ b/src/canmatrix/convert.py
@@ -19,8 +19,6 @@
 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 # DAMAGE.
 
-from __future__ import absolute_import, division, print_function
-
 import copy
 import logging
 import sys
@@ -64,12 +62,11 @@ def convert_pdu_container_to_multiplexed(frame):  # type: (canmatrix.Frame) -> c
 
 
 def convert(infile, out_file_name, **options):  # type: (str, str, **str) -> None
-    logger.info("Importing " + infile + " ... ")
+    logger.info(f"Importing " + infile + " ...")
     dbs = canmatrix.formats.loadp(infile, **options)
-    logger.info("done\n")
-
-    logger.info("Exporting " + out_file_name + " ... ")
+    logger.info("Import Done")
 
+    logger.info("Exporting " + out_file_name + " ...")
     out_dbs = {}  # type: typing.Dict[str, canmatrix.CanMatrix]
     for name in dbs:
         db = None
@@ -104,7 +101,7 @@ def convert(infile, out_file_name, **options):  # type: (str, str, **str) -> Non
                 db_temp_list = canmatrix.formats.loadp(merge_string[0])
                 for dbTemp in db_temp_list:
                     if merge_string.__len__() == 1:
-                        print("merge complete: " + merge_string[0])
+                        # logger.debug("merge complete: " + merge_string[0])
                         db.merge([db_temp_list[dbTemp]])
                         # for frame in db_temp_list[dbTemp].frames:
                         #    copyResult = canmatrix.copy.copy_frame(frame.id, db_temp_list[dbTemp], db)
@@ -337,9 +334,7 @@ def convert(infile, out_file_name, **options):  # type: (str, str, **str) -> Non
                 frame.is_j1939=True
             db.add_attribute("ProtocolType", "J1939")
 
-
-
-        logger.info(name)
+        logger.debug(f"{name}")
         logger.info("%d Frames found" % (db.frames.__len__()))
 
         out_dbs[name] = db
@@ -349,4 +344,4 @@ def convert(infile, out_file_name, **options):  # type: (str, str, **str) -> Non
                                 'force_output'], **options)
     else:
         canmatrix.formats.dumpp(out_dbs, out_file_name, **options)
-    logger.info("done")
+    logger.info("Export Done")
diff --git a/src/canmatrix/copy.py b/src/canmatrix/copy.py
index 15b44bf444bf3a9c132a0620414af9ad0f23c48e..a2a881a64118c33a41a2aafa271bf9f779df6288 100644
--- a/src/canmatrix/copy.py
+++ b/src/canmatrix/copy.py
@@ -19,8 +19,6 @@
 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 # DAMAGE.
 
-from __future__ import absolute_import, division, print_function
-
 import copy
 import logging
 import typing
@@ -70,7 +68,7 @@ def copy_ecu(ecu_or_glob, source_db, target_db):
 
 
 def copy_ecu_with_frames(ecu_or_glob, source_db, target_db, rx=True, tx=True, direct_ecu_only=True):
-    # type: (typing.Union[canmatrix.Ecu, str], canmatrix.CanMatrix, canmatrix.CanMatrix) -> None
+    # type: (typing.Union[canmatrix.Ecu, str], canmatrix.CanMatrix, canmatrix.CanMatrix, bool, bool, bool) -> None
     """
     Copy ECU(s) identified by Name or as Object from source CAN matrix to target CAN matrix.
     This function additionally copy all relevant Frames and Defines.
diff --git a/src/canmatrix/formats/__init__.py b/src/canmatrix/formats/__init__.py
index 097c164c7b16b561ca1c1989dc3dfc39c8278094..28dd6b9e0f2c38018a57cbc260678ffa24ede17d 100644
--- a/src/canmatrix/formats/__init__.py
+++ b/src/canmatrix/formats/__init__.py
@@ -1,5 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import, division, print_function
 
 import importlib
 import logging
@@ -14,7 +13,7 @@ import canmatrix.cancluster
 
 logger = logging.getLogger(__name__)
 moduleList = ["arxml", "csv", "dbc", "dbf", "json", "ldf",
-              "kcd", "fibex", "sym", "xls", "xlsx", "yaml", "scapy", "wireshark", "odx"]
+              "kcd", "fibex", "sym", "xls", "xlsx", "yaml", "scapy", "wireshark", "odx", "eds"]
 
 loadedFormats = []
 supportedFormats = {}  # type: typing.MutableMapping[str, typing.MutableSequence[str]]
@@ -25,7 +24,7 @@ for module in moduleList:
         importlib.import_module("canmatrix.formats." + module)
         loadedFormats.append(module)
     except ImportError:
-        logger.warning("%s is not supported", module)
+        logger.debug("%s is not supported", module)
 
 for loadedModule in loadedFormats:
     supportedFormats[loadedModule] = []
diff --git a/src/canmatrix/formats/arxml.py b/src/canmatrix/formats/arxml.py
index 2501d986be44d2d2d9686039a6bad3921058b038..2a1dfc00bcbb45e71ba2615f67cead7f9fae58b8 100644
--- a/src/canmatrix/formats/arxml.py
+++ b/src/canmatrix/formats/arxml.py
@@ -23,12 +23,12 @@
 # this script exports arxml-files from a canmatrix-object
 # arxml-files are the can-matrix-definitions and a lot more in AUTOSAR-Context
 # currently Support for Autosar 3.2 and 4.0-4.3 is planned
+# AUTOSAR 4.2.2 is partial support -> 2024/05/20
 
-from __future__ import absolute_import, division, print_function
-
-import decimal
 import copy
+import decimal
 import logging
+import re
 import typing
 from builtins import *
 
@@ -38,7 +38,6 @@ import canmatrix
 import canmatrix.cancluster
 import canmatrix.types
 import canmatrix.utils
-import re
 
 logger = logging.getLogger(__name__)
 default_float_factory = decimal.Decimal
@@ -57,12 +56,14 @@ class Earxml:
     def __init__(self):
         self.xml_element_cache = dict()  # type: typing.Dict[str, _Element]
         self.path_cache = {}
+        self.sn_cache = {}
 
     def fill_caches(self, start_element=None, ar_path=""):
         if start_element is None:
             start_element = self.root
             self.path_cache = {}
         if start_element.tag == self.ns + "SHORT-NAME":
+            self.sn_cache[start_element.getparent()] = start_element.text
             return start_element.text
         for sub_element in start_element:
             text = sub_element.text
@@ -154,13 +155,8 @@ class Earxml:
     def get_short_name(self, element):
         # type: (_Element, str) -> str
         """Get element short name."""
-        if element is None:
-            return ""
-        name = element.find('./' + self.ns + 'SHORT-NAME')
-        if name is not None and name.text is not None:
-            return name.text
-        return ""
-
+        return self.sn_cache.get(element, "")
+    
     def follow_ref(self, start_element, element_name):
         ref_element = self.find(element_name, start_element)
         if ref_element is None:
@@ -184,7 +180,7 @@ class Earxml:
         return self.find(name, start_element)
 
     def find_children_by_path(self, from_element, path):
-        # type: (_Element, str, _DocRoot, str) -> typing.Sequence[_Element]
+        # type: (_Element, _Element, str) -> typing.Sequence[_Element]
         path_elements = path.split('/')
         element = from_element
         for element_name in path_elements[:-1]:
@@ -201,7 +197,7 @@ class Earxml:
         return ""
 
     def get_child(self, parent, tag_name):
-        # type: (_Element, str, _DocRoot, str) -> typing.Optional[_Element]
+        # type: (_Element, _Element, str) -> typing.Optional[_Element]
         """Get first sub-child or referenced sub-child with given name."""
         # logger.debug("get_child: " + tag_name)
         if parent is None:
@@ -215,7 +211,7 @@ class Earxml:
         return ret
 
     def get_children(self, parent, tag_name):
-        # type: (_Element, str, _DocRoot, str) -> typing.Sequence[_Element]
+        # type: (_Element, str, str) -> typing.Sequence[_Element]
         if parent is None:
             return []
         ret = self.findall(tag_name, parent)
@@ -227,7 +223,7 @@ class Earxml:
         return ret
 
     def get_element_desc(self, element):
-        # type: (_Element, _DocRoot, str) -> str
+        # type: (_Element, _DocRoot) -> str
         """Get element description from XML."""
         desc = self.get_child(element, "DESC")
         txt = self.get_child(desc, 'L-2[@L="DE"]')
@@ -299,6 +295,8 @@ class Earxml:
                     result_list = filtered_results
 
                 result_list = list(set(result_list))
+                if None in result_list:
+                    result_list.remove(None)
 
             last_found_token = found_token[1] + start_pos
             token = selector[start_pos + found_token[0]:start_pos + found_token[1]]
@@ -307,7 +305,7 @@ class Earxml:
 
 
 def create_sub_element(parent, element_name, text=None, dest=None):
-    # type: (_Element, str, typing.Optional[str]) -> _Element
+    # type: (_Element, str, typing.Optional[str], typing.Optional[str]) -> _Element
     sn = lxml.etree.SubElement(parent, element_name)
     if text is not None:
         sn.text = str(text)
@@ -356,7 +354,7 @@ def get_base_type_of_signal(signal):
 
 def dump(dbs, f, **options):
     # type: (typing.Mapping[str, canmatrix.CanMatrix], typing.IO, **str) -> None
-    ar_version = options.get("arVersion", "3.2.3")
+    ar_version = options.get("arVersion", "4.1.0")
 
     for name in dbs:
         db = dbs[name]
@@ -797,7 +795,7 @@ def dump(dbs, f, **options):
                 compu_int_to_phys = create_sub_element(
                     compu_method, 'COMPU-INTERNAL-TO-PHYS')
                 compu_scales = create_sub_element(compu_int_to_phys, 'COMPU-SCALES')
-                for value in sorted(signal.values, key=lambda x: int(x, 0)):
+                for value in sorted(signal.values):
                     compu_scale = create_sub_element(compu_scales, 'COMPU-SCALE')
                     desc = create_sub_element(compu_scale, 'DESC')
                     l2 = create_sub_element(desc, 'L-2')
@@ -993,21 +991,28 @@ def get_signalgrp_and_signals(sys_signal, sys_signal_array, frame, group_id, ea)
     members = [ea.get_element_name(signal) for signal in sys_signal_array]
 
     # get data related to E2E-Protection
-    transform_ele = ea.follow_ref(sys_signal, "TRANSFORMER-REF")
-    e2e_transform = None
-    if transform_ele is not None:
-        e2e_transform = {
-            'profile': ea.get_child(transform_ele, "PROFILE-NAME").text,
-        }
-        data_id_elems = ea.get_children(ea.get_child(sys_signal, "TRANSFORMATION-I-SIGNAL-PROPSS"), "DATA-ID")
+    transformer_ele = ea.follow_ref(sys_signal, "TRANSFORMER-REF")
+    e2e_properties = None
+    if transformer_ele is not None:
+        e2e_profile = ea.get_child(transformer_ele, "PROFILE-NAME").text
+       
+        trans_isignal_propss_elem = ea.get_child(sys_signal, "TRANSFORMATION-I-SIGNAL-PROPSS")
+
+        data_id_elems = ea.get_children(trans_isignal_propss_elem, "DATA-ID")
         if data_id_elems is not None:
-            e2e_transform['data_ids'] = [int(x.text, 0) for x in data_id_elems]
+            e2e_data_ids = [int(x.text, 0) for x in data_id_elems]
 
-    frame.add_signal_group(ea.get_element_name(sys_signal), group_id, members, e2e_transform)
+        data_len_elem = ea.get_child(trans_isignal_propss_elem, "DATA-LENGTH")
+        if data_len_elem is not None:
+            e2e_data_length = int(data_len_elem.text, 0)
+
+        e2e_properties = canmatrix.AutosarE2EProperties(e2e_profile, e2e_data_ids, e2e_data_length)
+
+    frame.add_signal_group(ea.get_element_name(sys_signal), group_id, members, e2e_properties)
 
 
 def decode_compu_method(compu_method, ea, float_factory):
-    # type: (_Element, _DocRoot, str, _FloatFactory) -> typing.Tuple
+    # type: (_Element, Earxml, _FloatFactory) -> typing.Tuple
     values = {}
     factor = float_factory(1.0)
     offset = float_factory(0)
@@ -1038,9 +1043,8 @@ def decode_compu_method(compu_method, ea, float_factory):
 
         rational = ea.get_child(compu_scale, "COMPU-RATIONAL-COEFFS")
 
-        if rational is None and ll is not None and desc is not None and canmatrix.utils.decode_number(ul.text,
-                                                                                 float_factory) == canmatrix.utils.decode_number(
-            ll.text, float_factory):
+        if rational is None and ll is not None and desc is not None and \
+            canmatrix.utils.decode_number(ul.text,float_factory) == canmatrix.utils.decode_number(ll.text, float_factory):
             #####################################################################################################
             #####################################################################################################
             values[ll.text] = desc
@@ -1100,7 +1104,7 @@ def ar_byteorder_is_little(in_string):
     return False
 
 
-def get_signals(signal_array, frame, ea, multiplex_id, float_factory, bit_offset=0, signal_triggerings=[]):
+def get_signals(signal_array, frame, ea, multiplex_id, float_factory, bit_offset=0):
     # type: (typing.Sequence[_Element], typing.Union[canmatrix.Frame, canmatrix.Pdu], Earxml, int, typing.Callable, int) -> None
     """Add signals from xml to the Frame."""
 
@@ -1112,6 +1116,9 @@ def get_signals(signal_array, frame, ea, multiplex_id, float_factory, bit_offset
         motorola = ea.get_child(signal, "PACKING-BYTE-ORDER")
         start_bit = ea.get_child(signal, "START-POSITION")
 
+        # To Get Update Bit
+        ub_start_bit = ea.get_child(signal, "UPDATE-INDICATION-BIT-POSITION")
+        
         isignal = ea.follow_ref(signal, "SIGNAL-REF")
         if isignal is None:
             isignal = ea.follow_ref(signal, "I-SIGNAL-REF")  # AR4
@@ -1119,9 +1126,17 @@ def get_signals(signal_array, frame, ea, multiplex_id, float_factory, bit_offset
         if isignal is None:
             isignal = ea.follow_ref(signal, "I-SIGNAL-GROUP-REF")
             if isignal is not None:
-                logger.debug("get_signals: found I-SIGNAL-GROUP ")
+                logger.debug("get_signals: found I-SIGNAL-GROUP")
                 isignal_array = ea.follow_all_ref(isignal, "I-SIGNAL-REF")
                 get_signalgrp_and_signals(isignal, isignal_array, frame, group_id, ea)
+                if ub_start_bit is not None:
+                    ub_name = ea.get_element_name(isignal) + "_UB"   
+                    isignal_ub = canmatrix.Signal(ub_name,
+                                                  start_bit=int(ub_start_bit.text, 0),
+                                                  size = 1,
+                                                  is_signed = False,
+                                                  unit = "Unitless") 
+                    frame.add_signal(isignal_ub)
 
                 group_id = group_id + 1
                 continue
@@ -1132,11 +1147,10 @@ def get_signals(signal_array, frame, ea, multiplex_id, float_factory, bit_offset
 
         receiver = []  # type: typing.List[str]
 
-        for triggering in signal_triggerings:
+        for triggering in ea.selector(isignal, "<<I-SIGNAL-TRIGGERING"):
             try:
-                if ea.selector(triggering, ">I-SIGNAL-REF")[0] == isignal:
-                    reciving_ecu_instances = ea.selector(triggering, ">>I-SIGNAL-PORT-REF//COMMUNICATION-DIRECTION:IN/../../..")
-                    receiver = [ea.get_short_name(a) for a in reciving_ecu_instances]
+                reciving_ecu_instances = ea.selector(triggering, ">>I-SIGNAL-PORT-REF//COMMUNICATION-DIRECTION:IN/../../..")
+                receiver = [ea.get_short_name(a) for a in reciving_ecu_instances]
             except IndexError:
                 pass
 
@@ -1190,8 +1204,23 @@ def get_signals(signal_array, frame, ea, multiplex_id, float_factory, bit_offset
                 if base_type is None:
                     base_type = ea.follow_ref(test_signal, "BASE-TYPE-REF")
 
-            lower = ea.get_child(data_constr, "LOWER-LIMIT")
-            upper = ea.get_child(data_constr, "UPPER-LIMIT")
+            # Only get min/max values of the internal
+            lowers = ea.get_children(data_constr, "INTERNAL-CONSTRS/LOWER-LIMIT")
+            if not lowers:
+                lower = None
+            else:
+                lower = lowers[0]
+                for elem in lowers:
+                    if decimal.Decimal(lower.text) > decimal.Decimal(elem.text):
+                        lower = elem
+            uppers = ea.get_children(data_constr, "INTERNAL-CONSTRS/UPPER-LIMIT")
+            if not uppers:
+                upper = None
+            else:
+                upper = uppers[0]
+                for elem in uppers:
+                    if decimal.Decimal(upper.text) < decimal.Decimal(elem.text):
+                        upper = elem
         else:
             lower = ea.get_child(datatype, "LOWER-LIMIT")
             upper = ea.get_child(datatype, "UPPER-LIMIT")
@@ -1330,8 +1359,8 @@ def get_signals(signal_array, frame, ea, multiplex_id, float_factory, bit_offset
             if base_type is not None:
                 temp = ea.get_child(base_type, "SHORT-NAME")
                 if temp is not None and "boolean" == temp.text:
-                    new_signal.add_values(1, "TRUE")
-                    new_signal.add_values(0, "FALSE")
+                    new_signal.add_values(1, "true")
+                    new_signal.add_values(0, "false")
 
             if initvalue is not None and initvalue.text is not None:
                 initvalue.text = canmatrix.utils.guess_value(initvalue.text)
@@ -1351,10 +1380,20 @@ def get_signals(signal_array, frame, ea, multiplex_id, float_factory, bit_offset
                 new_signal.add_attribute("ISignalName", isignal_name)
             if system_signal_name is not None and system_signal_name:
                 new_signal.add_attribute("SysSignalName", system_signal_name)
+                
             existing_signal = frame.signal_by_name(new_signal.name)
             if existing_signal is None:
                 frame.add_signal(new_signal)
 
+            if ub_start_bit is not None:
+                ub_name = name + "_UB"
+                new_signal_ub = canmatrix.Signal(ub_name,
+                                                 start_bit = int(ub_start_bit.text, 0),
+                                                 size = 1,
+                                                 is_signed = False,
+                                                 unit = "Unitless")
+                frame.add_signal(new_signal_ub)
+
 
 def get_frame_from_multiplexed_ipdu(pdu, target_frame, multiplex_translation, ea, float_factory):
     selector_byte_order = ea.get_child(pdu, "SELECTOR-FIELD-BYTE-ORDER")
@@ -1531,7 +1570,7 @@ def store_frame_timings(target_frame, cyclic_timing, event_timing, minimum_delay
 
 
 def get_frame(frame_triggering, ea, multiplex_translation, float_factory, headers_are_littleendian):
-    # type: (_Element, _DocRoot, dict, typing.Callable, bool) -> typing.Union[canmatrix.Frame, None]
+    # type: (_Element, Earxml, dict, typing.Callable, bool) -> typing.Union[canmatrix.Frame, None]
     global frames_cache
 
     arb_id = ea.get_child(frame_triggering, "IDENTIFIER")
@@ -1542,7 +1581,6 @@ def get_frame(frame_triggering, ea, multiplex_translation, float_factory, header
         logger.info("found Frame-Trigger %s without arbitration id", frame_trig_name_elem.text)
         return None
     arbitration_id = int(arb_id.text, 0)
-    isignaltriggerings_of_current_cluster = ea.selector(frame_triggering, "/..//I-SIGNAL-TRIGGERING")
 
     if frame_elem is not None:
         logger.debug("Frame: %s", ea.get_element_name(frame_elem))
@@ -1553,11 +1591,65 @@ def get_frame(frame_triggering, ea, multiplex_translation, float_factory, header
         # pdu = ea.follow_ref(pdu_mapping, "PDU-REF")  # SIGNAL-I-PDU
         pdu = ea.follow_ref(frame_elem, "PDU-REF")  # SIGNAL-I-PDU
 
-        if pdu is not None and 'SECURED-I-PDU' in pdu.tag:
-            pdu = ea.selector(pdu, ">PAYLOAD-REF>I-PDU-REF")[0]
-            # logger.info("found secured pdu - no signal extraction possible: %s", get_element_name(pdu, ns))
+        # pdu_name = ea.get_element_name(pdu)
+        # target_pdu = canmatrix.Pdu(name=pdu_name)
 
-        new_frame = canmatrix.Frame(ea.get_element_name(frame_elem), size=int(dlc_elem.text, 0))
+        secOC_properties = None
+        if pdu is not None and 'SECURED-I-PDU' in pdu.tag:
+            try:
+                payload_length = ea.get_child(pdu, "LENGTH").text
+
+                secured_ipdu_SecoC = ea.get_child(pdu, "SECURE-COMMUNICATION-PROPS")
+
+                auth_algorithm = ea.get_child(secured_ipdu_SecoC, "AUTH-ALGORITHM").text
+                auth_tx_length = ea.get_child(secured_ipdu_SecoC, "AUTH-INFO-TX-LENGTH").text
+                data_id = ea.get_child(secured_ipdu_SecoC, "DATA-ID").text
+                freshness_bit_length = ea.get_child(secured_ipdu_SecoC, "FRESHNESS-VALUE-LENGTH").text
+                freshness_tx_length = ea.get_child(secured_ipdu_SecoC, "FRESHNESS-VALUE-TX-LENGTH").text
+                
+                secOC_properties = canmatrix.AutosarSecOCProperties(auth_algorithm, 
+                                                                   int(payload_length, 0),
+                                                                   int(auth_tx_length, 0),
+                                                                   int(data_id, 0),
+                                                                   int(freshness_bit_length, 0),
+                                                                   int(freshness_tx_length, 0)
+                                                                   )
+            except Exception as e:
+                logger.warning(f"{e}")
+
+            ipdu = ea.selector(pdu, ">PAYLOAD-REF>I-PDU-REF")
+            if not ipdu:
+                logger.error("SecuredIPdu %r is missing Payload", ea.get_short_name(pdu))
+                return None
+
+            pdu = ipdu[0]
+
+            ipdu_length = ea.get_child(pdu, "LENGTH").text
+
+        new_frame = canmatrix.Frame(ea.get_element_name(frame_elem), size=int(dlc_elem.text, 0), secOC_properties=secOC_properties)
+        # new_frame.add_pdu(target_pdu)
+
+        if secOC_properties is not None:
+            if freshness_tx_length is not None and int(freshness_tx_length, 0) > 0:
+                freshness_name = f"{ea.get_element_name(frame_elem)}_Freshness"
+                signal_freshness = canmatrix.Signal(freshness_name,
+                                                    start_bit = int(ipdu_length, 0) * 8 + int(freshness_tx_length, 0) - 16,
+                                                    size = int(freshness_tx_length, 0),
+                                                    is_signed = False,
+                                                    is_little_endian = False,
+                                                    unit = "Unitless") 
+                new_frame.add_signal(signal_freshness)
+
+            if auth_tx_length is not None and int(auth_tx_length, 0) > 0:
+                authinfo_name = f"{ea.get_element_name(frame_elem)}_AuthInfo"
+                signal_authinfo = canmatrix.Signal(authinfo_name,
+                                                start_bit = int(ipdu_length, 0) * 8 + int(freshness_tx_length, 0),
+                                                size = int(auth_tx_length, 0),
+                                                is_signed = False,
+                                                is_little_endian = False,
+                                                unit = "Unitless")
+                new_frame.add_signal(signal_authinfo)
+        
         comment = ea.get_element_desc(frame_elem)
         if pdu is not None:
             new_frame.add_attribute("PduName", ea.get_short_name(pdu))
@@ -1583,7 +1675,7 @@ def get_frame(frame_triggering, ea, multiplex_translation, float_factory, header
         new_frame.add_attribute("FrameTriggeringName", ea.get_short_name(frame_triggering))
 
     if pdu is None:
-        logger.error("pdu is None")
+        logger.error("Frame %r has no PDU", new_frame.name)
     else:
         new_frame.pdu_name = ea.get_element_name(pdu)
         logger.debug("PDU: " + new_frame.pdu_name)
@@ -1602,7 +1694,7 @@ def get_frame(frame_triggering, ea, multiplex_translation, float_factory, header
 
     if (frame_rx_behaviour_elem is not None and frame_rx_behaviour_elem.text == 'CAN-FD') or \
             (frame_tx_behaviour_elem is not None and frame_tx_behaviour_elem.text == 'CAN-FD') or \
-            (is_fd_elem is not None and is_fd_elem.text == 'TRUE'):
+            (is_fd_elem is not None and is_fd_elem.text.lower() == 'true'):
         new_frame.is_fd = True
     else:
         new_frame.is_fd = False
@@ -1625,35 +1717,23 @@ def get_frame(frame_triggering, ea, multiplex_translation, float_factory, header
     store_frame_timings(new_frame, cyclic_timing, event_timing, minimum_delay, repeats, starting_time, time_offset,
                         repeating_time, ea, time_period, float_factory)
 
-    if pdu is not None and "MULTIPLEXED-I-PDU" in pdu.tag:
-        get_frame_from_multiplexed_ipdu(pdu, new_frame, multiplex_translation, ea, float_factory)
-    elif pdu is not None and pdu.tag == ea.ns + "CONTAINER-I-PDU":
-        get_frame_from_container_ipdu(pdu, new_frame, ea, float_factory, headers_are_littleendian)
-    else:
-        pdu_sig_mapping = ea.selector(pdu, "//I-SIGNAL-TO-I-PDU-MAPPING")
-        if pdu_sig_mapping:
-            get_signals(pdu_sig_mapping, new_frame, ea, None, float_factory, signal_triggerings=isignaltriggerings_of_current_cluster)
-        # Seen some pdu_sig_mapping being [] and not None with some arxml 4.2
-        else:  # AR 4.2
-            pdu_trigs = ea.follow_all_ref(frame_triggering, "PDU-TRIGGERINGS-REF")
-            if pdu_trigs is not None:
-                for pdu_trig in pdu_trigs:
-                    trig_ref_cond = ea.get_child(pdu_trig, "PDU-TRIGGERING-REF-CONDITIONAL")
-                    trigs = ea.follow_ref(trig_ref_cond, "PDU-TRIGGERING-REF")
-                    ipdus = ea.follow_ref(trigs, "I-PDU-REF")
-
-                    signal_to_pdu_maps = ea.get_child(ipdus, "I-SIGNAL-TO-PDU-MAPPINGS")
-                    if signal_to_pdu_maps is None:
-                        signal_to_pdu_maps = ea.get_child(ipdus, "I-SIGNAL-TO-I-PDU-MAPPINGS")
-
-                    if signal_to_pdu_maps is None:
-                        logger.debug("AR4.x PDU %s no SIGNAL-TO-PDU-MAPPINGS found - no signal extraction!",
-                                     ea.get_element_name(ipdus))
-                    # signal_to_pdu_map = get_children(signal_to_pdu_maps, "I-SIGNAL-TO-I-PDU-MAPPING", arDict, ns)
-                    get_signals(signal_to_pdu_maps, new_frame, ea, None,
-                                float_factory, signal_triggerings=isignaltriggerings_of_current_cluster)  # todo BUG expects list, not item
+    if pdu is not None:
+        if "MULTIPLEXED-I-PDU" in pdu.tag:
+            get_frame_from_multiplexed_ipdu(pdu, new_frame, multiplex_translation, ea, float_factory)
+        elif pdu.tag == ea.ns + "CONTAINER-I-PDU":
+            get_frame_from_container_ipdu(pdu, new_frame, ea, float_factory, headers_are_littleendian)
+        else:
+            pdu_sig_mapping = ea.selector(pdu, "//I-SIGNAL-TO-I-PDU-MAPPING")
+            if pdu_sig_mapping:
+                get_signals(pdu_sig_mapping, new_frame, ea, None, float_factory)
             else:
-                logger.debug("Frame %s (assuming AR4.2) no PDU-TRIGGERINGS found", new_frame.name)
+                # Seen some pdu_sig_mapping being [] and not None with some arxml 4.2
+                update_frame_with_pdu_triggerings(new_frame, ea, frame_triggering, float_factory)
+    else:
+        # AR 4.2
+        update_frame_with_pdu_triggerings(
+            new_frame, ea, frame_triggering, float_factory)
+
     if new_frame.is_pdu_container and new_frame.cycle_time == 0:
         cycle_times = {pdu.cycle_time for pdu in new_frame.pdus}
         if len(cycle_times) > 1:
@@ -1667,6 +1747,32 @@ def get_frame(frame_triggering, ea, multiplex_translation, float_factory, header
     return copy.deepcopy(new_frame)
 
 
+def update_frame_with_pdu_triggerings(frame, ea, frame_triggering, float_factory):
+    # type: (canmatrix.Frame, Earxml, _Element, typing.Callable) -> None
+    """Update frame with signals from PDU Triggerings."""
+    pdu_trigs = ea.follow_all_ref(frame_triggering, "PDU-TRIGGERINGS-REF")
+    if pdu_trigs is not None:
+        for pdu_trig in pdu_trigs:
+            trig_ref_cond = ea.get_child(pdu_trig, "PDU-TRIGGERING-REF-CONDITIONAL")
+            trigs = ea.follow_ref(trig_ref_cond, "PDU-TRIGGERING-REF")
+            ipdus = ea.follow_ref(trigs, "I-PDU-REF")
+
+            signal_to_pdu_maps = ea.get_child(ipdus, "I-SIGNAL-TO-PDU-MAPPINGS")
+            if signal_to_pdu_maps is None:
+                signal_to_pdu_maps = ea.get_child(ipdus, "I-SIGNAL-TO-I-PDU-MAPPINGS")
+
+            if signal_to_pdu_maps is None:
+                logger.debug(
+                    "AR4.x PDU %s no SIGNAL-TO-PDU-MAPPINGS found - no signal extraction!",
+                    ea.get_element_name(ipdus)
+                )
+
+            # signal_to_pdu_map = get_children(signal_to_pdu_maps, "I-SIGNAL-TO-I-PDU-MAPPING", arDict, ns)
+            get_signals(signal_to_pdu_maps, frame, ea, None, float_factory)  # todo BUG expects list, not item
+    else:
+        logger.debug("Frame %s (assuming AR4.2) no PDU-TRIGGERINGS found", frame.name)
+
+
 def process_ecu(ecu_elem, ea):
     # type: (_Element, Earxml) -> canmatrix.Ecu
     connectors = ea.get_child(ecu_elem, "CONNECTORS")
@@ -1744,10 +1850,11 @@ def extract_cm_from_ecuc(com_module, ea):
 
 def decode_ethernet_helper(ea, float_factory):
     found_matrixes = {}
+    nodes = {}  # type: typing.Dict[_Element, canmatrix.Ecu]
 
     socket_connetions = ea.findall("SOCKET-CONNECTION-IPDU-IDENTIFIER")
     pdu_triggering_header_id_map = {}
-    # network_endpoints = pc.findall('.//' + ns + "NETWORK-ENDPOINT")
+    
     for socket_connetion in socket_connetions:
         header_id = ea.get_child(socket_connetion, "HEADER-ID")
         ipdu_triggering = ea.follow_ref(socket_connetion, "PDU-TRIGGERING-REF")
@@ -1760,40 +1867,119 @@ def decode_ethernet_helper(ea, float_factory):
     for ec in ecs:
         baudrate_elem = ea.find("BAUDRATE", ec)
         physical_channels = ea.findall("ETHERNET-PHYSICAL-CHANNEL", ec)
+        
         for pc in physical_channels:
-
             db = canmatrix.CanMatrix(type=canmatrix.matrix_class.SOMEIP)
 
-            db.baudrate = baudrate_elem.text if baudrate_elem is not None else 0
-            db.add_signal_defines("LongName", 'STRING')
+            db.baudrate = int(baudrate_elem.text, 0) if baudrate_elem is not None else 0
+            
             channel_name = ea.get_element_name(pc)
+
+            vlan = ea.get_child(pc, "VLAN")
+            vlan_tag = ea.get_child(vlan, "VLAN-IDENTIFIER")
+            db.vlan = int(vlan_tag.text, 0)
+
             found_matrixes[channel_name] = db
 
-            for socket_connetion in ea.findall("SOCKET-CONNECTION-IPDU-IDENTIFIER", pc):
-                header_id = ea.get_child(socket_connetion, "HEADER-ID")
-                ipdu_triggering = ea.follow_ref(socket_connetion, "PDU-TRIGGERING-REF")
-                #            for ipdu_triggering in ea.findall("PDU-TRIGGERING", pc):
-                ipdu = ea.follow_ref(ipdu_triggering, "I-PDU-REF")
-                if ipdu is not None and 'SECURED-I-PDU' in ipdu.tag:
-                    payload = ea.follow_ref(ipdu, "PAYLOAD-REF")
-                    ipdu = ea.follow_ref(payload, "I-PDU-REF")
-
-                ipdu_name = ea.get_element_name(ipdu)
-                logger.info("ETH PDU " + ipdu_name + " found")
-                target_frame = canmatrix.Frame(name=ipdu_name)
-                try:
-                    target_frame.header_id = int(header_id.text, 0)
-                except:
-                    try:
-                        target_frame.header_id = int(pdu_triggering_header_id_map[ipdu_triggering], 0)
-                    except:
-                        target_frame.header_id = 0
-                #                    continue
-                pdu_sig_mapping = ea.findall("I-SIGNAL-TO-I-PDU-MAPPING", ipdu)
-
-                get_signals(pdu_sig_mapping, target_frame, ea, None, float_factory)
-                target_frame.update_receiver()
-                db.add_frame(target_frame)
+            for socket_connection_bundle in ea.findall("SOCKET-CONNECTION-BUNDLE", pc):
+                # Get Server Endpoint Info
+                server_port_ref = ea.follow_ref(socket_connection_bundle, "SERVER-PORT-REF")
+                server_port = ea.find("PORT-NUMBER", server_port_ref)
+                
+                server_app_endpoint = ea.get_child(server_port_ref, "APPLICATION-ENDPOINT")
+                server_endpoint_ref = ea.follow_ref(server_app_endpoint, "NETWORK-ENDPOINT-REF")
+                server_ipv4 = ea.find("IPV-4-ADDRESS", server_endpoint_ref)
+
+                # Get Client Endpoint Info
+                socket_connections = ea.get_children(socket_connection_bundle, "SOCKET-CONNECTION")
+                for socket_connection in socket_connections:
+                    client_port_ref = ea.follow_ref(socket_connection, "CLIENT-PORT-REF")
+                    client_port = ea.find("PORT-NUMBER", client_port_ref)
+
+                    client_app_endpoint = ea.get_child(client_port_ref, "APPLICATION-ENDPOINT")
+                    client_endpoint_ref = ea.follow_ref(client_app_endpoint, "NETWORK-ENDPOINT-REF")
+                    client_ipv4 = ea.find("IPV-4-ADDRESS", client_endpoint_ref)
+                    ttl = ea.find("TTL", client_endpoint_ref)
+
+                    endpoint = canmatrix.Endpoint(server_ipv4.text, 
+                                                  int(server_port.text, 0),
+                                                  client_ipv4.text, 
+                                                  int(client_port.text, 0),
+                                                  ttl)
+
+                    for scii in ea.findall("SOCKET-CONNECTION-IPDU-IDENTIFIER", socket_connection):
+
+                        header_id = ea.get_child(scii, "HEADER-ID")
+                        ipdu_triggering = ea.follow_ref(scii, "PDU-TRIGGERING-REF")
+
+                        # Maybe Here can use a more efficent way
+                        ipdu_receivers_refs = ea.get_children(ipdu_triggering, "I-PDU-PORT-REFS")
+                        ipdu_receivers = [ea.follow_ref(receiver, "I-PDU-PORT-REF") for receiver in ipdu_receivers_refs]
+                        for receiver in ipdu_receivers:
+                            comm_direction = ea.get_child(receiver, "COMMUNICATION-DIRECTION")
+                            ecu_elem = ea.get_ecu_instance(element=comm_direction)
+                            if ecu_elem is not None:
+                                if ecu_elem in nodes:
+                                    ecu = nodes[ecu_elem]
+                                else:
+                                    ecu = process_ecu(ecu_elem, ea)
+                                    nodes[ecu_elem] = ecu
+                                # db.add_ecu(ecu)
+
+                        ipdu = ea.follow_ref(ipdu_triggering, "I-PDU-REF")
+
+                        # Size
+                        ipdu_length = int(ea.get_child(ipdu, "LENGTH").text, 0)
+                        
+                        # Cycle-Time
+                        timing_spec = ea.get_child(ipdu, "I-PDU-TIMING-SPECIFICATION")
+                        if timing_spec is None:
+                            timing_spec = ea.get_child(ipdu, "I-PDU-TIMING-SPECIFICATIONS")
+                        cyclic_timing = ea.get_child(timing_spec, "CYCLIC-TIMING")
+                        time_period = ea.get_child(cyclic_timing, "TIME-PERIOD")
+                        value = ea.get_child(time_period, "VALUE")
+                        cycle_time = 0
+                        if value is not None:
+                            cycle_time = int(float_factory(value.text) * 1000)
+                        
+                        # print(ipdu.tag)
+                        # if ipdu is not None and 'SECURED-I-PDU' in ipdu.tag:
+                        #     print("get IN?")
+                        #     payload = ea.follow_ref(ipdu, "PAYLOAD-REF")
+                        #     if payload is None:
+                        #         logger.error("SecuredIPdu %r is missing Payload", ea.get_short_name(ipdu))
+                        #         continue
+                        #     ipdu = ea.follow_ref(payload, "I-PDU-REF")
+                        #     if ipdu is None:
+                        #         logger.error("PduTriggering %r is missing IPdu", ea.get_short_name(payload))
+                        #         continue
+
+                        ipdu_name = ea.get_element_name(ipdu)
+                        logger.info("ETH PDU " + ipdu_name + " found")
+                        target_frame = canmatrix.Frame(name=ipdu_name, cycle_time=cycle_time, size=ipdu_length, endpoints=endpoint)
+
+                        try:
+                            target_frame.header_id = int(header_id.text, 0)
+                        except:
+                            try:
+                                target_frame.header_id = int(pdu_triggering_header_id_map[ipdu_triggering], 0)
+                            except:
+                                pass
+
+                        # In Case Neither transmitter Nor receiver
+                        if comm_direction.text == "OUT":
+                            target_frame.add_transmitter(ecu.name)
+                        elif comm_direction.text == "IN":
+                            target_frame.add_receiver(ecu.name)
+                        else:
+                            pass
+                        
+                        pdu_sig_mapping = ea.findall("I-SIGNAL-TO-I-PDU-MAPPING", ipdu)
+
+                        get_signals(pdu_sig_mapping, target_frame, ea, None, float_factory)
+                        # target_frame.update_receiver() # It will make transmitter and receiver worse
+                        db.add_frame(target_frame)
+                        
     return found_matrixes
 
 
@@ -1847,7 +2033,7 @@ def decode_can_helper(ea, float_factory, ignore_cluster_info):
     if ignore_cluster_info is True:
         ccs = [lxml.etree.Element("ignoreClusterInfo")]  # type: typing.Sequence[_Element]
     else:
-        ccs = ea.findall('CAN-CLUSTER')
+        ccs = ea.findall('CAN-CLUSTER') + ea.findall('J-1939-CLUSTER')
 
     headers_are_littleendian = containters_are_little_endian(ea)
     nodes = {}  # type: typing.Dict[_Element, canmatrix.Ecu]
@@ -1898,6 +2084,8 @@ def decode_can_helper(ea, float_factory, ignore_cluster_info):
         for frameTrig in can_frame_trig:  # type: _Element
             frame = get_frame(frameTrig, ea, multiplex_translation, float_factory, headers_are_littleendian)
             if frame is not None:
+                frame.is_j1939 = "J-1939" in cc.tag
+                
                 comm_directions = ea.selector(frameTrig, ">>FRAME-PORT-REF/COMMUNICATION-DIRECTION")
                 for comm_direction in comm_directions:
                     ecu_elem = ea.get_ecu_instance(element=comm_direction)
@@ -1907,10 +2095,14 @@ def decode_can_helper(ea, float_factory, ignore_cluster_info):
                         else:
                             ecu = process_ecu(ecu_elem, ea)
                             nodes[ecu_elem] = ecu
+
+                        # In Case Neither transmitter Nor receiver
                         if comm_direction.text == "OUT":
                             frame.add_transmitter(ecu.name)
-                        else:
+                        elif comm_direction.text == "IN":
                             frame.add_receiver(ecu.name)
+                        else:
+                            pass
                         db.add_ecu(ecu)
                 db.add_frame(frame)
         for frame in db.frames:
diff --git a/src/canmatrix/formats/csv.py b/src/canmatrix/formats/csv.py
index 5f475acd8122cf9c561ccb0bc756779b9e880458..90918fafa89f56bdd145e87541c6b6166e269cf2 100644
--- a/src/canmatrix/formats/csv.py
+++ b/src/canmatrix/formats/csv.py
@@ -23,8 +23,6 @@
 # this script exports canmatrix-objects to a CSV file. (Based on xlsx)
 # Author: Martin Hoffmann (m8ddin@gmail.com)
 
-from __future__ import absolute_import, division, print_function
-
 import collections
 import csv
 import logging
@@ -47,9 +45,6 @@ class CsvRow:
         return self._row_dict[key]
 
     def __setitem__(self, key, item):  # type: (int, CsvDataType) -> None
-        if sys.version_info <= (3, 0):
-            if type(item).__name__ == "unicode":
-                item = item.encode('utf-8')
         self._row_dict[key] = item
 
     def __add__(self, other):  # type: (typing.Iterable[CsvDataType]) -> CsvRow
@@ -263,11 +258,8 @@ def dump(db, file_object, delimiter=',', **options):
         # loop over signals ends here
     # loop over frames ends here
 
-    if sys.version_info > (3, 0):
-        import io
-        temp = io.TextIOWrapper(file_object, encoding='UTF-8')
-    else:
-        temp = file_object
+    import io
+    temp = io.TextIOWrapper(file_object, encoding='UTF-8')
 
     try:
         writer = csv.writer(temp, delimiter=delimiter)
@@ -279,7 +271,7 @@ def dump(db, file_object, delimiter=',', **options):
         #        [row.toCSV(delimiter) for row in csv_table])
         #    print(finalTableString)
     finally:
-        if sys.version_info > (3, 0):
-            # When TextIOWrapper is garbage collected, it closes the raw stream
-            # unless the raw stream is detached first
-            temp.detach()
+        # When TextIOWrapper is garbage collected, it closes the raw stream
+        # unless the raw stream is detached first
+        temp.detach()
+
diff --git a/src/canmatrix/formats/dbc.py b/src/canmatrix/formats/dbc.py
index 3aa1c1574c8573910a4a5644212af46cf32e104b..3361332c290f346dd8fff0847e702fb3c0e1b02c 100644
--- a/src/canmatrix/formats/dbc.py
+++ b/src/canmatrix/formats/dbc.py
@@ -23,8 +23,6 @@
 # this script exports dbc-files from a canmatrix-object
 # dbc-files are the can-matrix-definitions of the CANoe (Vector Informatic)
 
-from __future__ import absolute_import, division, print_function
-
 import collections
 import copy
 import decimal
@@ -225,6 +223,8 @@ def dump(in_db, f, **options):
         # remove "-" from frame names
         if compatibility:
             frame.name = re.sub("[^A-Za-z0-9]", whitespace_replacement, frame.name)
+            if frame.name[0].isdigit():
+                frame.name = "_" + frame.name
 
         duplicate_signal_totals = collections.Counter(normalized_names.values())
         duplicate_signal_counter = collections.Counter()  # type: typing.Counter[str]
@@ -237,14 +237,14 @@ def dump(in_db, f, **options):
         for signal in frame.signals:
             if signal.cycle_time != 0:
                 signal.add_attribute("GenSigCycleTime", signal.cycle_time)
+            if signal.initial_value != 0 and "GenSigStartValue" not in db.signal_defines:
+                db.add_signal_defines("GenSigStartValue", 'FLOAT 0 100000000000')
+                
             if "GenSigStartValue" in db.signal_defines:
                 if signal.phys2raw(None) != 0:
-                    if db.signal_defines["GenSigStartValue"].defaultValue is not None and \
-                            float(signal.initial_value) != float(db.signal_defines["GenSigStartValue"].defaultValue):
-                        signal.add_attribute("GenSigStartValue", signal.phys2raw(float(db.signal_defines["GenSigStartValue"].defaultValue)))
-                    elif db.signal_defines["GenSigStartValue"].defaultValue is None:
+                    if db.signal_defines["GenSigStartValue"].defaultValue is None:
                         signal.add_attribute("GenSigStartValue", signal.phys2raw(None))
-
+                        
             name = normalized_names[signal]
             if compatibility:
                 name = re.sub("[^A-Za-z0-9]", whitespace_replacement, name)
@@ -461,7 +461,7 @@ def dump(in_db, f, **options):
         if frame.is_complex_multiplexed:
             for signal in frame.signals:
                 if signal.muxer_for_signal is not None:
-                    f.write(("SG_MUL_VAL_ %d %s %s " % (frame.arbitration_id.to_compound_integer(), signal.name, signal.muxer_for_signal)).encode(dbc_export_encoding, ignore_encoding_errors))
+                    f.write(("SG_MUL_VAL_ %d %s %s " % (frame.arbitration_id.to_compound_integer(), output_names[frame][signal], signal.muxer_for_signal)).encode(dbc_export_encoding, ignore_encoding_errors))
                     f.write((", ".join(["%d-%d" % (a, b) for a, b in signal.mux_val_grp])).encode(dbc_export_encoding, ignore_encoding_errors))
 
                     f.write(";\n".encode(dbc_export_encoding, ignore_encoding_errors))
@@ -558,7 +558,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                 if decoded.strip().endswith(r'"'):
                     decoded += r" Vector__XXX"
                     original_line += b" Vector__XXX"
-                pattern = r"^SG_ +(\w+) *: *(\d+)\|(\d+)@(\d+)([\+|\-]) *\(([0-9.+\-eE]+), *([0-9.+\-eE]+)\) *\[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] +\"(.*)\" +(.*)"
+                pattern = r"^SG_ +(\S+) *: *(\d+)\|(\d+)@(\d+)([\+|\-]) *\(([0-9.+\-eE]+), *([0-9.+\-eE]+)\) *\[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] +\"(.*)\" +(.*)"
                 regexp = re.compile(pattern)
                 temp = regexp.match(decoded)
                 regexp_raw = re.compile(pattern.encode(dbc_import_encoding))
@@ -599,9 +599,11 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                     multiplex = temp.group(2)  # type: str
 
                     is_complex_multiplexed = False
+                    is_multiplexer = False
 
                     if multiplex == 'M':
                         multiplex = 'Multiplexor'
+                        is_multiplexer = True
                     elif multiplex.endswith('M'):
                         is_complex_multiplexed = True
                         multiplex = multiplex[:-1]
@@ -632,7 +634,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                         **extras
                     )
 
-                    if is_complex_multiplexed:
+                    if is_complex_multiplexed or is_multiplexer:
                         temp_signal.is_multiplexer = True
                         temp_signal.multiplex = 'Multiplexor'
 
@@ -651,7 +653,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                 for ecu_name in temp.group(2).split(','):
                     frame.add_transmitter(ecu_name)
             elif decoded.startswith("CM_ SG_ "):
-                pattern = r"^CM_ +SG_ +(\w+) +(\w+) +\"(.*)\" *;"
+                pattern = r"^CM_ +SG_ +(\S+) +(\S+) +\"(.*)\" *;"
                 regexp = re.compile(pattern)
                 regexp_raw = re.compile(pattern.encode(dbc_import_encoding))
                 temp = regexp.match(decoded)
@@ -668,7 +670,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                                 "Error decoding line: %d (%s)" %
                                 (i, line))
                 else:
-                    pattern = r"^CM_ +SG_ +(\w+) +(\w+) +\"(.*)"
+                    pattern = r"^CM_ +SG_ +(\S+) +(\S+) +\"(.*)"
                     regexp = re.compile(pattern)
                     regexp_raw = re.compile(pattern.encode(dbc_import_encoding))
                     temp = regexp.match(decoded)
@@ -686,7 +688,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                         follow_up = _FollowUps.SIGNAL_COMMENT
 
             elif decoded.startswith("CM_ BO_ "):
-                pattern = r"^CM_ +BO_ +(\w+) +\"(.*)\" *;"
+                pattern = r"^CM_ +BO_ +(\S+) +\"(.*)\" *;"
                 regexp = re.compile(pattern)
                 regexp_raw = re.compile(pattern.encode(dbc_import_encoding))
                 temp = regexp.match(decoded)
@@ -702,7 +704,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                                 "Error decoding line: %d (%s)" %
                                 (i, line))
                 else:
-                    pattern = r"^CM_ +BO_ +(\w+) +\"(.*)"
+                    pattern = r"^CM_ +BO_ +(\S+) +\"(.*)"
                     regexp = re.compile(pattern)
                     regexp_raw = re.compile(pattern.encode(dbc_import_encoding))
                     temp = regexp.match(decoded)
@@ -718,7 +720,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                                 (i, line))
                         follow_up = _FollowUps.FRAME_COMMENT
             elif decoded.startswith("CM_ BU_ "):
-                pattern = r"^CM_ +BU_ +(\w+) +\"(.*)\" *;"
+                pattern = r"^CM_ +BU_ +(\S+) +\"(.*)\" *;"
                 regexp = re.compile(pattern)
                 regexp_raw = re.compile(pattern.encode(dbc_import_encoding))
                 temp = regexp.match(decoded)
@@ -732,7 +734,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                         except:
                             logger.error("Error decoding line: %d (%s)" % (i, line))
                 else:
-                    pattern = r"^CM_ +BU_ +(\w+) +\"(.*)"
+                    pattern = r"^CM_ +BU_ +(\S+) +\"(.*)"
                     regexp = re.compile(pattern)
                     regexp_raw = re.compile(pattern.encode(dbc_import_encoding))
                     temp = regexp.match(decoded)
@@ -760,14 +762,14 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                             db.ecus.append(canmatrix.Ecu(ele))
 
             elif decoded.startswith("VAL_ "):
-                regexp = re.compile(r"^VAL_ +(\w+) +(\w+) +(.*) *;")
+                regexp = re.compile(r"^VAL_ +(\d+)? *(\S+) +(.*) *;")
                 temp = regexp.match(decoded)
                 if temp:
                     frame_id = temp.group(1)
                     signal_name = temp.group(2)
                     temp_list = list(canmatrix.utils.escape_aware_split(temp.group(3), '"'))
 
-                    if frame_id.isnumeric():  # value for Frame
+                    if frame_id:  # value for Frame
                         try:
                             frame = get_frame_by_id(canmatrix.ArbitrationId.from_compound_integer(int(frame_id)))
                             sg = frame.signal_by_name(signal_name)
@@ -778,11 +780,18 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                                     sg.add_values(temp_list[i * 2], val)
                         except:
                             logger.error("Error with Line: " + str(temp_list))
-                    else:
-                        logger.info("Warning: environment variables currently not supported")
+                    else:                        
+                        try:
+                            values = db.env_vars[signal_name]['values']
+                            for i in range(math.floor(len(temp_list) / 2)):
+                                val = temp_list[i * 2 + 1]
+                                val = val.replace('\\"', '"')
+                                values[temp_list[i * 2].strip()]=val
+                        except:
+                            logger.error("Error with Line: " + str(temp_list))
 
             elif decoded.startswith("VAL_TABLE_ "):
-                regexp = re.compile(r"^VAL_TABLE_ +(\w+) +(.*) *;")
+                regexp = re.compile(r"^VAL_TABLE_ +(\S+) +(.*) *;")
                 temp = regexp.match(decoded)
                 if temp:
                     table_name = temp.group(1)
@@ -838,18 +847,18 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                     get_frame_by_id(canmatrix.ArbitrationId.from_compound_integer(int(temp.group(2)))).add_attribute(
                         temp.group(1), temp.group(3))
                 elif tempba.group(1).strip().startswith("SG_ "):
-                    regexp = re.compile(r"^BA_ +\"(.+?)\" +SG_ +(\d+) +(\w+) +(.+) *; *")
+                    regexp = re.compile(r"^BA_ +\"(.+?)\" +SG_ +(\d+) +(\S+) +(.+) *; *")
                     temp = regexp.match(decoded)
                     if temp is not None:
                         get_frame_by_id(canmatrix.ArbitrationId.from_compound_integer(int(temp.group(2)))).signal_by_name(
                             temp.group(3)).add_attribute(temp.group(1), temp.group(4))
                 elif tempba.group(1).strip().startswith("EV_ "):
-                    regexp = re.compile(r"^BA_ +\"(.+?)\" +EV_ +(\w+) +(.*) *; *")
+                    regexp = re.compile(r"^BA_ +\"(.+?)\" +EV_ +(\S+) +(.*) *; *")
                     temp = regexp.match(decoded)
                     if temp is not None:
                         db.add_env_attribute(temp.group(2), temp.group(1), temp.group(3))
                 elif tempba.group(1).strip().startswith("BU_ "):
-                    regexp = re.compile(r"^BA_ +\"(.*?)\" +BU_ +(\w+) +(.+) *; *")
+                    regexp = re.compile(r"^BA_ +\"(.*?)\" +BU_ +(\S+) +(.+) *; *")
                     temp = regexp.match(decoded)
                     db.ecu_by_name(
                         temp.group(2)).add_attribute(
@@ -857,13 +866,13 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                         temp.group(3))
                 else:
                     regexp = re.compile(
-                        r"^BA_ +\"([A-Za-z0-9\-_]+)\" +([\"\w\-\.]+) *; *")
+                        r"^BA_ +\"([A-Za-z0-9\-_]+)\" +([\"\S\-\.]+) *; *")
                     temp = regexp.match(decoded)
                     if temp:
                         db.add_attribute(temp.group(1), temp.group(2))
 
             elif decoded.startswith("SIG_GROUP_ "):
-                regexp = re.compile(r"^SIG_GROUP_ +(\w+) +(\w+) +(\w+) +\:(.*) *; *")
+                regexp = re.compile(r"^SIG_GROUP_ +(\S+) +(\S+) +(\S+) +\:(.*) *; *")
                 temp = regexp.match(decoded)
                 frame = get_frame_by_id(canmatrix.ArbitrationId.from_compound_integer(int(temp.group(1))))
                 if frame is not None:
@@ -871,7 +880,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                     frame.add_signal_group(temp.group(2), temp.group(3), signal_array)  # todo wrong annotation in canmatrix? Id is a string?
 
             elif decoded.startswith("SIG_VALTYPE_ "):
-                regexp = re.compile(r"^SIG_VALTYPE_ +(\w+) +(\w+)\s*\:(.*) *; *")
+                regexp = re.compile(r"^SIG_VALTYPE_ +(\S+) +(\S+)\s*\:(.*) *; *")
                 temp = regexp.match(decoded)
                 frame = get_frame_by_id(canmatrix.ArbitrationId.from_compound_integer(int(temp.group(1))))
                 if frame:
@@ -889,7 +898,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                     db.add_define_default(temp.group(1),
                                           temp_raw.group(2).decode(dbc_import_encoding))
             elif decoded.startswith("SG_MUL_VAL_ "):
-                pattern = r"^SG_MUL_VAL_ +([0-9]+) +([\w\-]+) +([\w\-]+) +(.*) *; *"
+                pattern = r"^SG_MUL_VAL_ +([0-9]+) +([\S\-]+) +([\S\-]+) +(.*) *; *"
                 regexp = re.compile(pattern)
                 temp = regexp.match(decoded)
                 if temp:
@@ -908,7 +917,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                             mux_val_max_number = int(mux_val_max)
                             signal.mux_val_grp.append([mux_val_min_number, mux_val_max_number])
             elif decoded.startswith("EV_ "):
-                pattern = r"^EV_ +([\w\-\_]+?) *\: +([0-9]+) +\[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] +\"(.*?)\" +([0-9.+\-eE]+) +([0-9.+\-eE]+) +([\w\-]+?) +(.*); *"
+                pattern = r"^EV_ +([\S\-\_]+?) *\: +([0-9]+) +\[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] +\"(.*?)\" +([0-9.+\-eE]+) +([0-9.+\-eE]+) +([\S\-]+?) +(.*); *"
                 regexp = re.compile(pattern)
                 temp = regexp.match(decoded)
 
@@ -923,7 +932,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                 access_nodes = temp.group(9).split(",")
                 db.add_env_var(var_name, {"varType": var_type, "min": min_value, "max": max_value, "unit": unit,
                                           "initialValue": initial_value, "evId": ev_id, "accessType": access_type,
-                                          "accessNodes": access_nodes})
+                                          "accessNodes": access_nodes, "values": {}})
 
         # else:
         except:
@@ -989,6 +998,7 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
 
     db.enum_attribs_to_values()
     for frame in db.frames:
+        frame.multiplex_signals()
         if "_FD" in frame.attributes.get("VFrameFormat", ""):
             frame.is_fd = True
         if "J1939PG" in frame.attributes.get("VFrameFormat", ""):
diff --git a/src/canmatrix/formats/dbf.py b/src/canmatrix/formats/dbf.py
index ee45bae2b21b751cd99ae0534f8b723d6ec13896..8b5a780f949ba60abacbd29fba0fd9662fd16d9d 100644
--- a/src/canmatrix/formats/dbf.py
+++ b/src/canmatrix/formats/dbf.py
@@ -23,7 +23,6 @@
 # this script imports dbf-files in a canmatrix-object
 # dbf-files are the can-matrix-definitions of the busmaster-project (http://rbei-etas.github.io/busmaster/)
 #
-from __future__ import absolute_import, division, print_function
 
 import copy
 import decimal
diff --git a/src/canmatrix/formats/eds.py b/src/canmatrix/formats/eds.py
new file mode 100644
index 0000000000000000000000000000000000000000..f744905c2aaa46f7a3c9f8c6153b939253f7637c
--- /dev/null
+++ b/src/canmatrix/formats/eds.py
@@ -0,0 +1,258 @@
+import logging
+import canmatrix
+import typing
+import canopen.objectdictionary.eds
+import canopen.objectdictionary.datatypes
+import codecs
+import copy
+import re 
+import math
+
+logger = logging.getLogger(__name__)
+
+
+datatype_mapping = {0x1: ["boolean", 1], 
+                    0x2: ["INTEGER8", 0x2],
+                    0x3 : ["INTEGER16", 16],
+                    0x4 : ["INTEGER32", 32],
+                    0x5: ["UNSIGNED8" , 8],
+                    0x6: ["UNSIGNED16" , 16],
+                    0x7: ["UNSIGNED32" , 32],
+                    0x8: ["REAL32" , 32],
+                    0x9: ["VISIBLE_STRING", 0], 
+                    0xA: ["OCTET_STRING" , 0],
+                    0xB: ["UNICODE_STRING" , 0],
+                    0xF: ["DOMAIN" , 0],
+                    0x11: ["REAL64" , 64],
+                    0x15: ["INTEGER64" , 64],
+                    0x1B: ["UNSIGNED64", 64],
+                    }
+
+cmd_values = {  1: 'switch to state "Operational"',
+                2 : 'switch to state "Stop"',
+                0x80 : 	'switch to state "Pre-Operational"',
+                0x81 :	'Reset Node',
+                0x82: 	'Reset Communication'}
+
+
+def name_cleanup(in_str):
+    rets_str = re.sub("[^A-Za-z0-9]", '_', in_str)
+    return rets_str
+
+def get_bit_length(data_type_code):
+    return  datatype_mapping[data_type_code][1]
+def get_data_type_name(data_type_code):
+    return  datatype_mapping[data_type_code][0]
+    
+def format_index(index, subindex):
+    return f"Index: 0x{index:04X}{subindex:02X}"
+
+def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatrix
+    eds_import_encoding = options.get("edsImportEncoding", 'iso-8859-1')
+    node_id = options.get("eds_node_id", 0)
+    generic = options.get("generic", False)
+    fp = codecs.getreader(eds_import_encoding)(f)
+    od = canopen.objectdictionary.eds.import_eds(fp, node_id)
+    db = canmatrix.CanMatrix()
+    signal_group_counter = 1
+
+    node_name = od.device_information.product_name
+    if len(node_name) == 0:
+        node_name = "DUMMY"
+    plc_name = "PLC"
+    if generic is True:
+        nm_out = canmatrix.canmatrix.Frame(name="NMT_Out_Request", size=2, arbitration_id=canmatrix.canmatrix.ArbitrationId(id=0), transmitters=[plc_name])
+        sig_cmd = canmatrix.canmatrix.Signal(name="nmt_CMD", size=8, start_bit = 0, receivers=[node_name])
+        for val, val_name in cmd_values.items():
+            sig_cmd.add_values(val, val_name)
+        nm_out.add_signal(sig_cmd)
+        nm_out.add_signal(canmatrix.canmatrix.Signal(name="Node_ID", size=8, start_bit = 8, receivers=[node_name]))
+        db.add_frame(nm_out)
+
+        nm_responde = canmatrix.canmatrix.Frame(name="NMT_Response_Frame_In", size=8, arbitration_id=canmatrix.canmatrix.ArbitrationId(id=0x700+node_id), transmitters=[node_name])
+        response_sig1 = canmatrix.canmatrix.Signal(name="NMT_Response_1", size=32, start_bit = 0, receivers=[plc_name])
+        nm_responde.add_signal(response_sig1)
+        response_sig2 = canmatrix.canmatrix.Signal(name="NMT_Response_1", size=32, start_bit = 32, receivers=[plc_name])
+        nm_responde.add_signal(response_sig2)
+        db.add_frame(nm_responde)
+
+        sync = canmatrix.canmatrix.Frame(name="SYNC", size=0, arbitration_id=canmatrix.canmatrix.ArbitrationId(id=0x80), transmitters=[plc_name])
+        db.add_frame(sync)
+
+        emcy = canmatrix.canmatrix.Frame(name="EMCY", size=8, arbitration_id=canmatrix.canmatrix.ArbitrationId(id=0x80+node_id), transmitters=[node_name])
+        emcy.add_signal(canmatrix.canmatrix.Signal(name="EMCY_Error_Code", size=16, start_bit=0, receivers=[plc_name]))
+        emcy.add_signal(canmatrix.canmatrix.Signal(name="E_Reg", size=8, start_bit=16, receivers=[plc_name]))
+        emcy.add_signal(canmatrix.canmatrix.Signal(name="E_Number", size=8, start_bit=24, receivers=[plc_name]))
+        db.add_frame(emcy)
+
+    sdo_down = canmatrix.canmatrix.Frame(name="SDO_receive", size=8, arbitration_id=canmatrix.canmatrix.ArbitrationId(id=0x600+node_id), transmitters=[node_name])
+    sig_cmd = canmatrix.canmatrix.Signal(name="CCS", size=3, start_bit=5, receivers=[plc_name], is_signed=False)
+    sig_cmd.is_multiplexer = True
+    sdo_down.is_complex_multiplexed = True
+    sig_cmd.multiplex = "Multiplexor"
+    sdo_down.add_signal(sig_cmd)
+    index = canmatrix.canmatrix.Signal(name="IDX", size=24, start_bit=8, receivers=[plc_name])
+    index.multiplex = "Multiplexor"
+    index.is_multiplexer = True
+    index.mux_val = 1
+    index.mux_val_grp.append([ 2, 2])
+    index.muxer_for_signal = "CCS"
+    sdo_down.add_signal(index)
+    db.add_frame(sdo_down)
+
+    sdo_up = canmatrix.canmatrix.Frame(name="SDO_transmit", size=8, arbitration_id=canmatrix.canmatrix.ArbitrationId(id=0x580+node_id), transmitters=[plc_name])
+    sig_cmd = canmatrix.canmatrix.Signal(name="SCS", size=3, start_bit=5, is_signed=False)
+    sig_cmd.is_multiplexer = True
+    sdo_up.is_complex_multiplexed = True
+    sig_cmd.multiplex = "Multiplexor"
+    sdo_up.add_signal(sig_cmd)
+
+    index = canmatrix.canmatrix.Signal(name="IDX", size=24, start_bit=8)
+    index.multiplex = "Multiplexor"
+    index.is_multiplexer = True
+    index.mux_val = 2
+    index.mux_val_grp.append([ 2, 2])
+    index.muxer_for_signal = "SCS"
+    sdo_up.add_signal(index)
+    db.add_frame(sdo_up)
+
+
+    for obj in od.values():
+        if isinstance(obj, canopen.objectdictionary.ODVariable):
+            subindex = 0
+            combined_value = int(f"{subindex:02X}{obj.index:04X}", 16)
+            signal_name = name_cleanup(obj.name)
+            size = get_bit_length(obj.data_type)
+            if size == 0:
+                logger.info("Ignoring " + signal_name + " size 0")
+                continue
+            new_sig = canmatrix.canmatrix.Signal(name=signal_name, size=size, start_bit=32, receivers=[plc_name])
+            datatype_name = get_data_type_name(obj.data_type)
+            if "UNSIGNED" in datatype_name:
+                new_sig.is_signed = False
+            new_sig.mux_val = combined_value
+            new_sig.mux_val_grp.append([ combined_value, combined_value])
+            new_sig.muxer_for_signal = "IDX"
+            sdo_down.add_signal(new_sig)
+            up_sig = copy.deepcopy(new_sig)
+            up_sig.muxer_for_signal = "IDX"
+
+            up_sig.receivers = []
+            sdo_up.add_signal(up_sig)
+        elif isinstance(obj, canopen.objectdictionary.ODRecord):
+            members = []
+            for subobj in obj.values():
+                combined_value = int(f"{subobj.subindex:02X}{obj.index:04X}", 16)
+                signal_name = name_cleanup(subobj.name)
+                size = get_bit_length(subobj.data_type)
+                if size == 0:
+                    logger.info("Ignoring " + signal_name + " size 0")
+                    continue
+
+                new_sig = canmatrix.canmatrix.Signal(name=signal_name, size=size, start_bit=32, receivers=[plc_name])
+                datatype_name = get_data_type_name(subobj.data_type)
+                if "UNSIGNED" in datatype_name:
+                    new_sig.is_signed = False
+                new_sig.mux_val = combined_value
+                new_sig.mux_val_grp.append([ combined_value, combined_value])
+                new_sig.muxer_for_signal = "IDX"
+                sdo_down.add_signal(new_sig)
+                up_sig = copy.deepcopy(new_sig)
+                up_sig.muxer_for_signal = "IDX"
+
+                up_sig.receivers = []
+                sdo_up.add_signal(up_sig)
+            if len(members) > 0:
+                sdo_down.add_signal_group("SG_R_" + name_cleanup(obj.name), signal_group_counter, members)
+                signal_group_counter += 1
+
+        elif isinstance(obj, canopen.objectdictionary.ODArray):
+            members = []
+            for subobj in obj.values():
+                combined_value = int(f"{subobj.subindex:02X}{obj.index:04X}", 16)
+                signal_name = name_cleanup(subobj.name)
+                size = get_bit_length(subobj.data_type)
+                if size == 0:
+                    logger.info("Ignoring " + signal_name + " size 0")
+                    continue
+
+                new_sig = canmatrix.canmatrix.Signal(name=signal_name, size=size, start_bit=32, receivers=[plc_name])
+                datatype_name = get_data_type_name(subobj.data_type)
+                if "UNSIGNED" in datatype_name:
+                    new_sig.is_signed = False
+                new_sig.mux_val = combined_value
+                new_sig.mux_val_grp.append([ combined_value, combined_value])
+                new_sig.muxer_for_signal = "IDX"
+                sdo_down.add_signal(new_sig)
+                members.append(signal_name)
+                up_sig = copy.deepcopy(new_sig)
+                up_sig.muxer_for_signal = "IDX"
+                up_sig.receivers = []
+                sdo_up.add_signal(up_sig)
+            if len(members) > 0:
+                sdo_down.add_signal_group("SG_A_" + name_cleanup(obj.name), signal_group_counter, members)
+                signal_group_counter += 1
+
+
+    for start_index, rx_tx_config in {0x1400 : {"transmitter": [], "receiver": [node_name]}, 0x1800: {"transmitter": [node_name], "receiver": []}}.items():       
+        for comm_index in range(start_index, start_index + 0x8):
+            map_index = comm_index + 0x200
+            if comm_index not in od or map_index not in od:
+                continue
+
+            # Retrieve the COB-ID
+            comm_param = od[comm_index] #od.get(comm_index)
+            cob_id_entry = comm_param.get(1) if comm_param else None
+            if not cob_id_entry or cob_id_entry.default is None:
+            # print(f"  Warning: No valid COB-ID found for {pdo_type} PDO at index 0x{comm_index:04X}. Skipping.")
+                continue
+            cob_id = cob_id_entry.default & 0x7FF
+            pdo_name = name_cleanup(od[comm_index].name)
+            frame = canmatrix.canmatrix.Frame(name=pdo_name, transmitters=rx_tx_config["transmitter"])
+            frame_id = cob_id
+            frame.arbitration_id = canmatrix.ArbitrationId(id=frame_id)
+            db.add_frame(frame)
+            mapping_param = od.get(map_index)
+            if not mapping_param:
+    #            print(f"  Warning: No mapping parameter found for {pdo_type} PDO at index 0x{map_index:04X}.")
+                continue
+            num_entries = mapping_param[0].default if 0 in mapping_param else 0
+            current_bit_start = 0
+            for subindex in range(1, num_entries + 1):
+                mapping_entry = mapping_param.get(subindex)
+                if not mapping_entry or mapping_entry.default is None:
+                    #print(f"  Warning: Subindex {subindex} missing for mapping parameter at 0x{map_index:04X}.")
+                    continue
+
+                # Decode the mapping entry
+                mapping_value = mapping_entry.default
+                obj_index = (mapping_value >> 16) & 0xFFFF
+                obj_subindex = (mapping_value >> 8) & 0xFF
+                bit_length = mapping_value & 0xFF
+
+                # Fetch the mapped object
+                mapped_obj = od.get_variable(obj_index, obj_subindex)
+                if not mapped_obj:
+                    #print(f"  Warning: Could not find object at Index: 0x{obj_index:04X}, Subindex: {obj_subindex}.")
+                    current_bit_start += bit_length
+                    continue
+                signal_name = name_cleanup(mapped_obj.name)
+                new_sig = canmatrix.Signal(signal_name, size=bit_length, start_bit=current_bit_start)
+                datatype_name = get_data_type_name(mapped_obj.data_type)
+                if "UNSIGNED" in datatype_name:
+                    new_sig.is_signed = False
+                new_sig.factor = mapped_obj.factor
+                if mapped_obj.min is not None:
+                    new_sig.min = mapped_obj.min
+                    new_sig.offset = mapped_obj.min
+                if mapped_obj.max is not None:
+                    new_sig.max = mapped_obj.max
+                new_sig.receivers = rx_tx_config["receiver"]
+                frame.add_signal(new_sig)
+                current_bit_start += bit_length
+                frame.size =  math.ceil(current_bit_start/8)
+
+    db.update_ecu_list()   
+    for ecu in db.ecus:
+        db.rename_ecu(ecu.name, name_cleanup(ecu.name))
+    return db
diff --git a/src/canmatrix/formats/fibex.py b/src/canmatrix/formats/fibex.py
index e81584751ee853eebd4acf16a32eed8d804e5bb9..319b4e0e4c053f0bdb8661c0969379eb18c8af28 100644
--- a/src/canmatrix/formats/fibex.py
+++ b/src/canmatrix/formats/fibex.py
@@ -25,8 +25,7 @@
 # only (fibex: Field Bus Exchange Format //
 # https://de.wikipedia.org/wiki/Field_Bus_Exchange_Format)
 
-from __future__ import absolute_import, division, print_function
-
+import os
 import typing
 from builtins import *
 import lxml.etree
@@ -78,6 +77,85 @@ def create_sub_element_ho(parent, element_name, element_text=None):
     return new
 
 
+def create_signal_instance(parent, signal, signal_id):
+    # type: (_Element, Signal, str) -> _Element
+    signal_instance = create_sub_element_fx(parent, "SIGNAL-INSTANCE")
+    signal_instance.set("ID", "PDUINST_" + signal_id)
+    create_sub_element_fx(signal_instance, "BIT-POSITION", str(signal.get_startbit(bit_numbering=1)))
+    create_sub_element_fx(signal_instance, "IS-HIGH-LOW-BYTE-ORDER", "false" if signal.is_little_endian else "true")
+    return signal_instance
+
+
+def create_signal_ref(parent, signal_ref_id):
+    # type: (_Element, str) -> _Element
+    signal_ref = create_sub_element_fx(parent, "SIGNAL-REF")
+    signal_ref.set("ID-REF", "SIG_" + signal_ref_id)
+    return signal_ref
+
+
+def bits_to_byte_str(bits, name):
+    b = int(bits)
+    if b % 8 == 0:
+        return str(int(b/8))
+    else:
+        ret = int(b/8) + 1
+        #if name is not None:
+        #    print(f"Warning: {name} not byte aligned! {b} bits -> {ret} bytes")
+        return str(ret)
+
+
+def create_signal_id(frame, signal):
+    # type: (Frame, Signal) -> str
+    return f"{frame.name}.{signal.name}_{str(signal.mux_val)}" if signal.mux_val else f"{frame.name}.{signal.name}"
+
+
+def get_multiplexing_parts_infos(signals, frame_name, start_pos=-1, end_pos=-1, seg_big_endian=None):
+    # type: (list[Signal], str, int, int, bool) -> (int, int, bool)
+
+    for signal in signals:
+        if start_pos == -1 or signal.start_bit < start_pos:
+            start_pos = signal.start_bit
+
+        tmp_end_pos = signal.start_bit + signal.size
+        if end_pos == -1 or tmp_end_pos > end_pos:
+            end_pos = tmp_end_pos
+
+        if seg_big_endian is not None and seg_big_endian == signal.is_little_endian:
+            mux_info = f" with mux_val {signal.mux_val}" if signal.mux_val else ""
+            print(f"Warning: Inconsistent Byte Order for frame {frame_name} {signal.name}{mux_info}")
+        seg_big_endian = not signal.is_little_endian
+
+    return start_pos, end_pos, seg_big_endian
+
+def get_base_data_type(signal):
+    # type: (Signal) -> str
+    if signal.is_float:
+        if (signal.size<=32):
+            return "A_FLOAT32"
+        else:
+            return "A_FLOAT64"
+    
+    if signal.size > 0 and signal.size <= 8:
+        if signal.is_signed:
+            return "A_INT8"
+        elif not signal.is_signed:
+            return "A_UINT8"
+        
+    elif signal.size > 8 and signal.size <= 16:
+            if signal.is_signed:
+                return "A_INT16"
+            elif not signal.is_signed:
+                return "A_UINT16"
+    elif signal.size > 16 and signal.size <= 32:
+            if signal.is_signed:
+                return "A_INT32"
+            elif not signal.is_signed:
+                return "A_UINT32"
+    elif signal.size > 32 and signal.size <= 64:
+            if signal.is_signed:
+                return "A_INT64"
+            elif not signal.is_signed:
+                return "A_UINT64"
 class Fe:
     def __init__(self, filename):
         self.tree = lxml.etree.parse(filename)
@@ -200,10 +278,18 @@ def get_signals_for_pdu(fe, pdu, overall_startbit = 0):
 
         signal_name = fe.sn(signal)
         coding = fe.selector(signal, ">CODING-REF")[0]
+        is_signed = False
+        try:
+            basedatatype = fe.selector(coding, "/!CODED-TYPE")[0].attrib[fe.ans + "BASE-DATA-TYPE"]
+            if "UINT" in basedatatype:
+                is_signed = False
+            elif "INT" in basedatatype:
+                is_signed = True
+        except:
+            pass
         bit_length = int(fe.selector(coding, "/!BIT-LENGTH")[0].text)
         compu_methods = fe.selector(coding, "/!COMPU-METHOD")
-        sig = canmatrix.Signal(name=signal_name)
-
+        sig = canmatrix.Signal(name=signal_name, is_signed=is_signed)
         for compu_method in compu_methods:
             category = fe.selector(compu_method, "/!CATEGORY")
             if len(category) > 0 and category[0].text == "LINEAR":
@@ -337,6 +423,26 @@ def dump(db, f, **options):
         '{{{pre}}}schemaLocation'.format(
             pre=xsi)] = 'http://www.asam.net/xml/fbx ..\\..\\xml_schema\\fibex.xsd http://www.asam.net/xml/fbx/can  ..\\..\\xml_schema\\fibex4can.xsd'
 
+    #
+    # Make sure that we can even write to FIBEX
+    #
+
+    # make frame names unique by adding suffix, if needed
+    frame_names = dict()
+    for frame in db.frames:
+        if frame.name in frame_names:
+            # conflict resolution
+            tmp = 2
+            while f"{frame.name}_{str(tmp)}" in frame_names:
+                tmp += 1
+
+            new_name = f"{frame.name}_{str(tmp)}"
+            print(f"Warning: Changing frame name due to conflict: {frame.name} -> {new_name}")
+            frame.name = new_name
+
+        frame_names[frame.name] = frame
+
+
     #
     # PROJECT
     #
@@ -355,7 +461,9 @@ def dump(db, f, **options):
     clusters = create_sub_element_fx(elements, "CLUSTERS")
     cluster = lxml.etree.SubElement(clusters, ns_fx + "CLUSTER")
     cluster.set('ID', 'canCluster1')
-    create_short_name_desc(cluster, "clusterShort", "clusterDesc")
+    # add the file name as a suffix in the cluster name
+    cluster_name = f"cluster_{os.path.basename(f.name).split('.')[0]}"
+    create_short_name_desc(cluster, cluster_name, "clusterDesc")
     create_sub_element_fx(cluster, "SPEED", "500")
     create_sub_element_fx(cluster, "IS-HIGH-LOW-BIT-ORDER", "true")
     create_sub_element_fx(cluster, "BIT-COUNTING-POLICY", "MONOTONE")
@@ -400,6 +508,9 @@ def dump(db, f, **options):
         create_sub_element_fx(identifier, "IDENTIFIER-VALUE", str(frame.arbitration_id.id))
         frame_ref = create_sub_element_fx(frame_triggering, "FRAME-REF")
         frame_ref.set("ID-REF", "FRAME_" + frame.name)
+        if (frame.is_fd):
+            create_sub_element_fx(frame_triggering, "CAN-FRAME-TX-BEHAVIOR","CAN-FD")
+            create_sub_element_fx(frame_triggering, "CAN-FRAME-RX-BEHAVIOR","CAN-FD")
 
     #
     # ECUS
@@ -437,7 +548,6 @@ def dump(db, f, **options):
                 included_pdu.set('ID', 'input_included_pdu_' + frame.name)
                 pdu_triggering_ref = create_sub_element_fx(included_pdu, "PDU-TRIGGERING-REF")
                 pdu_triggering_ref.set("ID-REF", "PDU_" + frame.name)
-
                 
         outputs = create_sub_element_fx(connector, "OUTPUTS")
         for frame in db.frames:
@@ -451,9 +561,8 @@ def dump(db, f, **options):
                 included_pdu.set('ID', 'output_included_pdu_' + frame.name)
                 pdu_triggering_ref = create_sub_element_fx(included_pdu, "PDU-TRIGGERING-REF")
                 pdu_triggering_ref.set("ID-REF", "PDU_" + frame.name)
-                
-        
-        # ignore CONTROLERS/CONTROLER
+
+        # ignore CONTROLLERS/CONTROLLER
 
     #
     # PDUS
@@ -465,25 +574,130 @@ def dump(db, f, **options):
         create_short_name_desc(pdu, "PDU_" + frame.name, frame.comment)
         create_sub_element_fx(pdu, "BYTE-LENGTH", str(frame.size))  # DLC
         create_sub_element_fx(pdu, "PDU-TYPE", "APPLICATION")
-        signal_instances = create_sub_element_fx(pdu, "SIGNAL-INSTANCES")
-        for signal in frame.signals:
-            signal_id = frame.name + "." + signal.name
-            signal_instance = create_sub_element_fx(
-                signal_instances, "SIGNAL-INSTANCE")
-            signal_instance.set("ID", "PDUINST_" + signal_id)
-            # startBit: TODO - find out correct BYTEORDER ...
-            create_sub_element_fx(signal_instance, "BIT-POSITION",
-                                  str(signal.start_bit))
-            if signal.is_little_endian:
-                create_sub_element_fx(
-                    signal_instance,
-                    "IS-HIGH-LOW-BYTE-ORDER",
-                    "false")  # true:big endian; false:little endian
-            else:
-                create_sub_element_fx(
-                    signal_instance, "IS-HIGH-LOW-BYTE-ORDER", "true")
-            signal_ref = create_sub_element_fx(signal_instance, "SIGNAL-REF")
-            signal_ref.set("ID-REF", "SIG_" + signal_id)
+
+        if frame.is_multiplexed:
+            mux = create_sub_element_fx(pdu, "MULTIPLEXER")
+
+            signals_static = []
+            signals_dynamic = {}
+            signals_switch = []
+
+            for signal in frame.signals:
+                if signal.is_multiplexer:
+                    signals_switch.append(signal)
+                elif signal.multiplex is not None or signal.mux_val is not None:
+                    if signal.multiplex != signal.mux_val:
+                        print(f"Warning: Signal {signal.name} mux_val {signal.mux_val} != multiplex {signal.multiplex}")
+                    sigs = signals_dynamic.setdefault(signal.mux_val, [])
+                    sigs.append(signal)
+                else:
+                    signals_static.append(signal)
+
+            if len(signals_switch) != 1 or len(signals_dynamic) == 0:
+                print(f"Warning: Frame {frame.name} has an invalid multiplexer or dyn Part! "
+                      f"Switch Signals: {len(signals_switch)} "
+                      f"Dyn Signals: {len(signals_dynamic)} "
+                      f"Static Signals: {len(signals_static)}")
+
+            # SWITCH
+            mux_switch = create_sub_element_fx(mux, "SWITCH")
+            mux_switch.set("ID", "PDU_" + frame.name + "_SWITCH")
+            create_sub_element_ho(mux_switch, "SHORT-NAME", signals_switch[0].name)
+            create_sub_element_fx(mux_switch, "BIT-POSITION", str(signals_switch[0].start_bit))
+            create_sub_element_fx(mux_switch, "IS-HIGH-LOW-BYTE-ORDER",
+                                  "false" if signals_switch[0].is_little_endian else "true")
+            create_sub_element_ho(mux_switch, "BIT-LENGTH", str(signals_switch[0].size))
+
+            # DYNAMIC PART
+            start_pos = -1
+            end_pos = -1
+            seg_be = None
+
+            for sigs in signals_dynamic.values():
+                start_pos, end_pos, seg_be = get_multiplexing_parts_infos(sigs,
+                                                                          frame.name,
+                                                                          start_pos=start_pos,
+                                                                          end_pos=end_pos,
+                                                                          seg_big_endian=seg_be)
+
+            if seg_be is None:
+                seg_be = False
+
+            if start_pos >= 0:
+                mux_dynpart = create_sub_element_fx(mux, "DYNAMIC-PART")
+                mux_dynpart.set("ID", "PDU_" + frame.name + "_DYN_PART")
+                create_sub_element_ho(mux_dynpart, "SHORT-NAME", signal.name)
+
+                seg_positions = create_sub_element_fx(mux_dynpart, "SEGMENT-POSITIONS")
+                seg_position = create_sub_element_fx(seg_positions, "SEGMENT-POSITION")
+                create_sub_element_fx(seg_position, "BIT-POSITION", str(start_pos))
+                create_sub_element_fx(seg_position, "IS-HIGH-LOW-BYTE-ORDER", "true" if seg_be else "false")
+                create_sub_element_ho(seg_position, "BIT-LENGTH", str(end_pos - start_pos))
+
+                sw_pdu_instances = create_sub_element_fx(mux_dynpart, "SWITCHED-PDU-INSTANCES")
+
+                for mux_key in sorted(signals_dynamic.keys()):
+                    # create PDU for these signals
+                    mux_key_pdu = create_sub_element_fx(pdus, "PDU")
+                    mux_key_pdu_id = f"PDU_{frame.name}_DYNPART_{str(mux_key)}"
+                    mux_key_pdu.set("ID", mux_key_pdu_id)
+                    create_short_name_desc(mux_key_pdu, mux_key_pdu_id, "")
+                    create_sub_element_fx(mux_key_pdu, "BYTE-LENGTH",
+                                          bits_to_byte_str(end_pos - start_pos, mux_key_pdu_id))
+                    create_sub_element_fx(mux_key_pdu, "PDU-TYPE", "APPLICATION")
+
+                    signal_instances = create_sub_element_fx(mux_key_pdu, "SIGNAL-INSTANCES")
+                    for signal in signals_dynamic[mux_key]:
+                        signal_id = create_signal_id(frame, signal)
+                        signal_instance = create_signal_instance(signal_instances, signal, signal_id)
+                        create_signal_ref(signal_instance, signal_id)
+
+                    # create SWITCHED-PDU-INSTANCE that refs mux_key_pdu_id
+                    switched_pdu_inst = create_sub_element_fx(sw_pdu_instances, "SWITCHED-PDU-INSTANCE")
+                    switched_pdu_inst.set("ID", mux_key_pdu_id + "_SWITCHED_PDU_INSTANCE")
+                    pdu_ref = create_sub_element_fx(switched_pdu_inst, "PDU-REF")
+                    pdu_ref.set("ID-REF", mux_key_pdu_id)
+                    create_sub_element_fx(switched_pdu_inst, "SWITCH-CODE", str(mux_key))
+
+            # STATIC PART
+            start_pos, end_pos, seg_be = get_multiplexing_parts_infos(signals_static, frame.name)
+
+            if start_pos != -1 and end_pos != -1:
+                static_part = create_sub_element_fx(mux, "STATIC-PART")
+                static_part.set("ID", "PDU_" + frame.name + "_STATIC_PART")
+                create_sub_element_ho(static_part, "SHORT-NAME", signal.name)
+                seg_positions = create_sub_element_fx(static_part, "SEGMENT-POSITIONS")
+                seg_position = create_sub_element_fx(seg_positions, "SEGMENT-POSITION")
+                create_sub_element_fx(seg_position, "BIT-POSITION", str(start_pos))
+                create_sub_element_fx(seg_position, "IS-HIGH-LOW-BYTE-ORDER", "true" if seg_be else "false")
+                create_sub_element_ho(seg_position, "BIT-LENGTH", str(end_pos - start_pos))
+
+                # create static PDU
+                static_pdu = create_sub_element_fx(pdus, "PDU")
+                static_pdu_key = f"PDU_{frame.name}_STATIC_PART_PDU"
+                static_pdu.set("ID", static_pdu_key)
+                create_short_name_desc(static_pdu, static_pdu_key, "")
+                create_sub_element_fx(static_pdu, "BYTE-LENGTH", bits_to_byte_str(end_pos - start_pos, frame.name))
+                create_sub_element_fx(static_pdu, "PDU-TYPE", "APPLICATION")
+                signal_instances = create_sub_element_fx(static_pdu, "SIGNAL-INSTANCES")
+                for signal in signals_static:
+                    signal_id = create_signal_id(frame, signal)
+                    signal_instance = create_signal_instance(signal_instances, signal, signal_id)
+                    create_signal_ref(signal_instance, signal_id)
+
+                # create STATIC-PDU-INSTANCE that refs static_pdu_key
+                static_pdu_inst = create_sub_element_fx(static_part, "STATIC-PDU-INSTANCE")
+                static_pdu_inst.set("ID", static_pdu_key + "_SWITCHED-PDU-INSTANCE")
+                pdu_ref = create_sub_element_fx(static_pdu_inst, "PDU-REF")
+                pdu_ref.set("ID-REF", static_pdu_key)
+
+        else:
+            # PDU without Multiplexing
+            signal_instances = create_sub_element_fx(pdu, "SIGNAL-INSTANCES")
+            for signal in frame.signals:
+                signal_id = create_signal_id(frame, signal)
+                signal_instance = create_signal_instance(signal_instances, signal, signal_id)
+                create_signal_ref(signal_instance, signal_id)
 
     # FRAMES
     #
@@ -513,26 +727,24 @@ def dump(db, f, **options):
         input_ports = create_sub_element_fx(function, "INPUT-PORTS")
         for frame in db.frames:
             for signal in frame.signals:
-                signal_id = frame.name + "." + signal.name
+                signal_id = create_signal_id(frame, signal)
                 if bu.name in signal.receivers:
                     input_port = create_sub_element_fx(input_ports, "INPUT-PORT")
                     input_port.set("ID", "INP_" + signal_id)
                     desc = lxml.etree.SubElement(input_port, ns_ho + "DESC")
                     desc.text = signal.comment
-                    signal_ref = create_sub_element_fx(input_port, "SIGNAL-REF")
-                    signal_ref.set("ID-REF", "SIG_" + signal_id)
+                    create_signal_ref(input_port, signal_id)
 
         output_ports = create_sub_element_fx(function, "OUTPUT-PORTS")
         for frame in db.frames:
             if bu.name in frame.transmitters:
                 for signal in frame.signals:
-                    signal_id = frame.name + "." + signal.name
+                    signal_id = create_signal_id(frame, signal)
                     output_port = create_sub_element_fx(output_ports, "OUTPUT-PORT")
                     output_port.set("ID", "OUTP_" + signal_id)
                     desc = lxml.etree.SubElement(output_port, ns_ho + "DESC")
                     desc.text = "signalcomment"
-                    signal_ref = create_sub_element_fx(output_port, "SIGNAL-REF")
-                    signal_ref.set("ID-REF", "SIG_" + frame.name + "_" + signal_id)
+                    create_signal_ref(output_port, frame.name + "_" + signal_id)
 
     #
     # SIGNALS
@@ -540,10 +752,12 @@ def dump(db, f, **options):
     signals = create_sub_element_fx(elements, "SIGNALS")
     for frame in db.frames:
         for signal in frame.signals:
-            signal_id = frame.name + "." + signal.name
+            signal_id = create_signal_id(frame, signal)
             signal_element = create_sub_element_fx(signals, "SIGNAL")
             signal_element.set("ID", "SIG_" + signal_id)
             create_short_name_desc(signal_element, signal.name, signal.comment)
+            default_value = str(signal.phys2raw(signal.initial_value))
+            create_sub_element_fx(signal_element, "DEFAULT-VALUE", default_value)
             coding_ref = create_sub_element_fx(signal_element, "CODING-REF")
             coding_ref.set("ID-REF", "CODING_" + signal_id)
 
@@ -554,7 +768,7 @@ def dump(db, f, **options):
     unit_spec = create_sub_element_ho(proc_info, "UNIT-SPEC")
     for frame in db.frames:
         for signal in frame.signals:
-            signal_id = frame.name + "." + signal.name
+            signal_id = create_signal_id(frame, signal)
             unit = create_sub_element_ho(unit_spec, "UNIT")
             unit.set("ID", "UNIT_" + signal_id)
             create_sub_element_ho(unit, "SHORT-NAME", signal.name)
@@ -563,7 +777,7 @@ def dump(db, f, **options):
     codings = create_sub_element_fx(proc_info, "CODINGS")
     for frame in db.frames:
         for signal in frame.signals:
-            signal_id = frame.name + "." + signal.name
+            signal_id = create_signal_id(frame, signal)
             coding = create_sub_element_fx(codings, "CODING")
             coding.set("ID", "CODING_" + signal_id)
             create_short_name_desc(
@@ -574,6 +788,10 @@ def dump(db, f, **options):
                 signal_id)
                 
             coded = create_sub_element_ho(coding, "CODED-TYPE")
+            base_data_type = get_base_data_type(signal)
+            if base_data_type is not None:
+                coded.set(ns_ho + "BASE-DATA-TYPE", base_data_type)
+                coded.set("CATEGORY", "STANDARD-LENGTH-TYPE")
             create_sub_element_ho(coded, "BIT-LENGTH", str(signal.size))
             
             compu_methods = create_sub_element_ho(coding, "COMPU-METHODS")
diff --git a/src/canmatrix/formats/json.py b/src/canmatrix/formats/json.py
index bffc4330547265927ba671cab6aa67cb54eacf51..75d2ef95b49333c549a86df900acaf2b66ee39ec 100644
--- a/src/canmatrix/formats/json.py
+++ b/src/canmatrix/formats/json.py
@@ -24,10 +24,7 @@
 # json-files are the can-matrix-definitions of the CANard-project
 # (https://github.com/ericevenchick/CANard)
 
-from __future__ import absolute_import, division, print_function
-
 import json
-import sys
 import typing
 from builtins import *
 import decimal
@@ -181,20 +178,16 @@ def dump(db, f, **options):
                  "header_id": frame.header_id,
                  "pdu_name": frame.pdu_name,
                  "transmitters": frame.transmitters})
-    if sys.version_info > (3, 0):
-        import io
-        temp = io.TextIOWrapper(f, encoding='UTF-8')
-    else:
-        temp = f
+    import io
+    temp = io.TextIOWrapper(f, encoding='UTF-8')
 
     try:
         json.dump(export_dict, temp, sort_keys=True,
                   indent=4, separators=(',', ': '))
     finally:
-        if sys.version_info > (3, 0):
-            # When TextIOWrapper is garbage collected, it closes the raw stream
-            # unless the raw stream is detached first
-            temp.detach()
+        # When TextIOWrapper is garbage collected, it closes the raw stream
+        # unless the raw stream is detached first
+        temp.detach()
 
 
 def load(f, **_options):
@@ -202,12 +195,8 @@ def load(f, **_options):
 
     db = canmatrix.CanMatrix()
 
-    if sys.version_info > (3, 0):
-        import io
-        json_data = json.load(io.TextIOWrapper(f, encoding='UTF-8'))
-    else:
-
-        json_data = json.load(f)
+    import io
+    json_data = json.load(io.TextIOWrapper(f, encoding='UTF-8'))
 
     if "enumerations" in json_data:
         for val_tab_name, val_tab_dict in json_data['enumerations'].items():
@@ -244,8 +233,14 @@ def load(f, **_options):
                         new_frame.pdu_name = frame[key]
 
             new_frame.arbitration_id.extended = frame.get("is_extended_frame", False)
+
+            if "attributes" in frame:
+                for k, v in frame["attributes"].items():
+                    new_frame.add_attribute(k, v)
+
             if "transmitters" in frame:
                 new_frame.transmitters = frame["transmitters"]
+
             for signal in frame["signals"]:
                 is_little_endian = not signal.get("is_big_endian", False)
                 is_float = signal.get("is_float", False)
diff --git a/src/canmatrix/formats/kcd.py b/src/canmatrix/formats/kcd.py
index 929f5b354850acb97f58967bab6f59823e7aa55b..2abf64c7166f3de209bab036062f7122abe7eb1f 100644
--- a/src/canmatrix/formats/kcd.py
+++ b/src/canmatrix/formats/kcd.py
@@ -24,8 +24,6 @@
 # kcd-files are the can-matrix-definitions of the kayak
 # (http://kayak.2codeornot2code.org/)
 
-from __future__ import absolute_import, division, print_function
-
 import decimal
 import os
 import re
diff --git a/src/canmatrix/formats/ldf.py b/src/canmatrix/formats/ldf.py
index c239724efa8cc3b22df0568e20b2ad66c96dfe63..7b4ba71533bc0e6360ebd78f1d250213e6b1c334 100644
--- a/src/canmatrix/formats/ldf.py
+++ b/src/canmatrix/formats/ldf.py
@@ -1,5 +1,3 @@
-from __future__ import absolute_import
-
 import ldfparser
 import canmatrix
 import ldfparser.encoding
@@ -27,6 +25,12 @@ def load(f, **options):  # type: (typing.IO, **typing.Any) -> canmatrix.CanMatri
                     if isinstance(converter, ldfparser.encoding.LogicalValue):
                         cm_signal.add_values(converter.phy_value, converter.info)
                     if isinstance(converter, ldfparser.encoding.PhysicalValue):
+                        cm_signal.scale_ranges.append({
+                            "min" : converter.phy_min, 
+                            "max" : converter.phy_max,
+                            "factor" : converter.scale,
+                            "offset" : converter.offset,
+                            "unit" : converter.unit})
                         cm_signal.offset = converter.offset
                         cm_signal.factor = converter.scale
                         cm_signal.unit = converter.unit
diff --git a/src/canmatrix/formats/odx.py b/src/canmatrix/formats/odx.py
index 399bd53c6048cc7248a667b6fc1d4f9038bd53e6..27e976a16287f26c3db0808e9d86a9b74b097e03 100644
--- a/src/canmatrix/formats/odx.py
+++ b/src/canmatrix/formats/odx.py
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 from lxml import etree
 import canmatrix.formats
 import decimal
@@ -168,7 +166,7 @@ def get_odx_info(eo, element_type):
     for request in eo.findall(element_type):
         short_name = eo.get_short_name(request)
         service_id_param = find_param(eo, request, "SERVICE-ID")
-        if service_id_param == None:
+        if service_id_param is None:
             continue
 
         service_id_value = eo.find("CODED-VALUE", service_id_param)
@@ -178,7 +176,7 @@ def get_odx_info(eo, element_type):
             continue
 
         id_param = find_param(eo, request, "ID")
-        if id_param == None:
+        if id_param is None:
             continue
         did_value = eo.find("CODED-VALUE", id_param)
         did = int(did_value.text)
diff --git a/src/canmatrix/formats/scapy.py b/src/canmatrix/formats/scapy.py
index 7a5c47d4a9058ce6c292e8e950795697c33f06b2..0f8219aeeced90856e2ad98b08a4531879a4c6b9 100644
--- a/src/canmatrix/formats/scapy.py
+++ b/src/canmatrix/formats/scapy.py
@@ -22,8 +22,6 @@
 # this script exports scapy python files
 # https://scapy.readthedocs.io/en/latest/advanced_usage.html#automotive-usage
 
-from __future__ import absolute_import, division, print_function
-
 import textwrap
 import typing
 from builtins import *
diff --git a/src/canmatrix/formats/sym.py b/src/canmatrix/formats/sym.py
index e7b669f6035027a06b3699988c7d8c24827e7e68..4ce3ca3bd5e7825fb3850e7417c69a77d72bc9d3 100644
--- a/src/canmatrix/formats/sym.py
+++ b/src/canmatrix/formats/sym.py
@@ -23,8 +23,6 @@
 # this script exports sym-files from a canmatrix-object
 # sym-files are the can-matrix-definitions of the Peak Systems Tools
 
-from __future__ import absolute_import, division, print_function
-
 import collections
 import decimal
 import logging
@@ -100,11 +98,7 @@ def format_float(f):  # type: (typing.Any) -> str
 
 def create_signal(db, signal):  # type: (canmatrix.CanMatrix, canmatrix.Signal) -> str
     output = ""
-    if sys.version_info > (3, 0):
-        quote_name = not signal.name.isidentifier()
-    else:
-        from future.utils import isidentifier
-        quote_name = not isidentifier(signal.name)
+    quote_name = not signal.name.isidentifier()
     if quote_name:
         output += 'Var="%s" ' % signal.name
     else:
diff --git a/src/canmatrix/formats/xls.py b/src/canmatrix/formats/xls.py
index 011fbe00c8b80efa5a0e9c2d925721a9f234117b..b7d2a77c90debed22d3f82fd9541fed5788862e7 100644
--- a/src/canmatrix/formats/xls.py
+++ b/src/canmatrix/formats/xls.py
@@ -23,14 +23,11 @@
 # this script exports xls-files from a canmatrix-object
 # xls-files are the can-matrix-definitions displayed in Excel
 
-from __future__ import absolute_import, division, print_function
-
 import decimal
 import logging
 import typing
 from builtins import *
 
-import past.builtins
 import xlrd
 import xlwt
 
@@ -540,7 +537,7 @@ def load(file, **options):
         unit = ""
 
         factor = sh.cell(row_num, index['function']).value
-        if isinstance(factor, past.builtins.basestring):
+        if isinstance(factor, str):
             factor = factor.strip()
             if " " in factor and factor[0].isdigit():
                 (factor, unit) = factor.strip().split(" ", 1)
@@ -548,7 +545,9 @@ def load(file, **options):
                 unit = unit.strip()
                 new_signal.unit = unit
                 try:
-                    new_signal.factor = float_factory(factor)
+                    # if prevents overwriting explicit factor (if given)
+                    if new_signal.factor in (1, 1.0):	
+                        new_signal.factor = float_factory(factor)
                 except:
                     logger.warning(
                         "Some error occurred while decoding scale of Signal %s: '%s'",
diff --git a/src/canmatrix/formats/xls_common.py b/src/canmatrix/formats/xls_common.py
index a4a3c9a6b8476ece3ab3f76b8a409f791aef1195..dc792233dd0ace2c14611df9d8855a6f64b734e9 100644
--- a/src/canmatrix/formats/xls_common.py
+++ b/src/canmatrix/formats/xls_common.py
@@ -19,8 +19,6 @@
 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 # DAMAGE.
 
-from __future__ import absolute_import, division, print_function
-
 import typing
 from builtins import *
 
diff --git a/src/canmatrix/formats/xlsx.py b/src/canmatrix/formats/xlsx.py
index 7fa8d890440922fe10ea0c1386d60119514381b8..68d7ce1ddeb77685f54a065b1241b2563faafa9a 100644
--- a/src/canmatrix/formats/xlsx.py
+++ b/src/canmatrix/formats/xlsx.py
@@ -23,16 +23,17 @@
 # this script exports xls-files from a canmatrix-object
 # xls-files are the can-matrix-definitions displayed in Excel
 
-from __future__ import absolute_import, division, print_function
-
 import logging
 import typing
 from builtins import *
 
-import xlsxwriter
+import openpyxl
+import openpyxl.utils
 
 import canmatrix
 import canmatrix.formats.xls_common
+from openpyxl.worksheet.dimensions import ColumnDimension
+from openpyxl.styles import NamedStyle, Font, Alignment, PatternFill, Border, Side
 
 logger = logging.getLogger(__name__)
 
@@ -80,22 +81,28 @@ def write_ecu_matrix(ecu_list, signal, frame, worksheet, row, col, first_frame):
             loc_style_sender = sender_green
         # write "s" "r" "r/s" if signal is sent, received or send and received by ECU
         if signal is not None and ecu in signal.receivers and ecu in frame.transmitters:
-            worksheet.write(row, col, "r/s", loc_style_sender)
+            worksheet.cell(row=row+1, column=col+1).value = "r/s"
+            worksheet.cell(row=row+1, column=col+1).style = loc_style_sender
         elif signal is not None and ecu in signal.receivers:
-            worksheet.write(row, col, "r", loc_style)
+            worksheet.cell(row=row+1, column=col+1).value = "r"
+            worksheet.cell(row=row+1, column=col+1).style = loc_style
         elif ecu in frame.transmitters:
-            worksheet.write(row, col, "s", loc_style_sender)
+            worksheet.cell(row=row+1, column=col+1).value = "s"
+            worksheet.cell(row=row+1, column=col+1).style = loc_style_sender
         else:
-            worksheet.write(row, col, "", loc_style)
+            worksheet.cell(row=row+1, column=col+1).value = ""
+            worksheet.cell(row=row+1, column=col+1).style = loc_style
         col += 1
     # loop over ECUs ends here
     return col
 
 
 def write_excel_line(worksheet, row, col, row_array, style):
-    # type: (xlsxwriter.workbook.Worksheet, int, int, typing.Sequence[typing.Any], xlsxwriter.workbook.Format) -> int
+    # type: (openpyxl.workbook.Worksheet, int, int, typing.Sequence[typing.Any], xlsxwriter.workbook.Format) -> int
     for item in row_array:
-        worksheet.write(row, col, item, style)
+        worksheet.cell(row=row+1, column=col+1).value = item
+        if style != 0:
+            worksheet.cell(row=row + 1, column=col + 1).style = style
         col += 1
     return col
 
@@ -107,7 +114,6 @@ def dump(db, filename, **options):
     additional_signal_columns = [x for x in options.get("additionalSignalAttributes", "").split(",") if x]
     additional_frame_columns = [x for x in options.get("additionalFrameAttributes", "").split(",") if x]
 
-
     head_top = [
         'ID',
         'Frame Name',
@@ -124,47 +130,60 @@ def dump(db, filename, **options):
         'Byteorder']
     head_tail = ['Value', 'Name / Phys. Range', 'Function / Increment Unit']
 
-    workbook = xlsxwriter.Workbook(filename)
+    workbook = openpyxl.Workbook()
     # ws_name = os.path.basename(filename).replace('.xlsx', '')
     # worksheet = workbook.add_worksheet('K-Matrix ' + ws_name[0:22])
-    worksheet = workbook.add_worksheet('K-Matrix ')
+    worksheet = workbook.active
+    worksheet.title = 'K-Matrix '
+    worksheet.sheet_properties.outlinePr.summaryBelow = False
+
     global sty_header
-    sty_header = workbook.add_format({'bold': True,
-                                      'rotation': 90,
-                                      'font_name': 'Verdana',
-                                      'font_size': 8,
-                                      'align': 'center',
-                                      'valign': 'center'})
-    global sty_first_frame
-    sty_first_frame = workbook.add_format({'font_name': 'Verdana',
-                                           'font_size': 8,
-                                           'font_color': 'black', 'top': 1})
     global sty_white
-    sty_white = workbook.add_format({'font_name': 'Verdana',
-                                     'font_size': 8,
-                                     'font_color': 'white'})
+    global sty_first_frame
     global sty_norm
-    sty_norm = workbook.add_format({'font_name': 'Verdana',
-                                    'font_size': 8,
-                                    'font_color': 'black'})
-
-    # ECUMatrix-Styles
     global sty_green
-    sty_green = workbook.add_format({'pattern': 1, 'fg_color': '#CCFFCC'})
     global sty_green_first_frame
-    sty_green_first_frame = workbook.add_format(
-        {'pattern': 1, 'fg_color': '#CCFFCC', 'top': 1})
     global sty_sender
-    sty_sender = workbook.add_format({'pattern': 0x04, 'fg_color': '#C0C0C0'})
     global sty_sender_first_frame
-    sty_sender_first_frame = workbook.add_format(
-        {'pattern': 0x04, 'fg_color': '#C0C0C0', 'top': 1})
     global sty_sender_green
-    sty_sender_green = workbook.add_format(
-        {'pattern': 0x04, 'fg_color': '#C0C0C0', 'bg_color': '#CCFFCC'})
     global sty_sender_green_first_frame
-    sty_sender_green_first_frame = workbook.add_format(
-        {'pattern': 0x04, 'fg_color': '#C0C0C0', 'bg_color': '#CCFFCC', 'top': 1})
+
+    sty_header = NamedStyle(name="sty_header")
+    sty_header.font = Font(bold=True, size=8, name='Verdana')
+    sty_header.alignment = Alignment(text_rotation=90, vertical='center', horizontal='center')
+
+    sty_first_frame = NamedStyle(name="sty_first_frame")
+    sty_first_frame.font = Font(bold=True, size=8, name='Verdana', color='ff000000')
+    sty_first_frame.border = Border(top=Side(border_style='thin'))
+
+    sty_white = NamedStyle(name="sty_white")
+    sty_white.font = Font(bold=True, size=8, name='Verdana', color='00ffffff')
+
+    sty_norm = NamedStyle(name="sty_norm")
+    sty_norm.font = Font(bold=True, size=8, name='Verdana', color='ff000000')
+
+    # ECUMatrix-Styles
+    sty_green = NamedStyle(name="sty_green")
+    sty_green.fill = PatternFill(patternType='solid', fgColor='CCFFCC')
+    # sty_green = workbook.add_format({'pattern': 1, 'fg_color': '#CCFFCC'})
+
+    sty_green_first_frame = NamedStyle(name="sty_green_first_frame")
+    sty_green_first_frame.fill = PatternFill(patternType='solid', fgColor='CCFFCC')
+    sty_green_first_frame.border = Border(top=Side(border_style='thin'))
+
+    sty_sender = NamedStyle(name="sty_sender")
+    sty_sender.fill = PatternFill(patternType='lightGrid', fgColor='C0C0C0')
+
+    sty_sender_first_frame = NamedStyle(name="sty_sender_first_frame")
+    sty_sender_first_frame.fill = PatternFill(patternType='lightGrid', fgColor='C0C0C0')
+    sty_sender_first_frame.border = Border(top=Side(border_style='thin'))
+
+    sty_sender_green = NamedStyle(name="sty_sender_green")
+    sty_sender_green.fill = PatternFill(patternType='lightGrid', fgColor='C0C0C0', bgColor='CCFFCC')
+
+    sty_sender_green_first_frame = NamedStyle(name="sty_sender_green_first_frame")
+    sty_sender_green_first_frame.fill = PatternFill(patternType='lightGrid', fgColor='C0C0C0', bgColor='CCFFCC')
+    sty_sender_green_first_frame.border = Border(top=Side(border_style='thin'))
 
     row_array = head_top
     head_start = len(row_array)
@@ -174,18 +193,19 @@ def dump(db, filename, **options):
     row_array += ecu_list
 
     for col in range(0, len(row_array)):
-        worksheet.set_column(col, col, 2)
+        worksheet.column_dimensions[openpyxl.utils.get_column_letter(col+1)] = ColumnDimension(worksheet, customWidth=True)
+        worksheet.column_dimensions[openpyxl.utils.get_column_letter(col + 1)].width = 2
 
     row_array += head_tail
 
     additional_frame_start = len(row_array)
 
     # set width of selected Cols
-    worksheet.set_column(0, 0, 3.57)
-    worksheet.set_column(1, 1, 21)
-    worksheet.set_column(3, 3, 12.29)
-    worksheet.set_column(7, 7, 21)
-    worksheet.set_column(8, 8, 30)
+    worksheet.column_dimensions[openpyxl.utils.get_column_letter(1)].width = 3.57
+    worksheet.column_dimensions[openpyxl.utils.get_column_letter(2)].width = 21
+    worksheet.column_dimensions[openpyxl.utils.get_column_letter(3)].width = 12.29
+    worksheet.column_dimensions[openpyxl.utils.get_column_letter(4)].width = 21
+    worksheet.column_dimensions[openpyxl.utils.get_column_letter(5)].width = 30
 
     for additional_col in additional_frame_columns:
         row_array.append("frame." + additional_col)
@@ -243,6 +263,7 @@ def dump(db, filename, **options):
             write_excel_line(worksheet, row, temp_col, row_array, frame_style)
             row += 1
 
+        first_fold_row = row+1
         # iterate over signals
         for sig_idx in sorted(sig_hash.keys()):
             sig = sig_hash[sig_idx]
@@ -258,8 +279,9 @@ def dump(db, filename, **options):
                 for val in sorted(sig.values.keys()):
                     row_array = canmatrix.formats.xls_common.get_frame_info(db, frame)
                     front_col = write_excel_line(worksheet, row, 0, row_array, frame_style)
-                    if frame_style != sty_first_frame:
-                        worksheet.set_row(row, None, None, {'level': 1})
+
+                    if row >= first_fold_row:    
+                        worksheet.row_dimensions[row+1].outline_level = 1
 
                     col = head_start
                     col = write_ecu_matrix(ecu_list, sig, frame, worksheet, row, col, frame_style)
@@ -272,7 +294,6 @@ def dump(db, filename, **options):
                         temp = getattr(sig, item, "")
                         back_row.append(temp)
 
-
                     write_excel_line(worksheet, row, col + 2, back_row, signal_style)
                     write_excel_line(worksheet, row, col, [val, sig.values[val]], value_style)
 
@@ -284,12 +305,13 @@ def dump(db, filename, **options):
                     frame_style = sty_white
                     value_style = sty_norm
                 # loop over values ends here
+
             # no valuetable available
             else:
                 row_array = canmatrix.formats.xls_common.get_frame_info(db, frame)
                 front_col = write_excel_line(worksheet, row, 0, row_array, frame_style)
-                if frame_style != sty_first_frame:
-                    worksheet.set_row(row, None, None, {'level': 1})
+                if row >= first_fold_row:    
+                    worksheet.row_dimensions[row+1].outline_level = 1
 
                 col = head_start
                 col = write_ecu_matrix(ecu_list, sig, frame, worksheet, row, col, frame_style)
@@ -318,96 +340,22 @@ def dump(db, filename, **options):
         # loop over signals ends here
     # loop over frames ends here
 
-    worksheet.autofilter(0, 0, row, len(head_top) +
-                         len(head_tail) + len(db.ecus))
-    worksheet.freeze_panes(1, 0)
+    worksheet.auto_filter.ref = worksheet.dimensions
+    worksheet.freeze_panes = worksheet['B2']
     # save file
-    workbook.close()
-
-
-def read_xlsx(file, **args):
-    # type: (typing.Any, **typing.Any) -> typing.Tuple[typing.Dict[typing.Any, str], typing.List[typing.Dict[str, str]]]
-    # from: Hooshmand zandi http://stackoverflow.com/a/16544219
-    import zipfile
-    from xml.etree.ElementTree import iterparse
-
-    sheet = args.get("sheet", 1)
-    is_header = args.get("header", False)
-
-    rows = []  # type: typing.List[typing.Dict[str, str]]
-    row = {}
-    header = {}
-    z = zipfile.ZipFile(file)
-
-    # Get shared strings
-    strings = [el.text for e, el
-               in iterparse(z.open('xl/sharedStrings.xml'))
-               if el.tag.endswith('}t')
-               ]  # type: typing.List[str]
-    value = ''
-
-    # Open specified worksheet
-    for e, el in iterparse(z.open('xl/worksheets/sheet%d.xml' % sheet)):
-        # get value or index to shared strings
-        if el.tag.endswith('}v'):                                   # <v>84</v>
-            value = el.text
-        if el.tag.endswith(
-                '}c'):                                   # <c r="A3" t="s"><v>84</v></c>
-            # If value is a shared string, use value as an index
-
-            if el.attrib.get('t') == 's':
-                value = strings[int(value)]
-
-            # split the row/col information so that the row letter(s) can be separate
-            letter = el.attrib['r']  # type: str         # AZ22
-            while letter[-1].isdigit():
-                letter = letter[:-1]
-
-            # if it is the first row, then create a header hash for the names that COULD be used
-            if not rows:
-                header[letter] = value.strip()
-            else:
-                if value != '':
-                    # if there is a header row, use the first row's names as the row hash index
-                    if is_header is True and letter in header:
-                        row[header[letter]] = value
-                    else:
-                        row[letter] = value
-
-            value = ''
-        if el.tag.endswith('}row'):
-            rows.append(row)
-            row = {}
-    z.close()
-    return header, rows
-
-
-def get_if_possible(row, value, default=None):
-    # type: (typing.Mapping[str, str], str, typing.Optional[str]) -> typing.Union[str, None]
-    if value in row:
-        return row[value].strip()
-    else:
-        return default
+    workbook.save(filename=filename)
 
 
-def load(filename, **options):
+def load(file, **options):
     # type: (typing.BinaryIO, **str) -> canmatrix.CanMatrix
-    # use xlrd excel reader if available, because its more robust
-    if options.get('xlsxLegacy', False) is True:
-        logger.error("xlsx: using legacy xlsx-reader - please get xlrd working for better results!")
-    else:
-        import canmatrix.formats.xls as xls_loader  # we need alias, otherwise we hide the globally imported canmatrix
-        return xls_loader.load(filename, **options)
+
+    all_ecu_names = []
 
     # else use this hack to read xlsx
     motorola_bit_format = options.get("xlsMotorolaBitFormat", "msbreverse")
-
-    sheet = read_xlsx(filename, sheet=1, header=True)
+    workbook = openpyxl.open(file)
+    sheet = workbook._sheets[0]
     db = canmatrix.CanMatrix()
-    all_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-    letter_index = list(all_letters)
-    letter_index += ["%s%s" % (a, b) for a in all_letters for b in all_letters]
-
     # Defines not imported...
     db.add_frame_defines("GenMsgDelayTime", 'INT 0 65535')
     db.add_frame_defines("GenMsgCycleTimeActive", 'INT 0 65535')
@@ -417,24 +365,20 @@ def load(filename, **options):
     db.add_signal_defines("GenSigSNA", 'STRING')
 
     ecu_start = ecu_end = 0
-    if 'Byteorder' in list(sheet[0].values()):
-        for key in sheet[0]:
-            if sheet[0][key].strip() == 'Byteorder':
-                ecu_start = letter_index.index(key) + 1
-                break
+
+    column_heads = [sheet.cell(1,a).value for a in range(1, sheet.max_column+1)]
+
+    if 'Byteorder' in column_heads:
+        ecu_start = column_heads.index('Byteorder') + 1
     else:
-        for key in sheet[0]:
-            if sheet[0][key].strip() == 'Signal Not Available':
-                ecu_start = letter_index.index(key) + 1
+        ecu_start = column_heads.index('Signal Not Available') + 1
 
-    for key in sheet[0]:
-        if sheet[0][key].strip() == 'Value':
-            ecu_end = letter_index.index(key)
+    ecu_end = column_heads.index('Value')
 
     # ECUs:
     for x in range(ecu_start, ecu_end):
-        db.add_ecu(canmatrix.Ecu(sheet[0][letter_index[x]]))
-
+        db.add_ecu(canmatrix.Ecu(column_heads[x]))
+        all_ecu_names.append(column_heads[x])
     # initialize:
     frame_id = None
     signal_name = ""
@@ -442,27 +386,40 @@ def load(filename, **options):
     new_frame = None  # type: typing.Optional[canmatrix.Frame]
     new_signal = None  # type: typing.Optional[canmatrix.Signal]
 
-    for row in sheet[1]:
+    def get_if_possible(my_row, my_value, default=None):
+        if my_value in column_heads and my_row[column_heads.index(my_value)].value is not None:
+            return my_row[column_heads.index(my_value)].value
+        else:
+            return default
+
+    for row in sheet.rows:
         # ignore empty row
-        if 'ID' not in row:
+        if row[column_heads.index('ID')].value is None or row[column_heads.index('ID')].value == 'ID':
             continue
-        # new frame detected
-        if row['ID'] != frame_id:
+
+            # new frame detected
+        if row[column_heads.index('ID')].value != frame_id:
             # new Frame
-            frame_id = row['ID']
-            frame_name = row['Frame Name']
+            frame_id = row[column_heads.index('ID')].value
+            frame_name = row[column_heads.index('Frame Name')].value
             cycle_time = get_if_possible(row, 'Cycle Time [ms]', '0')
             launch_type = get_if_possible(row, 'Launch Type')
             dlc = 8
+                    
             # launch_param = get_if_possible(row, 'Launch Parameter', '0')
             # launch_param = str(int(launch_param))
 
             if frame_id.endswith("xh"):
-                new_frame = canmatrix.Frame(frame_name, arbitration_id=int(frame_id[:-2], 16), size=dlc)
-                new_frame.arbitration_id.extended = True
+                new_frame = canmatrix.Frame(frame_name, canmatrix.ArbitrationId(int(frame_id[:-2], 16), extended=True), size=dlc)
             else:
                 new_frame = canmatrix.Frame(frame_name, arbitration_id=int(frame_id[:-1], 16), size=dlc)
 
+            for col_head in column_heads:
+                if col_head.startswith("frame."):
+                    command_str = col_head.replace("frame", "new_frame")
+                    command_str += "=" + str(row[column_heads.index(col_head)].value)
+                    exec(command_str)
+                    
             db.add_frame(new_frame)
 
             # eval launch_type
@@ -474,13 +431,13 @@ def load(filename, **options):
             new_frame.cycle_time = cycle_time
 
         # new signal detected
-        if 'Signal Name' in row and row['Signal Name'] != signal_name:
+        if get_if_possible(row, 'Signal Name') != signal_name:
             receiver = []  # type: typing.List[str]
-            start_byte = int(row["Signal Byte No."])
-            start_bit = int(row['Signal Bit No.'])
-            signal_name = row['Signal Name']
+            start_byte = int(get_if_possible(row, 'Signal Byte No.', "0"))
+            start_bit = int(get_if_possible(row, 'Signal Bit No.', "0"))
+            signal_name = get_if_possible(row, 'Signal Name')
             signal_comment = get_if_possible(row, 'Signal Function')
-            signal_length = int(row['Signal Length [Bit]'])
+            signal_length = int(get_if_possible(row, 'Signal Length [Bit]', 0))
             # signal_default = get_if_possible(row, 'Signal Default')
             # signal_sna = get_if_possible(row, 'Signal Not Available')
             multiplex = None  # type: typing.Union[str, int, None]
@@ -503,8 +460,7 @@ def load(filename, **options):
             is_signed = False
 
             if signal_name != "-":
-                for x in range(ecu_start, ecu_end):
-                    ecu_name = sheet[0][letter_index[x]].strip()
+                for ecu_name in all_ecu_names:
                     ecu_sender_receiver = get_if_possible(row, ecu_name)
                     if ecu_sender_receiver is not None:
                         if 's' in ecu_sender_receiver:
@@ -531,10 +487,14 @@ def load(filename, **options):
                             bitNumbering=1,
                             startLittle=True
                         )
-                new_frame.add_signal(new_signal)
-                new_signal.add_comment(signal_comment)
+                                    
+                if signal_name is not None:
+                    new_frame.add_signal(new_signal)
+                    new_signal.add_comment(signal_comment)
                 # function = get_if_possible(row, 'Function / Increment Unit')
         value = get_if_possible(row, 'Value')
+        if value is not None:
+            value = str(value)
         value_name = get_if_possible(row, 'Name / Phys. Range')
 
         if value_name == 0 or value_name is None:
@@ -580,6 +540,14 @@ def load(filename, **options):
             new_signal.min = None
             new_signal.max = None
 
+        for col_head in column_heads: # todo explain this possibly dangerous code with eval
+            if col_head.startswith("signal."):
+                command_str = col_head.replace("signal", "new_signal")
+                command_str += "=" + str(row[column_heads.index(col_head)].value)
+                exec(command_str)
+
+
+
     # dlc-estimation / dlc is not in xls, thus calculate a minimum-dlc:
     for frame in db.frames:
         frame.update_receiver()
diff --git a/src/canmatrix/formats/yaml.py b/src/canmatrix/formats/yaml.py
index 972c7f6a80a1e035da79bd8ddec3e6ae6637ace3..0efdeeb964107af4ec6e72e062dd9ac684df077c 100644
--- a/src/canmatrix/formats/yaml.py
+++ b/src/canmatrix/formats/yaml.py
@@ -23,14 +23,11 @@
 # yaml-files are just object-dumps human readable.
 # This export is complete, no information lost
 
-from __future__ import absolute_import, division, print_function
-
 import copy
 import typing
 from builtins import *
 
 import yaml
-from past.builtins import long, unicode
 
 import canmatrix
 
@@ -43,8 +40,6 @@ except ImportError:
 representers = False
 try:
     yaml.add_representer(int, SafeRepresenter.represent_int)
-    yaml.add_representer(long, SafeRepresenter.represent_long)
-    yaml.add_representer(unicode, SafeRepresenter.represent_unicode)
     yaml.add_representer(str, SafeRepresenter.represent_unicode)
     yaml.add_representer(list, SafeRepresenter.represent_list)
     representers = True
@@ -67,7 +62,7 @@ def dump(db, f, **options):  # type: (canmatrix.CanMatrix, typing.IO, **typing.A
 
     # f = open(filename, "w")
     if representers:
-        f.write(unicode(yaml.dump(new_db)))
+        f.write(yaml.dump(new_db))
     else:
         f.write(yaml.dump(new_db).encode('utf8'))
 
diff --git a/src/canmatrix/j1939_decoder.py b/src/canmatrix/j1939_decoder.py
index 3cd03c6f439cdf47c1975b4db5f2349d7906ab46..840047dcad4348edda50b91e5c767752df16f6ab 100644
--- a/src/canmatrix/j1939_decoder.py
+++ b/src/canmatrix/j1939_decoder.py
@@ -1,6 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import, division, print_function
-
 from builtins import *
 
 import attr
diff --git a/src/canmatrix/join.py b/src/canmatrix/join.py
index a2b921ab88e5e347f302543adb82fd4883285591..3b143b62ed1af22427a8d37af4596fcff575ef53 100644
--- a/src/canmatrix/join.py
+++ b/src/canmatrix/join.py
@@ -1,5 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import, division, print_function
 
 import typing
 from builtins import *
diff --git a/src/canmatrix/log.py b/src/canmatrix/log.py
index bbecd5d7db1272f73b8cd18420d4eb3e4a248e7a..9db1f693aef37faf431effd76644ebf4bacb1a71 100644
--- a/src/canmatrix/log.py
+++ b/src/canmatrix/log.py
@@ -22,8 +22,6 @@
 # Configurable logging
 # Author: Martin Hoffmann (m8ddin@gmail.com)
 
-from __future__ import absolute_import, division, print_function
-
 import logging
 
 
@@ -43,12 +41,11 @@ def setup_logger():  # type: () -> logging.Logger
     logger.addHandler(handler)
     return logger
 
-
 def set_log_level(logger, level):  # type: (logging.Logger, int) -> None
     """Dynamic reconfiguration of the log level"""
     if level > 2:
         level = 2
-    if level < -1:
+    elif level < -1:
         level = -1
 
     levels = {
@@ -57,4 +54,5 @@ def set_log_level(logger, level):  # type: (logging.Logger, int) -> None
         1: logging.INFO,
         2: logging.DEBUG
     }
+    
     logger.setLevel(levels[level])
diff --git a/src/canmatrix/utils.py b/src/canmatrix/utils.py
index ea703dae0a42ae4f296f3d6034a7a2376adb9ad8..2074481ca58bb39da30a450d77b382a7b64724c6 100644
--- a/src/canmatrix/utils.py
+++ b/src/canmatrix/utils.py
@@ -1,5 +1,4 @@
 # -*- coding: utf-8 -*-
-from __future__ import absolute_import, division, print_function
 
 import csv
 import shlex
@@ -16,9 +15,7 @@ else:
 
 
 def quote_aware_space_split(in_line):  # type: (str) -> typing.List[str]
-    if sys.version_info >= (3, 0):  # is there a clean way to to it?
-        return shlex.split(in_line.strip())
-    return [item.decode('utf-8') for item in shlex.split(in_line.strip().encode('utf-8'))]
+    return shlex.split(in_line.strip())
 
 
 # https://stackoverflow.com/questions/18092354/python-split-string-without-splitting-escaped-character
@@ -125,7 +122,7 @@ def decode_number(value, float_factory):  # type(string) -> (int)
         return 0
     value = value.strip()
 
-    if '.' in value:
+    if ('.' in value) or (value.lower() in ["inf", "+inf", "-inf"]):
         return float_factory(value)
 
     base = 10
diff --git a/test/test_codec.py b/test/test_codec.py
deleted file mode 100755
index 53aadbba13ab9074be68aa77b4b180199471bfb9..0000000000000000000000000000000000000000
--- a/test/test_codec.py
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""Tests for `canmatrix` package."""
-import unittest
-import tempfile
-import os
-
-from canmatrix import formats
-from canmatrix.canmatrix import Signal
-
-
-class TestCanmatrixCodec(unittest.TestCase):
-    """Tests for `canmatrix` package."""
-
-    def setUp(self):
-        """Set up test fixtures, if any."""
-
-    def tearDown(self):
-        """Tear down test fixtures, if any."""
-
-    def test_bitstruct_format(self):
-        """"""
-        s1 = Signal('signal')
-        self.assertEqual(s1.bitstruct_format(), '<s0')
-
-        s2 = Signal('signal', size=8)
-        self.assertEqual(s2.bitstruct_format(), '<s8')
-
-        s3 = Signal('signal', size=8, is_signed=False)
-        self.assertEqual(s3.bitstruct_format(), '<u8')
-
-        s4 = Signal('signal', size=8, is_little_endian=False)
-        self.assertEqual(s4.bitstruct_format(), '>s8')
-
-    def test_encode_canmatrix(self):
-        db_path = os.path.join(
-            os.path.dirname(__file__), "..", "test", "test.dbc")
-        for bus in formats.loadp(db_path).values():
-            test_frame1 = 0x123
-            data = {
-                'Signal': 2,
-                'someTestSignal': 101,
-            }
-            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
-            assert data_bytes == (0, 0x28, 0x04, 0, 0, 0, 0, 0)
-
-    def test_encode_decode_signal_value(self):
-        db_path = os.path.join(
-            os.path.dirname(__file__), "..", "test", "test.dbc")
-        for bus in formats.loadp(db_path).values():
-            test_frame1 = 0x123
-
-            data = {
-                'Signal': 2,
-                'someTestSignal': 101,
-            }
-            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
-            decoded = bus.decode(test_frame1, data_bytes, False)
-
-            for k, v in data.items():
-                assert decoded[k] == v
-
-    def test_encode_decode_signal_value_choice_unicode(self):
-        db_path = os.path.join(
-            os.path.dirname(__file__), "..", "test", "test.dbc")
-        for bus in formats.loadp(db_path).values():
-            test_frame1 = 0x123
-
-            data = {
-                'Signal': u'two'
-            }
-            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
-
-            decoded = bus.decode(test_frame1, data_bytes, True)
-
-            for k, v in data.items():
-                assert str(decoded[k]) == v
-
-    def test_encode_decode_signal_value_choice_str(self):
-        db_path = os.path.join(
-            os.path.dirname(__file__), "..", "test", "test.dbc")
-        for bus in formats.loadp(db_path).values():
-            test_frame1 = 0x123
-
-            data = {
-                'Signal': 'two'
-            }
-            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
-
-            decoded = bus.decode(test_frame1, data_bytes, True)
-
-            for k, v in data.items():
-                assert str(decoded[k]) == v
-
-    def test_import_export_additional_frame_info(self):
-        db_path = os.path.join(
-            os.path.dirname(__file__), "..", "test", "test.dbc")
-        dbs = formats.loadp(db_path)
-        tmp_dir = tempfile.mkdtemp()
-        for extension in ['csv', 'json']:
-            out_file_name = tmp_dir + "/output." + extension
-            formats.dumpp(dbs, out_file_name, additionalFrameAttributes="UserFrameAttr")
-            with open(out_file_name, "r") as file:
-                data = file.read()
-            self.assertIn("UserFrameAttr", data)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/test/README b/tests/README
similarity index 100%
rename from test/README
rename to tests/README
diff --git a/src/canmatrix/tests/__init__.py b/tests/__init__.py
similarity index 100%
rename from src/canmatrix/tests/__init__.py
rename to tests/__init__.py
diff --git a/test/createTestFdMatrix.py b/tests/createTestFdMatrix.py
old mode 100755
new mode 100644
similarity index 100%
rename from test/createTestFdMatrix.py
rename to tests/createTestFdMatrix.py
diff --git a/test/createTestMatrix.py b/tests/createTestMatrix.py
old mode 100755
new mode 100644
similarity index 88%
rename from test/createTestMatrix.py
rename to tests/createTestMatrix.py
index 1645e963adb9f54e610fe5a7516b04ac4c5b29e1..fbfa5cb14005e6ec0941fac787c3d52beb1bac32
--- a/test/createTestMatrix.py
+++ b/tests/createTestMatrix.py
@@ -17,12 +17,8 @@ db.ecus.add(Ecu("recBU"))
 
 myFrame = Frame("testFrame1", Id=0x123, dlc=8, transmitter="testBU")
 
-if sys.version_info > (3, 0):
-    unit = u"specialCharUnit°$"
-    comment = u"Multi \n Line \n Signal comment with a-umlaut: ä"
-else:
-    unit = "specialCharUnit°$".decode("utf-8")
-    comment = "Multi \n Line \n Signal comment with a-umlaut: ä".decode("utf-8")
+unit = "specialCharUnit°$"
+comment = "Multi \n Line \n Signal comment with a-umlaut: ä"
 
 mySignal = Signal("someTestSignal",
                   signalSize=11,
diff --git a/src/canmatrix/tests/ARXMLCompuMethod1.arxml b/tests/files/arxml/ARXMLCompuMethod1.arxml
similarity index 100%
rename from src/canmatrix/tests/ARXMLCompuMethod1.arxml
rename to tests/files/arxml/ARXMLCompuMethod1.arxml
diff --git a/src/canmatrix/tests/ARXMLContainerTest.arxml b/tests/files/arxml/ARXMLContainerTest.arxml
similarity index 100%
rename from src/canmatrix/tests/ARXMLContainerTest.arxml
rename to tests/files/arxml/ARXMLContainerTest.arxml
diff --git a/src/canmatrix/tests/ARXMLSecuredPDUTest.arxml b/tests/files/arxml/ARXMLSecuredPDUTest.arxml
similarity index 99%
rename from src/canmatrix/tests/ARXMLSecuredPDUTest.arxml
rename to tests/files/arxml/ARXMLSecuredPDUTest.arxml
index 8a00ed91a42df51a709f090bfafdd9a1cd452d42..8f601cbb7e909a5b00a699d602e87b1f7bb9e50f 100644
--- a/src/canmatrix/tests/ARXMLSecuredPDUTest.arxml
+++ b/tests/files/arxml/ARXMLSecuredPDUTest.arxml
@@ -7,7 +7,7 @@
         <CAN-CLUSTER>
           <SHORT-NAME>CAN</SHORT-NAME>
           <PHYSICAL-CHANNELS>
-            <PHYSICAL-CHANNEL>
+            <CAN-PHYSICAL-CHANNEL>
               <SHORT-NAME>CAN</SHORT-NAME>
               <FRAME-TRIGGERINGSS>
                 <CAN-FRAME-TRIGGERING>
@@ -62,7 +62,7 @@
                   <SIGNAL-REF DEST="I-SIGNAL">/ISignal/Signal</SIGNAL-REF>
                 </I-SIGNAL-TRIGGERING>
               </I-SIGNAL-TRIGGERINGS>
-            </PHYSICAL-CHANNEL>
+            </CAN-PHYSICAL-CHANNEL>
           </PHYSICAL-CHANNELS>
         </CAN-CLUSTER>
       </ELEMENTS>
diff --git a/src/canmatrix/tests/ARXML_min_max.arxml b/tests/files/arxml/ARXML_min_max.arxml
similarity index 100%
rename from src/canmatrix/tests/ARXML_min_max.arxml
rename to tests/files/arxml/ARXML_min_max.arxml
diff --git a/src/canmatrix/tests/MyECU.ecuc.arxml b/tests/files/arxml/MyECU.ecuc.arxml
similarity index 100%
rename from src/canmatrix/tests/MyECU.ecuc.arxml
rename to tests/files/arxml/MyECU.ecuc.arxml
diff --git a/test/test.arxml b/tests/files/arxml/test.arxml
similarity index 100%
rename from test/test.arxml
rename to tests/files/arxml/test.arxml
diff --git a/tests/files/dbc/aa.dbc b/tests/files/dbc/aa.dbc
new file mode 100644
index 0000000000000000000000000000000000000000..d2e06fe3bb8de3341a8b0bae49c7ae1072eb73fc
--- /dev/null
+++ b/tests/files/dbc/aa.dbc
@@ -0,0 +1,78 @@
+VERSION "created by canmatrix"
+
+
+NS_ :
+
+BS_:
+
+BU_: PLC MotorValve 
+
+
+BO_ 0 NMT_Out_Request: 2 PLC
+ SG_ nmt_CMD : 0|8@1- (1,0) [-128|127] "" MotorValve
+ SG_ Node_ID : 8|8@1- (1,0) [-128|127] "" MotorValve
+
+BO_ 1793 NMT_Response_Frame_In: 8 MotorValve
+ SG_ NMT_Response_10 : 0|32@1- (1,0) [-2147483648|2147483647] "" PLC
+ SG_ NMT_Response_11 : 32|32@1- (1,0) [-2147483648|2147483647] "" PLC
+
+BO_ 128 SYNC: 0 PLC
+
+BO_ 129 EMCY: 8 MotorValve
+ SG_ EMCY_Error_Code : 0|16@1- (1,0) [-32768|32767] "" PLC
+ SG_ E_Reg : 16|8@1- (1,0) [-128|127] "" PLC
+ SG_ E_Number : 24|8@1- (1,0) [-128|127] "" PLC
+
+BO_ 1537 SDO_download: 8 MotorValve
+ SG_ sdo_down_CMD M : 0|8@1- (1,0) [-128|127] "" PLC
+ SG_ sdo_down_IDX : 8|16@1- (1,0) [-32768|32767] "" PLC
+ SG_ sdo_down_SUBIDX : 24|8@1- (1,0) [-128|127] "" PLC
+ SG_ data8 m47 : 32|8@1- (1,0) [-128|127] "" PLC
+ SG_ data16 m43 : 32|16@1- (1,0) [-32768|32767] "" PLC
+ SG_ data24 m39 : 32|24@1- (1,0) [-8388608|8388607] "" PLC
+ SG_ data320 m35 : 32|32@1- (1,0) [-2147483648|2147483647] "" PLC
+ SG_ data321 m67 : 32|32@1- (1,0) [-2147483648|2147483647] "" PLC
+
+BO_ 1409 SDO_upload: 8 PLC
+ SG_ sdo_state M : 0|8@1- (1,0) [-128|127] "" MotorValve
+ SG_ sdo_uo_IDX : 8|16@1- (1,0) [-32768|32767] "" MotorValve
+ SG_ sdo_up_SUBIDX : 24|8@1- (1,0) [-128|127] "" MotorValve
+ SG_ error_code m128 : 32|32@1- (1,0) [-2147483648|2147483647] "" MotorValve
+ SG_ data8 m79 : 32|8@1- (1,0) [-128|127] "" PLC
+ SG_ data16 m75 : 32|16@1- (1,0) [-32768|32767] "" PLC
+ SG_ data24 m71 : 32|24@1- (1,0) [-8388608|8388607] "" PLC
+
+BO_ 513 Receive_PDO_Mapping_Parameter_0: 8 PLC
+ SG_ CMDDigital : 0|32@1+ (1,0) [0|4294967295] "" MotorValve
+ SG_ PVDigital : 32|32@1+ (1,0) [0|4294967295] "" MotorValve
+
+BO_ 769 Receive_PDO_Mapping_Parameter_1: 8 PLC
+ SG_ SPDigital : 0|32@1+ (1,0) [0|4294967295] "" MotorValve
+
+BO_ 385 Receive_PDO_Mapping_Parameter_1: 8 MotorValve
+ SG_ CMD_Raw : 0|32@1+ (1,0) [0|4294967295] "" PLC
+ SG_ CMD_Display : 32|32@1+ (1,0) [0|4294967295] "" PLC
+
+BO_ 641 Transmit_PDO_Mapping_Parameter_0: 8 MotorValve
+ SG_ POS_Measured : 0|32@1+ (1,0) [0|4294967295] "" PLC
+ SG_ NamurStatus : 32|32@1+ (1,0) [0|4294967295] "" PLC
+
+BO_ 897 Transmit_PDO_Mapping_Parameter_1: 8 MotorValve
+ SG_ SP : 0|32@1+ (1,0) [0|4294967295] "" PLC
+ SG_ PV : 32|32@1+ (1,0) [0|4294967295] "" PLC
+
+BO_ 1153 Transmit_PDO_Mapping_Parameter_2: 8 MotorValve
+ SG_ PDO_Mapping_Entry : 0|32@1+ (1,0) [0|4294967295] "" PLC
+ SG_ PDO_Mapping_Entry_2 : 32|32@1+ (1,0) [0|4294967295] "" PLC
+
+
+
+
+
+
+
+
+
+VAL_ 0 nmt_CMD 1 "switch to state \"Operational\"" 2 "switch to state \"Stop\"" 128 "switch to state \"Pre-Operational\"" 129 "Reset Node" 130 "Reset Communication";
+VAL_ 1537 sdo_down_CMD 35 "4_bytes" 39 "3_bytes" 43 "16_bytes" 47 "8_bytes" 64 "upload_request";
+VAL_ 1409 sdo_state 35 "4_bytes" 39 "3_bytes" 43 "16_bytes" 47 "8_bytes" 128 "upload_error";
diff --git a/test/test.dbc b/tests/files/dbc/test.dbc
similarity index 100%
rename from test/test.dbc
rename to tests/files/dbc/test.dbc
diff --git a/src/canmatrix/tests/test_frame_decoding.dbc b/tests/files/dbc/test_frame_decoding.dbc
similarity index 100%
rename from src/canmatrix/tests/test_frame_decoding.dbc
rename to tests/files/dbc/test_frame_decoding.dbc
diff --git a/test/test.dbf b/tests/files/dbf/test.dbf
similarity index 94%
rename from test/test.dbf
rename to tests/files/dbf/test.dbf
index 1a9feaab9bc955606d4c000aa6ef0a1d535c1a5b..a4c7d1a2668e006a144f3314d4efa76321921fbf 100644
--- a/test/test.dbf
+++ b/tests/files/dbf/test.dbf
@@ -1,89 +1,89 @@
-//******************************BUSMASTER Messages and signals Database ******************************//
-
-[DATABASE_VERSION] 1.3
-
-[PROTOCOL] CAN
-
-[BUSMASTER_VERSION] [2.6.0]
-[NUMBER_OF_MESSAGES] 2
-[START_MSG] testFrame1,291,8,2,1,S,testBU
-[START_SIGNALS] someTestSignal,11,2,1,U,100,0,0,1,5,specialCharUnit°$,,recBU
-[START_SIGNALS] Signal,3,3,4,U,6,0,1,0,1,someUnit,,recBU
-[VALUE_DESCRIPTION] "one",1
-[VALUE_DESCRIPTION] "two",2
-[VALUE_DESCRIPTION] "three",3
-[END_MSG]
-
-[START_MSG] extendedFrame,18,8,0,1,X,testBU
-[END_MSG]
-
-[START_VALUE_TABLE]
-[END_VALUE_TABLE]
-
-[NODE] testBU,recBU
-
-[START_DESC]
-[START_DESC_NET]
-[END_DESC_NET]
-
-[START_DESC_NODE]
-testBU "sender ECU";
-recBU "receiver ECU";
-[END_DESC_NODE]
-
-[START_DESC_MSG]
-291 S  "Multi  Line  Frame comment";
-[END_DESC_MSG]
-
-[START_DESC_SIG]
-291 S someTestSignal "Multi  Line  Signal comment with a-umlaut: ä";
-[END_DESC_SIG]
-[END_DESC]
-
-[START_PARAM]
-[START_PARAM_NET]
-[END_PARAM_NET]
-
-[START_PARAM_NODE]
-"NetworkNode",INT,0,0,65535
-[END_PARAM_NODE]
-
-[START_PARAM_MSG]
-"GenMsgCycleTime",INT,0,0,65535
-[END_PARAM_MSG]
-
-[START_PARAM_SIG]
-[END_PARAM_SIG]
-
-[START_PARAM_NODE_RX_SIG]
-[END_PARAM_NODE_RX_SIG]
-
-[START_PARAM_NODE_TX_MSG]
-[END_PARAM_NODE_TX_MSG]
-[END_PARAM]
-
-[START_PARAM_VAL]
-[START_PARAM_NET_VAL]
-[END_PARAM_NET_VAL]
-
-[START_PARAM_NODE_VAL]
-testBU,"NetworkNode",273
-[END_PARAM_NODE_VAL]
-
-[START_PARAM_MSG_VAL]
-291,S,"GenMsgCycleTime",100
-[END_PARAM_MSG_VAL]
-
-[START_PARAM_SIG_VAL]
-[END_PARAM_SIG_VAL]
-
-[END_PARAM_VAL]
-
-
-[START_NOT_SUPPORTED]
-[END_NOT_SUPPORTED]
-
-[START_NOT_PROCESSED]
-OF_:
-
-[END_NOT_PROCESSED]
+//******************************BUSMASTER Messages and signals Database ******************************//
+
+[DATABASE_VERSION] 1.3
+
+[PROTOCOL] CAN
+
+[BUSMASTER_VERSION] [2.6.0]
+[NUMBER_OF_MESSAGES] 2
+[START_MSG] testFrame1,291,8,2,1,S,testBU
+[START_SIGNALS] someTestSignal,11,2,1,U,100,0,0,1,5,specialCharUnit°$,,recBU
+[START_SIGNALS] Signal,3,3,4,U,6,0,1,0,1,someUnit,,recBU
+[VALUE_DESCRIPTION] "one",1
+[VALUE_DESCRIPTION] "two",2
+[VALUE_DESCRIPTION] "three",3
+[END_MSG]
+
+[START_MSG] extendedFrame,18,8,0,1,X,testBU
+[END_MSG]
+
+[START_VALUE_TABLE]
+[END_VALUE_TABLE]
+
+[NODE] testBU,recBU
+
+[START_DESC]
+[START_DESC_NET]
+[END_DESC_NET]
+
+[START_DESC_NODE]
+testBU "sender ECU";
+recBU "receiver ECU";
+[END_DESC_NODE]
+
+[START_DESC_MSG]
+291 S  "Multi  Line  Frame comment";
+[END_DESC_MSG]
+
+[START_DESC_SIG]
+291 S someTestSignal "Multi  Line  Signal comment with a-umlaut: ä";
+[END_DESC_SIG]
+[END_DESC]
+
+[START_PARAM]
+[START_PARAM_NET]
+[END_PARAM_NET]
+
+[START_PARAM_NODE]
+"NetworkNode",INT,0,0,65535
+[END_PARAM_NODE]
+
+[START_PARAM_MSG]
+"GenMsgCycleTime",INT,0,0,65535
+[END_PARAM_MSG]
+
+[START_PARAM_SIG]
+[END_PARAM_SIG]
+
+[START_PARAM_NODE_RX_SIG]
+[END_PARAM_NODE_RX_SIG]
+
+[START_PARAM_NODE_TX_MSG]
+[END_PARAM_NODE_TX_MSG]
+[END_PARAM]
+
+[START_PARAM_VAL]
+[START_PARAM_NET_VAL]
+[END_PARAM_NET_VAL]
+
+[START_PARAM_NODE_VAL]
+testBU,"NetworkNode",273
+[END_PARAM_NODE_VAL]
+
+[START_PARAM_MSG_VAL]
+291,S,"GenMsgCycleTime",100
+[END_PARAM_MSG_VAL]
+
+[START_PARAM_SIG_VAL]
+[END_PARAM_SIG_VAL]
+
+[END_PARAM_VAL]
+
+
+[START_NOT_SUPPORTED]
+[END_NOT_SUPPORTED]
+
+[START_NOT_PROCESSED]
+OF_:
+
+[END_NOT_PROCESSED]
diff --git a/test/test.json b/tests/files/json/test.json
similarity index 100%
rename from test/test.json
rename to tests/files/json/test.json
diff --git a/test/test.kcd b/tests/files/kcd/test.kcd
similarity index 100%
rename from test/test.kcd
rename to tests/files/kcd/test.kcd
diff --git a/test/test.sym b/tests/files/sym/test.sym
similarity index 98%
rename from test/test.sym
rename to tests/files/sym/test.sym
index 22710880ed01d4f686ab7e837adf7297211bf71f..7701b0ed12469fbb22c2764eb0fcc6039ba9030d 100644
--- a/test/test.sym
+++ b/tests/files/sym/test.sym
@@ -1,419 +1,419 @@
-FormatVersion=5.0 // Do not edit this line!
-Title="AFE_CAN_ID0"
-
-{ENUMS}
-enum State(0="Power On Reset, and a quoted comma", 1="Ready", 2="Following", 3="Fault",
-  4="Forming", 5="N/A", 6="N/A", 7="N/A", 8="N/A", 9="N/A", 10="N/A", 11="N/A", 
-  12="N/A", 13="N/A", 14="N/A", 15="N/A")
-enum Relay(0="Open", 1="Closed", 2="Error", 3="N/A")
-enum PowerAvail(0="None", 1="Available", 2="Error", 3="N/A")
-enum IGBTsEnabled(0="Disabled", 1="Enabled", 2="Error", 3="N/A")
-enum WakeUpSignal(0="Not Active", 1="Active", 2="Error", 3="N/A")
-enum Enable(0="Disable", 1="Enable", 2="Error", 3="N/A")
-enum MessageValid(0="Invalid", 1="Valid", 2="Error", 3="N/A")
-enum FaultClear(0="Normal", 1="Clear Faults", 2="Error", 3="N/A")
-enum BridgeFlt(0="Normal", 1="FLT_A", 2="N/A", 3="FLT_C", 4="OverVoltage", 
-  5="FLT_B", 6="Overcurrent", 7="5V")
-enum Fault(0="Normal", 1="Fault Active", 2="Error", 3="N/A")
-enum CANStatus(0="Normal", 1="Warning", 3="ErrorPassive", 4="N/A")
-enum InvertHwEnable(0="No invert", 1="Invert", 2="Error", 3="N/A")
-enum EnableUPSMode(0="Disable", 1="Enable", 2="Error", 3="N/A")
-enum EnableSplitPhase(0="Normal - Three Phase Mode", 
-  1="Enable Split Phase Mode", 2="Error", 3="N/A")
-enum RelayCommand(0="Normal", 1="Force On", 2="Error", 3="N/A")
-enum PhaseRotation(0="Negative", 1="Positive", 2="Error", 3="N/A")
-enum LineVoltagePresent(0="No_Voltage", 1="Voltage_Detected", 2="Error", 
-  3="N/A")
-enum Baudrate(0="125K", 1="250K", 2="500K", 3="1M")
-enum FaultConfig(0="Warning", 1="Fault", 2="Error", 3="N/A")
-enum MasterFollower(0="Master", // Master or standalone mode
-  1="Follower", 2="Error", 3="N/A")
-
-{SEND}
-
-[CommandModeControl]
-ID=00FFAB41h	// Operational commands are received by the module via control bits within this message.
-Type=Extended
-DLC=8
-Var=Enable_command unsigned 6,2 -m /max:1 /e:Enable	// Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.
-Var=FaultClear_command unsigned 4,2 -m /max:1 /e:FaultClear	// Clears the latched fault message. 
-Var=InvertHwEnable_command unsigned 62,2 -m /max:1 /e:InvertHwEnable	// Inverts the logic of the Hardware Enable input.
-Var=EnableUPSMode_command unsigned 60,2 -m /max:1 /e:EnableUPSMode	// Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.  
-Var=EnableSplitPhase_command unsigned 58,2 -m /max:1 /e:EnableSplitPhase	// Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.
-Var=ForceRelayMX1_command unsigned 38,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
-Var=ForceRelayMX2_command unsigned 36,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
-Var=ForceRelayK1_Precharge_command unsigned 34,2 -m /max:1 /p:0 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
-Var=ForceRelayRelayK2_DCRun_comand unsigned 32,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
-Var=PhaseRotation_command unsigned 56,2 -m /max:1 /e:PhaseRotation	// Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.
-Var=MasterFollowerMode_command unsigned 22,2 -m /max:1 /e:MasterFollower	// Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.
-
-[CommandPower]
-ID=0CFFAC41h	// Sets the desired real (P) and reactive (Q) power levels for the module to follow while in the GRID FOLLOWING mode.
-Type=Extended
-DLC=8
-Var="RealPower command" signed 0,32 -m /u:W /min:-90000 /max:90000	// Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.
-Var=ReactivePower_command signed 32,32 -m /u:VA /min:-90000 /max:90000	// Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.
-
-[CommandVF]
-ID=0CFFAE41h	// Sets the desired voltage and frequency for the module to produce while in the GRID FORMING mode.  In addition, while in the READY and GRID FOLLOWING modes, this message is used to set the nominal voltage levels for detection of acceptable AC line voltage.
-Type=Extended
-DLC=8
-Var=Voltage_command unsigned 0,16 -m /u:Vrms /f:0.1 /min:10 /max:500 /d:240	// Desired output voltage while in grid forming mode.
-Var=Frequency_command unsigned 16,16 -m /u:Hz /f:0.1 /min:45 /max:65 /d:50	// Desired output frequency while in grid forming mode.
-
-[MasterMeasuredPower]
-ID=0CFFCAF6h	// Returns the actual measured power.
-Type=Extended
-DLC=8
-Var=RealPower_measured signed 0,32 -m /u:W	// Measured real power of master unit.
-Var=ReactivePower_measured signed 32,32 -m /u:VA	// Measured reactive power of master unit.
-
-[CommandFactoryControl]
-ID=0CFFAF41h
-Type=Extended
-DLC=8
-Var=WriteSerialNumber unsigned 6,2 -m /e:Enable
-Var=SerialNumber unsigned 32,32 -m
-Var=FactoryAccess unsigned 16,16 -m
-
-[CommandSetNVParam]
-ID=0CFFAA41h	// Provides access to configure non-volatile parameters.  Note that these parameters can only be set when the inverter's power stage is disabled (PowerCircuitEnabled_status in StatusBits message is 'Disabled.')
-Type=Extended
-DLC=8
-Mux=Param0 0,16 0  -m
-Var=Dummy unsigned 16,16 -m
-
-[CommandSetNVParam]
-DLC=8
-Mux=LVM_ClearingTimes1 0,16 1  -m	// Line Voltage Monitor fault times.
-Var=VUnder50pct unsigned 16,16 -m /u:ms /min:1 /max:30000 /d:160	// Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.
-Var=V50to88pct unsigned 32,16 -m /u:ms /min:1 /max:30000 /d:2000	// Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.
-Var=V110to120pct unsigned 48,16 -m /u:ms /min:1 /max:30000 /d:1000	// Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.
-
-[CommandSetNVParam]
-DLC=8
-Mux=LVM_ClearingTimes2 0,16 2  -m	// Line Voltage Monitor fault times.
-Var=VOver120 unsigned 16,16 -m /min:1 /max:30000 /d:160	// Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.
-
-[CommandSetNVParam]
-DLC=8
-Mux=LFM_Limits 0,16 3  -m	// Line Frequency Monitor limits.
-Var=FreqHi unsigned 16,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:60.5	// Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.
-Var=FreqLo unsigned 32,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:59.8	// Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.
-Var=FreqVeryLo unsigned 48,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:57	// Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.
-
-[CommandSetNVParam]
-DLC=8
-Mux=LFM_ClearingTimes 0,16 4  -m	// Line Frequency Monitor Trip times
-Var=FreqVeryLo unsigned 16,16 -m /u:ms /min:160 /max:160 /d:160	// Determines the time it will take for a fault trip to occur when line frequency remains below the value specified in FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.
-Var=FreqLo unsigned 32,16 -m /u:ms /min:1 /max:30000 /d:160	// Determines the time it will take for a fault trip to occur when line frequency remains between the value specified in FreqLo and FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.
-Var=FreqHi unsigned 48,16 -m /u:ms /min:160 /max:160 /d:160	// Determines the time it will take for a fault trip to occur when line frequency remains above the value specified in FreqHi of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.
-
-[CommandSetNVParam]
-DLC=8
-Mux=J1939_Interface 0,16 5  -m	// J1939 interface parameters
-Var=NodeID unsigned 16,8 -m /max:247 /d:247	// J1939 Source Address node for the module.
-Var=SA_Mask unsigned 24,8 -m /d:65	// Not presently used.
-Var=Baudrate unsigned 32,4 -m /max:3 /e:Baudrate /d:2	// CAN baudrate
-
-[CommandSetNVParam]
-DLC=8
-Mux=Fault_Config 0,16 6  -m	// Allows configuration of various fault conditions to either trip the drive, or provide a warning status via CAN
-Var=ThermalOverload unsigned 22,2 -m /max:1 /e:FaultConfig	// Configures action to take when thermal overload input is active.
-
-[CommandSetNVParam]
-DLC=8
-Mux=ContactorDelays1 0,16 7  -m	// Sets the time the controller assumes it will take for contactors to open/close.
-Var=MX1Open unsigned 16,16 -m /u:ms /max:5000 /d:100	// Maximum time required for the MX1 contactor to open.
-Var=MX1Close unsigned 32,16 -m /u:ms /max:2000 /d:100	// Maximum time required for the MX1 contactor to close.
-Var=MX2Open unsigned 48,16 -m /u:ms /max:1	// Maximum time required for the MX2 contactor to open.
-
-[CommandSetNVParam]
-DLC=8
-Mux=ContactorDelays2 0,16 8  -m	// Sets the time the controller assumes it will take for contactors to open/close.
-Var=MX2Close unsigned 16,16 -m /u:ms /max:2000	// Maximum time required for the MX2 contactor to open.
-Var=K1Open unsigned 32,16 -m /u:ms /max:2000	// Maximum time required for the K1 contactor to open.
-Var=K1Close unsigned 48,16 -m /u:ms /max:2000	// Maximum time required for the K1 contactor to close.
-
-[CommandSetNVParam]
-DLC=8
-Mux=ContactorDelays3 0,16 Ah  -m	// Sets the time the controller assumes it will take for contactors to open/close.
-Var=K2Open unsigned 16,16 -m /u:ms /max:2000	// Maximum time required for the K2 contactor to open.
-Var=K2Close unsigned 32,16 -m /u:ms /max:2000	// Maximum time required for the K2 contactor to close.
-
-[CommandModeControlAPU2]
-ID=00FF9B41h	// Operational commands are received by the module via control bits within this message.
-Type=Extended
-DLC=8
-Var=Enable_command unsigned 6,2 -m /max:1 /e:Enable	// Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.
-Var=FaultClear_command unsigned 4,2 -m /max:1 /e:FaultClear	// Clears the latched fault message. 
-Var=InvertHwEnable_command unsigned 62,2 -m /max:1 /e:InvertHwEnable	// Inverts the logic of the Hardware Enable input.
-Var=EnableUPSMode_command unsigned 60,2 -m /max:1 /e:EnableUPSMode	// Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.  
-Var=EnableSplitPhase_command unsigned 58,2 -m /max:1 /e:EnableSplitPhase	// Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.
-Var=ForceRelayMX1_command unsigned 38,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
-Var=ForceRelayMX2_command unsigned 36,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
-Var=ForceRelayK1_Precharge_command unsigned 34,2 -m /max:1 /p:0 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
-Var=ForceRelayRelayK2_DCRun_comand unsigned 32,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
-Var=PhaseRotation_command unsigned 56,2 -m /max:1 /e:PhaseRotation	// Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING
-Var=MasterFollowerMode_command unsigned 22,2 -m /max:1 /e:MasterFollower	// Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.
-
-[CommandPowerAPU2]
-ID=0CFF9C41h	// Sets the desired real (P) and reactive (Q) power levels for the module to follow while in the GRID FOLLOWING mode.
-Type=Extended
-DLC=8
-Var=RealPower_command signed 0,32 -m /u:W /min:-90000 /max:90000	// Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.
-Var=ReactivePower_command signed 32,32 -m /u:VA /min:-90000 /max:90000	// Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.
-
-[CommandVFAPU2]
-ID=0CFF9E41h	// Sets the desired voltage and frequency for the module to produce while in the GRID FORMING mode.  In addition, while in the READY and GRID FOLLOWING modes, this message is used to set the nominal voltage levels for detection of acceptable AC line voltage.
-Type=Extended
-DLC=8
-Var=Voltage_command unsigned 0,16 -m /u:Vrms /f:0.1 /min:10 /max:500 /d:240	// Desired output voltage while in grid forming mode.
-Var=Frequency_command unsigned 16,16 -m /u:Hz /f:0.1 /min:45 /max:65 /d:50	// Desired output frequency while in grid forming mode.
-
-[MasterMeasuredPowerAPU2]
-ID=0CFFCAF7h	// Returns the actual measured power.
-Type=Extended
-DLC=8
-Var=RealPower_measured signed 0,32 -m /u:W	// Measured real power of master unit.
-Var=ReactivePower_measured signed 32,32 -m /u:VA	// Measured reactive power of master unit.
-
-{SENDRECEIVE}
-
-[justString]
-ID=1CFFACC0h
-Type=Extended
-DLC=8
-Var=rev string 0,64 -m /d:"ICUx-03i"
-
-[stringAndOther]
-ID=1CFFABC0h
-Type=Extended
-DLC=8
-Var=rev string 0,64 -m /d:"ICUx-03i"
-Var=RealPower_measured signed 0,32 -m /u:W	// Measured real power.
-
-[StatusMeasuredPower]
-ID=0CFFCAF7h	// Returns the actual measured power.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=RealPower_measured signed 0,32 -m /u:W	// Measured real power.
-Var=ReactivePower_measured signed 32,32 -m /u:VA	// Measured reactive power.
-
-[StatusCommandedPower]
-ID=18FFC4F7h	// Echoes the commanded power (P&Q) as received in CommandPQ.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=RealPower_echo signed 0,32 -m /u:W	// Echoed real power command.
-Var=ReactivePower_echo signed 32,32 -m /u:VA	// Echoed reactive power command.
-
-[StatusBits]
-ID=0CFFC3F7h	// Bits representing the status of the power module.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=State_status unsigned 4,4 -m /max:7 /e:State	// Active control mode.
-Var=MX2Permissive_status unsigned 20,2 -m /e:Relay	// MX2 relay status
-Var=PowerAvailAC_status unsigned 12,2 -m /e:PowerAvail	// Indicates that AC power is connected and that voltage and frequency are within nominal ranges.
-Var=PowerAvailDC_status unsigned 10,2 -m /e:PowerAvail	// Indicates that DC bus voltage is within operating range.
-Var=PowerCircuitEnabled_status unsigned 8,2 -m /e:IGBTsEnabled	// Indicates whether the switching devices are active.
-Var=HardwareEnable_status unsigned 14,2 -m /e:WakeUpSignal	// Status of the hardware enable.
-Var=Enable_echo unsigned 2,2 -m /e:Enable	// Echos the state of the Enable command withing the CommandModeControl message.
-Var=FaultClr_echo unsigned 0,2 -m /e:FaultClear	// Echos the state of the FaultClear command withing the CommandModeControl message.
-Var=MessageValidModeControl_status unsigned 30,2 -m /e:MessageValid	// Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.
-Var=MX1Permissive_status unsigned 22,2 -m /e:Relay	// MX1 relay status
-Var=K2DCRunPermissive_status unsigned 16,2 -m /e:Relay	// K2 DC Run relay status.
-Var=K1PrechargePermissive_status unsigned 18,2 -m /e:Relay	// K1 precharge relay status.
-Var=MessageValidPowerCMD_status unsigned 28,2 -m /e:MessageValid	// Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.
-Var=MessageValidVF_status unsigned 26,2 -m /e:MessageValid	// Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.
-Var=CANbus_status unsigned 24,2 -m /e:CANStatus	// Operational status of the CAN bus driver.
-Var=EnableUPSMode_echo unsigned 38,2 -m /e:EnableUPSMode	// Echos the state of the EnableUPSMode command withing the CommandModeControl message.
-Var=EnableSplitPhase_echo unsigned 36,2 -m /e:EnableSplitPhase	// Echos the state of the EnableSplitPhase command withing the CommandModeControl message.
-Var=PhaseRotation_status unsigned 34,2 -m /max:1 /e:PhaseRotation	// Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.
-Var=LineVoltageDetected_status unsigned 32,2 -m /max:1 /e:LineVoltagePresent	// Flag indicating if voltage is detected on L1, L2 or L3.
-Var=PhaseRotation_echo unsigned 46,2 -m /max:1 /e:PhaseRotation	// Echos the state of PhaseRotation_command withing the CommandModeControl message.
-
-[StatusControlVoltage]
-ID=1CFFC5F7h	// Lists present voltage of each power supply on the control board (24V, 15V, 5V, and 3.3V.)
-Type=Extended
-DLC=8
-CycleTime=100
-Var=v5p0_Supply signed 0,16 -m /u:V /f:0.01	// Present voltage of the control board 5V power suppy.
-Var=v3p3_Supply signed 16,16 -m /u:V /f:0.01	// Present voltage of the control board 3.3V power supply.
-Var=v24_Supply signed 32,16 -m /u:V /f:0.01	// Present voltage of the control board 24V power supply.
-Var=v15_Supply signed 48,16 -m /u:V /f:0.01	// Present voltage of the control board 15V power supply.
-
-[StatusTemps]
-ID=18FFCBF7h	// Returns the inlet water temperature to the module as well as module internal ambient temperature.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=TempInlet_measured signed 0,16 -m /u:C /f:0.1	// Coolant inlet temperature
-Var=TempInternal_measured signed 16,16 -m /u:C /f:0.1	// Internal ambient temperature
-Var=ConverterLosses unsigned 32,16 -m /u:W /max:1	// Power converter thermal loss
-
-[StatusFaults]
-ID=0CFFC8F7h	// Fault bits.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=BridgeAVoltageOk_status unsigned 60,1 -m /e:Fault	// Indicates whether a hardware trip has been activated.
-Var=OvercurrentAC_status unsigned 4,2 -m /e:Fault	// Set immediately upon the software detection of AC current exceeding the threshold value. 
-Var=BridgeBVoltageOk_status unsigned 44,1 -m /e:Fault	// Indicates whether a hardware trip has been activated.
-Var=OvervoltageDC_status unsigned 14,2 -m /e:Fault	// Set immediately upon the software detection of DC voltage exceeding the threshold value. 
-Var=OvertempPowerDevice_status unsigned 8,2 -m /e:Fault	// Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.
-Var=OvertempInternal_status unsigned 10,2 -m /e:Fault	// Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.  
-Var=LossValidControlMessage_status unsigned 16,4 -m /e:Fault	// Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.
-Var=UndervoltageDC_status unsigned 12,2 -m /e:Fault	// Indicates loss of DC source voltage.
-Var=ControlHardwareFail_status unsigned 20,4 -m /e:Fault	// Set upon the failure of control hardware to return expected response.
-Var=OvercurrentDC_status unsigned 0,2 -m /e:Fault	// Set immediately upon the software detection of DC current exceeding the threshold value.
-Var=GeneralFault_status unsigned 6,2 -m /e:Fault	// Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.
-Var=LossOfAC_status unsigned 2,2 -m /e:Fault	// In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message. 
-Var=EStopShutdown_status unsigned 30,2 -m /e:Fault	// Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active. 
-Var=BridgeAFault_status unsigned 61,3 -m /e:BridgeFlt	// Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.
-Var=BridgeBFault_status unsigned 45,3 -m /e:BridgeFlt	// Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.
-Var=IllegalTransition_status unsigned 28,2 -m /max:1 /e:Fault	// Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.
-Var=InvalidEEHeader_status unsigned 26,2 -m /max:1 /e:Fault	// Indicates that reading of non-volatile parameters at power-up failed.
-Var=InvalidEESection_status unsigned 24,2 -m /max:1 /e:Fault	// Indicates that reading or writing of an non-volatile parameter section failed.
-Var=ThermalOverload unsigned 38,2 -m /max:1 /e:Fault
-
-[StatusACParameters]
-ID=0CFFC2F7h	// RMS AC Voltage, current, and frequency measured by line A, B and C feedbacks.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=VoltageAC_measured signed 0,16 -m /u:V /f:0.1	// Measured RMS AC voltage.
-Var=CurrentAC_measured signed 16,16 -m /u:A	// Measured RMS AC current.
-Var=Frequency_measured signed 32,16 -m /u:Hz /f:0.1	// Measured frequency.
-
-[StatusDCParameters]
-ID=1CFFC7F7h	// Measured (boosted) DC Bus voltage, DC Current, and estimated DC Input voltage.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=VoltageDCBus signed 16,16 -m /u:V	// Measured DC bus voltage.
-Var=CurrentDC_measured signed 32,16 -m /u:A	// Measured DC current.
-Var=VoltageDCInput_measured signed 0,16 -m /u:V	// Estimated DC input voltage.
-
-[StatusControlVolts2]
-ID=1CFFC6F7h	// Present voltage of the -15V power supply on the control board.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=n15V_Supply signed 0,16 -m /u:V /f:0.01	// Present voltage of the control board -15V power supply.
-Var=DiodeTemperature unsigned 32,16 -m /u:C /max:1	// Hottest diode
-Var=IGBTTemperature unsigned 48,16 -m /u:C /max:1	// Hottest IGBT
-
-[softwareRev]
-ID=1CFFC1F7h	// Software revision.
-Type=Extended
-DLC=8
-Var=InterfaceRev unsigned 16,16 -m /f:0.01 /p:2	// Software revision of the CAN communication interface.
-Var=ControlSwRev unsigned 0,16 -m /f:0.01 /p:2	// Software revision of the control firmware.
-Var=BuildTime unsigned 32,32 -m	// Build timestamp.
-
-[StatusCommandVF]
-ID=18FFC9F7h	// Echoes the voltage and frequency commands from commandVF.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=Voltage_echo unsigned 0,16 -m /u:Vrms /f:0.1	// Echoed voltage command
-Var=Frequency_echo unsigned 16,16 -m /u:Hz /f:0.1	// Echoed frequency command.
-
-[serialNumber]
-ID=1CFFCCF7h	// Serial number of the power module.
-Type=Extended
-DLC=8
-Var=SerialNumber unsigned 0,32 -m	// Serial number of the power module.
-
-[softwareRevHash]
-ID=1CFFCDF7h	// Unique software revision identification hashcode.
-Type=Extended
-DLC=8
-Var=Hash unsigned 0,28 -h -m	// Unique revision identification hashcode.
-
-[StatusNVParam]
-ID=1CFFA9F7h	// Echos back parameter values.
-Type=Extended
-DLC=8
-Mux=ActParam0 0,16 0  -m
-Var=Dummy unsigned 16,16 -m /min:5 /max:10
-
-[StatusNVParam]
-DLC=8
-Mux=ActLVM_ClearingTimes1 0,16 1  -m
-Var=VUnder50pct unsigned 16,16 -m /u:ms /min:1 /max:30000 /d:160
-Var=V50to88pct unsigned 32,16 -m /u:ms /min:1 /max:30000 /d:2000
-Var=V110to120pct unsigned 48,16 -m /u:ms /min:1 /max:30000 /d:1000
-
-[StatusNVParam]
-DLC=8
-Mux=ActLVM_ClearingTimes2 0,16 2  -m
-Var=VOver120 unsigned 16,16 -m /min:1 /max:30000 /d:160
-
-[StatusNVParam]
-DLC=8
-Mux=ActLFM_Limits 0,16 3  -m
-Var=FreqHi unsigned 16,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:60.5
-Var=FreqLo unsigned 32,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:59.8
-Var=FreqVeryLo unsigned 48,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:57
-
-[StatusNVParam]
-DLC=8
-Mux=ActLFM_ClearingTimes 0,16 4  -m
-Var=FreqVeryLo unsigned 16,16 -m /u:ms /min:160 /max:160 /d:160
-Var=FreqLo unsigned 32,16 -m /u:ms /min:1 /max:30000 /d:160
-Var=FreqHi unsigned 48,16 -m /u:ms /min:160 /max:160 /d:160
-
-[StatusNVParam]
-DLC=8
-Mux=StatusJ1939_Interface 0,16 5  -m	// J1939 interface parameters
-Var=StatusNodeID unsigned 16,8 -m /max:247 /d:247	// J1939 Source Address node for the module
-Var=StatusSA_Mask unsigned 24,8 -m /d:65	// Mask used to configure from which master source addresses to accept commands.
-Var=StatusBaudrate unsigned 32,4 -m /max:3 /e:Baudrate /d:2
-
-[StatusNVParam]
-DLC=8
-Mux=StatusFault_Config 0,16 6  -m	// configuration of various fault conditions to either trip the drive, or provide a warning status via CAN
-Var=StatusThermalOverload unsigned 22,2 -m /max:1 /e:FaultConfig	// Configured action to take when thermal overload input is active.
-
-[StatusNVParam]
-DLC=8
-Mux=StatusContactorDelays1 0,16 7  -m	// Sets the time the controller assumes it will take for contactors to open/close.
-Var=StatusMX1Open unsigned 16,16 -m /u:ms /max:5000 /d:100	// Maximum time required for the MX1 contactor to open.
-Var=StatusMX1Close unsigned 32,16 -m /u:ms /max:2000 /d:100	// Maximum time required for the MX1 contactor to close.
-Var=StatusMX2Open unsigned 48,16 -m /u:ms /max:1	// Maximum time required for the MX2 contactor to open.
-
-[StatusNVParam]
-DLC=8
-Mux=StatusContactorDelays2 0,16 8  -m	// Sets the time the controller assumes it will take for contactors to open/close.
-Var=StatusMX2Close unsigned 16,16 -m /u:ms /max:2000	// Maximum time required for the MX2 contactor to open.
-Var=StatusK1Open unsigned 32,16 -m /u:ms /max:2000	// Maximum time required for the K1 contactor to open.
-Var=StatusK1Close unsigned 48,16 -m /u:ms /max:2000	// Maximum time required for the K1 contactor to close.
-
-[StatusNVParam]
-DLC=8
-Mux=StatusContactorDelays3 0,16 9  -m	// Sets the time the controller assumes it will take for contactors to open/close.
-Var=StatusK2Open unsigned 16,16 -m /u:ms /max:2000	// Maximum time required for the K2 contactor to open.
-Var=StatusK2Close unsigned 32,16 -m /u:ms /max:2000	// Maximum time required for the K2 contactor to close.
-
-[StatusLineCurrents]
-ID=18FFD0F7h	// Measured RMS line currents.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=L1Current_measured unsigned 0,16 -m /u:A /max:1	// Measured L1 RMS line current.
-Var=L2Current_measured unsigned 16,16 -m /u:A /max:1	// Measured L2 RMS line current.
-Var=L3Current_measured unsigned 32,16 -m /u:A /max:1	// Measured L3 RMS line current.
-
-[StatusLineVoltages]
-ID=18FFD1F7h	// Measured RMS line voltages.
-Type=Extended
-DLC=8
-CycleTime=100
-Var=L1Voltage_measured unsigned 0,16 -m /u:Vrms /f:0.1 /max:1	// Measured L1 RMS line-neutral voltage
-Var=L2Voltage_measured unsigned 16,16 -m /u:Vrms /f:0.1 /max:1	// Measured L2 RMS line-neutral voltage
-Var=L3Voltage_measured unsigned 32,16 -m /u:Vrms /f:0.1 /max:1	// Measured L3 RMS line-neutral voltage
-
+FormatVersion=5.0 // Do not edit this line!
+Title="AFE_CAN_ID0"
+
+{ENUMS}
+enum State(0="Power On Reset, and a quoted comma", 1="Ready", 2="Following", 3="Fault",
+  4="Forming", 5="N/A", 6="N/A", 7="N/A", 8="N/A", 9="N/A", 10="N/A", 11="N/A", 
+  12="N/A", 13="N/A", 14="N/A", 15="N/A")
+enum Relay(0="Open", 1="Closed", 2="Error", 3="N/A")
+enum PowerAvail(0="None", 1="Available", 2="Error", 3="N/A")
+enum IGBTsEnabled(0="Disabled", 1="Enabled", 2="Error", 3="N/A")
+enum WakeUpSignal(0="Not Active", 1="Active", 2="Error", 3="N/A")
+enum Enable(0="Disable", 1="Enable", 2="Error", 3="N/A")
+enum MessageValid(0="Invalid", 1="Valid", 2="Error", 3="N/A")
+enum FaultClear(0="Normal", 1="Clear Faults", 2="Error", 3="N/A")
+enum BridgeFlt(0="Normal", 1="FLT_A", 2="N/A", 3="FLT_C", 4="OverVoltage", 
+  5="FLT_B", 6="Overcurrent", 7="5V")
+enum Fault(0="Normal", 1="Fault Active", 2="Error", 3="N/A")
+enum CANStatus(0="Normal", 1="Warning", 3="ErrorPassive", 4="N/A")
+enum InvertHwEnable(0="No invert", 1="Invert", 2="Error", 3="N/A")
+enum EnableUPSMode(0="Disable", 1="Enable", 2="Error", 3="N/A")
+enum EnableSplitPhase(0="Normal - Three Phase Mode", 
+  1="Enable Split Phase Mode", 2="Error", 3="N/A")
+enum RelayCommand(0="Normal", 1="Force On", 2="Error", 3="N/A")
+enum PhaseRotation(0="Negative", 1="Positive", 2="Error", 3="N/A")
+enum LineVoltagePresent(0="No_Voltage", 1="Voltage_Detected", 2="Error", 
+  3="N/A")
+enum Baudrate(0="125K", 1="250K", 2="500K", 3="1M")
+enum FaultConfig(0="Warning", 1="Fault", 2="Error", 3="N/A")
+enum MasterFollower(0="Master", // Master or standalone mode
+  1="Follower", 2="Error", 3="N/A")
+
+{SEND}
+
+[CommandModeControl]
+ID=00FFAB41h	// Operational commands are received by the module via control bits within this message.
+Type=Extended
+DLC=8
+Var=Enable_command unsigned 6,2 -m /max:1 /e:Enable	// Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.
+Var=FaultClear_command unsigned 4,2 -m /max:1 /e:FaultClear	// Clears the latched fault message. 
+Var=InvertHwEnable_command unsigned 62,2 -m /max:1 /e:InvertHwEnable	// Inverts the logic of the Hardware Enable input.
+Var=EnableUPSMode_command unsigned 60,2 -m /max:1 /e:EnableUPSMode	// Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.  
+Var=EnableSplitPhase_command unsigned 58,2 -m /max:1 /e:EnableSplitPhase	// Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.
+Var=ForceRelayMX1_command unsigned 38,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
+Var=ForceRelayMX2_command unsigned 36,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
+Var=ForceRelayK1_Precharge_command unsigned 34,2 -m /max:1 /p:0 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
+Var=ForceRelayRelayK2_DCRun_comand unsigned 32,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
+Var=PhaseRotation_command unsigned 56,2 -m /max:1 /e:PhaseRotation	// Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.
+Var=MasterFollowerMode_command unsigned 22,2 -m /max:1 /e:MasterFollower	// Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.
+
+[CommandPower]
+ID=0CFFAC41h	// Sets the desired real (P) and reactive (Q) power levels for the module to follow while in the GRID FOLLOWING mode.
+Type=Extended
+DLC=8
+Var="RealPower command" signed 0,32 -m /u:W /min:-90000 /max:90000	// Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.
+Var=ReactivePower_command signed 32,32 -m /u:VA /min:-90000 /max:90000	// Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.
+
+[CommandVF]
+ID=0CFFAE41h	// Sets the desired voltage and frequency for the module to produce while in the GRID FORMING mode.  In addition, while in the READY and GRID FOLLOWING modes, this message is used to set the nominal voltage levels for detection of acceptable AC line voltage.
+Type=Extended
+DLC=8
+Var=Voltage_command unsigned 0,16 -m /u:Vrms /f:0.1 /min:10 /max:500 /d:240	// Desired output voltage while in grid forming mode.
+Var=Frequency_command unsigned 16,16 -m /u:Hz /f:0.1 /min:45 /max:65 /d:50	// Desired output frequency while in grid forming mode.
+
+[MasterMeasuredPower]
+ID=0CFFCAF6h	// Returns the actual measured power.
+Type=Extended
+DLC=8
+Var=RealPower_measured signed 0,32 -m /u:W	// Measured real power of master unit.
+Var=ReactivePower_measured signed 32,32 -m /u:VA	// Measured reactive power of master unit.
+
+[CommandFactoryControl]
+ID=0CFFAF41h
+Type=Extended
+DLC=8
+Var=WriteSerialNumber unsigned 6,2 -m /e:Enable
+Var=SerialNumber unsigned 32,32 -m
+Var=FactoryAccess unsigned 16,16 -m
+
+[CommandSetNVParam]
+ID=0CFFAA41h	// Provides access to configure non-volatile parameters.  Note that these parameters can only be set when the inverter's power stage is disabled (PowerCircuitEnabled_status in StatusBits message is 'Disabled.')
+Type=Extended
+DLC=8
+Mux=Param0 0,16 0  -m
+Var=Dummy unsigned 16,16 -m
+
+[CommandSetNVParam]
+DLC=8
+Mux=LVM_ClearingTimes1 0,16 1  -m	// Line Voltage Monitor fault times.
+Var=VUnder50pct unsigned 16,16 -m /u:ms /min:1 /max:30000 /d:160	// Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.
+Var=V50to88pct unsigned 32,16 -m /u:ms /min:1 /max:30000 /d:2000	// Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.
+Var=V110to120pct unsigned 48,16 -m /u:ms /min:1 /max:30000 /d:1000	// Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.
+
+[CommandSetNVParam]
+DLC=8
+Mux=LVM_ClearingTimes2 0,16 2  -m	// Line Voltage Monitor fault times.
+Var=VOver120 unsigned 16,16 -m /min:1 /max:30000 /d:160	// Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.
+
+[CommandSetNVParam]
+DLC=8
+Mux=LFM_Limits 0,16 3  -m	// Line Frequency Monitor limits.
+Var=FreqHi unsigned 16,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:60.5	// Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.
+Var=FreqLo unsigned 32,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:59.8	// Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.
+Var=FreqVeryLo unsigned 48,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:57	// Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.
+
+[CommandSetNVParam]
+DLC=8
+Mux=LFM_ClearingTimes 0,16 4  -m	// Line Frequency Monitor Trip times
+Var=FreqVeryLo unsigned 16,16 -m /u:ms /min:160 /max:160 /d:160	// Determines the time it will take for a fault trip to occur when line frequency remains below the value specified in FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.
+Var=FreqLo unsigned 32,16 -m /u:ms /min:1 /max:30000 /d:160	// Determines the time it will take for a fault trip to occur when line frequency remains between the value specified in FreqLo and FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.
+Var=FreqHi unsigned 48,16 -m /u:ms /min:160 /max:160 /d:160	// Determines the time it will take for a fault trip to occur when line frequency remains above the value specified in FreqHi of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.
+
+[CommandSetNVParam]
+DLC=8
+Mux=J1939_Interface 0,16 5  -m	// J1939 interface parameters
+Var=NodeID unsigned 16,8 -m /max:247 /d:247	// J1939 Source Address node for the module.
+Var=SA_Mask unsigned 24,8 -m /d:65	// Not presently used.
+Var=Baudrate unsigned 32,4 -m /max:3 /e:Baudrate /d:2	// CAN baudrate
+
+[CommandSetNVParam]
+DLC=8
+Mux=Fault_Config 0,16 6  -m	// Allows configuration of various fault conditions to either trip the drive, or provide a warning status via CAN
+Var=ThermalOverload unsigned 22,2 -m /max:1 /e:FaultConfig	// Configures action to take when thermal overload input is active.
+
+[CommandSetNVParam]
+DLC=8
+Mux=ContactorDelays1 0,16 7  -m	// Sets the time the controller assumes it will take for contactors to open/close.
+Var=MX1Open unsigned 16,16 -m /u:ms /max:5000 /d:100	// Maximum time required for the MX1 contactor to open.
+Var=MX1Close unsigned 32,16 -m /u:ms /max:2000 /d:100	// Maximum time required for the MX1 contactor to close.
+Var=MX2Open unsigned 48,16 -m /u:ms /max:1	// Maximum time required for the MX2 contactor to open.
+
+[CommandSetNVParam]
+DLC=8
+Mux=ContactorDelays2 0,16 8  -m	// Sets the time the controller assumes it will take for contactors to open/close.
+Var=MX2Close unsigned 16,16 -m /u:ms /max:2000	// Maximum time required for the MX2 contactor to open.
+Var=K1Open unsigned 32,16 -m /u:ms /max:2000	// Maximum time required for the K1 contactor to open.
+Var=K1Close unsigned 48,16 -m /u:ms /max:2000	// Maximum time required for the K1 contactor to close.
+
+[CommandSetNVParam]
+DLC=8
+Mux=ContactorDelays3 0,16 Ah  -m	// Sets the time the controller assumes it will take for contactors to open/close.
+Var=K2Open unsigned 16,16 -m /u:ms /max:2000	// Maximum time required for the K2 contactor to open.
+Var=K2Close unsigned 32,16 -m /u:ms /max:2000	// Maximum time required for the K2 contactor to close.
+
+[CommandModeControlAPU2]
+ID=00FF9B41h	// Operational commands are received by the module via control bits within this message.
+Type=Extended
+DLC=8
+Var=Enable_command unsigned 6,2 -m /max:1 /e:Enable	// Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.
+Var=FaultClear_command unsigned 4,2 -m /max:1 /e:FaultClear	// Clears the latched fault message. 
+Var=InvertHwEnable_command unsigned 62,2 -m /max:1 /e:InvertHwEnable	// Inverts the logic of the Hardware Enable input.
+Var=EnableUPSMode_command unsigned 60,2 -m /max:1 /e:EnableUPSMode	// Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.  
+Var=EnableSplitPhase_command unsigned 58,2 -m /max:1 /e:EnableSplitPhase	// Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.
+Var=ForceRelayMX1_command unsigned 38,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
+Var=ForceRelayMX2_command unsigned 36,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
+Var=ForceRelayK1_Precharge_command unsigned 34,2 -m /max:1 /p:0 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
+Var=ForceRelayRelayK2_DCRun_comand unsigned 32,2 -m /max:1 /e:RelayCommand	// If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.
+Var=PhaseRotation_command unsigned 56,2 -m /max:1 /e:PhaseRotation	// Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING
+Var=MasterFollowerMode_command unsigned 22,2 -m /max:1 /e:MasterFollower	// Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.
+
+[CommandPowerAPU2]
+ID=0CFF9C41h	// Sets the desired real (P) and reactive (Q) power levels for the module to follow while in the GRID FOLLOWING mode.
+Type=Extended
+DLC=8
+Var=RealPower_command signed 0,32 -m /u:W /min:-90000 /max:90000	// Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.
+Var=ReactivePower_command signed 32,32 -m /u:VA /min:-90000 /max:90000	// Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.
+
+[CommandVFAPU2]
+ID=0CFF9E41h	// Sets the desired voltage and frequency for the module to produce while in the GRID FORMING mode.  In addition, while in the READY and GRID FOLLOWING modes, this message is used to set the nominal voltage levels for detection of acceptable AC line voltage.
+Type=Extended
+DLC=8
+Var=Voltage_command unsigned 0,16 -m /u:Vrms /f:0.1 /min:10 /max:500 /d:240	// Desired output voltage while in grid forming mode.
+Var=Frequency_command unsigned 16,16 -m /u:Hz /f:0.1 /min:45 /max:65 /d:50	// Desired output frequency while in grid forming mode.
+
+[MasterMeasuredPowerAPU2]
+ID=0CFFCAF7h	// Returns the actual measured power.
+Type=Extended
+DLC=8
+Var=RealPower_measured signed 0,32 -m /u:W	// Measured real power of master unit.
+Var=ReactivePower_measured signed 32,32 -m /u:VA	// Measured reactive power of master unit.
+
+{SENDRECEIVE}
+
+[justString]
+ID=1CFFACC0h
+Type=Extended
+DLC=8
+Var=rev string 0,64 -m /d:"ICUx-03i"
+
+[stringAndOther]
+ID=1CFFABC0h
+Type=Extended
+DLC=8
+Var=rev string 0,64 -m /d:"ICUx-03i"
+Var=RealPower_measured signed 0,32 -m /u:W	// Measured real power.
+
+[StatusMeasuredPower]
+ID=0CFFCAF7h	// Returns the actual measured power.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=RealPower_measured signed 0,32 -m /u:W	// Measured real power.
+Var=ReactivePower_measured signed 32,32 -m /u:VA	// Measured reactive power.
+
+[StatusCommandedPower]
+ID=18FFC4F7h	// Echoes the commanded power (P&Q) as received in CommandPQ.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=RealPower_echo signed 0,32 -m /u:W	// Echoed real power command.
+Var=ReactivePower_echo signed 32,32 -m /u:VA	// Echoed reactive power command.
+
+[StatusBits]
+ID=0CFFC3F7h	// Bits representing the status of the power module.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=State_status unsigned 4,4 -m /max:7 /e:State	// Active control mode.
+Var=MX2Permissive_status unsigned 20,2 -m /e:Relay	// MX2 relay status
+Var=PowerAvailAC_status unsigned 12,2 -m /e:PowerAvail	// Indicates that AC power is connected and that voltage and frequency are within nominal ranges.
+Var=PowerAvailDC_status unsigned 10,2 -m /e:PowerAvail	// Indicates that DC bus voltage is within operating range.
+Var=PowerCircuitEnabled_status unsigned 8,2 -m /e:IGBTsEnabled	// Indicates whether the switching devices are active.
+Var=HardwareEnable_status unsigned 14,2 -m /e:WakeUpSignal	// Status of the hardware enable.
+Var=Enable_echo unsigned 2,2 -m /e:Enable	// Echos the state of the Enable command withing the CommandModeControl message.
+Var=FaultClr_echo unsigned 0,2 -m /e:FaultClear	// Echos the state of the FaultClear command withing the CommandModeControl message.
+Var=MessageValidModeControl_status unsigned 30,2 -m /e:MessageValid	// Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.
+Var=MX1Permissive_status unsigned 22,2 -m /e:Relay	// MX1 relay status
+Var=K2DCRunPermissive_status unsigned 16,2 -m /e:Relay	// K2 DC Run relay status.
+Var=K1PrechargePermissive_status unsigned 18,2 -m /e:Relay	// K1 precharge relay status.
+Var=MessageValidPowerCMD_status unsigned 28,2 -m /e:MessageValid	// Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.
+Var=MessageValidVF_status unsigned 26,2 -m /e:MessageValid	// Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.
+Var=CANbus_status unsigned 24,2 -m /e:CANStatus	// Operational status of the CAN bus driver.
+Var=EnableUPSMode_echo unsigned 38,2 -m /e:EnableUPSMode	// Echos the state of the EnableUPSMode command withing the CommandModeControl message.
+Var=EnableSplitPhase_echo unsigned 36,2 -m /e:EnableSplitPhase	// Echos the state of the EnableSplitPhase command withing the CommandModeControl message.
+Var=PhaseRotation_status unsigned 34,2 -m /max:1 /e:PhaseRotation	// Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.
+Var=LineVoltageDetected_status unsigned 32,2 -m /max:1 /e:LineVoltagePresent	// Flag indicating if voltage is detected on L1, L2 or L3.
+Var=PhaseRotation_echo unsigned 46,2 -m /max:1 /e:PhaseRotation	// Echos the state of PhaseRotation_command withing the CommandModeControl message.
+
+[StatusControlVoltage]
+ID=1CFFC5F7h	// Lists present voltage of each power supply on the control board (24V, 15V, 5V, and 3.3V.)
+Type=Extended
+DLC=8
+CycleTime=100
+Var=v5p0_Supply signed 0,16 -m /u:V /f:0.01	// Present voltage of the control board 5V power suppy.
+Var=v3p3_Supply signed 16,16 -m /u:V /f:0.01	// Present voltage of the control board 3.3V power supply.
+Var=v24_Supply signed 32,16 -m /u:V /f:0.01	// Present voltage of the control board 24V power supply.
+Var=v15_Supply signed 48,16 -m /u:V /f:0.01	// Present voltage of the control board 15V power supply.
+
+[StatusTemps]
+ID=18FFCBF7h	// Returns the inlet water temperature to the module as well as module internal ambient temperature.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=TempInlet_measured signed 0,16 -m /u:C /f:0.1	// Coolant inlet temperature
+Var=TempInternal_measured signed 16,16 -m /u:C /f:0.1	// Internal ambient temperature
+Var=ConverterLosses unsigned 32,16 -m /u:W /max:1	// Power converter thermal loss
+
+[StatusFaults]
+ID=0CFFC8F7h	// Fault bits.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=BridgeAVoltageOk_status unsigned 60,1 -m /e:Fault	// Indicates whether a hardware trip has been activated.
+Var=OvercurrentAC_status unsigned 4,2 -m /e:Fault	// Set immediately upon the software detection of AC current exceeding the threshold value. 
+Var=BridgeBVoltageOk_status unsigned 44,1 -m /e:Fault	// Indicates whether a hardware trip has been activated.
+Var=OvervoltageDC_status unsigned 14,2 -m /e:Fault	// Set immediately upon the software detection of DC voltage exceeding the threshold value. 
+Var=OvertempPowerDevice_status unsigned 8,2 -m /e:Fault	// Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.
+Var=OvertempInternal_status unsigned 10,2 -m /e:Fault	// Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.  
+Var=LossValidControlMessage_status unsigned 16,4 -m /e:Fault	// Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.
+Var=UndervoltageDC_status unsigned 12,2 -m /e:Fault	// Indicates loss of DC source voltage.
+Var=ControlHardwareFail_status unsigned 20,4 -m /e:Fault	// Set upon the failure of control hardware to return expected response.
+Var=OvercurrentDC_status unsigned 0,2 -m /e:Fault	// Set immediately upon the software detection of DC current exceeding the threshold value.
+Var=GeneralFault_status unsigned 6,2 -m /e:Fault	// Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.
+Var=LossOfAC_status unsigned 2,2 -m /e:Fault	// In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message. 
+Var=EStopShutdown_status unsigned 30,2 -m /e:Fault	// Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active. 
+Var=BridgeAFault_status unsigned 61,3 -m /e:BridgeFlt	// Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.
+Var=BridgeBFault_status unsigned 45,3 -m /e:BridgeFlt	// Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.
+Var=IllegalTransition_status unsigned 28,2 -m /max:1 /e:Fault	// Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.
+Var=InvalidEEHeader_status unsigned 26,2 -m /max:1 /e:Fault	// Indicates that reading of non-volatile parameters at power-up failed.
+Var=InvalidEESection_status unsigned 24,2 -m /max:1 /e:Fault	// Indicates that reading or writing of an non-volatile parameter section failed.
+Var=ThermalOverload unsigned 38,2 -m /max:1 /e:Fault
+
+[StatusACParameters]
+ID=0CFFC2F7h	// RMS AC Voltage, current, and frequency measured by line A, B and C feedbacks.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=VoltageAC_measured signed 0,16 -m /u:V /f:0.1	// Measured RMS AC voltage.
+Var=CurrentAC_measured signed 16,16 -m /u:A	// Measured RMS AC current.
+Var=Frequency_measured signed 32,16 -m /u:Hz /f:0.1	// Measured frequency.
+
+[StatusDCParameters]
+ID=1CFFC7F7h	// Measured (boosted) DC Bus voltage, DC Current, and estimated DC Input voltage.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=VoltageDCBus signed 16,16 -m /u:V	// Measured DC bus voltage.
+Var=CurrentDC_measured signed 32,16 -m /u:A	// Measured DC current.
+Var=VoltageDCInput_measured signed 0,16 -m /u:V	// Estimated DC input voltage.
+
+[StatusControlVolts2]
+ID=1CFFC6F7h	// Present voltage of the -15V power supply on the control board.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=n15V_Supply signed 0,16 -m /u:V /f:0.01	// Present voltage of the control board -15V power supply.
+Var=DiodeTemperature unsigned 32,16 -m /u:C /max:1	// Hottest diode
+Var=IGBTTemperature unsigned 48,16 -m /u:C /max:1	// Hottest IGBT
+
+[softwareRev]
+ID=1CFFC1F7h	// Software revision.
+Type=Extended
+DLC=8
+Var=InterfaceRev unsigned 16,16 -m /f:0.01 /p:2	// Software revision of the CAN communication interface.
+Var=ControlSwRev unsigned 0,16 -m /f:0.01 /p:2	// Software revision of the control firmware.
+Var=BuildTime unsigned 32,32 -m	// Build timestamp.
+
+[StatusCommandVF]
+ID=18FFC9F7h	// Echoes the voltage and frequency commands from commandVF.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=Voltage_echo unsigned 0,16 -m /u:Vrms /f:0.1	// Echoed voltage command
+Var=Frequency_echo unsigned 16,16 -m /u:Hz /f:0.1	// Echoed frequency command.
+
+[serialNumber]
+ID=1CFFCCF7h	// Serial number of the power module.
+Type=Extended
+DLC=8
+Var=SerialNumber unsigned 0,32 -m	// Serial number of the power module.
+
+[softwareRevHash]
+ID=1CFFCDF7h	// Unique software revision identification hashcode.
+Type=Extended
+DLC=8
+Var=Hash unsigned 0,28 -h -m	// Unique revision identification hashcode.
+
+[StatusNVParam]
+ID=1CFFA9F7h	// Echos back parameter values.
+Type=Extended
+DLC=8
+Mux=ActParam0 0,16 0  -m
+Var=Dummy unsigned 16,16 -m /min:5 /max:10
+
+[StatusNVParam]
+DLC=8
+Mux=ActLVM_ClearingTimes1 0,16 1  -m
+Var=VUnder50pct unsigned 16,16 -m /u:ms /min:1 /max:30000 /d:160
+Var=V50to88pct unsigned 32,16 -m /u:ms /min:1 /max:30000 /d:2000
+Var=V110to120pct unsigned 48,16 -m /u:ms /min:1 /max:30000 /d:1000
+
+[StatusNVParam]
+DLC=8
+Mux=ActLVM_ClearingTimes2 0,16 2  -m
+Var=VOver120 unsigned 16,16 -m /min:1 /max:30000 /d:160
+
+[StatusNVParam]
+DLC=8
+Mux=ActLFM_Limits 0,16 3  -m
+Var=FreqHi unsigned 16,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:60.5
+Var=FreqLo unsigned 32,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:59.8
+Var=FreqVeryLo unsigned 48,16 -m /u:Hz /f:0.1 /min:40 /max:70 /d:57
+
+[StatusNVParam]
+DLC=8
+Mux=ActLFM_ClearingTimes 0,16 4  -m
+Var=FreqVeryLo unsigned 16,16 -m /u:ms /min:160 /max:160 /d:160
+Var=FreqLo unsigned 32,16 -m /u:ms /min:1 /max:30000 /d:160
+Var=FreqHi unsigned 48,16 -m /u:ms /min:160 /max:160 /d:160
+
+[StatusNVParam]
+DLC=8
+Mux=StatusJ1939_Interface 0,16 5  -m	// J1939 interface parameters
+Var=StatusNodeID unsigned 16,8 -m /max:247 /d:247	// J1939 Source Address node for the module
+Var=StatusSA_Mask unsigned 24,8 -m /d:65	// Mask used to configure from which master source addresses to accept commands.
+Var=StatusBaudrate unsigned 32,4 -m /max:3 /e:Baudrate /d:2
+
+[StatusNVParam]
+DLC=8
+Mux=StatusFault_Config 0,16 6  -m	// configuration of various fault conditions to either trip the drive, or provide a warning status via CAN
+Var=StatusThermalOverload unsigned 22,2 -m /max:1 /e:FaultConfig	// Configured action to take when thermal overload input is active.
+
+[StatusNVParam]
+DLC=8
+Mux=StatusContactorDelays1 0,16 7  -m	// Sets the time the controller assumes it will take for contactors to open/close.
+Var=StatusMX1Open unsigned 16,16 -m /u:ms /max:5000 /d:100	// Maximum time required for the MX1 contactor to open.
+Var=StatusMX1Close unsigned 32,16 -m /u:ms /max:2000 /d:100	// Maximum time required for the MX1 contactor to close.
+Var=StatusMX2Open unsigned 48,16 -m /u:ms /max:1	// Maximum time required for the MX2 contactor to open.
+
+[StatusNVParam]
+DLC=8
+Mux=StatusContactorDelays2 0,16 8  -m	// Sets the time the controller assumes it will take for contactors to open/close.
+Var=StatusMX2Close unsigned 16,16 -m /u:ms /max:2000	// Maximum time required for the MX2 contactor to open.
+Var=StatusK1Open unsigned 32,16 -m /u:ms /max:2000	// Maximum time required for the K1 contactor to open.
+Var=StatusK1Close unsigned 48,16 -m /u:ms /max:2000	// Maximum time required for the K1 contactor to close.
+
+[StatusNVParam]
+DLC=8
+Mux=StatusContactorDelays3 0,16 9  -m	// Sets the time the controller assumes it will take for contactors to open/close.
+Var=StatusK2Open unsigned 16,16 -m /u:ms /max:2000	// Maximum time required for the K2 contactor to open.
+Var=StatusK2Close unsigned 32,16 -m /u:ms /max:2000	// Maximum time required for the K2 contactor to close.
+
+[StatusLineCurrents]
+ID=18FFD0F7h	// Measured RMS line currents.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=L1Current_measured unsigned 0,16 -m /u:A /max:1	// Measured L1 RMS line current.
+Var=L2Current_measured unsigned 16,16 -m /u:A /max:1	// Measured L2 RMS line current.
+Var=L3Current_measured unsigned 32,16 -m /u:A /max:1	// Measured L3 RMS line current.
+
+[StatusLineVoltages]
+ID=18FFD1F7h	// Measured RMS line voltages.
+Type=Extended
+DLC=8
+CycleTime=100
+Var=L1Voltage_measured unsigned 0,16 -m /u:Vrms /f:0.1 /max:1	// Measured L1 RMS line-neutral voltage
+Var=L2Voltage_measured unsigned 16,16 -m /u:Vrms /f:0.1 /max:1	// Measured L2 RMS line-neutral voltage
+Var=L3Voltage_measured unsigned 32,16 -m /u:Vrms /f:0.1 /max:1	// Measured L3 RMS line-neutral voltage
+
diff --git a/test/reference/from_sym/test.xls b/tests/files/xlsx/test.xls
similarity index 100%
rename from test/reference/from_sym/test.xls
rename to tests/files/xlsx/test.xls
diff --git a/test/test.xlsx b/tests/files/xlsx/test.xlsx
similarity index 100%
rename from test/test.xlsx
rename to tests/files/xlsx/test.xlsx
diff --git a/test/reference/from_arxml/test.kcd b/tests/reference/from_arxml/test.kcd
similarity index 100%
rename from test/reference/from_arxml/test.kcd
rename to tests/reference/from_arxml/test.kcd
diff --git a/test/reference/from_arxml/test_CAN.csv b/tests/reference/from_arxml/test_CAN.csv
similarity index 99%
rename from test/reference/from_arxml/test_CAN.csv
rename to tests/reference/from_arxml/test_CAN.csv
index f5713f5e25b2f4e5c728ecc638c719c052da4daa..46bd0a3b74399c46dcb119bc976356efd8a91e1b 100644
--- a/test/reference/from_arxml/test_CAN.csv
+++ b/tests/reference/from_arxml/test_CAN.csv
@@ -1,391 +1,391 @@
-ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,0,Normal
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,1,Clear Faults
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,0,Disable
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,1,Enable
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,0,Master
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,1,Follower
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,0,Negative
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,1,Positive
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,0,Normal - Three Phase Mode
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,1,Enable Split Phase Mode
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,0,Disable
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,1,Enable
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,3,N/A
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,0,No invert
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,1,Invert
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,2,Error
-FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,0,Normal
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,1,Clear Faults
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,0,Disable
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,1,Enable
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,0,Master
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,1,Follower
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,0,Negative
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,1,Positive
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,0,Normal - Three Phase Mode
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,1,Enable Split Phase Mode
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,0,Disable
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,1,Enable
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,3,N/A
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,0,No invert
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,1,Invert
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,2,Error
-FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,3,N/A
-CFF9C41xh,FRAME_CommandPowerAPU2,None,spontanX,None,1,0,RealPower_command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,m,s,,-2147483648.0..2147483647.0
-CFF9C41xh,FRAME_CommandPowerAPU2,None,spontanX,None,5,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,m,s,,-2147483648.0..2147483647.0
-CFF9E41xh,FRAME_CommandVFAPU2,None,spontanX,None,1,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFF9E41xh,FRAME_CommandVFAPU2,None,spontanX,None,3,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,0,Param0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,1,LVM_ClearingTimes1
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,2,LVM_ClearingTimes2
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,3,LFM_Limits
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,4,LFM_ClearingTimes
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,5,J1939_Interface
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,6,Fault_Config
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,7,ContactorDelays1
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,8,ContactorDelays2
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,10,ContactorDelays3
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,Dummy,,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,FreqHi,"Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,FreqVeryLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,K2Open,Maximum time required for the K2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,MX1Open,Maximum time required for the MX1 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,MX2Close,Maximum time required for the MX2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,NodeID,J1939 Source Address node for the module.,8, , ,m,s,,-128.0..127.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,VOver120,Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,VUnder50pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,0,Warning
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,1,Fault
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,2,Error
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,3,N/A
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,4,0,SA_Mask,Not presently used.,8, , ,m,s,,-128.0..127.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,Baudrate,CAN baudrate,4, , ,m,s,,0,125K
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,Baudrate,CAN baudrate,4, , ,m,s,,1,250K
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,Baudrate,CAN baudrate,4, , ,m,s,,2,500K
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,Baudrate,CAN baudrate,4, , ,m,s,,3,1M
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,FreqLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,K1Open,Maximum time required for the K1 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,K2Close,Maximum time required for the K2 contactor to close.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,MX1Close,Maximum time required for the MX1 contactor to close.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,V50to88pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,FreqHi,"Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,FreqVeryLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,K1Close,Maximum time required for the K1 contactor to close.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,MX2Open,Maximum time required for the MX2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,V110to120pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
-CFFAC41xh,FRAME_CommandPower,None,spontanX,None,1,0,RealPower command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,m,s,,-2147483648.0..2147483647.0
-CFFAC41xh,FRAME_CommandPower,None,spontanX,None,5,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,m,s,,-2147483648.0..2147483647.0
-CFFAE41xh,FRAME_CommandVF,None,spontanX,None,1,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFAE41xh,FRAME_CommandVF,None,spontanX,None,3,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,1,6,WriteSerialNumber,,2, , ,m,s,,0,Disable
-CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,1,6,WriteSerialNumber,,2, , ,m,s,,1,Enable
-CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,1,6,WriteSerialNumber,,2, , ,m,s,,2,Error
-CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,1,6,WriteSerialNumber,,2, , ,m,s,,3,N/A
-CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,3,0,FactoryAccess,,16, , ,m,s,,-32768.0..32767.0
-CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,5,0,SerialNumber,,32, , ,m,s,,-2147483648.0..2147483647.0
-CFFC2F7xh,FRAME_StatusACParameters,None,spontanX,None,1,0,VoltageAC_measured,Measured RMS AC voltage.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFC2F7xh,FRAME_StatusACParameters,None,spontanX,None,3,0,CurrentAC_measured,Measured RMS AC current.,16, , ,m,s,,-32768.0..32767.0
-CFFC2F7xh,FRAME_StatusACParameters,None,spontanX,None,5,0,Frequency_measured,Measured frequency.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,s,,0,Normal
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,s,,1,Clear Faults
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,s,,0,Disable
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,s,,1,Enable
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,0,"Power On Reset, and a quoted comma"
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,1,Ready
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,2,Following
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,3,Fault
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,4,Forming
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,5,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,6,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,7,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,8,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,9,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,10,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,11,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,12,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,13,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,14,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,15,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,s,,0,Disabled
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,s,,1,Enabled
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,s,,0,None
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,s,,1,Available
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,s,,0,None
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,s,,1,Available
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,s,,0,Not Active
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,s,,1,Active
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,s,,0,Open
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,s,,1,Closed
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,s,,0,Open
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,s,,1,Closed
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,s,,0,Open
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,s,,1,Closed
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,s,,0,Open
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,s,,1,Closed
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,s,,0,Normal
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,s,,1,Warning
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,s,,3,ErrorPassive
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,s,,4,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,0,Invalid
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,1,Valid
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,0,Invalid
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,1,Valid
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,0,Invalid
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,1,Valid
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,s,,0,No_Voltage
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,s,,1,Voltage_Detected
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,s,,0,Negative
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,s,,1,Positive
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,s,,0,Normal - Three Phase Mode
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,s,,1,Enable Split Phase Mode
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,s,,0,Disable
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,s,,1,Enable
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,s,,0,Negative
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,s,,1,Positive
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,s,,2,Error
-CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,5,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,0,Warning
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,5,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,1,Fault
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,5,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,5,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,1,FLT_A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,2,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,3,FLT_C
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,4,OverVoltage
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,5,FLT_B
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,6,Overcurrent
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,7,5V
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,1,Fault Active
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,2,Error
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,3,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,0,Normal
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,1,FLT_A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,2,N/A
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,3,FLT_C
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,4,OverVoltage
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,5,FLT_B
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,6,Overcurrent
-CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,7,5V
-CFFCAF6xh,FRAME_MasterMeasuredPower,None,spontanX,None,1,0,RealPower_measured,Measured real power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
-CFFCAF6xh,FRAME_MasterMeasuredPower,None,spontanX,None,5,0,ReactivePower_measured,Measured reactive power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
-CFFCAF7xh,FRAME_StatusMeasuredPower,None,spontanX,None,1,0,RealPower_measured,Measured real power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
-CFFCAF7xh,FRAME_StatusMeasuredPower,None,spontanX,None,5,0,ReactivePower_measured,Measured reactive power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
-18FFC4F7xh,FRAME_StatusCommandedPower,None,spontanX,None,1,0,RealPower_echo,Echoed real power command.,32, , ,m,s,,-2147483648.0..2147483647.0
-18FFC4F7xh,FRAME_StatusCommandedPower,None,spontanX,None,5,0,ReactivePower_echo,Echoed reactive power command.,32, , ,m,s,,-2147483648.0..2147483647.0
-18FFC9F7xh,FRAME_StatusCommandVF,None,spontanX,None,1,0,Voltage_echo,Echoed voltage command,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-18FFC9F7xh,FRAME_StatusCommandVF,None,spontanX,None,3,0,Frequency_echo,Echoed frequency command.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-18FFCBF7xh,FRAME_StatusTemps,None,spontanX,None,1,0,TempInlet_measured,Coolant inlet temperature,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-18FFCBF7xh,FRAME_StatusTemps,None,spontanX,None,3,0,TempInternal_measured,Internal ambient temperature,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-18FFCBF7xh,FRAME_StatusTemps,None,spontanX,None,5,0,ConverterLosses,Power converter thermal loss,16, , ,m,s,,-32768.0..32767.0
-18FFD0F7xh,FRAME_StatusLineCurrents,None,spontanX,None,1,0,L1Current_measured,Measured L1 RMS line current.,16, , ,m,s,,-32768.0..32767.0
-18FFD0F7xh,FRAME_StatusLineCurrents,None,spontanX,None,3,0,L2Current_measured,Measured L2 RMS line current.,16, , ,m,s,,-32768.0..32767.0
-18FFD0F7xh,FRAME_StatusLineCurrents,None,spontanX,None,5,0,L3Current_measured,Measured L3 RMS line current.,16, , ,m,s,,-32768.0..32767.0
-18FFD1F7xh,FRAME_StatusLineVoltages,None,spontanX,None,1,0,L1Voltage_measured,Measured L1 RMS line-neutral voltage,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-18FFD1F7xh,FRAME_StatusLineVoltages,None,spontanX,None,3,0,L2Voltage_measured,Measured L2 RMS line-neutral voltage,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-18FFD1F7xh,FRAME_StatusLineVoltages,None,spontanX,None,5,0,L3Voltage_measured,Measured L3 RMS line-neutral voltage,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,0,ActParam0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,1,ActLVM_ClearingTimes1
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,2,ActLVM_ClearingTimes2
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,3,ActLFM_Limits
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,4,ActLFM_ClearingTimes
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,5,StatusJ1939_Interface
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,6,StatusFault_Config
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,7,StatusContactorDelays1
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,8,StatusContactorDelays2
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,9,StatusContactorDelays3
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,Dummy,,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,FreqHi,"Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,FreqVeryLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,StatusK2Open,Maximum time required for the K2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,StatusMX1Open,Maximum time required for the MX1 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,StatusMX2Close,Maximum time required for the MX2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,StatusNodeID,J1939 Source Address node for the module,8, , ,m,s,,-128.0..127.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,VOver120,Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,VUnder50pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,6,StatusThermalOverload,Configured action to take when thermal overload input is active.,2, , ,m,s,,0,Warning
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,6,StatusThermalOverload,Configured action to take when thermal overload input is active.,2, , ,m,s,,1,Fault
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,6,StatusThermalOverload,Configured action to take when thermal overload input is active.,2, , ,m,s,,2,Error
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,6,StatusThermalOverload,Configured action to take when thermal overload input is active.,2, , ,m,s,,3,N/A
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,4,0,StatusSA_Mask,Mask used to configure from which master source addresses to accept commands.,8, , ,m,s,,-128.0..127.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,FreqLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusBaudrate,,4, , ,m,s,,0,125K
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusBaudrate,,4, , ,m,s,,1,250K
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusBaudrate,,4, , ,m,s,,2,500K
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusBaudrate,,4, , ,m,s,,3,1M
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusK1Open,Maximum time required for the K1 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusK2Close,Maximum time required for the K2 contactor to close.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusMX1Close,Maximum time required for the MX1 contactor to close.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,V50to88pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,FreqHi,"Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,FreqVeryLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,StatusK1Close,Maximum time required for the K1 contactor to close.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,StatusMX2Open,Maximum time required for the MX2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
-1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,V110to120pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
-1CFFABC0xh,FRAME_stringAndOther,None,spontanX,None,1,0,RealPower_measured,Measured real power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
-1CFFC1F7xh,FRAME_softwareRev,None,spontanX,None,1,0,ControlSwRev,Software revision of the control firmware.,16, , ,m,s,0.01 -,-327.68..327.67
-1CFFC1F7xh,FRAME_softwareRev,None,spontanX,None,3,0,InterfaceRev,Software revision of the CAN communication interface.,16, , ,m,s,0.01 -,-327.68..327.67
-1CFFC1F7xh,FRAME_softwareRev,None,spontanX,None,5,0,BuildTime,Build timestamp.,32, , ,m,s,,-2147483648.0..2147483647.0
-1CFFC5F7xh,FRAME_StatusControlVoltage,None,spontanX,None,1,0,v5p0_Supply,Present voltage of the control board 5V power suppy.,16, , ,m,s,0.01 -,-327.68..327.67
-1CFFC5F7xh,FRAME_StatusControlVoltage,None,spontanX,None,3,0,v3p3_Supply,Present voltage of the control board 3.3V power supply.,16, , ,m,s,0.01 -,-327.68..327.67
-1CFFC5F7xh,FRAME_StatusControlVoltage,None,spontanX,None,5,0,v24_Supply,Present voltage of the control board 24V power supply.,16, , ,m,s,0.01 -,-327.68..327.67
-1CFFC5F7xh,FRAME_StatusControlVoltage,None,spontanX,None,7,0,v15_Supply,Present voltage of the control board 15V power supply.,16, , ,m,s,0.01 -,-327.68..327.67
-1CFFC6F7xh,FRAME_StatusControlVolts2,None,spontanX,None,1,0,n15V_Supply,Present voltage of the control board -15V power supply.,16, , ,m,s,0.01 -,-327.68..327.67
-1CFFC6F7xh,FRAME_StatusControlVolts2,None,spontanX,None,5,0,DiodeTemperature,Hottest diode,16, , ,m,s,,-32768.0..32767.0
-1CFFC6F7xh,FRAME_StatusControlVolts2,None,spontanX,None,7,0,IGBTTemperature,Hottest IGBT,16, , ,m,s,,-32768.0..32767.0
-1CFFC7F7xh,FRAME_StatusDCParameters,None,spontanX,None,1,0,VoltageDCInput_measured,Estimated DC input voltage.,16, , ,m,s,,-32768.0..32767.0
-1CFFC7F7xh,FRAME_StatusDCParameters,None,spontanX,None,3,0,VoltageDCBus,Measured DC bus voltage.,16, , ,m,s,,-32768.0..32767.0
-1CFFC7F7xh,FRAME_StatusDCParameters,None,spontanX,None,5,0,CurrentDC_measured,Measured DC current.,16, , ,m,s,,-32768.0..32767.0
-1CFFCCF7xh,FRAME_serialNumber,None,spontanX,None,1,0,SerialNumber,,32, , ,m,s,,-2147483648.0..2147483647.0
-1CFFCDF7xh,FRAME_softwareRevHash,None,spontanX,None,1,0,Hash,Unique revision identification hashcode.,28, , ,m,s,,-134217728.0..134217727.0
+ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,0,Normal
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,1,Clear Faults
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,0,Disable
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,1,Enable
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,0,Master
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,1,Follower
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,0,Negative
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,1,Positive
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,0,Normal - Three Phase Mode
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,1,Enable Split Phase Mode
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,0,Disable
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,1,Enable
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,3,N/A
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,0,No invert
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,1,Invert
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,2,Error
+FF9B41xh,FRAME_CommandModeControlAPU2,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,0,Normal
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,1,Clear Faults
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,0,Disable
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,1,Enable
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,0,Master
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,1,Follower
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,0,Normal
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,1,Force On
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,0,Negative
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,1,Positive
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,0,Normal - Three Phase Mode
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,1,Enable Split Phase Mode
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,0,Disable
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,1,Enable
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,s,,3,N/A
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,0,No invert
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,1,Invert
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,2,Error
+FFAB41xh,FRAME_CommandModeControl,None,spontanX,None,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,s,,3,N/A
+CFF9C41xh,FRAME_CommandPowerAPU2,None,spontanX,None,1,0,RealPower_command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,m,s,,-2147483648.0..2147483647.0
+CFF9C41xh,FRAME_CommandPowerAPU2,None,spontanX,None,5,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,m,s,,-2147483648.0..2147483647.0
+CFF9E41xh,FRAME_CommandVFAPU2,None,spontanX,None,1,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFF9E41xh,FRAME_CommandVFAPU2,None,spontanX,None,3,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,0,Param0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,1,LVM_ClearingTimes1
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,2,LVM_ClearingTimes2
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,3,LFM_Limits
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,4,LFM_ClearingTimes
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,5,J1939_Interface
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,6,Fault_Config
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,7,ContactorDelays1
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,8,ContactorDelays2
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,1,0,CommandSetNVParam_MUX,,16, , ,m,s,,10,ContactorDelays3
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,Dummy,,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,FreqHi,"Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,FreqVeryLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,K2Open,Maximum time required for the K2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,MX1Open,Maximum time required for the MX1 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,MX2Close,Maximum time required for the MX2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,NodeID,J1939 Source Address node for the module.,8, , ,m,s,,-128.0..127.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,VOver120,Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,0,VUnder50pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,0,Warning
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,1,Fault
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,2,Error
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,3,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,3,N/A
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,4,0,SA_Mask,Not presently used.,8, , ,m,s,,-128.0..127.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,Baudrate,CAN baudrate,4, , ,m,s,,0,125K
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,Baudrate,CAN baudrate,4, , ,m,s,,1,250K
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,Baudrate,CAN baudrate,4, , ,m,s,,2,500K
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,Baudrate,CAN baudrate,4, , ,m,s,,3,1M
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,FreqLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,K1Open,Maximum time required for the K1 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,K2Close,Maximum time required for the K2 contactor to close.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,MX1Close,Maximum time required for the MX1 contactor to close.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,5,0,V50to88pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,FreqHi,"Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,FreqVeryLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,K1Close,Maximum time required for the K1 contactor to close.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,MX2Open,Maximum time required for the MX2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+CFFAA41xh,FRAME_CommandSetNVParam,None,spontanX,None,7,0,V110to120pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
+CFFAC41xh,FRAME_CommandPower,None,spontanX,None,1,0,RealPower command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,m,s,,-2147483648.0..2147483647.0
+CFFAC41xh,FRAME_CommandPower,None,spontanX,None,5,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,m,s,,-2147483648.0..2147483647.0
+CFFAE41xh,FRAME_CommandVF,None,spontanX,None,1,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFAE41xh,FRAME_CommandVF,None,spontanX,None,3,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,1,6,WriteSerialNumber,,2, , ,m,s,,0,Disable
+CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,1,6,WriteSerialNumber,,2, , ,m,s,,1,Enable
+CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,1,6,WriteSerialNumber,,2, , ,m,s,,2,Error
+CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,1,6,WriteSerialNumber,,2, , ,m,s,,3,N/A
+CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,3,0,FactoryAccess,,16, , ,m,s,,-32768.0..32767.0
+CFFAF41xh,FRAME_CommandFactoryControl,None,spontanX,None,5,0,SerialNumber,,32, , ,m,s,,-2147483648.0..2147483647.0
+CFFC2F7xh,FRAME_StatusACParameters,None,spontanX,None,1,0,VoltageAC_measured,Measured RMS AC voltage.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFC2F7xh,FRAME_StatusACParameters,None,spontanX,None,3,0,CurrentAC_measured,Measured RMS AC current.,16, , ,m,s,,-32768.0..32767.0
+CFFC2F7xh,FRAME_StatusACParameters,None,spontanX,None,5,0,Frequency_measured,Measured frequency.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,s,,0,Normal
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,s,,1,Clear Faults
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,s,,0,Disable
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,s,,1,Enable
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,0,"Power On Reset, and a quoted comma"
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,1,Ready
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,2,Following
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,3,Fault
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,4,Forming
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,5,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,6,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,7,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,8,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,9,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,10,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,11,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,12,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,13,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,14,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,1,4,State_status,Active control mode.,4, , ,m,s,,15,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,s,,0,Disabled
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,s,,1,Enabled
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,s,,0,None
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,s,,1,Available
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,s,,0,None
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,s,,1,Available
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,s,,0,Not Active
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,s,,1,Active
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,s,,0,Open
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,s,,1,Closed
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,s,,0,Open
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,s,,1,Closed
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,s,,0,Open
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,s,,1,Closed
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,s,,0,Open
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,s,,1,Closed
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,s,,0,Normal
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,s,,1,Warning
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,s,,3,ErrorPassive
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,s,,4,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,0,Invalid
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,1,Valid
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,0,Invalid
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,1,Valid
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,0,Invalid
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,1,Valid
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,s,,0,No_Voltage
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,s,,1,Voltage_Detected
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,s,,0,Negative
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,s,,1,Positive
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,s,,0,Normal - Three Phase Mode
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,s,,1,Enable Split Phase Mode
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,s,,0,Disable
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,s,,1,Enable
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,s,,0,Negative
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,s,,1,Positive
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,s,,2,Error
+CFFC3F7xh,FRAME_StatusBits,None,spontanX,None,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,5,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,0,Warning
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,5,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,1,Fault
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,5,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,5,6,ThermalOverload,Configures action to take when thermal overload input is active.,2, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,1,FLT_A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,2,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,3,FLT_C
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,4,OverVoltage
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,5,FLT_B
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,6,Overcurrent
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,7,5V
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,1,Fault Active
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,2,Error
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,s,,3,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,0,Normal
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,1,FLT_A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,2,N/A
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,3,FLT_C
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,4,OverVoltage
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,5,FLT_B
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,6,Overcurrent
+CFFC8F7xh,FRAME_StatusFaults,None,spontanX,None,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,s,,7,5V
+CFFCAF6xh,FRAME_MasterMeasuredPower,None,spontanX,None,1,0,RealPower_measured,Measured real power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
+CFFCAF6xh,FRAME_MasterMeasuredPower,None,spontanX,None,5,0,ReactivePower_measured,Measured reactive power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
+CFFCAF7xh,FRAME_StatusMeasuredPower,None,spontanX,None,1,0,RealPower_measured,Measured real power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
+CFFCAF7xh,FRAME_StatusMeasuredPower,None,spontanX,None,5,0,ReactivePower_measured,Measured reactive power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
+18FFC4F7xh,FRAME_StatusCommandedPower,None,spontanX,None,1,0,RealPower_echo,Echoed real power command.,32, , ,m,s,,-2147483648.0..2147483647.0
+18FFC4F7xh,FRAME_StatusCommandedPower,None,spontanX,None,5,0,ReactivePower_echo,Echoed reactive power command.,32, , ,m,s,,-2147483648.0..2147483647.0
+18FFC9F7xh,FRAME_StatusCommandVF,None,spontanX,None,1,0,Voltage_echo,Echoed voltage command,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+18FFC9F7xh,FRAME_StatusCommandVF,None,spontanX,None,3,0,Frequency_echo,Echoed frequency command.,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+18FFCBF7xh,FRAME_StatusTemps,None,spontanX,None,1,0,TempInlet_measured,Coolant inlet temperature,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+18FFCBF7xh,FRAME_StatusTemps,None,spontanX,None,3,0,TempInternal_measured,Internal ambient temperature,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+18FFCBF7xh,FRAME_StatusTemps,None,spontanX,None,5,0,ConverterLosses,Power converter thermal loss,16, , ,m,s,,-32768.0..32767.0
+18FFD0F7xh,FRAME_StatusLineCurrents,None,spontanX,None,1,0,L1Current_measured,Measured L1 RMS line current.,16, , ,m,s,,-32768.0..32767.0
+18FFD0F7xh,FRAME_StatusLineCurrents,None,spontanX,None,3,0,L2Current_measured,Measured L2 RMS line current.,16, , ,m,s,,-32768.0..32767.0
+18FFD0F7xh,FRAME_StatusLineCurrents,None,spontanX,None,5,0,L3Current_measured,Measured L3 RMS line current.,16, , ,m,s,,-32768.0..32767.0
+18FFD1F7xh,FRAME_StatusLineVoltages,None,spontanX,None,1,0,L1Voltage_measured,Measured L1 RMS line-neutral voltage,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+18FFD1F7xh,FRAME_StatusLineVoltages,None,spontanX,None,3,0,L2Voltage_measured,Measured L2 RMS line-neutral voltage,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+18FFD1F7xh,FRAME_StatusLineVoltages,None,spontanX,None,5,0,L3Voltage_measured,Measured L3 RMS line-neutral voltage,16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,0,ActParam0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,1,ActLVM_ClearingTimes1
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,2,ActLVM_ClearingTimes2
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,3,ActLFM_Limits
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,4,ActLFM_ClearingTimes
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,5,StatusJ1939_Interface
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,6,StatusFault_Config
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,7,StatusContactorDelays1
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,8,StatusContactorDelays2
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,1,0,StatusNVParam_MUX,,16, , ,m,s,,9,StatusContactorDelays3
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,Dummy,,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,FreqHi,"Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,FreqVeryLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,StatusK2Open,Maximum time required for the K2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,StatusMX1Open,Maximum time required for the MX1 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,StatusMX2Close,Maximum time required for the MX2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,StatusNodeID,J1939 Source Address node for the module,8, , ,m,s,,-128.0..127.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,VOver120,Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,0,VUnder50pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,6,StatusThermalOverload,Configured action to take when thermal overload input is active.,2, , ,m,s,,0,Warning
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,6,StatusThermalOverload,Configured action to take when thermal overload input is active.,2, , ,m,s,,1,Fault
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,6,StatusThermalOverload,Configured action to take when thermal overload input is active.,2, , ,m,s,,2,Error
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,3,6,StatusThermalOverload,Configured action to take when thermal overload input is active.,2, , ,m,s,,3,N/A
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,4,0,StatusSA_Mask,Mask used to configure from which master source addresses to accept commands.,8, , ,m,s,,-128.0..127.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,FreqLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusBaudrate,,4, , ,m,s,,0,125K
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusBaudrate,,4, , ,m,s,,1,250K
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusBaudrate,,4, , ,m,s,,2,500K
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusBaudrate,,4, , ,m,s,,3,1M
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusK1Open,Maximum time required for the K1 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusK2Close,Maximum time required for the K2 contactor to close.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,StatusMX1Close,Maximum time required for the MX1 contactor to close.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,5,0,V50to88pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,FreqHi,"Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,FreqVeryLo,"Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,s,0.1 -,-3276.8..3276.7000000000003
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,StatusK1Close,Maximum time required for the K1 contactor to close.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,StatusMX2Open,Maximum time required for the MX2 contactor to open.,16, , ,m,s,,-32768.0..32767.0
+1CFFA9F7xh,FRAME_StatusNVParam,None,spontanX,None,7,0,V110to120pct,Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,s,,-32768.0..32767.0
+1CFFABC0xh,FRAME_stringAndOther,None,spontanX,None,1,0,RealPower_measured,Measured real power of master unit.,32, , ,m,s,,-2147483648.0..2147483647.0
+1CFFC1F7xh,FRAME_softwareRev,None,spontanX,None,1,0,ControlSwRev,Software revision of the control firmware.,16, , ,m,s,0.01 -,-327.68..327.67
+1CFFC1F7xh,FRAME_softwareRev,None,spontanX,None,3,0,InterfaceRev,Software revision of the CAN communication interface.,16, , ,m,s,0.01 -,-327.68..327.67
+1CFFC1F7xh,FRAME_softwareRev,None,spontanX,None,5,0,BuildTime,Build timestamp.,32, , ,m,s,,-2147483648.0..2147483647.0
+1CFFC5F7xh,FRAME_StatusControlVoltage,None,spontanX,None,1,0,v5p0_Supply,Present voltage of the control board 5V power suppy.,16, , ,m,s,0.01 -,-327.68..327.67
+1CFFC5F7xh,FRAME_StatusControlVoltage,None,spontanX,None,3,0,v3p3_Supply,Present voltage of the control board 3.3V power supply.,16, , ,m,s,0.01 -,-327.68..327.67
+1CFFC5F7xh,FRAME_StatusControlVoltage,None,spontanX,None,5,0,v24_Supply,Present voltage of the control board 24V power supply.,16, , ,m,s,0.01 -,-327.68..327.67
+1CFFC5F7xh,FRAME_StatusControlVoltage,None,spontanX,None,7,0,v15_Supply,Present voltage of the control board 15V power supply.,16, , ,m,s,0.01 -,-327.68..327.67
+1CFFC6F7xh,FRAME_StatusControlVolts2,None,spontanX,None,1,0,n15V_Supply,Present voltage of the control board -15V power supply.,16, , ,m,s,0.01 -,-327.68..327.67
+1CFFC6F7xh,FRAME_StatusControlVolts2,None,spontanX,None,5,0,DiodeTemperature,Hottest diode,16, , ,m,s,,-32768.0..32767.0
+1CFFC6F7xh,FRAME_StatusControlVolts2,None,spontanX,None,7,0,IGBTTemperature,Hottest IGBT,16, , ,m,s,,-32768.0..32767.0
+1CFFC7F7xh,FRAME_StatusDCParameters,None,spontanX,None,1,0,VoltageDCInput_measured,Estimated DC input voltage.,16, , ,m,s,,-32768.0..32767.0
+1CFFC7F7xh,FRAME_StatusDCParameters,None,spontanX,None,3,0,VoltageDCBus,Measured DC bus voltage.,16, , ,m,s,,-32768.0..32767.0
+1CFFC7F7xh,FRAME_StatusDCParameters,None,spontanX,None,5,0,CurrentDC_measured,Measured DC current.,16, , ,m,s,,-32768.0..32767.0
+1CFFCCF7xh,FRAME_serialNumber,None,spontanX,None,1,0,SerialNumber,,32, , ,m,s,,-2147483648.0..2147483647.0
+1CFFCDF7xh,FRAME_softwareRevHash,None,spontanX,None,1,0,Hash,Unique revision identification hashcode.,28, , ,m,s,,-134217728.0..134217727.0
diff --git a/test/reference/from_arxml/test_CAN.dbc b/tests/reference/from_arxml/test_CAN.dbc
similarity index 100%
rename from test/reference/from_arxml/test_CAN.dbc
rename to tests/reference/from_arxml/test_CAN.dbc
diff --git a/test/reference/from_arxml/test_CAN.dbf b/tests/reference/from_arxml/test_CAN.dbf
similarity index 100%
rename from test/reference/from_arxml/test_CAN.dbf
rename to tests/reference/from_arxml/test_CAN.dbf
diff --git a/test/reference/from_arxml/test_CAN.json b/tests/reference/from_arxml/test_CAN.json
similarity index 100%
rename from test/reference/from_arxml/test_CAN.json
rename to tests/reference/from_arxml/test_CAN.json
diff --git a/test/reference/from_arxml/test_CAN.sym b/tests/reference/from_arxml/test_CAN.sym
similarity index 100%
rename from test/reference/from_arxml/test_CAN.sym
rename to tests/reference/from_arxml/test_CAN.sym
diff --git a/test/reference/from_arxml/test_CAN.xls b/tests/reference/from_arxml/test_CAN.xls
similarity index 100%
rename from test/reference/from_arxml/test_CAN.xls
rename to tests/reference/from_arxml/test_CAN.xls
diff --git a/test/reference/from_arxml/test_CAN.xlsx b/tests/reference/from_arxml/test_CAN.xlsx
similarity index 100%
rename from test/reference/from_arxml/test_CAN.xlsx
rename to tests/reference/from_arxml/test_CAN.xlsx
diff --git a/test/reference/from_arxml/test_CAN.xml b/tests/reference/from_arxml/test_CAN.xml
similarity index 100%
rename from test/reference/from_arxml/test_CAN.xml
rename to tests/reference/from_arxml/test_CAN.xml
diff --git a/test/reference/from_arxml/test_CAN.yaml b/tests/reference/from_arxml/test_CAN.yaml
similarity index 100%
rename from test/reference/from_arxml/test_CAN.yaml
rename to tests/reference/from_arxml/test_CAN.yaml
diff --git a/test/reference/from_dbc/test.arxml b/tests/reference/from_dbc/test.arxml
similarity index 100%
rename from test/reference/from_dbc/test.arxml
rename to tests/reference/from_dbc/test.arxml
diff --git a/test/reference/from_dbc/test.csv b/tests/reference/from_dbc/test.csv
similarity index 99%
rename from test/reference/from_dbc/test.csv
rename to tests/reference/from_dbc/test.csv
index ab6554017916c2c3dba739dc7595962d44c5978f..dae061481fe31bb4d4235544295318e3e41de4e2 100644
--- a/test/reference/from_dbc/test.csv
+++ b/tests/reference/from_dbc/test.csv
@@ -1,7 +1,7 @@
-ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,testBU,recBU,Name / Phys. Range,Function / Increment Unit,Value
+ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,testBU,recBU,Name / Phys. Range,Function / Increment Unit,Value
 123h,testFrame1,100,,,1,4,someTestSignal,"Multi
 Line
-Signal comment with a-umlaut: ä",11, , ,m,u,s,r,5  specialCharUnit°$,0.0..500.0
-123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,1,one
-123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,2,two
-123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,3,three
+Signal comment with a-umlaut: ä",11, , ,m,u,s,r,5  specialCharUnit°$,0.0..500.0
+123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,1,one
+123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,2,two
+123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,3,three
diff --git a/test/reference/from_dbc/test.dbf b/tests/reference/from_dbc/test.dbf
similarity index 100%
rename from test/reference/from_dbc/test.dbf
rename to tests/reference/from_dbc/test.dbf
diff --git a/test/reference/from_dbc/test.json b/tests/reference/from_dbc/test.json
similarity index 100%
rename from test/reference/from_dbc/test.json
rename to tests/reference/from_dbc/test.json
diff --git a/test/reference/from_dbc/test.kcd b/tests/reference/from_dbc/test.kcd
similarity index 100%
rename from test/reference/from_dbc/test.kcd
rename to tests/reference/from_dbc/test.kcd
diff --git a/test/reference/from_dbc/test.sym b/tests/reference/from_dbc/test.sym
similarity index 100%
rename from test/reference/from_dbc/test.sym
rename to tests/reference/from_dbc/test.sym
diff --git a/test/reference/from_dbc/test.xls b/tests/reference/from_dbc/test.xls
similarity index 100%
rename from test/reference/from_dbc/test.xls
rename to tests/reference/from_dbc/test.xls
diff --git a/test/reference/from_dbc/test.xlsx b/tests/reference/from_dbc/test.xlsx
similarity index 100%
rename from test/reference/from_dbc/test.xlsx
rename to tests/reference/from_dbc/test.xlsx
diff --git a/test/reference/from_dbc/test.xml b/tests/reference/from_dbc/test.xml
similarity index 100%
rename from test/reference/from_dbc/test.xml
rename to tests/reference/from_dbc/test.xml
diff --git a/test/reference/from_dbc/test.yaml b/tests/reference/from_dbc/test.yaml
similarity index 100%
rename from test/reference/from_dbc/test.yaml
rename to tests/reference/from_dbc/test.yaml
diff --git a/test/reference/from_dbf/test.arxml b/tests/reference/from_dbf/test.arxml
similarity index 100%
rename from test/reference/from_dbf/test.arxml
rename to tests/reference/from_dbf/test.arxml
diff --git a/test/reference/from_dbf/test.csv b/tests/reference/from_dbf/test.csv
similarity index 99%
rename from test/reference/from_dbf/test.csv
rename to tests/reference/from_dbf/test.csv
index f83ed37ab77b2ac3ec04cb252fa41446ebbf1c50..ba6b137022e2dbc1479e7012dd5196f2be3c542a 100644
--- a/test/reference/from_dbf/test.csv
+++ b/tests/reference/from_dbf/test.csv
@@ -1,5 +1,5 @@
-ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,testBU,recBU,Name / Phys. Range,Function / Increment Unit,Value
-123h,testFrame1,100,,,1,4,someTestSignal,Multi  Line  Signal comment with a-umlaut: ä,11, , ,m,u,s,r,5  specialCharUnit°$,0.0..500.0
-123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,1,one
-123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,2,two
-123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,3,three
+ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,testBU,recBU,Name / Phys. Range,Function / Increment Unit,Value
+123h,testFrame1,100,,,1,4,someTestSignal,Multi  Line  Signal comment with a-umlaut: ä,11, , ,m,u,s,r,5  specialCharUnit°$,0.0..500.0
+123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,1,one
+123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,2,two
+123h,testFrame1,100,,,3,4,Signal,,3, , ,i,u,s,r,someUnit,3,three
diff --git a/test/reference/from_dbf/test.dbc b/tests/reference/from_dbf/test.dbc
similarity index 100%
rename from test/reference/from_dbf/test.dbc
rename to tests/reference/from_dbf/test.dbc
diff --git a/test/reference/from_dbf/test.json b/tests/reference/from_dbf/test.json
similarity index 100%
rename from test/reference/from_dbf/test.json
rename to tests/reference/from_dbf/test.json
diff --git a/test/reference/from_dbf/test.kcd b/tests/reference/from_dbf/test.kcd
similarity index 100%
rename from test/reference/from_dbf/test.kcd
rename to tests/reference/from_dbf/test.kcd
diff --git a/test/reference/from_dbf/test.sym b/tests/reference/from_dbf/test.sym
similarity index 100%
rename from test/reference/from_dbf/test.sym
rename to tests/reference/from_dbf/test.sym
diff --git a/test/reference/from_dbf/test.xls b/tests/reference/from_dbf/test.xls
similarity index 100%
rename from test/reference/from_dbf/test.xls
rename to tests/reference/from_dbf/test.xls
diff --git a/test/reference/from_dbf/test.xlsx b/tests/reference/from_dbf/test.xlsx
similarity index 100%
rename from test/reference/from_dbf/test.xlsx
rename to tests/reference/from_dbf/test.xlsx
diff --git a/test/reference/from_dbf/test.xml b/tests/reference/from_dbf/test.xml
similarity index 100%
rename from test/reference/from_dbf/test.xml
rename to tests/reference/from_dbf/test.xml
diff --git a/test/reference/from_dbf/test.yaml b/tests/reference/from_dbf/test.yaml
similarity index 100%
rename from test/reference/from_dbf/test.yaml
rename to tests/reference/from_dbf/test.yaml
diff --git a/test/reference/from_json/test.arxml b/tests/reference/from_json/test.arxml
similarity index 100%
rename from test/reference/from_json/test.arxml
rename to tests/reference/from_json/test.arxml
diff --git a/test/reference/from_json/test.csv b/tests/reference/from_json/test.csv
similarity index 99%
rename from test/reference/from_json/test.csv
rename to tests/reference/from_json/test.csv
index 55219fb1b2dc796a821e0a372a42c247a73d7c6c..3cdfa208184556e7258f06270a9bfd0ce10c95ac 100644
--- a/test/reference/from_json/test.csv
+++ b/tests/reference/from_json/test.csv
@@ -1,3 +1,3 @@
-ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
-123h,testFrame1,,,1,4,someTestSignal,,11, , ,m,u,5  specialCharUnit°$,1.0..10236.0
-123h,testFrame1,,,3,4,Signal,,3, , ,i,u,someUnit,0.0..7.0
+ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
+123h,testFrame1,,,1,4,someTestSignal,,11, , ,m,u,5  specialCharUnit°$,1.0..10236.0
+123h,testFrame1,,,3,4,Signal,,3, , ,i,u,someUnit,0.0..7.0
diff --git a/test/reference/from_json/test.dbc b/tests/reference/from_json/test.dbc
similarity index 100%
rename from test/reference/from_json/test.dbc
rename to tests/reference/from_json/test.dbc
diff --git a/test/reference/from_json/test.dbf b/tests/reference/from_json/test.dbf
similarity index 100%
rename from test/reference/from_json/test.dbf
rename to tests/reference/from_json/test.dbf
diff --git a/test/reference/from_json/test.kcd b/tests/reference/from_json/test.kcd
similarity index 100%
rename from test/reference/from_json/test.kcd
rename to tests/reference/from_json/test.kcd
diff --git a/test/reference/from_json/test.sym b/tests/reference/from_json/test.sym
similarity index 100%
rename from test/reference/from_json/test.sym
rename to tests/reference/from_json/test.sym
diff --git a/test/reference/from_json/test.xls b/tests/reference/from_json/test.xls
similarity index 100%
rename from test/reference/from_json/test.xls
rename to tests/reference/from_json/test.xls
diff --git a/test/reference/from_json/test.xlsx b/tests/reference/from_json/test.xlsx
similarity index 100%
rename from test/reference/from_json/test.xlsx
rename to tests/reference/from_json/test.xlsx
diff --git a/test/reference/from_json/test.xml b/tests/reference/from_json/test.xml
similarity index 100%
rename from test/reference/from_json/test.xml
rename to tests/reference/from_json/test.xml
diff --git a/test/reference/from_json/test.yaml b/tests/reference/from_json/test.yaml
similarity index 100%
rename from test/reference/from_json/test.yaml
rename to tests/reference/from_json/test.yaml
diff --git a/test/reference/from_kcd/test.arxml b/tests/reference/from_kcd/test.arxml
similarity index 100%
rename from test/reference/from_kcd/test.arxml
rename to tests/reference/from_kcd/test.arxml
diff --git a/test/reference/from_kcd/test_test.kcd.csv b/tests/reference/from_kcd/test_test.kcd.csv
similarity index 99%
rename from test/reference/from_kcd/test_test.kcd.csv
rename to tests/reference/from_kcd/test_test.kcd.csv
index ad49c8d52c504c860b521ba67e3325c2cfeb56dc..389509b2b60d3ed80da0f735050fc4fe8ca3397b 100644
--- a/test/reference/from_kcd/test_test.kcd.csv
+++ b/tests/reference/from_kcd/test_test.kcd.csv
@@ -1,390 +1,390 @@
-ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
-FF9B41xh,CommandModeControlAPU2,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,0,Disable
-FF9B41xh,CommandModeControlAPU2,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,1,Enable
-FF9B41xh,CommandModeControlAPU2,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,1,Clear Faults
-FF9B41xh,CommandModeControlAPU2,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,0,Master
-FF9B41xh,CommandModeControlAPU2,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,1,Follower
-FF9B41xh,CommandModeControlAPU2,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
-FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
-FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
-FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
-FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,0,No invert
-FF9B41xh,CommandModeControlAPU2,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,1,Invert
-FF9B41xh,CommandModeControlAPU2,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,0,Disable
-FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,1,Enable
-FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,0,Normal - Three Phase Mode
-FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,1,Enable Split Phase Mode
-FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,i,u,,0,Negative
-FF9B41xh,CommandModeControlAPU2,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,i,u,,1,Positive
-FF9B41xh,CommandModeControlAPU2,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,i,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,0,Disable
-FFAB41xh,CommandModeControl,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,1,Enable
-FFAB41xh,CommandModeControl,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,1,Clear Faults
-FFAB41xh,CommandModeControl,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,0,Master
-FFAB41xh,CommandModeControl,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,1,Follower
-FFAB41xh,CommandModeControl,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
-FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
-FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
-FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
-FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,0,No invert
-FFAB41xh,CommandModeControl,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,1,Invert
-FFAB41xh,CommandModeControl,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,0,Disable
-FFAB41xh,CommandModeControl,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,1,Enable
-FFAB41xh,CommandModeControl,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,0,Normal - Three Phase Mode
-FFAB41xh,CommandModeControl,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,1,Enable Split Phase Mode
-FFAB41xh,CommandModeControl,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,i,u,,0,Negative
-FFAB41xh,CommandModeControl,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,i,u,,1,Positive
-FFAB41xh,CommandModeControl,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,i,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,i,u,,3,N/A
-CFF9C41xh,CommandPowerAPU2,None,,,4,0,RealPower_command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,i,s,W,-90000.0..90000.0
-CFF9C41xh,CommandPowerAPU2,None,,,8,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,i,s,VA,-90000.0..90000.0
-CFF9E41xh,CommandVFAPU2,None,,,2,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,i,u,0.1  Vrms,10.0..500.0
-CFF9E41xh,CommandVFAPU2,None,,,4,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,i,u,0.1  Hz,45.0..65.0
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,0,Param0
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,1,LVM_ClearingTimes1
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,2,LVM_ClearingTimes2
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,3,LFM_Limits
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,4,LFM_ClearingTimes
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,5,J1939_Interface
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,6,Fault_Config
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,7,ContactorDelays1
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,8,ContactorDelays2
-CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,10,ContactorDelays3
-CFFAA41xh,CommandSetNVParam,None,,,3,0,NodeID,Mode 5:J1939 Source Address node for the module.,8, , ,i,u,,0.0..247.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,i,u,,0,Warning
-CFFAA41xh,CommandSetNVParam,None,,,3,0,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,i,u,,1,Fault
-CFFAA41xh,CommandSetNVParam,None,,,3,0,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,i,u,,2,Error
-CFFAA41xh,CommandSetNVParam,None,,,3,0,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,i,u,,3,N/A
-CFFAA41xh,CommandSetNVParam,None,,,4,0,Dummy,Mode 0:,16, , ,i,u,,0.0..65535.0
-CFFAA41xh,CommandSetNVParam,None,,,4,0,FreqHi,"Mode 3:Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,i,u,0.1  Hz,40.0..70.0
-CFFAA41xh,CommandSetNVParam,None,,,4,0,FreqVeryLo,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains below the value specified in FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,i,u,ms,160.0..160.0
-CFFAA41xh,CommandSetNVParam,None,,,4,0,K2Open,Mode 10:Maximum time required for the K2 contactor to open.,16, , ,i,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,4,0,MX1Open,Mode 7:Maximum time required for the MX1 contactor to open.,16, , ,i,u,ms,0.0..5000.0
-CFFAA41xh,CommandSetNVParam,None,,,4,0,MX2Close,Mode 8:Maximum time required for the MX2 contactor to open.,16, , ,i,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,4,0,SA_Mask,Mode 5:Not presently used.,8, , ,i,u,,0.0..255.0
-CFFAA41xh,CommandSetNVParam,None,,,4,0,VOver120,Mode 2:Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,i,u,,1.0..30000.0
-CFFAA41xh,CommandSetNVParam,None,,,4,0,VUnder50pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,i,u,ms,1.0..30000.0
-CFFAA41xh,CommandSetNVParam,None,,,5,4,Baudrate,Mode 5:CAN baudrate,4, , ,i,u,,0,125K
-CFFAA41xh,CommandSetNVParam,None,,,5,4,Baudrate,Mode 5:CAN baudrate,4, , ,i,u,,1,250K
-CFFAA41xh,CommandSetNVParam,None,,,5,4,Baudrate,Mode 5:CAN baudrate,4, , ,i,u,,2,500K
-CFFAA41xh,CommandSetNVParam,None,,,5,4,Baudrate,Mode 5:CAN baudrate,4, , ,i,u,,3,1M
-CFFAA41xh,CommandSetNVParam,None,,,6,0,FreqLo,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains between the value specified in FreqLo and FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,i,u,ms,1.0..30000.0
-CFFAA41xh,CommandSetNVParam,None,,,6,0,K1Open,Mode 8:Maximum time required for the K1 contactor to open.,16, , ,i,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,6,0,K2Close,Mode 10:Maximum time required for the K2 contactor to close.,16, , ,i,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,6,0,MX1Close,Mode 7:Maximum time required for the MX1 contactor to close.,16, , ,i,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,6,0,V50to88pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,i,u,ms,1.0..30000.0
-CFFAA41xh,CommandSetNVParam,None,,,8,0,FreqHi,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains above the value specified in FreqHi of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,i,u,ms,160.0..160.0
-CFFAA41xh,CommandSetNVParam,None,,,8,0,FreqVeryLo,"Mode 3:Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,i,u,0.1  Hz,40.0..70.0
-CFFAA41xh,CommandSetNVParam,None,,,8,0,K1Close,Mode 8:Maximum time required for the K1 contactor to close.,16, , ,i,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,8,0,MX2Open,Mode 7:Maximum time required for the MX2 contactor to open.,16, , ,i,u,ms,0.0..65535.0
-CFFAA41xh,CommandSetNVParam,None,,,8,0,V110to120pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,i,u,ms,1.0..30000.0
-CFFAC41xh,CommandPower,None,,,4,0,RealPower command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,i,s,W,-90000.0..90000.0
-CFFAC41xh,CommandPower,None,,,8,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,i,s,VA,-90000.0..90000.0
-CFFAE41xh,CommandVF,None,,,2,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,i,u,0.1  Vrms,10.0..500.0
-CFFAE41xh,CommandVF,None,,,4,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,i,u,0.1  Hz,45.0..65.0
-CFFAF41xh,CommandFactoryControl,None,,,1,0,WriteSerialNumber,,2, , ,i,u,,0,Disable
-CFFAF41xh,CommandFactoryControl,None,,,1,0,WriteSerialNumber,,2, , ,i,u,,1,Enable
-CFFAF41xh,CommandFactoryControl,None,,,1,0,WriteSerialNumber,,2, , ,i,u,,2,Error
-CFFAF41xh,CommandFactoryControl,None,,,1,0,WriteSerialNumber,,2, , ,i,u,,3,N/A
-CFFAF41xh,CommandFactoryControl,None,,,4,0,FactoryAccess,,16, , ,i,u,,0.0..65535.0
-CFFAF41xh,CommandFactoryControl,None,,,8,0,SerialNumber,,32, , ,i,u,,0.0..4294967295.0
-CFFC2F7xh,StatusACParameters,100,,,2,0,VoltageAC_measured,Measured RMS AC voltage.,16, , ,i,s,0.1  V,-3276.8..3276.7000000000003
-CFFC2F7xh,StatusACParameters,100,,,4,0,CurrentAC_measured,Measured RMS AC current.,16, , ,i,s,A,-32768.0..32767.0
-CFFC2F7xh,StatusACParameters,100,,,6,0,Frequency_measured,Measured frequency.,16, , ,i,s,0.1  Hz,-3276.8..3276.7000000000003
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,0,"Power On Reset, and a quoted comma"
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,1,Ready
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,2,Following
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,3,Fault
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,4,Forming
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,5,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,6,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,7,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,8,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,9,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,10,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,11,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,12,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,13,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,14,N/A
-CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,15,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,i,u,,0,Disable
-CFFC3F7xh,StatusBits,100,,,1,4,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,i,u,,1,Enable
-CFFC3F7xh,StatusBits,100,,,1,4,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,1,4,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,1,6,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,i,u,,0,Normal
-CFFC3F7xh,StatusBits,100,,,1,6,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,i,u,,1,Clear Faults
-CFFC3F7xh,StatusBits,100,,,1,6,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,1,6,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,2,0,HardwareEnable_status,Status of the hardware enable.,2, , ,i,u,,0,Not Active
-CFFC3F7xh,StatusBits,100,,,2,0,HardwareEnable_status,Status of the hardware enable.,2, , ,i,u,,1,Active
-CFFC3F7xh,StatusBits,100,,,2,0,HardwareEnable_status,Status of the hardware enable.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,2,0,HardwareEnable_status,Status of the hardware enable.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,i,u,,0,None
-CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,i,u,,1,Available
-CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,i,u,,0,None
-CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,i,u,,1,Available
-CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,2,6,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,i,u,,0,Disabled
-CFFC3F7xh,StatusBits,100,,,2,6,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,i,u,,1,Enabled
-CFFC3F7xh,StatusBits,100,,,2,6,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,2,6,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,3,0,MX1Permissive_status,MX1 relay status,2, , ,i,u,,0,Open
-CFFC3F7xh,StatusBits,100,,,3,0,MX1Permissive_status,MX1 relay status,2, , ,i,u,,1,Closed
-CFFC3F7xh,StatusBits,100,,,3,0,MX1Permissive_status,MX1 relay status,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,3,0,MX1Permissive_status,MX1 relay status,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,3,2,MX2Permissive_status,MX2 relay status,2, , ,i,u,,0,Open
-CFFC3F7xh,StatusBits,100,,,3,2,MX2Permissive_status,MX2 relay status,2, , ,i,u,,1,Closed
-CFFC3F7xh,StatusBits,100,,,3,2,MX2Permissive_status,MX2 relay status,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,3,2,MX2Permissive_status,MX2 relay status,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,3,4,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,i,u,,0,Open
-CFFC3F7xh,StatusBits,100,,,3,4,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,i,u,,1,Closed
-CFFC3F7xh,StatusBits,100,,,3,4,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,3,4,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,3,6,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,i,u,,0,Open
-CFFC3F7xh,StatusBits,100,,,3,6,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,i,u,,1,Closed
-CFFC3F7xh,StatusBits,100,,,3,6,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,3,6,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,4,0,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,0,Invalid
-CFFC3F7xh,StatusBits,100,,,4,0,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,1,Valid
-CFFC3F7xh,StatusBits,100,,,4,0,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,4,0,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,4,2,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,0,Invalid
-CFFC3F7xh,StatusBits,100,,,4,2,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,1,Valid
-CFFC3F7xh,StatusBits,100,,,4,2,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,4,2,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,4,4,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,0,Invalid
-CFFC3F7xh,StatusBits,100,,,4,4,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,1,Valid
-CFFC3F7xh,StatusBits,100,,,4,4,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,4,4,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,4,6,CANbus_status,Operational status of the CAN bus driver.,2, , ,i,u,,0,Normal
-CFFC3F7xh,StatusBits,100,,,4,6,CANbus_status,Operational status of the CAN bus driver.,2, , ,i,u,,1,Warning
-CFFC3F7xh,StatusBits,100,,,4,6,CANbus_status,Operational status of the CAN bus driver.,2, , ,i,u,,3,ErrorPassive
-CFFC3F7xh,StatusBits,100,,,4,6,CANbus_status,Operational status of the CAN bus driver.,2, , ,i,u,,4,N/A
-CFFC3F7xh,StatusBits,100,,,5,0,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,i,u,,0,Disable
-CFFC3F7xh,StatusBits,100,,,5,0,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,i,u,,1,Enable
-CFFC3F7xh,StatusBits,100,,,5,0,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,5,0,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,5,2,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,i,u,,0,Normal - Three Phase Mode
-CFFC3F7xh,StatusBits,100,,,5,2,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,i,u,,1,Enable Split Phase Mode
-CFFC3F7xh,StatusBits,100,,,5,2,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,5,2,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,5,4,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,i,u,,0,Negative
-CFFC3F7xh,StatusBits,100,,,5,4,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,i,u,,1,Positive
-CFFC3F7xh,StatusBits,100,,,5,4,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,5,4,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,5,6,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,i,u,,0,No_Voltage
-CFFC3F7xh,StatusBits,100,,,5,6,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,i,u,,1,Voltage_Detected
-CFFC3F7xh,StatusBits,100,,,5,6,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,5,6,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,i,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,6,0,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,i,u,,0,Negative
-CFFC3F7xh,StatusBits,100,,,6,0,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,i,u,,1,Positive
-CFFC3F7xh,StatusBits,100,,,6,0,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,i,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,6,0,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,1,0,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,1,0,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,1,0,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,1,0,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,1,2,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,1,2,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,1,2,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,1,2,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,1,4,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,1,4,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,1,4,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,1,4,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,1,6,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,1,6,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,1,6,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,1,6,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,2,0,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,2,0,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,2,0,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,2,0,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,2,2,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,2,2,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,2,2,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,2,2,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,2,4,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,2,4,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,2,4,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,2,4,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,2,6,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,2,6,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,2,6,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,2,6,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,3,0,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,3,0,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,3,0,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,3,0,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,3,4,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,3,4,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,3,4,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,3,4,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,4,0,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,4,0,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,4,0,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,4,0,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,4,2,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,4,2,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,4,2,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,4,2,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,4,4,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,4,4,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,4,4,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,4,4,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,4,6,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,4,6,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,4,6,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,4,6,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,5,0,ThermalOverload,,2, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,5,0,ThermalOverload,,2, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,5,0,ThermalOverload,,2, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,5,0,ThermalOverload,,2, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,1,FLT_A
-CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,2,N/A
-CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,3,FLT_C
-CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,4,OverVoltage
-CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,5,FLT_B
-CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,6,Overcurrent
-CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,7,5V
-CFFC8F7xh,StatusFaults,100,,,6,3,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,6,3,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,6,3,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,6,3,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,1,FLT_A
-CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,2,N/A
-CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,3,FLT_C
-CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,4,OverVoltage
-CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,5,FLT_B
-CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,6,Overcurrent
-CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,7,5V
-CFFC8F7xh,StatusFaults,100,,,8,3,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,8,3,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,8,3,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,8,3,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,3,N/A
-CFFCAF6xh,MasterMeasuredPower,None,,,4,0,RealPower_measured,Measured real power of master unit.,32, , ,i,s,W,-2147483648.0..2147483647.0
-CFFCAF6xh,MasterMeasuredPower,None,,,8,0,ReactivePower_measured,Measured reactive power of master unit.,32, , ,i,s,VA,-2147483648.0..2147483647.0
-CFFCAF7xh,StatusMeasuredPower,100,,,4,0,RealPower_measured,Measured real power.,32, , ,i,s,W,-2147483648.0..2147483647.0
-CFFCAF7xh,StatusMeasuredPower,100,,,8,0,ReactivePower_measured,Measured reactive power.,32, , ,i,s,VA,-2147483648.0..2147483647.0
-18FFC4F7xh,StatusCommandedPower,100,,,4,0,RealPower_echo,Echoed real power command.,32, , ,i,s,W,-2147483648.0..2147483647.0
-18FFC4F7xh,StatusCommandedPower,100,,,8,0,ReactivePower_echo,Echoed reactive power command.,32, , ,i,s,VA,-2147483648.0..2147483647.0
-18FFC9F7xh,StatusCommandVF,100,,,2,0,Voltage_echo,Echoed voltage command,16, , ,i,u,0.1  Vrms,0.0..6553.5
-18FFC9F7xh,StatusCommandVF,100,,,4,0,Frequency_echo,Echoed frequency command.,16, , ,i,u,0.1  Hz,0.0..6553.5
-18FFCBF7xh,StatusTemps,100,,,2,0,TempInlet_measured,Coolant inlet temperature,16, , ,i,s,0.1  C,-3276.8..3276.7000000000003
-18FFCBF7xh,StatusTemps,100,,,4,0,TempInternal_measured,Internal ambient temperature,16, , ,i,s,0.1  C,-3276.8..3276.7000000000003
-18FFCBF7xh,StatusTemps,100,,,6,0,ConverterLosses,Power converter thermal loss,16, , ,i,u,W,0.0..65535.0
-18FFD0F7xh,StatusLineCurrents,100,,,2,0,L1Current_measured,Measured L1 RMS line current.,16, , ,i,u,A,0.0..65535.0
-18FFD0F7xh,StatusLineCurrents,100,,,4,0,L2Current_measured,Measured L2 RMS line current.,16, , ,i,u,A,0.0..65535.0
-18FFD0F7xh,StatusLineCurrents,100,,,6,0,L3Current_measured,Measured L3 RMS line current.,16, , ,i,u,A,0.0..65535.0
-18FFD1F7xh,StatusLineVoltages,100,,,2,0,L1Voltage_measured,Measured L1 RMS line-neutral voltage,16, , ,i,u,0.1  Vrms,0.0..6553.5
-18FFD1F7xh,StatusLineVoltages,100,,,4,0,L2Voltage_measured,Measured L2 RMS line-neutral voltage,16, , ,i,u,0.1  Vrms,0.0..6553.5
-18FFD1F7xh,StatusLineVoltages,100,,,6,0,L3Voltage_measured,Measured L3 RMS line-neutral voltage,16, , ,i,u,0.1  Vrms,0.0..6553.5
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,0,ActParam0
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,1,ActLVM_ClearingTimes1
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,2,ActLVM_ClearingTimes2
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,3,ActLFM_Limits
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,4,ActLFM_ClearingTimes
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,5,StatusJ1939_Interface
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,6,StatusFault_Config
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,7,StatusContactorDelays1
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,8,StatusContactorDelays2
-1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,9,StatusContactorDelays3
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusNodeID,Mode 5:J1939 Source Address node for the module,8, , ,i,u,,0.0..247.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,i,u,,0,Warning
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,i,u,,1,Fault
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,i,u,,2,Error
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,i,u,,3,N/A
-1CFFA9F7xh,StatusNVParam,None,,,4,0,Dummy,Mode 0:,16, , ,i,u,,5.0..10.0
-1CFFA9F7xh,StatusNVParam,None,,,4,0,FreqHi,Mode 3:,16, , ,i,u,0.1  Hz,40.0..70.0
-1CFFA9F7xh,StatusNVParam,None,,,4,0,FreqVeryLo,Mode 4:,16, , ,i,u,ms,160.0..160.0
-1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusK2Open,Mode 9:Maximum time required for the K2 contactor to open.,16, , ,i,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusMX1Open,Mode 7:Maximum time required for the MX1 contactor to open.,16, , ,i,u,ms,0.0..5000.0
-1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusMX2Close,Mode 8:Maximum time required for the MX2 contactor to open.,16, , ,i,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusSA_Mask,Mode 5:Mask used to configure from which master source addresses to accept commands.,8, , ,i,u,,0.0..255.0
-1CFFA9F7xh,StatusNVParam,None,,,4,0,VOver120,Mode 2:,16, , ,i,u,,1.0..30000.0
-1CFFA9F7xh,StatusNVParam,None,,,4,0,VUnder50pct,Mode 1:,16, , ,i,u,ms,1.0..30000.0
-1CFFA9F7xh,StatusNVParam,None,,,5,4,StatusBaudrate,Mode 5:,4, , ,i,u,,0,125K
-1CFFA9F7xh,StatusNVParam,None,,,5,4,StatusBaudrate,Mode 5:,4, , ,i,u,,1,250K
-1CFFA9F7xh,StatusNVParam,None,,,5,4,StatusBaudrate,Mode 5:,4, , ,i,u,,2,500K
-1CFFA9F7xh,StatusNVParam,None,,,5,4,StatusBaudrate,Mode 5:,4, , ,i,u,,3,1M
-1CFFA9F7xh,StatusNVParam,None,,,6,0,FreqLo,Mode 4:,16, , ,i,u,ms,1.0..30000.0
-1CFFA9F7xh,StatusNVParam,None,,,6,0,StatusK1Open,Mode 8:Maximum time required for the K1 contactor to open.,16, , ,i,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,6,0,StatusK2Close,Mode 9:Maximum time required for the K2 contactor to close.,16, , ,i,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,6,0,StatusMX1Close,Mode 7:Maximum time required for the MX1 contactor to close.,16, , ,i,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,6,0,V50to88pct,Mode 1:,16, , ,i,u,ms,1.0..30000.0
-1CFFA9F7xh,StatusNVParam,None,,,8,0,FreqHi,Mode 4:,16, , ,i,u,ms,160.0..160.0
-1CFFA9F7xh,StatusNVParam,None,,,8,0,FreqVeryLo,Mode 3:,16, , ,i,u,0.1  Hz,40.0..70.0
-1CFFA9F7xh,StatusNVParam,None,,,8,0,StatusK1Close,Mode 8:Maximum time required for the K1 contactor to close.,16, , ,i,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,8,0,StatusMX2Open,Mode 7:Maximum time required for the MX2 contactor to open.,16, , ,i,u,ms,0.0..65535.0
-1CFFA9F7xh,StatusNVParam,None,,,8,0,V110to120pct,Mode 1:,16, , ,i,u,ms,1.0..30000.0
-1CFFC1F7xh,softwareRev,None,,,2,0,ControlSwRev,Software revision of the control firmware.,16, , ,i,u,0.01 -,0.0..655.35
-1CFFC1F7xh,softwareRev,None,,,4,0,InterfaceRev,Software revision of the CAN communication interface.,16, , ,i,u,0.01 -,0.0..655.35
-1CFFC1F7xh,softwareRev,None,,,8,0,BuildTime,Build timestamp.,32, , ,i,u,,0.0..4294967295.0
-1CFFC5F7xh,StatusControlVoltage,100,,,2,0,v5p0_Supply,Present voltage of the control board 5V power suppy.,16, , ,i,s,0.01  V,-327.68..327.67
-1CFFC5F7xh,StatusControlVoltage,100,,,4,0,v3p3_Supply,Present voltage of the control board 3.3V power supply.,16, , ,i,s,0.01  V,-327.68..327.67
-1CFFC5F7xh,StatusControlVoltage,100,,,6,0,v24_Supply,Present voltage of the control board 24V power supply.,16, , ,i,s,0.01  V,-327.68..327.67
-1CFFC5F7xh,StatusControlVoltage,100,,,8,0,v15_Supply,Present voltage of the control board 15V power supply.,16, , ,i,s,0.01  V,-327.68..327.67
-1CFFC6F7xh,StatusControlVolts2,100,,,2,0,n15V_Supply,Present voltage of the control board -15V power supply.,16, , ,i,s,0.01  V,-327.68..327.67
-1CFFC6F7xh,StatusControlVolts2,100,,,6,0,DiodeTemperature,Hottest diode,16, , ,i,u,C,0.0..65535.0
-1CFFC6F7xh,StatusControlVolts2,100,,,8,0,IGBTTemperature,Hottest IGBT,16, , ,i,u,C,0.0..65535.0
-1CFFC7F7xh,StatusDCParameters,100,,,2,0,VoltageDCInput_measured,Estimated DC input voltage.,16, , ,i,s,V,-32768.0..32767.0
-1CFFC7F7xh,StatusDCParameters,100,,,4,0,VoltageDCBus,Measured DC bus voltage.,16, , ,i,s,V,-32768.0..32767.0
-1CFFC7F7xh,StatusDCParameters,100,,,6,0,CurrentDC_measured,Measured DC current.,16, , ,i,s,A,-32768.0..32767.0
-1CFFCCF7xh,serialNumber,None,,,4,0,SerialNumber,Serial number of the power module.,32, , ,i,u,,0.0..4294967295.0
-1CFFCDF7xh,softwareRevHash,None,,,4,4,Hash,Unique revision identification hashcode.,28, , ,i,u,,0.0..268435455.0
+ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
+FF9B41xh,CommandModeControlAPU2,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,0,Disable
+FF9B41xh,CommandModeControlAPU2,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,1,Enable
+FF9B41xh,CommandModeControlAPU2,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,1,Clear Faults
+FF9B41xh,CommandModeControlAPU2,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,0,Master
+FF9B41xh,CommandModeControlAPU2,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,1,Follower
+FF9B41xh,CommandModeControlAPU2,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
+FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
+FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
+FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
+FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,0,No invert
+FF9B41xh,CommandModeControlAPU2,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,1,Invert
+FF9B41xh,CommandModeControlAPU2,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,0,Disable
+FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,1,Enable
+FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,0,Normal - Three Phase Mode
+FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,1,Enable Split Phase Mode
+FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,i,u,,0,Negative
+FF9B41xh,CommandModeControlAPU2,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,i,u,,1,Positive
+FF9B41xh,CommandModeControlAPU2,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,i,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,0,Disable
+FFAB41xh,CommandModeControl,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,1,Enable
+FFAB41xh,CommandModeControl,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,1,0,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,1,Clear Faults
+FFAB41xh,CommandModeControl,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,1,2,FaultClear_command,Clears the latched fault message.,2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,0,Master
+FFAB41xh,CommandModeControl,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,1,Follower
+FFAB41xh,CommandModeControl,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,3,0,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
+FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
+FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
+FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,1,Force On
+FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,0,No invert
+FFAB41xh,CommandModeControl,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,1,Invert
+FFAB41xh,CommandModeControl,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,8,0,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,0,Disable
+FFAB41xh,CommandModeControl,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,1,Enable
+FFAB41xh,CommandModeControl,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,8,2,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,0,Normal - Three Phase Mode
+FFAB41xh,CommandModeControl,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,1,Enable Split Phase Mode
+FFAB41xh,CommandModeControl,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,8,4,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,i,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,i,u,,0,Negative
+FFAB41xh,CommandModeControl,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,i,u,,1,Positive
+FFAB41xh,CommandModeControl,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,i,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,8,6,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,i,u,,3,N/A
+CFF9C41xh,CommandPowerAPU2,None,,,4,0,RealPower_command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,i,s,W,-90000.0..90000.0
+CFF9C41xh,CommandPowerAPU2,None,,,8,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,i,s,VA,-90000.0..90000.0
+CFF9E41xh,CommandVFAPU2,None,,,2,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,i,u,0.1  Vrms,10.0..500.0
+CFF9E41xh,CommandVFAPU2,None,,,4,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,i,u,0.1  Hz,45.0..65.0
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,0,Param0
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,1,LVM_ClearingTimes1
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,2,LVM_ClearingTimes2
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,3,LFM_Limits
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,4,LFM_ClearingTimes
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,5,J1939_Interface
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,6,Fault_Config
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,7,ContactorDelays1
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,8,ContactorDelays2
+CFFAA41xh,CommandSetNVParam,None,,,2,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,i,u,,10,ContactorDelays3
+CFFAA41xh,CommandSetNVParam,None,,,3,0,NodeID,Mode 5:J1939 Source Address node for the module.,8, , ,i,u,,0.0..247.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,i,u,,0,Warning
+CFFAA41xh,CommandSetNVParam,None,,,3,0,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,i,u,,1,Fault
+CFFAA41xh,CommandSetNVParam,None,,,3,0,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,i,u,,2,Error
+CFFAA41xh,CommandSetNVParam,None,,,3,0,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,i,u,,3,N/A
+CFFAA41xh,CommandSetNVParam,None,,,4,0,Dummy,Mode 0:,16, , ,i,u,,0.0..65535.0
+CFFAA41xh,CommandSetNVParam,None,,,4,0,FreqHi,"Mode 3:Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,i,u,0.1  Hz,40.0..70.0
+CFFAA41xh,CommandSetNVParam,None,,,4,0,FreqVeryLo,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains below the value specified in FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,i,u,ms,160.0..160.0
+CFFAA41xh,CommandSetNVParam,None,,,4,0,K2Open,Mode 10:Maximum time required for the K2 contactor to open.,16, , ,i,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,4,0,MX1Open,Mode 7:Maximum time required for the MX1 contactor to open.,16, , ,i,u,ms,0.0..5000.0
+CFFAA41xh,CommandSetNVParam,None,,,4,0,MX2Close,Mode 8:Maximum time required for the MX2 contactor to open.,16, , ,i,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,4,0,SA_Mask,Mode 5:Not presently used.,8, , ,i,u,,0.0..255.0
+CFFAA41xh,CommandSetNVParam,None,,,4,0,VOver120,Mode 2:Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,i,u,,1.0..30000.0
+CFFAA41xh,CommandSetNVParam,None,,,4,0,VUnder50pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,i,u,ms,1.0..30000.0
+CFFAA41xh,CommandSetNVParam,None,,,5,4,Baudrate,Mode 5:CAN baudrate,4, , ,i,u,,0,125K
+CFFAA41xh,CommandSetNVParam,None,,,5,4,Baudrate,Mode 5:CAN baudrate,4, , ,i,u,,1,250K
+CFFAA41xh,CommandSetNVParam,None,,,5,4,Baudrate,Mode 5:CAN baudrate,4, , ,i,u,,2,500K
+CFFAA41xh,CommandSetNVParam,None,,,5,4,Baudrate,Mode 5:CAN baudrate,4, , ,i,u,,3,1M
+CFFAA41xh,CommandSetNVParam,None,,,6,0,FreqLo,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains between the value specified in FreqLo and FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,i,u,ms,1.0..30000.0
+CFFAA41xh,CommandSetNVParam,None,,,6,0,K1Open,Mode 8:Maximum time required for the K1 contactor to open.,16, , ,i,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,6,0,K2Close,Mode 10:Maximum time required for the K2 contactor to close.,16, , ,i,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,6,0,MX1Close,Mode 7:Maximum time required for the MX1 contactor to close.,16, , ,i,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,6,0,V50to88pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,i,u,ms,1.0..30000.0
+CFFAA41xh,CommandSetNVParam,None,,,8,0,FreqHi,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains above the value specified in FreqHi of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,i,u,ms,160.0..160.0
+CFFAA41xh,CommandSetNVParam,None,,,8,0,FreqVeryLo,"Mode 3:Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,i,u,0.1  Hz,40.0..70.0
+CFFAA41xh,CommandSetNVParam,None,,,8,0,K1Close,Mode 8:Maximum time required for the K1 contactor to close.,16, , ,i,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,8,0,MX2Open,Mode 7:Maximum time required for the MX2 contactor to open.,16, , ,i,u,ms,0.0..65535.0
+CFFAA41xh,CommandSetNVParam,None,,,8,0,V110to120pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,i,u,ms,1.0..30000.0
+CFFAC41xh,CommandPower,None,,,4,0,RealPower command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,i,s,W,-90000.0..90000.0
+CFFAC41xh,CommandPower,None,,,8,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,i,s,VA,-90000.0..90000.0
+CFFAE41xh,CommandVF,None,,,2,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,i,u,0.1  Vrms,10.0..500.0
+CFFAE41xh,CommandVF,None,,,4,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,i,u,0.1  Hz,45.0..65.0
+CFFAF41xh,CommandFactoryControl,None,,,1,0,WriteSerialNumber,,2, , ,i,u,,0,Disable
+CFFAF41xh,CommandFactoryControl,None,,,1,0,WriteSerialNumber,,2, , ,i,u,,1,Enable
+CFFAF41xh,CommandFactoryControl,None,,,1,0,WriteSerialNumber,,2, , ,i,u,,2,Error
+CFFAF41xh,CommandFactoryControl,None,,,1,0,WriteSerialNumber,,2, , ,i,u,,3,N/A
+CFFAF41xh,CommandFactoryControl,None,,,4,0,FactoryAccess,,16, , ,i,u,,0.0..65535.0
+CFFAF41xh,CommandFactoryControl,None,,,8,0,SerialNumber,,32, , ,i,u,,0.0..4294967295.0
+CFFC2F7xh,StatusACParameters,100,,,2,0,VoltageAC_measured,Measured RMS AC voltage.,16, , ,i,s,0.1  V,-3276.8..3276.7000000000003
+CFFC2F7xh,StatusACParameters,100,,,4,0,CurrentAC_measured,Measured RMS AC current.,16, , ,i,s,A,-32768.0..32767.0
+CFFC2F7xh,StatusACParameters,100,,,6,0,Frequency_measured,Measured frequency.,16, , ,i,s,0.1  Hz,-3276.8..3276.7000000000003
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,0,"Power On Reset, and a quoted comma"
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,1,Ready
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,2,Following
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,3,Fault
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,4,Forming
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,5,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,6,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,7,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,8,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,9,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,10,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,11,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,12,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,13,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,14,N/A
+CFFC3F7xh,StatusBits,100,,,1,0,State_status,Active control mode.,4, , ,i,u,,15,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,i,u,,0,Disable
+CFFC3F7xh,StatusBits,100,,,1,4,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,i,u,,1,Enable
+CFFC3F7xh,StatusBits,100,,,1,4,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,1,4,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,1,6,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,i,u,,0,Normal
+CFFC3F7xh,StatusBits,100,,,1,6,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,i,u,,1,Clear Faults
+CFFC3F7xh,StatusBits,100,,,1,6,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,1,6,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,2,0,HardwareEnable_status,Status of the hardware enable.,2, , ,i,u,,0,Not Active
+CFFC3F7xh,StatusBits,100,,,2,0,HardwareEnable_status,Status of the hardware enable.,2, , ,i,u,,1,Active
+CFFC3F7xh,StatusBits,100,,,2,0,HardwareEnable_status,Status of the hardware enable.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,2,0,HardwareEnable_status,Status of the hardware enable.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,i,u,,0,None
+CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,i,u,,1,Available
+CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,i,u,,0,None
+CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,i,u,,1,Available
+CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,2,6,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,i,u,,0,Disabled
+CFFC3F7xh,StatusBits,100,,,2,6,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,i,u,,1,Enabled
+CFFC3F7xh,StatusBits,100,,,2,6,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,2,6,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,3,0,MX1Permissive_status,MX1 relay status,2, , ,i,u,,0,Open
+CFFC3F7xh,StatusBits,100,,,3,0,MX1Permissive_status,MX1 relay status,2, , ,i,u,,1,Closed
+CFFC3F7xh,StatusBits,100,,,3,0,MX1Permissive_status,MX1 relay status,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,3,0,MX1Permissive_status,MX1 relay status,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,3,2,MX2Permissive_status,MX2 relay status,2, , ,i,u,,0,Open
+CFFC3F7xh,StatusBits,100,,,3,2,MX2Permissive_status,MX2 relay status,2, , ,i,u,,1,Closed
+CFFC3F7xh,StatusBits,100,,,3,2,MX2Permissive_status,MX2 relay status,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,3,2,MX2Permissive_status,MX2 relay status,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,3,4,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,i,u,,0,Open
+CFFC3F7xh,StatusBits,100,,,3,4,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,i,u,,1,Closed
+CFFC3F7xh,StatusBits,100,,,3,4,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,3,4,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,3,6,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,i,u,,0,Open
+CFFC3F7xh,StatusBits,100,,,3,6,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,i,u,,1,Closed
+CFFC3F7xh,StatusBits,100,,,3,6,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,3,6,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,4,0,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,0,Invalid
+CFFC3F7xh,StatusBits,100,,,4,0,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,1,Valid
+CFFC3F7xh,StatusBits,100,,,4,0,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,4,0,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,4,2,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,0,Invalid
+CFFC3F7xh,StatusBits,100,,,4,2,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,1,Valid
+CFFC3F7xh,StatusBits,100,,,4,2,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,4,2,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,4,4,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,0,Invalid
+CFFC3F7xh,StatusBits,100,,,4,4,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,1,Valid
+CFFC3F7xh,StatusBits,100,,,4,4,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,4,4,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,4,6,CANbus_status,Operational status of the CAN bus driver.,2, , ,i,u,,0,Normal
+CFFC3F7xh,StatusBits,100,,,4,6,CANbus_status,Operational status of the CAN bus driver.,2, , ,i,u,,1,Warning
+CFFC3F7xh,StatusBits,100,,,4,6,CANbus_status,Operational status of the CAN bus driver.,2, , ,i,u,,3,ErrorPassive
+CFFC3F7xh,StatusBits,100,,,4,6,CANbus_status,Operational status of the CAN bus driver.,2, , ,i,u,,4,N/A
+CFFC3F7xh,StatusBits,100,,,5,0,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,i,u,,0,Disable
+CFFC3F7xh,StatusBits,100,,,5,0,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,i,u,,1,Enable
+CFFC3F7xh,StatusBits,100,,,5,0,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,5,0,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,5,2,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,i,u,,0,Normal - Three Phase Mode
+CFFC3F7xh,StatusBits,100,,,5,2,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,i,u,,1,Enable Split Phase Mode
+CFFC3F7xh,StatusBits,100,,,5,2,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,5,2,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,5,4,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,i,u,,0,Negative
+CFFC3F7xh,StatusBits,100,,,5,4,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,i,u,,1,Positive
+CFFC3F7xh,StatusBits,100,,,5,4,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,5,4,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,5,6,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,i,u,,0,No_Voltage
+CFFC3F7xh,StatusBits,100,,,5,6,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,i,u,,1,Voltage_Detected
+CFFC3F7xh,StatusBits,100,,,5,6,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,5,6,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,i,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,6,0,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,i,u,,0,Negative
+CFFC3F7xh,StatusBits,100,,,6,0,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,i,u,,1,Positive
+CFFC3F7xh,StatusBits,100,,,6,0,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,i,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,6,0,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,1,0,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,1,0,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,1,0,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,1,0,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,1,2,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,1,2,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,1,2,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,1,2,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,1,4,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,1,4,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,1,4,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,1,4,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,1,6,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,1,6,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,1,6,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,1,6,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,2,0,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,2,0,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,2,0,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,2,0,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,2,2,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,2,2,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,2,2,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,2,2,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,2,4,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,2,4,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,2,4,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,2,4,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,2,6,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,2,6,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,2,6,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,2,6,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,3,0,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,3,0,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,3,0,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,3,0,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,3,4,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,3,4,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,3,4,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,3,4,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,4,0,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,4,0,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,4,0,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,4,0,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,4,2,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,4,2,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,4,2,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,4,2,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,4,4,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,4,4,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,4,4,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,4,4,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,4,6,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,4,6,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,4,6,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,4,6,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,5,0,ThermalOverload,,2, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,5,0,ThermalOverload,,2, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,5,0,ThermalOverload,,2, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,5,0,ThermalOverload,,2, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,1,FLT_A
+CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,2,N/A
+CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,3,FLT_C
+CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,4,OverVoltage
+CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,5,FLT_B
+CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,6,Overcurrent
+CFFC8F7xh,StatusFaults,100,,,6,0,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,7,5V
+CFFC8F7xh,StatusFaults,100,,,6,3,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,6,3,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,6,3,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,6,3,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,1,FLT_A
+CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,2,N/A
+CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,3,FLT_C
+CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,4,OverVoltage
+CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,5,FLT_B
+CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,6,Overcurrent
+CFFC8F7xh,StatusFaults,100,,,8,0,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,i,u,,7,5V
+CFFC8F7xh,StatusFaults,100,,,8,3,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,8,3,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,8,3,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,8,3,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,i,u,,3,N/A
+CFFCAF6xh,MasterMeasuredPower,None,,,4,0,RealPower_measured,Measured real power of master unit.,32, , ,i,s,W,-2147483648.0..2147483647.0
+CFFCAF6xh,MasterMeasuredPower,None,,,8,0,ReactivePower_measured,Measured reactive power of master unit.,32, , ,i,s,VA,-2147483648.0..2147483647.0
+CFFCAF7xh,StatusMeasuredPower,100,,,4,0,RealPower_measured,Measured real power.,32, , ,i,s,W,-2147483648.0..2147483647.0
+CFFCAF7xh,StatusMeasuredPower,100,,,8,0,ReactivePower_measured,Measured reactive power.,32, , ,i,s,VA,-2147483648.0..2147483647.0
+18FFC4F7xh,StatusCommandedPower,100,,,4,0,RealPower_echo,Echoed real power command.,32, , ,i,s,W,-2147483648.0..2147483647.0
+18FFC4F7xh,StatusCommandedPower,100,,,8,0,ReactivePower_echo,Echoed reactive power command.,32, , ,i,s,VA,-2147483648.0..2147483647.0
+18FFC9F7xh,StatusCommandVF,100,,,2,0,Voltage_echo,Echoed voltage command,16, , ,i,u,0.1  Vrms,0.0..6553.5
+18FFC9F7xh,StatusCommandVF,100,,,4,0,Frequency_echo,Echoed frequency command.,16, , ,i,u,0.1  Hz,0.0..6553.5
+18FFCBF7xh,StatusTemps,100,,,2,0,TempInlet_measured,Coolant inlet temperature,16, , ,i,s,0.1  C,-3276.8..3276.7000000000003
+18FFCBF7xh,StatusTemps,100,,,4,0,TempInternal_measured,Internal ambient temperature,16, , ,i,s,0.1  C,-3276.8..3276.7000000000003
+18FFCBF7xh,StatusTemps,100,,,6,0,ConverterLosses,Power converter thermal loss,16, , ,i,u,W,0.0..65535.0
+18FFD0F7xh,StatusLineCurrents,100,,,2,0,L1Current_measured,Measured L1 RMS line current.,16, , ,i,u,A,0.0..65535.0
+18FFD0F7xh,StatusLineCurrents,100,,,4,0,L2Current_measured,Measured L2 RMS line current.,16, , ,i,u,A,0.0..65535.0
+18FFD0F7xh,StatusLineCurrents,100,,,6,0,L3Current_measured,Measured L3 RMS line current.,16, , ,i,u,A,0.0..65535.0
+18FFD1F7xh,StatusLineVoltages,100,,,2,0,L1Voltage_measured,Measured L1 RMS line-neutral voltage,16, , ,i,u,0.1  Vrms,0.0..6553.5
+18FFD1F7xh,StatusLineVoltages,100,,,4,0,L2Voltage_measured,Measured L2 RMS line-neutral voltage,16, , ,i,u,0.1  Vrms,0.0..6553.5
+18FFD1F7xh,StatusLineVoltages,100,,,6,0,L3Voltage_measured,Measured L3 RMS line-neutral voltage,16, , ,i,u,0.1  Vrms,0.0..6553.5
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,0,ActParam0
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,1,ActLVM_ClearingTimes1
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,2,ActLVM_ClearingTimes2
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,3,ActLFM_Limits
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,4,ActLFM_ClearingTimes
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,5,StatusJ1939_Interface
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,6,StatusFault_Config
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,7,StatusContactorDelays1
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,8,StatusContactorDelays2
+1CFFA9F7xh,StatusNVParam,None,,,2,0,StatusNVParam_MUX,Mode Signal: ,16, , ,i,u,,9,StatusContactorDelays3
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusNodeID,Mode 5:J1939 Source Address node for the module,8, , ,i,u,,0.0..247.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,i,u,,0,Warning
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,i,u,,1,Fault
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,i,u,,2,Error
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,i,u,,3,N/A
+1CFFA9F7xh,StatusNVParam,None,,,4,0,Dummy,Mode 0:,16, , ,i,u,,5.0..10.0
+1CFFA9F7xh,StatusNVParam,None,,,4,0,FreqHi,Mode 3:,16, , ,i,u,0.1  Hz,40.0..70.0
+1CFFA9F7xh,StatusNVParam,None,,,4,0,FreqVeryLo,Mode 4:,16, , ,i,u,ms,160.0..160.0
+1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusK2Open,Mode 9:Maximum time required for the K2 contactor to open.,16, , ,i,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusMX1Open,Mode 7:Maximum time required for the MX1 contactor to open.,16, , ,i,u,ms,0.0..5000.0
+1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusMX2Close,Mode 8:Maximum time required for the MX2 contactor to open.,16, , ,i,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusSA_Mask,Mode 5:Mask used to configure from which master source addresses to accept commands.,8, , ,i,u,,0.0..255.0
+1CFFA9F7xh,StatusNVParam,None,,,4,0,VOver120,Mode 2:,16, , ,i,u,,1.0..30000.0
+1CFFA9F7xh,StatusNVParam,None,,,4,0,VUnder50pct,Mode 1:,16, , ,i,u,ms,1.0..30000.0
+1CFFA9F7xh,StatusNVParam,None,,,5,4,StatusBaudrate,Mode 5:,4, , ,i,u,,0,125K
+1CFFA9F7xh,StatusNVParam,None,,,5,4,StatusBaudrate,Mode 5:,4, , ,i,u,,1,250K
+1CFFA9F7xh,StatusNVParam,None,,,5,4,StatusBaudrate,Mode 5:,4, , ,i,u,,2,500K
+1CFFA9F7xh,StatusNVParam,None,,,5,4,StatusBaudrate,Mode 5:,4, , ,i,u,,3,1M
+1CFFA9F7xh,StatusNVParam,None,,,6,0,FreqLo,Mode 4:,16, , ,i,u,ms,1.0..30000.0
+1CFFA9F7xh,StatusNVParam,None,,,6,0,StatusK1Open,Mode 8:Maximum time required for the K1 contactor to open.,16, , ,i,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,6,0,StatusK2Close,Mode 9:Maximum time required for the K2 contactor to close.,16, , ,i,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,6,0,StatusMX1Close,Mode 7:Maximum time required for the MX1 contactor to close.,16, , ,i,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,6,0,V50to88pct,Mode 1:,16, , ,i,u,ms,1.0..30000.0
+1CFFA9F7xh,StatusNVParam,None,,,8,0,FreqHi,Mode 4:,16, , ,i,u,ms,160.0..160.0
+1CFFA9F7xh,StatusNVParam,None,,,8,0,FreqVeryLo,Mode 3:,16, , ,i,u,0.1  Hz,40.0..70.0
+1CFFA9F7xh,StatusNVParam,None,,,8,0,StatusK1Close,Mode 8:Maximum time required for the K1 contactor to close.,16, , ,i,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,8,0,StatusMX2Open,Mode 7:Maximum time required for the MX2 contactor to open.,16, , ,i,u,ms,0.0..65535.0
+1CFFA9F7xh,StatusNVParam,None,,,8,0,V110to120pct,Mode 1:,16, , ,i,u,ms,1.0..30000.0
+1CFFC1F7xh,softwareRev,None,,,2,0,ControlSwRev,Software revision of the control firmware.,16, , ,i,u,0.01 -,0.0..655.35
+1CFFC1F7xh,softwareRev,None,,,4,0,InterfaceRev,Software revision of the CAN communication interface.,16, , ,i,u,0.01 -,0.0..655.35
+1CFFC1F7xh,softwareRev,None,,,8,0,BuildTime,Build timestamp.,32, , ,i,u,,0.0..4294967295.0
+1CFFC5F7xh,StatusControlVoltage,100,,,2,0,v5p0_Supply,Present voltage of the control board 5V power suppy.,16, , ,i,s,0.01  V,-327.68..327.67
+1CFFC5F7xh,StatusControlVoltage,100,,,4,0,v3p3_Supply,Present voltage of the control board 3.3V power supply.,16, , ,i,s,0.01  V,-327.68..327.67
+1CFFC5F7xh,StatusControlVoltage,100,,,6,0,v24_Supply,Present voltage of the control board 24V power supply.,16, , ,i,s,0.01  V,-327.68..327.67
+1CFFC5F7xh,StatusControlVoltage,100,,,8,0,v15_Supply,Present voltage of the control board 15V power supply.,16, , ,i,s,0.01  V,-327.68..327.67
+1CFFC6F7xh,StatusControlVolts2,100,,,2,0,n15V_Supply,Present voltage of the control board -15V power supply.,16, , ,i,s,0.01  V,-327.68..327.67
+1CFFC6F7xh,StatusControlVolts2,100,,,6,0,DiodeTemperature,Hottest diode,16, , ,i,u,C,0.0..65535.0
+1CFFC6F7xh,StatusControlVolts2,100,,,8,0,IGBTTemperature,Hottest IGBT,16, , ,i,u,C,0.0..65535.0
+1CFFC7F7xh,StatusDCParameters,100,,,2,0,VoltageDCInput_measured,Estimated DC input voltage.,16, , ,i,s,V,-32768.0..32767.0
+1CFFC7F7xh,StatusDCParameters,100,,,4,0,VoltageDCBus,Measured DC bus voltage.,16, , ,i,s,V,-32768.0..32767.0
+1CFFC7F7xh,StatusDCParameters,100,,,6,0,CurrentDC_measured,Measured DC current.,16, , ,i,s,A,-32768.0..32767.0
+1CFFCCF7xh,serialNumber,None,,,4,0,SerialNumber,Serial number of the power module.,32, , ,i,u,,0.0..4294967295.0
+1CFFCDF7xh,softwareRevHash,None,,,4,4,Hash,Unique revision identification hashcode.,28, , ,i,u,,0.0..268435455.0
diff --git a/test/reference/from_kcd/test_test.kcd.dbc b/tests/reference/from_kcd/test_test.kcd.dbc
similarity index 100%
rename from test/reference/from_kcd/test_test.kcd.dbc
rename to tests/reference/from_kcd/test_test.kcd.dbc
diff --git a/test/reference/from_kcd/test_test.kcd.dbf b/tests/reference/from_kcd/test_test.kcd.dbf
similarity index 100%
rename from test/reference/from_kcd/test_test.kcd.dbf
rename to tests/reference/from_kcd/test_test.kcd.dbf
diff --git a/test/reference/from_kcd/test_test.kcd.json b/tests/reference/from_kcd/test_test.kcd.json
similarity index 100%
rename from test/reference/from_kcd/test_test.kcd.json
rename to tests/reference/from_kcd/test_test.kcd.json
diff --git a/test/reference/from_kcd/test_test.kcd.sym b/tests/reference/from_kcd/test_test.kcd.sym
similarity index 100%
rename from test/reference/from_kcd/test_test.kcd.sym
rename to tests/reference/from_kcd/test_test.kcd.sym
diff --git a/test/reference/from_kcd/test_test.kcd.xls b/tests/reference/from_kcd/test_test.kcd.xls
similarity index 100%
rename from test/reference/from_kcd/test_test.kcd.xls
rename to tests/reference/from_kcd/test_test.kcd.xls
diff --git a/test/reference/from_kcd/test_test.kcd.xlsx b/tests/reference/from_kcd/test_test.kcd.xlsx
similarity index 100%
rename from test/reference/from_kcd/test_test.kcd.xlsx
rename to tests/reference/from_kcd/test_test.kcd.xlsx
diff --git a/test/reference/from_kcd/test_test.kcd.xml b/tests/reference/from_kcd/test_test.kcd.xml
similarity index 100%
rename from test/reference/from_kcd/test_test.kcd.xml
rename to tests/reference/from_kcd/test_test.kcd.xml
diff --git a/test/reference/from_kcd/test_test.kcd.yaml b/tests/reference/from_kcd/test_test.kcd.yaml
similarity index 100%
rename from test/reference/from_kcd/test_test.kcd.yaml
rename to tests/reference/from_kcd/test_test.kcd.yaml
diff --git a/test/reference/from_sym/test.arxml b/tests/reference/from_sym/test.arxml
similarity index 100%
rename from test/reference/from_sym/test.arxml
rename to tests/reference/from_sym/test.arxml
diff --git a/test/reference/from_sym/test.csv b/tests/reference/from_sym/test.csv
similarity index 99%
rename from test/reference/from_sym/test.csv
rename to tests/reference/from_sym/test.csv
index a3f21d440567cefac23f7c4055bdcb5034a7239a..153cf878e16f2396804538370644f966a71d06bf 100644
--- a/test/reference/from_sym/test.csv
+++ b/tests/reference/from_sym/test.csv
@@ -1,391 +1,391 @@
-ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
-FF9B41xh,CommandModeControlAPU2,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,1,Clear Faults
-FF9B41xh,CommandModeControlAPU2,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,0,Disable
-FF9B41xh,CommandModeControlAPU2,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,1,Enable
-FF9B41xh,CommandModeControlAPU2,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,0,Master
-FF9B41xh,CommandModeControlAPU2,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,1,Follower
-FF9B41xh,CommandModeControlAPU2,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
-FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
-FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
-FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
-FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
-FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,m,u,,0,Negative
-FF9B41xh,CommandModeControlAPU2,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,m,u,,1,Positive
-FF9B41xh,CommandModeControlAPU2,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,0,Normal - Three Phase Mode
-FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,1,Enable Split Phase Mode
-FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,0,Disable
-FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,1,Enable
-FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,3,N/A
-FF9B41xh,CommandModeControlAPU2,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,0,No invert
-FF9B41xh,CommandModeControlAPU2,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,1,Invert
-FF9B41xh,CommandModeControlAPU2,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,2,Error
-FF9B41xh,CommandModeControlAPU2,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,1,Clear Faults
-FFAB41xh,CommandModeControl,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,0,Disable
-FFAB41xh,CommandModeControl,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,1,Enable
-FFAB41xh,CommandModeControl,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,0,Master
-FFAB41xh,CommandModeControl,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,1,Follower
-FFAB41xh,CommandModeControl,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
-FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
-FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
-FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
-FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
-FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,u,,0,Negative
-FFAB41xh,CommandModeControl,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,u,,1,Positive
-FFAB41xh,CommandModeControl,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,0,Normal - Three Phase Mode
-FFAB41xh,CommandModeControl,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,1,Enable Split Phase Mode
-FFAB41xh,CommandModeControl,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,0,Disable
-FFAB41xh,CommandModeControl,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,1,Enable
-FFAB41xh,CommandModeControl,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,3,N/A
-FFAB41xh,CommandModeControl,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,0,No invert
-FFAB41xh,CommandModeControl,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,1,Invert
-FFAB41xh,CommandModeControl,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,2,Error
-FFAB41xh,CommandModeControl,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,3,N/A
-CFF9C41xh,CommandPowerAPU2,None,,,1,0,RealPower_command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,m,s,W,-90000.0..90000.0
-CFF9C41xh,CommandPowerAPU2,None,,,5,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,m,s,VA,-90000.0..90000.0
-CFF9E41xh,CommandVFAPU2,None,,,1,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,m,u,0.1  Vrms,10.0..500.0
-CFF9E41xh,CommandVFAPU2,None,,,3,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,m,u,0.1  Hz,45.0..65.0
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,0,Param0
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,1,LVM_ClearingTimes1
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,2,LVM_ClearingTimes2
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,3,LFM_Limits
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,4,LFM_ClearingTimes
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,5,J1939_Interface
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,6,Fault_Config
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,7,ContactorDelays1
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,8,ContactorDelays2
-CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,10,ContactorDelays3
-CFFAA41xh,CommandSetNVParam,None,,,3,0,Dummy,Mode 0:,16, , ,m,u,,0.0..65535.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,FreqHi,"Mode 3:Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,u,0.1  Hz,40.0..70.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,FreqVeryLo,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains below the value specified in FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,m,u,ms,160.0..160.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,K2Open,Mode 10:Maximum time required for the K2 contactor to open.,16, , ,m,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,MX1Open,Mode 7:Maximum time required for the MX1 contactor to open.,16, , ,m,u,ms,0.0..5000.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,MX2Close,Mode 8:Maximum time required for the MX2 contactor to open.,16, , ,m,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,NodeID,Mode 5:J1939 Source Address node for the module.,8, , ,m,u,,0.0..247.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,VOver120,Mode 2:Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,u,,1.0..30000.0
-CFFAA41xh,CommandSetNVParam,None,,,3,0,VUnder50pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,u,ms,1.0..30000.0
-CFFAA41xh,CommandSetNVParam,None,,,3,6,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,m,u,,0,Warning
-CFFAA41xh,CommandSetNVParam,None,,,3,6,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,m,u,,1,Fault
-CFFAA41xh,CommandSetNVParam,None,,,3,6,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,m,u,,2,Error
-CFFAA41xh,CommandSetNVParam,None,,,3,6,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,m,u,,3,N/A
-CFFAA41xh,CommandSetNVParam,None,,,4,0,SA_Mask,Mode 5:Not presently used.,8, , ,m,u,,0.0..255.0
-CFFAA41xh,CommandSetNVParam,None,,,5,0,Baudrate,Mode 5:CAN baudrate,4, , ,m,u,,0,125K
-CFFAA41xh,CommandSetNVParam,None,,,5,0,Baudrate,Mode 5:CAN baudrate,4, , ,m,u,,1,250K
-CFFAA41xh,CommandSetNVParam,None,,,5,0,Baudrate,Mode 5:CAN baudrate,4, , ,m,u,,2,500K
-CFFAA41xh,CommandSetNVParam,None,,,5,0,Baudrate,Mode 5:CAN baudrate,4, , ,m,u,,3,1M
-CFFAA41xh,CommandSetNVParam,None,,,5,0,FreqLo,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains between the value specified in FreqLo and FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,m,u,ms,1.0..30000.0
-CFFAA41xh,CommandSetNVParam,None,,,5,0,K1Open,Mode 8:Maximum time required for the K1 contactor to open.,16, , ,m,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,5,0,K2Close,Mode 10:Maximum time required for the K2 contactor to close.,16, , ,m,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,5,0,MX1Close,Mode 7:Maximum time required for the MX1 contactor to close.,16, , ,m,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,5,0,V50to88pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,u,ms,1.0..30000.0
-CFFAA41xh,CommandSetNVParam,None,,,7,0,FreqHi,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains above the value specified in FreqHi of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,m,u,ms,160.0..160.0
-CFFAA41xh,CommandSetNVParam,None,,,7,0,FreqVeryLo,"Mode 3:Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,u,0.1  Hz,40.0..70.0
-CFFAA41xh,CommandSetNVParam,None,,,7,0,K1Close,Mode 8:Maximum time required for the K1 contactor to close.,16, , ,m,u,ms,0.0..2000.0
-CFFAA41xh,CommandSetNVParam,None,,,7,0,MX2Open,Mode 7:Maximum time required for the MX2 contactor to open.,16, , ,m,u,ms,0.0..1.0
-CFFAA41xh,CommandSetNVParam,None,,,7,0,V110to120pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,u,ms,1.0..30000.0
-CFFAC41xh,CommandPower,None,,,1,0,RealPower command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,m,s,W,-90000.0..90000.0
-CFFAC41xh,CommandPower,None,,,5,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,m,s,VA,-90000.0..90000.0
-CFFAE41xh,CommandVF,None,,,1,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,m,u,0.1  Vrms,10.0..500.0
-CFFAE41xh,CommandVF,None,,,3,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,m,u,0.1  Hz,45.0..65.0
-CFFAF41xh,CommandFactoryControl,None,,,1,6,WriteSerialNumber,,2, , ,m,u,,0,Disable
-CFFAF41xh,CommandFactoryControl,None,,,1,6,WriteSerialNumber,,2, , ,m,u,,1,Enable
-CFFAF41xh,CommandFactoryControl,None,,,1,6,WriteSerialNumber,,2, , ,m,u,,2,Error
-CFFAF41xh,CommandFactoryControl,None,,,1,6,WriteSerialNumber,,2, , ,m,u,,3,N/A
-CFFAF41xh,CommandFactoryControl,None,,,3,0,FactoryAccess,,16, , ,m,u,,0.0..65535.0
-CFFAF41xh,CommandFactoryControl,None,,,5,0,SerialNumber,,32, , ,m,u,,0.0..4294967295.0
-CFFC2F7xh,StatusACParameters,100,,,1,0,VoltageAC_measured,Measured RMS AC voltage.,16, , ,m,s,0.1  V,-3276.8..3276.7000000000003
-CFFC2F7xh,StatusACParameters,100,,,3,0,CurrentAC_measured,Measured RMS AC current.,16, , ,m,s,A,-32768.0..32767.0
-CFFC2F7xh,StatusACParameters,100,,,5,0,Frequency_measured,Measured frequency.,16, , ,m,s,0.1  Hz,-3276.8..3276.7000000000003
-CFFC3F7xh,StatusBits,100,,,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,u,,0,Normal
-CFFC3F7xh,StatusBits,100,,,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,u,,1,Clear Faults
-CFFC3F7xh,StatusBits,100,,,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,u,,0,Disable
-CFFC3F7xh,StatusBits,100,,,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,u,,1,Enable
-CFFC3F7xh,StatusBits,100,,,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,0,"Power On Reset, and a quoted comma"
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,1,Ready
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,2,Following
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,3,Fault
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,4,Forming
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,5,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,6,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,7,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,8,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,9,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,10,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,11,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,12,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,13,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,14,N/A
-CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,15,N/A
-CFFC3F7xh,StatusBits,100,,,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,u,,0,Disabled
-CFFC3F7xh,StatusBits,100,,,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,u,,1,Enabled
-CFFC3F7xh,StatusBits,100,,,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,u,,0,None
-CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,u,,1,Available
-CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,u,,0,None
-CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,u,,1,Available
-CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,u,,0,Not Active
-CFFC3F7xh,StatusBits,100,,,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,u,,1,Active
-CFFC3F7xh,StatusBits,100,,,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,u,,0,Open
-CFFC3F7xh,StatusBits,100,,,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,u,,1,Closed
-CFFC3F7xh,StatusBits,100,,,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,u,,0,Open
-CFFC3F7xh,StatusBits,100,,,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,u,,1,Closed
-CFFC3F7xh,StatusBits,100,,,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,u,,0,Open
-CFFC3F7xh,StatusBits,100,,,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,u,,1,Closed
-CFFC3F7xh,StatusBits,100,,,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,u,,0,Open
-CFFC3F7xh,StatusBits,100,,,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,u,,1,Closed
-CFFC3F7xh,StatusBits,100,,,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,u,,0,Normal
-CFFC3F7xh,StatusBits,100,,,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,u,,1,Warning
-CFFC3F7xh,StatusBits,100,,,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,u,,3,ErrorPassive
-CFFC3F7xh,StatusBits,100,,,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,u,,4,N/A
-CFFC3F7xh,StatusBits,100,,,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,0,Invalid
-CFFC3F7xh,StatusBits,100,,,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,1,Valid
-CFFC3F7xh,StatusBits,100,,,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,0,Invalid
-CFFC3F7xh,StatusBits,100,,,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,1,Valid
-CFFC3F7xh,StatusBits,100,,,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,0,Invalid
-CFFC3F7xh,StatusBits,100,,,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,1,Valid
-CFFC3F7xh,StatusBits,100,,,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,u,,0,No_Voltage
-CFFC3F7xh,StatusBits,100,,,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,u,,1,Voltage_Detected
-CFFC3F7xh,StatusBits,100,,,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,u,,0,Negative
-CFFC3F7xh,StatusBits,100,,,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,u,,1,Positive
-CFFC3F7xh,StatusBits,100,,,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,u,,0,Normal - Three Phase Mode
-CFFC3F7xh,StatusBits,100,,,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,u,,1,Enable Split Phase Mode
-CFFC3F7xh,StatusBits,100,,,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,u,,0,Disable
-CFFC3F7xh,StatusBits,100,,,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,u,,1,Enable
-CFFC3F7xh,StatusBits,100,,,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
-CFFC3F7xh,StatusBits,100,,,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,u,,0,Negative
-CFFC3F7xh,StatusBits,100,,,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,u,,1,Positive
-CFFC3F7xh,StatusBits,100,,,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,u,,2,Error
-CFFC3F7xh,StatusBits,100,,,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,5,6,ThermalOverload,,2, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,5,6,ThermalOverload,,2, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,5,6,ThermalOverload,,2, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,5,6,ThermalOverload,,2, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,1,FLT_A
-CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,2,N/A
-CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,3,FLT_C
-CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,4,OverVoltage
-CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,5,FLT_B
-CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,6,Overcurrent
-CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,7,5V
-CFFC8F7xh,StatusFaults,100,,,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,1,Fault Active
-CFFC8F7xh,StatusFaults,100,,,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,2,Error
-CFFC8F7xh,StatusFaults,100,,,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,3,N/A
-CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,0,Normal
-CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,1,FLT_A
-CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,2,N/A
-CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,3,FLT_C
-CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,4,OverVoltage
-CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,5,FLT_B
-CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,6,Overcurrent
-CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,7,5V
-CFFCAF6xh,MasterMeasuredPower,None,,,1,0,RealPower_measured,Measured real power of master unit.,32, , ,m,s,W,-2147483648.0..2147483647.0
-CFFCAF6xh,MasterMeasuredPower,None,,,5,0,ReactivePower_measured,Measured reactive power of master unit.,32, , ,m,s,VA,-2147483648.0..2147483647.0
-CFFCAF7xh,StatusMeasuredPower,100,,,1,0,RealPower_measured,Measured real power.,32, , ,m,s,W,-2147483648.0..2147483647.0
-CFFCAF7xh,StatusMeasuredPower,100,,,5,0,ReactivePower_measured,Measured reactive power.,32, , ,m,s,VA,-2147483648.0..2147483647.0
-18FFC4F7xh,StatusCommandedPower,100,,,1,0,RealPower_echo,Echoed real power command.,32, , ,m,s,W,-2147483648.0..2147483647.0
-18FFC4F7xh,StatusCommandedPower,100,,,5,0,ReactivePower_echo,Echoed reactive power command.,32, , ,m,s,VA,-2147483648.0..2147483647.0
-18FFC9F7xh,StatusCommandVF,100,,,1,0,Voltage_echo,Echoed voltage command,16, , ,m,u,0.1  Vrms,0.0..6553.5
-18FFC9F7xh,StatusCommandVF,100,,,3,0,Frequency_echo,Echoed frequency command.,16, , ,m,u,0.1  Hz,0.0..6553.5
-18FFCBF7xh,StatusTemps,100,,,1,0,TempInlet_measured,Coolant inlet temperature,16, , ,m,s,0.1  C,-3276.8..3276.7000000000003
-18FFCBF7xh,StatusTemps,100,,,3,0,TempInternal_measured,Internal ambient temperature,16, , ,m,s,0.1  C,-3276.8..3276.7000000000003
-18FFCBF7xh,StatusTemps,100,,,5,0,ConverterLosses,Power converter thermal loss,16, , ,m,u,W,0.0..1.0
-18FFD0F7xh,StatusLineCurrents,100,,,1,0,L1Current_measured,Measured L1 RMS line current.,16, , ,m,u,A,0.0..1.0
-18FFD0F7xh,StatusLineCurrents,100,,,3,0,L2Current_measured,Measured L2 RMS line current.,16, , ,m,u,A,0.0..1.0
-18FFD0F7xh,StatusLineCurrents,100,,,5,0,L3Current_measured,Measured L3 RMS line current.,16, , ,m,u,A,0.0..1.0
-18FFD1F7xh,StatusLineVoltages,100,,,1,0,L1Voltage_measured,Measured L1 RMS line-neutral voltage,16, , ,m,u,0.1  Vrms,0.0..1.0
-18FFD1F7xh,StatusLineVoltages,100,,,3,0,L2Voltage_measured,Measured L2 RMS line-neutral voltage,16, , ,m,u,0.1  Vrms,0.0..1.0
-18FFD1F7xh,StatusLineVoltages,100,,,5,0,L3Voltage_measured,Measured L3 RMS line-neutral voltage,16, , ,m,u,0.1  Vrms,0.0..1.0
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,0,ActParam0
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,1,ActLVM_ClearingTimes1
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,2,ActLVM_ClearingTimes2
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,3,ActLFM_Limits
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,4,ActLFM_ClearingTimes
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,5,StatusJ1939_Interface
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,6,StatusFault_Config
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,7,StatusContactorDelays1
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,8,StatusContactorDelays2
-1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,9,StatusContactorDelays3
-1CFFA9F7xh,StatusNVParam,None,,,3,0,Dummy,Mode 0:,16, , ,m,u,,5.0..10.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,FreqHi,Mode 3:,16, , ,m,u,0.1  Hz,40.0..70.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,FreqVeryLo,Mode 4:,16, , ,m,u,ms,160.0..160.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusK2Open,Mode 9:Maximum time required for the K2 contactor to open.,16, , ,m,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusMX1Open,Mode 7:Maximum time required for the MX1 contactor to open.,16, , ,m,u,ms,0.0..5000.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusMX2Close,Mode 8:Maximum time required for the MX2 contactor to open.,16, , ,m,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusNodeID,Mode 5:J1939 Source Address node for the module,8, , ,m,u,,0.0..247.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,VOver120,Mode 2:,16, , ,m,u,,1.0..30000.0
-1CFFA9F7xh,StatusNVParam,None,,,3,0,VUnder50pct,Mode 1:,16, , ,m,u,ms,1.0..30000.0
-1CFFA9F7xh,StatusNVParam,None,,,3,6,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,m,u,,0,Warning
-1CFFA9F7xh,StatusNVParam,None,,,3,6,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,m,u,,1,Fault
-1CFFA9F7xh,StatusNVParam,None,,,3,6,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,m,u,,2,Error
-1CFFA9F7xh,StatusNVParam,None,,,3,6,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,m,u,,3,N/A
-1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusSA_Mask,Mode 5:Mask used to configure from which master source addresses to accept commands.,8, , ,m,u,,0.0..255.0
-1CFFA9F7xh,StatusNVParam,None,,,5,0,FreqLo,Mode 4:,16, , ,m,u,ms,1.0..30000.0
-1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusBaudrate,Mode 5:,4, , ,m,u,,0,125K
-1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusBaudrate,Mode 5:,4, , ,m,u,,1,250K
-1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusBaudrate,Mode 5:,4, , ,m,u,,2,500K
-1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusBaudrate,Mode 5:,4, , ,m,u,,3,1M
-1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusK1Open,Mode 8:Maximum time required for the K1 contactor to open.,16, , ,m,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusK2Close,Mode 9:Maximum time required for the K2 contactor to close.,16, , ,m,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusMX1Close,Mode 7:Maximum time required for the MX1 contactor to close.,16, , ,m,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,5,0,V50to88pct,Mode 1:,16, , ,m,u,ms,1.0..30000.0
-1CFFA9F7xh,StatusNVParam,None,,,7,0,FreqHi,Mode 4:,16, , ,m,u,ms,160.0..160.0
-1CFFA9F7xh,StatusNVParam,None,,,7,0,FreqVeryLo,Mode 3:,16, , ,m,u,0.1  Hz,40.0..70.0
-1CFFA9F7xh,StatusNVParam,None,,,7,0,StatusK1Close,Mode 8:Maximum time required for the K1 contactor to close.,16, , ,m,u,ms,0.0..2000.0
-1CFFA9F7xh,StatusNVParam,None,,,7,0,StatusMX2Open,Mode 7:Maximum time required for the MX2 contactor to open.,16, , ,m,u,ms,0.0..1.0
-1CFFA9F7xh,StatusNVParam,None,,,7,0,V110to120pct,Mode 1:,16, , ,m,u,ms,1.0..30000.0
-1CFFABC0xh,stringAndOther,None,,,1,0,RealPower_measured,Measured real power.,32, , ,m,s,W,-2147483648.0..2147483647.0
-1CFFC1F7xh,softwareRev,None,,,1,0,ControlSwRev,Software revision of the control firmware.,16, , ,m,u,0.01 -,0.0..655.35
-1CFFC1F7xh,softwareRev,None,,,3,0,InterfaceRev,Software revision of the CAN communication interface.,16, , ,m,u,0.01 -,0.0..655.35
-1CFFC1F7xh,softwareRev,None,,,5,0,BuildTime,Build timestamp.,32, , ,m,u,,0.0..4294967295.0
-1CFFC5F7xh,StatusControlVoltage,100,,,1,0,v5p0_Supply,Present voltage of the control board 5V power suppy.,16, , ,m,s,0.01  V,-327.68..327.67
-1CFFC5F7xh,StatusControlVoltage,100,,,3,0,v3p3_Supply,Present voltage of the control board 3.3V power supply.,16, , ,m,s,0.01  V,-327.68..327.67
-1CFFC5F7xh,StatusControlVoltage,100,,,5,0,v24_Supply,Present voltage of the control board 24V power supply.,16, , ,m,s,0.01  V,-327.68..327.67
-1CFFC5F7xh,StatusControlVoltage,100,,,7,0,v15_Supply,Present voltage of the control board 15V power supply.,16, , ,m,s,0.01  V,-327.68..327.67
-1CFFC6F7xh,StatusControlVolts2,100,,,1,0,n15V_Supply,Present voltage of the control board -15V power supply.,16, , ,m,s,0.01  V,-327.68..327.67
-1CFFC6F7xh,StatusControlVolts2,100,,,5,0,DiodeTemperature,Hottest diode,16, , ,m,u,C,0.0..1.0
-1CFFC6F7xh,StatusControlVolts2,100,,,7,0,IGBTTemperature,Hottest IGBT,16, , ,m,u,C,0.0..1.0
-1CFFC7F7xh,StatusDCParameters,100,,,1,0,VoltageDCInput_measured,Estimated DC input voltage.,16, , ,m,s,V,-32768.0..32767.0
-1CFFC7F7xh,StatusDCParameters,100,,,3,0,VoltageDCBus,Measured DC bus voltage.,16, , ,m,s,V,-32768.0..32767.0
-1CFFC7F7xh,StatusDCParameters,100,,,5,0,CurrentDC_measured,Measured DC current.,16, , ,m,s,A,-32768.0..32767.0
-1CFFCCF7xh,serialNumber,None,,,1,0,SerialNumber,Serial number of the power module.,32, , ,m,u,,0.0..4294967295.0
-1CFFCDF7xh,softwareRevHash,None,,,1,0,Hash,Unique revision identification hashcode.,28, , ,m,u,,0.0..268435455.0
+ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
+FF9B41xh,CommandModeControlAPU2,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,1,Clear Faults
+FF9B41xh,CommandModeControlAPU2,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,0,Disable
+FF9B41xh,CommandModeControlAPU2,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,1,Enable
+FF9B41xh,CommandModeControlAPU2,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,0,Master
+FF9B41xh,CommandModeControlAPU2,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,1,Follower
+FF9B41xh,CommandModeControlAPU2,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
+FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
+FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
+FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
+FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
+FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,m,u,,0,Negative
+FF9B41xh,CommandModeControlAPU2,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,m,u,,1,Positive
+FF9B41xh,CommandModeControlAPU2,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING,2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,0,Normal - Three Phase Mode
+FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,1,Enable Split Phase Mode
+FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,0,Disable
+FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,1,Enable
+FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,3,N/A
+FF9B41xh,CommandModeControlAPU2,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,0,No invert
+FF9B41xh,CommandModeControlAPU2,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,1,Invert
+FF9B41xh,CommandModeControlAPU2,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,2,Error
+FF9B41xh,CommandModeControlAPU2,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,1,Clear Faults
+FFAB41xh,CommandModeControl,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,1,4,FaultClear_command,Clears the latched fault message.,2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,0,Disable
+FFAB41xh,CommandModeControl,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,1,Enable
+FFAB41xh,CommandModeControl,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,1,6,Enable_command,"Run command.  When set to a value of 'Enable', causes transition to grid forming or grid following mode depending on whether AC power is detected.  Must be set to 'Disable' to leave POR or FAULTED state.",2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,0,Master
+FFAB41xh,CommandModeControl,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,1,Follower
+FFAB41xh,CommandModeControl,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,3,6,MasterFollowerMode_command,"Specifies what power command the inverter will follow in GRID FOLLOWING mode.  When configured as Master, CommandPower will be used as the power command.  When configured as Slave, the values in StatusMeasuredPower of the master inverter will be used.",2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
+FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,5,0,ForceRelayRelayK2_DCRun_comand,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
+FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,5,2,ForceRelayK1_Precharge_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
+FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,5,4,ForceRelayMX2_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,0,Normal
+FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,1,Force On
+FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,5,6,ForceRelayMX1_command,"If set to 'Force On,' will force the relay closed, overriding firmware state machine commands.  Meant for diagnostic purposes only.",2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,u,,0,Negative
+FFAB41xh,CommandModeControl,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,u,,1,Positive
+FFAB41xh,CommandModeControl,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,8,0,PhaseRotation_command,Specifies phase rotation direction.  Only active while transitioning from READY to GRID_FORMING.,2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,0,Normal - Three Phase Mode
+FFAB41xh,CommandModeControl,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,1,Enable Split Phase Mode
+FFAB41xh,CommandModeControl,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,8,2,EnableSplitPhase_command,"Dictates to the module whether it is connected to a three-phase (four wire) or split phase (L1, L2 and N) electrical system.",2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,0,Disable
+FFAB41xh,CommandModeControl,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,1,Enable
+FFAB41xh,CommandModeControl,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,8,4,EnableUPSMode_command,"Enables uninterruptible operation when transitioning from GRID FOLLOWING to GRID FORMING operation.  If operating in GRID FOLLOWING mode, and AC grid voltage is interrupted, the module will transition to GRID FORMING mode, with no interruption in power.",2, , ,m,u,,3,N/A
+FFAB41xh,CommandModeControl,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,0,No invert
+FFAB41xh,CommandModeControl,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,1,Invert
+FFAB41xh,CommandModeControl,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,2,Error
+FFAB41xh,CommandModeControl,None,,,8,6,InvertHwEnable_command,Inverts the logic of the Hardware Enable input.,2, , ,m,u,,3,N/A
+CFF9C41xh,CommandPowerAPU2,None,,,1,0,RealPower_command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,m,s,W,-90000.0..90000.0
+CFF9C41xh,CommandPowerAPU2,None,,,5,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,m,s,VA,-90000.0..90000.0
+CFF9E41xh,CommandVFAPU2,None,,,1,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,m,u,0.1  Vrms,10.0..500.0
+CFF9E41xh,CommandVFAPU2,None,,,3,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,m,u,0.1  Hz,45.0..65.0
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,0,Param0
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,1,LVM_ClearingTimes1
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,2,LVM_ClearingTimes2
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,3,LFM_Limits
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,4,LFM_ClearingTimes
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,5,J1939_Interface
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,6,Fault_Config
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,7,ContactorDelays1
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,8,ContactorDelays2
+CFFAA41xh,CommandSetNVParam,None,,,1,0,CommandSetNVParam_MUX,Mode Signal: ,16, , ,m,s,,10,ContactorDelays3
+CFFAA41xh,CommandSetNVParam,None,,,3,0,Dummy,Mode 0:,16, , ,m,u,,0.0..65535.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,FreqHi,"Mode 3:Determines the upper bound, above which the frequency monitor will trip if the line frequency remains for the time specified in FreqHi of the LFM_ClearingTimes Mux.",16, , ,m,u,0.1  Hz,40.0..70.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,FreqVeryLo,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains below the value specified in FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,m,u,ms,160.0..160.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,K2Open,Mode 10:Maximum time required for the K2 contactor to open.,16, , ,m,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,MX1Open,Mode 7:Maximum time required for the MX1 contactor to open.,16, , ,m,u,ms,0.0..5000.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,MX2Close,Mode 8:Maximum time required for the MX2 contactor to open.,16, , ,m,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,NodeID,Mode 5:J1939 Source Address node for the module.,8, , ,m,u,,0.0..247.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,VOver120,Mode 2:Determines the fault trip time when Line-to-line rms voltage for a phase remains Over 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,u,,1.0..30000.0
+CFFAA41xh,CommandSetNVParam,None,,,3,0,VUnder50pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains under 50 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,u,ms,1.0..30000.0
+CFFAA41xh,CommandSetNVParam,None,,,3,6,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,m,u,,0,Warning
+CFFAA41xh,CommandSetNVParam,None,,,3,6,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,m,u,,1,Fault
+CFFAA41xh,CommandSetNVParam,None,,,3,6,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,m,u,,2,Error
+CFFAA41xh,CommandSetNVParam,None,,,3,6,ThermalOverload,Mode 6:Configures action to take when thermal overload input is active.,2, , ,m,u,,3,N/A
+CFFAA41xh,CommandSetNVParam,None,,,4,0,SA_Mask,Mode 5:Not presently used.,8, , ,m,u,,0.0..255.0
+CFFAA41xh,CommandSetNVParam,None,,,5,0,Baudrate,Mode 5:CAN baudrate,4, , ,m,u,,0,125K
+CFFAA41xh,CommandSetNVParam,None,,,5,0,Baudrate,Mode 5:CAN baudrate,4, , ,m,u,,1,250K
+CFFAA41xh,CommandSetNVParam,None,,,5,0,Baudrate,Mode 5:CAN baudrate,4, , ,m,u,,2,500K
+CFFAA41xh,CommandSetNVParam,None,,,5,0,Baudrate,Mode 5:CAN baudrate,4, , ,m,u,,3,1M
+CFFAA41xh,CommandSetNVParam,None,,,5,0,FreqLo,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains between the value specified in FreqLo and FreqVeryLo of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,m,u,ms,1.0..30000.0
+CFFAA41xh,CommandSetNVParam,None,,,5,0,K1Open,Mode 8:Maximum time required for the K1 contactor to open.,16, , ,m,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,5,0,K2Close,Mode 10:Maximum time required for the K2 contactor to close.,16, , ,m,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,5,0,MX1Close,Mode 7:Maximum time required for the MX1 contactor to close.,16, , ,m,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,5,0,V50to88pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains between 50 and 88 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,u,ms,1.0..30000.0
+CFFAA41xh,CommandSetNVParam,None,,,7,0,FreqHi,Mode 4:Determines the time it will take for a fault trip to occur when line frequency remains above the value specified in FreqHi of the LFM_Limits Mux when the inverter is in GRID FOLLOWING mode.,16, , ,m,u,ms,160.0..160.0
+CFFAA41xh,CommandSetNVParam,None,,,7,0,FreqVeryLo,"Mode 3:Determines the upper bound, in which the frequency monitor will trip if the line frequency remains below this bound but above the value of FreqVeryLo for the time specified in FreqLo of the LFM_ClearingTimes Mux.",16, , ,m,u,0.1  Hz,40.0..70.0
+CFFAA41xh,CommandSetNVParam,None,,,7,0,K1Close,Mode 8:Maximum time required for the K1 contactor to close.,16, , ,m,u,ms,0.0..2000.0
+CFFAA41xh,CommandSetNVParam,None,,,7,0,MX2Open,Mode 7:Maximum time required for the MX2 contactor to open.,16, , ,m,u,ms,0.0..1.0
+CFFAA41xh,CommandSetNVParam,None,,,7,0,V110to120pct,Mode 1:Determines the fault trip time when Line-to-line rms voltage for a phase remains between 110 and 120 percent of the nominal value specified in the CommandVF message while the inverter is running in GRID FOLLOWING mode.,16, , ,m,u,ms,1.0..30000.0
+CFFAC41xh,CommandPower,None,,,1,0,RealPower command,Commanded real power (W) while in grid following mode - positive real power is defined as power being put into the ac network.,32, , ,m,s,W,-90000.0..90000.0
+CFFAC41xh,CommandPower,None,,,5,0,ReactivePower_command,Commanded reactive power (VA) while in grid following mode - positive reactive power is defined as the converter having a leading power factor.,32, , ,m,s,VA,-90000.0..90000.0
+CFFAE41xh,CommandVF,None,,,1,0,Voltage_command,Desired output voltage while in grid forming mode.,16, , ,m,u,0.1  Vrms,10.0..500.0
+CFFAE41xh,CommandVF,None,,,3,0,Frequency_command,Desired output frequency while in grid forming mode.,16, , ,m,u,0.1  Hz,45.0..65.0
+CFFAF41xh,CommandFactoryControl,None,,,1,6,WriteSerialNumber,,2, , ,m,u,,0,Disable
+CFFAF41xh,CommandFactoryControl,None,,,1,6,WriteSerialNumber,,2, , ,m,u,,1,Enable
+CFFAF41xh,CommandFactoryControl,None,,,1,6,WriteSerialNumber,,2, , ,m,u,,2,Error
+CFFAF41xh,CommandFactoryControl,None,,,1,6,WriteSerialNumber,,2, , ,m,u,,3,N/A
+CFFAF41xh,CommandFactoryControl,None,,,3,0,FactoryAccess,,16, , ,m,u,,0.0..65535.0
+CFFAF41xh,CommandFactoryControl,None,,,5,0,SerialNumber,,32, , ,m,u,,0.0..4294967295.0
+CFFC2F7xh,StatusACParameters,100,,,1,0,VoltageAC_measured,Measured RMS AC voltage.,16, , ,m,s,0.1  V,-3276.8..3276.7000000000003
+CFFC2F7xh,StatusACParameters,100,,,3,0,CurrentAC_measured,Measured RMS AC current.,16, , ,m,s,A,-32768.0..32767.0
+CFFC2F7xh,StatusACParameters,100,,,5,0,Frequency_measured,Measured frequency.,16, , ,m,s,0.1  Hz,-3276.8..3276.7000000000003
+CFFC3F7xh,StatusBits,100,,,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,u,,0,Normal
+CFFC3F7xh,StatusBits,100,,,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,u,,1,Clear Faults
+CFFC3F7xh,StatusBits,100,,,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,1,0,FaultClr_echo,Echos the state of the FaultClear command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,u,,0,Disable
+CFFC3F7xh,StatusBits,100,,,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,u,,1,Enable
+CFFC3F7xh,StatusBits,100,,,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,1,2,Enable_echo,Echos the state of the Enable command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,0,"Power On Reset, and a quoted comma"
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,1,Ready
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,2,Following
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,3,Fault
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,4,Forming
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,5,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,6,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,7,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,8,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,9,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,10,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,11,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,12,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,13,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,14,N/A
+CFFC3F7xh,StatusBits,100,,,1,4,State_status,Active control mode.,4, , ,m,u,,15,N/A
+CFFC3F7xh,StatusBits,100,,,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,u,,0,Disabled
+CFFC3F7xh,StatusBits,100,,,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,u,,1,Enabled
+CFFC3F7xh,StatusBits,100,,,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,2,0,PowerCircuitEnabled_status,Indicates whether the switching devices are active.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,u,,0,None
+CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,u,,1,Available
+CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,2,2,PowerAvailDC_status,Indicates that DC bus voltage is within operating range.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,u,,0,None
+CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,u,,1,Available
+CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,2,4,PowerAvailAC_status,Indicates that AC power is connected and that voltage and frequency are within nominal ranges.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,u,,0,Not Active
+CFFC3F7xh,StatusBits,100,,,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,u,,1,Active
+CFFC3F7xh,StatusBits,100,,,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,2,6,HardwareEnable_status,Status of the hardware enable.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,u,,0,Open
+CFFC3F7xh,StatusBits,100,,,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,u,,1,Closed
+CFFC3F7xh,StatusBits,100,,,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,3,0,K2DCRunPermissive_status,K2 DC Run relay status.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,u,,0,Open
+CFFC3F7xh,StatusBits,100,,,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,u,,1,Closed
+CFFC3F7xh,StatusBits,100,,,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,3,2,K1PrechargePermissive_status,K1 precharge relay status.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,u,,0,Open
+CFFC3F7xh,StatusBits,100,,,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,u,,1,Closed
+CFFC3F7xh,StatusBits,100,,,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,3,4,MX2Permissive_status,MX2 relay status,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,u,,0,Open
+CFFC3F7xh,StatusBits,100,,,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,u,,1,Closed
+CFFC3F7xh,StatusBits,100,,,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,3,6,MX1Permissive_status,MX1 relay status,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,u,,0,Normal
+CFFC3F7xh,StatusBits,100,,,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,u,,1,Warning
+CFFC3F7xh,StatusBits,100,,,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,u,,3,ErrorPassive
+CFFC3F7xh,StatusBits,100,,,4,0,CANbus_status,Operational status of the CAN bus driver.,2, , ,m,u,,4,N/A
+CFFC3F7xh,StatusBits,100,,,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,0,Invalid
+CFFC3F7xh,StatusBits,100,,,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,1,Valid
+CFFC3F7xh,StatusBits,100,,,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,4,2,MessageValidVF_status,Indicates the validity of the CommandVF message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,0,Invalid
+CFFC3F7xh,StatusBits,100,,,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,1,Valid
+CFFC3F7xh,StatusBits,100,,,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,4,4,MessageValidPowerCMD_status,Indicates the validity of the CommandPQ message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,0,Invalid
+CFFC3F7xh,StatusBits,100,,,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,1,Valid
+CFFC3F7xh,StatusBits,100,,,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,4,6,MessageValidModeControl_status,Indicates the validity of the CommandModeControl message.  Message must be received at least once per second and parameter data within range to be considered valid.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,u,,0,No_Voltage
+CFFC3F7xh,StatusBits,100,,,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,u,,1,Voltage_Detected
+CFFC3F7xh,StatusBits,100,,,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,5,0,LineVoltageDetected_status,"Flag indicating if voltage is detected on L1, L2 or L3.",2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,u,,0,Negative
+CFFC3F7xh,StatusBits,100,,,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,u,,1,Positive
+CFFC3F7xh,StatusBits,100,,,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,5,2,PhaseRotation_status,"Phase rotation order.  When L1 phase angle leads L2 phase angle, rotation is considered positive.",2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,u,,0,Normal - Three Phase Mode
+CFFC3F7xh,StatusBits,100,,,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,u,,1,Enable Split Phase Mode
+CFFC3F7xh,StatusBits,100,,,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,5,4,EnableSplitPhase_echo,Echos the state of the EnableSplitPhase command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,u,,0,Disable
+CFFC3F7xh,StatusBits,100,,,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,u,,1,Enable
+CFFC3F7xh,StatusBits,100,,,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,5,6,EnableUPSMode_echo,Echos the state of the EnableUPSMode command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
+CFFC3F7xh,StatusBits,100,,,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,u,,0,Negative
+CFFC3F7xh,StatusBits,100,,,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,u,,1,Positive
+CFFC3F7xh,StatusBits,100,,,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,u,,2,Error
+CFFC3F7xh,StatusBits,100,,,6,6,PhaseRotation_echo,Echos the state of PhaseRotation_command withing the CommandModeControl message.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,1,0,OvercurrentDC_status,Set immediately upon the software detection of DC current exceeding the threshold value.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,1,2,LossOfAC_status,"In grid following mode, this fault will be triggered if AC voltage or frequency goes outside of nominal bounds and EnableUPSMode is not set in the CommandModeControl message.",2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,1,4,OvercurrentAC_status,Set immediately upon the software detection of AC current exceeding the threshold value.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,1,6,GeneralFault_status,Will be set any time a fault shutdown has occurred.  It is always accompanied by an additional fault descriptor.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,2,0,OvertempPowerDevice_status,Set immediately upon the software detection of an IGBT temperature exceeding the threshold value.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,2,2,OvertempInternal_status,Set immediately upon the software detection of an internal inverter temperature exceeding the threshold value.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,2,4,UndervoltageDC_status,Indicates loss of DC source voltage.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,2,6,OvervoltageDC_status,Set immediately upon the software detection of DC voltage exceeding the threshold value.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,3,0,LossValidControlMessage_status,Set whenever a control message required for operation contains out of range data or has not been received within the required timeout period.,4, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,3,4,ControlHardwareFail_status,Set upon the failure of control hardware to return expected response.,4, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,4,0,InvalidEESection_status,Indicates that reading or writing of an non-volatile parameter section failed.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,4,2,InvalidEEHeader_status,Indicates that reading of non-volatile parameters at power-up failed.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,4,4,IllegalTransition_status,"Indicates that an illegal state transition was requested.  For example, this fault will occur if Enable is commanded and line voltage is detected but AC power is not available.",2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,4,6,EStopShutdown_status,Set when an enable request has been sent whithout the WakeUpSignal flag (hardware enable) in the StatusBits message being active.,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,5,6,ThermalOverload,,2, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,5,6,ThermalOverload,,2, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,5,6,ThermalOverload,,2, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,5,6,ThermalOverload,,2, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,6,4,BridgeBVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,1,FLT_A
+CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,2,N/A
+CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,3,FLT_C
+CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,4,OverVoltage
+CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,5,FLT_B
+CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,6,Overcurrent
+CFFC8F7xh,StatusFaults,100,,,6,5,BridgeBFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,7,5V
+CFFC8F7xh,StatusFaults,100,,,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,1,Fault Active
+CFFC8F7xh,StatusFaults,100,,,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,2,Error
+CFFC8F7xh,StatusFaults,100,,,8,4,BridgeAVoltageOk_status,Indicates whether a hardware trip has been activated.,1, , ,m,u,,3,N/A
+CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,0,Normal
+CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,1,FLT_A
+CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,2,N/A
+CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,3,FLT_C
+CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,4,OverVoltage
+CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,5,FLT_B
+CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,6,Overcurrent
+CFFC8F7xh,StatusFaults,100,,,8,5,BridgeAFault_status,"Each bridge has hardware protection features as a backup to software protection.  This bitfield indicates which, if any of these protection trips is active.",3, , ,m,u,,7,5V
+CFFCAF6xh,MasterMeasuredPower,None,,,1,0,RealPower_measured,Measured real power of master unit.,32, , ,m,s,W,-2147483648.0..2147483647.0
+CFFCAF6xh,MasterMeasuredPower,None,,,5,0,ReactivePower_measured,Measured reactive power of master unit.,32, , ,m,s,VA,-2147483648.0..2147483647.0
+CFFCAF7xh,StatusMeasuredPower,100,,,1,0,RealPower_measured,Measured real power.,32, , ,m,s,W,-2147483648.0..2147483647.0
+CFFCAF7xh,StatusMeasuredPower,100,,,5,0,ReactivePower_measured,Measured reactive power.,32, , ,m,s,VA,-2147483648.0..2147483647.0
+18FFC4F7xh,StatusCommandedPower,100,,,1,0,RealPower_echo,Echoed real power command.,32, , ,m,s,W,-2147483648.0..2147483647.0
+18FFC4F7xh,StatusCommandedPower,100,,,5,0,ReactivePower_echo,Echoed reactive power command.,32, , ,m,s,VA,-2147483648.0..2147483647.0
+18FFC9F7xh,StatusCommandVF,100,,,1,0,Voltage_echo,Echoed voltage command,16, , ,m,u,0.1  Vrms,0.0..6553.5
+18FFC9F7xh,StatusCommandVF,100,,,3,0,Frequency_echo,Echoed frequency command.,16, , ,m,u,0.1  Hz,0.0..6553.5
+18FFCBF7xh,StatusTemps,100,,,1,0,TempInlet_measured,Coolant inlet temperature,16, , ,m,s,0.1  C,-3276.8..3276.7000000000003
+18FFCBF7xh,StatusTemps,100,,,3,0,TempInternal_measured,Internal ambient temperature,16, , ,m,s,0.1  C,-3276.8..3276.7000000000003
+18FFCBF7xh,StatusTemps,100,,,5,0,ConverterLosses,Power converter thermal loss,16, , ,m,u,W,0.0..1.0
+18FFD0F7xh,StatusLineCurrents,100,,,1,0,L1Current_measured,Measured L1 RMS line current.,16, , ,m,u,A,0.0..1.0
+18FFD0F7xh,StatusLineCurrents,100,,,3,0,L2Current_measured,Measured L2 RMS line current.,16, , ,m,u,A,0.0..1.0
+18FFD0F7xh,StatusLineCurrents,100,,,5,0,L3Current_measured,Measured L3 RMS line current.,16, , ,m,u,A,0.0..1.0
+18FFD1F7xh,StatusLineVoltages,100,,,1,0,L1Voltage_measured,Measured L1 RMS line-neutral voltage,16, , ,m,u,0.1  Vrms,0.0..1.0
+18FFD1F7xh,StatusLineVoltages,100,,,3,0,L2Voltage_measured,Measured L2 RMS line-neutral voltage,16, , ,m,u,0.1  Vrms,0.0..1.0
+18FFD1F7xh,StatusLineVoltages,100,,,5,0,L3Voltage_measured,Measured L3 RMS line-neutral voltage,16, , ,m,u,0.1  Vrms,0.0..1.0
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,0,ActParam0
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,1,ActLVM_ClearingTimes1
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,2,ActLVM_ClearingTimes2
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,3,ActLFM_Limits
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,4,ActLFM_ClearingTimes
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,5,StatusJ1939_Interface
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,6,StatusFault_Config
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,7,StatusContactorDelays1
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,8,StatusContactorDelays2
+1CFFA9F7xh,StatusNVParam,None,,,1,0,StatusNVParam_MUX,Mode Signal: ,16, , ,m,s,,9,StatusContactorDelays3
+1CFFA9F7xh,StatusNVParam,None,,,3,0,Dummy,Mode 0:,16, , ,m,u,,5.0..10.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,FreqHi,Mode 3:,16, , ,m,u,0.1  Hz,40.0..70.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,FreqVeryLo,Mode 4:,16, , ,m,u,ms,160.0..160.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusK2Open,Mode 9:Maximum time required for the K2 contactor to open.,16, , ,m,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusMX1Open,Mode 7:Maximum time required for the MX1 contactor to open.,16, , ,m,u,ms,0.0..5000.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusMX2Close,Mode 8:Maximum time required for the MX2 contactor to open.,16, , ,m,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,StatusNodeID,Mode 5:J1939 Source Address node for the module,8, , ,m,u,,0.0..247.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,VOver120,Mode 2:,16, , ,m,u,,1.0..30000.0
+1CFFA9F7xh,StatusNVParam,None,,,3,0,VUnder50pct,Mode 1:,16, , ,m,u,ms,1.0..30000.0
+1CFFA9F7xh,StatusNVParam,None,,,3,6,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,m,u,,0,Warning
+1CFFA9F7xh,StatusNVParam,None,,,3,6,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,m,u,,1,Fault
+1CFFA9F7xh,StatusNVParam,None,,,3,6,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,m,u,,2,Error
+1CFFA9F7xh,StatusNVParam,None,,,3,6,StatusThermalOverload,Mode 6:Configured action to take when thermal overload input is active.,2, , ,m,u,,3,N/A
+1CFFA9F7xh,StatusNVParam,None,,,4,0,StatusSA_Mask,Mode 5:Mask used to configure from which master source addresses to accept commands.,8, , ,m,u,,0.0..255.0
+1CFFA9F7xh,StatusNVParam,None,,,5,0,FreqLo,Mode 4:,16, , ,m,u,ms,1.0..30000.0
+1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusBaudrate,Mode 5:,4, , ,m,u,,0,125K
+1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusBaudrate,Mode 5:,4, , ,m,u,,1,250K
+1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusBaudrate,Mode 5:,4, , ,m,u,,2,500K
+1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusBaudrate,Mode 5:,4, , ,m,u,,3,1M
+1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusK1Open,Mode 8:Maximum time required for the K1 contactor to open.,16, , ,m,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusK2Close,Mode 9:Maximum time required for the K2 contactor to close.,16, , ,m,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,5,0,StatusMX1Close,Mode 7:Maximum time required for the MX1 contactor to close.,16, , ,m,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,5,0,V50to88pct,Mode 1:,16, , ,m,u,ms,1.0..30000.0
+1CFFA9F7xh,StatusNVParam,None,,,7,0,FreqHi,Mode 4:,16, , ,m,u,ms,160.0..160.0
+1CFFA9F7xh,StatusNVParam,None,,,7,0,FreqVeryLo,Mode 3:,16, , ,m,u,0.1  Hz,40.0..70.0
+1CFFA9F7xh,StatusNVParam,None,,,7,0,StatusK1Close,Mode 8:Maximum time required for the K1 contactor to close.,16, , ,m,u,ms,0.0..2000.0
+1CFFA9F7xh,StatusNVParam,None,,,7,0,StatusMX2Open,Mode 7:Maximum time required for the MX2 contactor to open.,16, , ,m,u,ms,0.0..1.0
+1CFFA9F7xh,StatusNVParam,None,,,7,0,V110to120pct,Mode 1:,16, , ,m,u,ms,1.0..30000.0
+1CFFABC0xh,stringAndOther,None,,,1,0,RealPower_measured,Measured real power.,32, , ,m,s,W,-2147483648.0..2147483647.0
+1CFFC1F7xh,softwareRev,None,,,1,0,ControlSwRev,Software revision of the control firmware.,16, , ,m,u,0.01 -,0.0..655.35
+1CFFC1F7xh,softwareRev,None,,,3,0,InterfaceRev,Software revision of the CAN communication interface.,16, , ,m,u,0.01 -,0.0..655.35
+1CFFC1F7xh,softwareRev,None,,,5,0,BuildTime,Build timestamp.,32, , ,m,u,,0.0..4294967295.0
+1CFFC5F7xh,StatusControlVoltage,100,,,1,0,v5p0_Supply,Present voltage of the control board 5V power suppy.,16, , ,m,s,0.01  V,-327.68..327.67
+1CFFC5F7xh,StatusControlVoltage,100,,,3,0,v3p3_Supply,Present voltage of the control board 3.3V power supply.,16, , ,m,s,0.01  V,-327.68..327.67
+1CFFC5F7xh,StatusControlVoltage,100,,,5,0,v24_Supply,Present voltage of the control board 24V power supply.,16, , ,m,s,0.01  V,-327.68..327.67
+1CFFC5F7xh,StatusControlVoltage,100,,,7,0,v15_Supply,Present voltage of the control board 15V power supply.,16, , ,m,s,0.01  V,-327.68..327.67
+1CFFC6F7xh,StatusControlVolts2,100,,,1,0,n15V_Supply,Present voltage of the control board -15V power supply.,16, , ,m,s,0.01  V,-327.68..327.67
+1CFFC6F7xh,StatusControlVolts2,100,,,5,0,DiodeTemperature,Hottest diode,16, , ,m,u,C,0.0..1.0
+1CFFC6F7xh,StatusControlVolts2,100,,,7,0,IGBTTemperature,Hottest IGBT,16, , ,m,u,C,0.0..1.0
+1CFFC7F7xh,StatusDCParameters,100,,,1,0,VoltageDCInput_measured,Estimated DC input voltage.,16, , ,m,s,V,-32768.0..32767.0
+1CFFC7F7xh,StatusDCParameters,100,,,3,0,VoltageDCBus,Measured DC bus voltage.,16, , ,m,s,V,-32768.0..32767.0
+1CFFC7F7xh,StatusDCParameters,100,,,5,0,CurrentDC_measured,Measured DC current.,16, , ,m,s,A,-32768.0..32767.0
+1CFFCCF7xh,serialNumber,None,,,1,0,SerialNumber,Serial number of the power module.,32, , ,m,u,,0.0..4294967295.0
+1CFFCDF7xh,softwareRevHash,None,,,1,0,Hash,Unique revision identification hashcode.,28, , ,m,u,,0.0..268435455.0
diff --git a/test/reference/from_sym/test.dbc b/tests/reference/from_sym/test.dbc
similarity index 100%
rename from test/reference/from_sym/test.dbc
rename to tests/reference/from_sym/test.dbc
diff --git a/test/reference/from_sym/test.dbf b/tests/reference/from_sym/test.dbf
similarity index 100%
rename from test/reference/from_sym/test.dbf
rename to tests/reference/from_sym/test.dbf
diff --git a/test/reference/from_sym/test.json b/tests/reference/from_sym/test.json
similarity index 100%
rename from test/reference/from_sym/test.json
rename to tests/reference/from_sym/test.json
diff --git a/test/reference/from_sym/test.kcd b/tests/reference/from_sym/test.kcd
similarity index 100%
rename from test/reference/from_sym/test.kcd
rename to tests/reference/from_sym/test.kcd
diff --git a/test/test.xls b/tests/reference/from_sym/test.xls
similarity index 100%
rename from test/test.xls
rename to tests/reference/from_sym/test.xls
diff --git a/test/reference/from_sym/test.xlsx b/tests/reference/from_sym/test.xlsx
similarity index 100%
rename from test/reference/from_sym/test.xlsx
rename to tests/reference/from_sym/test.xlsx
diff --git a/test/reference/from_sym/test.xml b/tests/reference/from_sym/test.xml
similarity index 100%
rename from test/reference/from_sym/test.xml
rename to tests/reference/from_sym/test.xml
diff --git a/test/reference/from_sym/test.yaml b/tests/reference/from_sym/test.yaml
similarity index 100%
rename from test/reference/from_sym/test.yaml
rename to tests/reference/from_sym/test.yaml
diff --git a/test/reference/from_xls/test.arxml b/tests/reference/from_xls/test.arxml
similarity index 100%
rename from test/reference/from_xls/test.arxml
rename to tests/reference/from_xls/test.arxml
diff --git a/test/reference/from_xls/test.csv b/tests/reference/from_xls/test.csv
similarity index 98%
rename from test/reference/from_xls/test.csv
rename to tests/reference/from_xls/test.csv
index b9233ae8125231681bbde7c99941ebfb12cb0c59..1796b809fbbcaad2a46f9288842927d56d5c89a9 100644
--- a/test/reference/from_xls/test.csv
+++ b/tests/reference/from_xls/test.csv
@@ -1,390 +1,390 @@
-ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
-FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,0,Disable
-FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,1,Enable
-FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,1,Clear Faults
-FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,0,Master
-FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,1,Follower
-FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,1,Force On
-FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,1,Force On
-FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,1,Force On
-FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,1,Force On
-FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,0,No invert
-FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,1,Invert
-FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,0,Disable
-FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,1,Enable
-FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,0,Normal - Three Phase Mode
-FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,1,Enable Split Phase Mode
-FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,0,Negative
-FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,1,Positive
-FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,0,Disable
-FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,1,Enable
-FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,1,Clear Faults
-FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,0,Master
-FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,1,Follower
-FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,1,Force On
-FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,1,Force On
-FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,1,Force On
-FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,1,Force On
-FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,0,No invert
-FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,1,Invert
-FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,0,Disable
-FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,1,Enable
-FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,0,Normal - Three Phase Mode
-FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,1,Enable Split Phase Mode
-FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,0,Negative
-FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,1,Positive
-FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,3,N/A
-CFF9C41h,CommandPowerAPU2,0,,None,1,7,RealPower_command,,32, ,None,m,u,W,-90000.0..90000.0
-CFF9C41h,CommandPowerAPU2,0,,None,5,7,ReactivePower_command,,32, ,None,m,u,VA,-90000.0..90000.0
-CFF9E41h,CommandVFAPU2,0,,None,1,7,Voltage_command,,16, ,None,m,u,0.1  Vrms,10.0..500.0
-CFF9E41h,CommandVFAPU2,0,,None,3,7,Frequency_command,,16, ,None,m,u,0.1  Hz,45.0..65.0
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,0,Param0
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,1,LVM_ClearingTimes1
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,2,LVM_ClearingTimes2
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,3,LFM_Limits
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,4,LFM_ClearingTimes
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,5,J1939_Interface
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,6,Fault_Config
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,7,ContactorDelays1
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,8,ContactorDelays2
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,9,ContactorDelays3
-CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,0,Warning
-CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,1,Fault
-CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,2,Error
-CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,3,N/A
-CFFAA41h,CommandSetNVParam,0,,None,3,7,Dummy,Mode 0:,16, ,None,m,u,,0.0..65535.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,FreqHi,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,FreqVeryLo,Mode 4:,16, ,None,m,u,ms,160.0..160.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,K2Open,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,MX1Open,Mode 7:,16, ,None,m,u,ms,0.0..5000.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,MX2Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,NodeID,Mode 5:,8, ,None,m,u,,0.0..247.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,VOver120,Mode 2:,16, ,None,m,u,,1.0..30000.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,VUnder50pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-CFFAA41h,CommandSetNVParam,0,,None,4,7,SA_Mask,Mode 5:,8, ,None,m,u,,0.0..255.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,0,125K
-CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,1,250K
-CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,2,500K
-CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,3,1M
-CFFAA41h,CommandSetNVParam,0,,None,5,7,FreqLo,Mode 4:,16, ,None,m,u,ms,1.0..30000.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,K1Open,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,K2Close,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,MX1Close,Mode 7:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,V50to88pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,FreqHi,Mode 4:,16, ,None,m,u,ms,160.0..160.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,FreqVeryLo,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,K1Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,MX2Open,Mode 7:,16, ,None,m,u,ms,0.0..65535.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,V110to120pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-CFFAC41h,CommandPower,0,,None,1,7,RealPower_command,,32, ,None,m,u,W,-90000.0..90000.0
-CFFAC41h,CommandPower,0,,None,5,7,ReactivePower_command,,32, ,None,m,u,VA,-90000.0..90000.0
-CFFAE41h,CommandVF,0,,None,1,7,Voltage_command,,16, ,None,m,u,0.1  Vrms,10.0..500.0
-CFFAE41h,CommandVF,0,,None,3,7,Frequency_command,,16, ,None,m,u,0.1  Hz,45.0..65.0
-CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,0,Disable
-CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,1,Enable
-CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,2,Error
-CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,3,N/A
-CFFAF41h,CommandFactoryControl,0,,None,3,7,FactoryAccess,,16, ,None,m,u,,0.0..65535.0
-CFFAF41h,CommandFactoryControl,0,,None,5,7,SerialNumber,,32, ,None,m,u,,0.0..4294967295.0
-CFFC2F7h,StatusACParameters,100,,None,1,7,VoltageAC_measured,,16, ,None,m,u,0.1  V,0.0..65535.0
-CFFC2F7h,StatusACParameters,100,,None,3,7,CurrentAC_measured,,16, ,None,m,u,A,0.0..65535.0
-CFFC2F7h,StatusACParameters,100,,None,5,7,Frequency_measured,,16, ,None,m,u,0.1  Hz,0.0..65535.0
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,0,Power On Reset
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,1,Ready
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,2,Following
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,3,Fault
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,4,Forming
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,5,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,6,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,7,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,8,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,9,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,10,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,11,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,12,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,13,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,14,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,15,N/A
-CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,0,Disable
-CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,1,Enable
-CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,0,Normal
-CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,1,Clear Faults
-CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,0,Not Active
-CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,1,Active
-CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,0,None
-CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,1,Available
-CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,0,None
-CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,1,Available
-CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,0,Disabled
-CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,1,Enabled
-CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,0,Open
-CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,1,Closed
-CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,0,Open
-CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,1,Closed
-CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,0,Open
-CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,1,Closed
-CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,0,Open
-CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,1,Closed
-CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,0,Invalid
-CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,1,Valid
-CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,0,Invalid
-CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,1,Valid
-CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,0,Invalid
-CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,1,Valid
-CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,0,Normal
-CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,1,Warning
-CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,3,ErrorPassive
-CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,4,N/A
-CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,0,Disable
-CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,1,Enable
-CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,0,Normal - Three Phase Mode
-CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,1,Enable Split Phase Mode
-CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,0,Negative
-CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,1,Positive
-CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,0,No_Voltage
-CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,1,Voltage_Detected
-CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,0,Negative
-CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,1,Positive
-CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,1,FLT_A
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,2,N/A
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,3,FLT_C
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,4,OverVoltage
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,5,FLT_B
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,6,Overcurrent
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,7,5V
-CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,1,FLT_A
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,2,N/A
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,3,FLT_C
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,4,OverVoltage
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,5,FLT_B
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,6,Overcurrent
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,7,5V
-CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,3,N/A
-CFFCAF6h,MasterMeasuredPower,0,,None,1,7,RealPower_measured,,32, ,None,m,u,W,0.0..4294967295.0
-CFFCAF6h,MasterMeasuredPower,0,,None,5,7,ReactivePower_measured,,32, ,None,m,u,VA,0.0..4294967295.0
-CFFCAF7h,StatusMeasuredPower,100,,None,1,7,RealPower_measured,,32, ,None,m,u,W,0.0..4294967295.0
-CFFCAF7h,StatusMeasuredPower,100,,None,5,7,ReactivePower_measured,,32, ,None,m,u,VA,0.0..4294967295.0
-18FFC4F7h,StatusCommandedPower,100,,None,1,7,RealPower_echo,,32, ,None,m,u,W,0.0..4294967295.0
-18FFC4F7h,StatusCommandedPower,100,,None,5,7,ReactivePower_echo,,32, ,None,m,u,VA,0.0..4294967295.0
-18FFC9F7h,StatusCommandVF,100,,None,1,7,Voltage_echo,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
-18FFC9F7h,StatusCommandVF,100,,None,3,7,Frequency_echo,,16, ,None,m,u,0.1  Hz,0.0..65535.0
-18FFCBF7h,StatusTemps,100,,None,1,7,TempInlet_measured,,16, ,None,m,u,0.1  C,0.0..65535.0
-18FFCBF7h,StatusTemps,100,,None,3,7,TempInternal_measured,,16, ,None,m,u,0.1  C,0.0..65535.0
-18FFCBF7h,StatusTemps,100,,None,5,7,ConverterLosses,,16, ,None,m,u,W,0.0..65535.0
-18FFD0F7h,StatusLineCurrents,100,,None,1,7,L1Current_measured,,16, ,None,m,u,A,0.0..65535.0
-18FFD0F7h,StatusLineCurrents,100,,None,3,7,L2Current_measured,,16, ,None,m,u,A,0.0..65535.0
-18FFD0F7h,StatusLineCurrents,100,,None,5,7,L3Current_measured,,16, ,None,m,u,A,0.0..65535.0
-18FFD1F7h,StatusLineVoltages,100,,None,1,7,L1Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
-18FFD1F7h,StatusLineVoltages,100,,None,3,7,L2Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
-18FFD1F7h,StatusLineVoltages,100,,None,5,7,L3Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,0,ActParam0
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,1,ActLVM_ClearingTimes1
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,2,ActLVM_ClearingTimes2
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,3,ActLFM_Limits
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,4,ActLFM_ClearingTimes
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,5,StatusJ1939_Interface
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,6,StatusFault_Config
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,7,StatusContactorDelays1
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,8,StatusContactorDelays2
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,9,StatusContactorDelays3
-1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,0,Warning
-1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,1,Fault
-1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,2,Error
-1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,3,N/A
-1CFFA9F7h,StatusNVParam,0,,None,3,7,Dummy,Mode 0:,16, ,None,m,u,,5.0..10.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,FreqHi,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,FreqVeryLo,Mode 4:,16, ,None,m,u,ms,160.0..160.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusK2Open,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusMX1Open,Mode 7:,16, ,None,m,u,ms,0.0..5000.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusMX2Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusNodeID,Mode 5:,8, ,None,m,u,,0.0..247.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,VOver120,Mode 2:,16, ,None,m,u,,1.0..30000.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,VUnder50pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-1CFFA9F7h,StatusNVParam,0,,None,4,7,StatusSA_Mask,Mode 5:,8, ,None,m,u,,0.0..255.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,FreqLo,Mode 4:,16, ,None,m,u,ms,1.0..30000.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,0,125K
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,1,250K
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,2,500K
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,3,1M
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusK1Open,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusK2Close,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusMX1Close,Mode 7:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,V50to88pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,FreqHi,Mode 4:,16, ,None,m,u,ms,160.0..160.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,FreqVeryLo,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,StatusK1Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,StatusMX2Open,Mode 7:,16, ,None,m,u,ms,0.0..65535.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,V110to120pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-1CFFC1F7h,softwareRev,0,,None,1,7,ControlSwRev,,16, ,None,m,u,,0.0..65535.0
-1CFFC1F7h,softwareRev,0,,None,3,7,InterfaceRev,,16, ,None,m,u,,0.0..65535.0
-1CFFC1F7h,softwareRev,0,,None,5,7,BuildTime,,32, ,None,m,u,,0.0..4294967295.0
-1CFFC5F7h,StatusControlVoltage,100,,None,1,7,v5p0_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC5F7h,StatusControlVoltage,100,,None,3,7,v3p3_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC5F7h,StatusControlVoltage,100,,None,5,7,v24_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC5F7h,StatusControlVoltage,100,,None,7,7,v15_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC6F7h,StatusControlVolts2,100,,None,1,7,n15V_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC6F7h,StatusControlVolts2,100,,None,5,7,DiodeTemperature,,16, ,None,m,u,C,0.0..65535.0
-1CFFC6F7h,StatusControlVolts2,100,,None,7,7,IGBTTemperature,,16, ,None,m,u,C,0.0..65535.0
-1CFFC7F7h,StatusDCParameters,100,,None,1,7,VoltageDCInput_measured,,16, ,None,m,u,V,0.0..65535.0
-1CFFC7F7h,StatusDCParameters,100,,None,3,7,VoltageDCBus,,16, ,None,m,u,V,0.0..65535.0
-1CFFC7F7h,StatusDCParameters,100,,None,5,7,CurrentDC_measured,,16, ,None,m,u,A,0.0..65535.0
-1CFFCCF7h,serialNumber,0,,None,1,7,SerialNumber,,32, ,None,m,u,,0.0..4294967295.0
-1CFFCDF7h,softwareRevHash,0,,None,1,7,Hash,,28, ,None,m,u,,0.0..268435455.0
+ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
+FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,0,Disable
+FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,1,Enable
+FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,1,Clear Faults
+FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,0,Master
+FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,1,Follower
+FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,1,Force On
+FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,1,Force On
+FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,1,Force On
+FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,1,Force On
+FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,0,No invert
+FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,1,Invert
+FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,0,Disable
+FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,1,Enable
+FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,0,Normal - Three Phase Mode
+FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,1,Enable Split Phase Mode
+FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,0,Negative
+FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,1,Positive
+FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,0,Disable
+FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,1,Enable
+FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,1,Clear Faults
+FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,0,Master
+FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,1,Follower
+FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,1,Force On
+FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,1,Force On
+FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,1,Force On
+FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,1,Force On
+FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,0,No invert
+FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,1,Invert
+FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,0,Disable
+FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,1,Enable
+FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,0,Normal - Three Phase Mode
+FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,1,Enable Split Phase Mode
+FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,0,Negative
+FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,1,Positive
+FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,3,N/A
+CFF9C41h,CommandPowerAPU2,0,,None,1,7,RealPower_command,,32, ,None,m,u,W,-90000.0..90000.0
+CFF9C41h,CommandPowerAPU2,0,,None,5,7,ReactivePower_command,,32, ,None,m,u,VA,-90000.0..90000.0
+CFF9E41h,CommandVFAPU2,0,,None,1,7,Voltage_command,,16, ,None,m,u,0.1  Vrms,10.0..500.0
+CFF9E41h,CommandVFAPU2,0,,None,3,7,Frequency_command,,16, ,None,m,u,0.1  Hz,45.0..65.0
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,0,Param0
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,1,LVM_ClearingTimes1
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,2,LVM_ClearingTimes2
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,3,LFM_Limits
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,4,LFM_ClearingTimes
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,5,J1939_Interface
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,6,Fault_Config
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,7,ContactorDelays1
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,8,ContactorDelays2
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,9,ContactorDelays3
+CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,0,Warning
+CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,1,Fault
+CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,2,Error
+CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,3,N/A
+CFFAA41h,CommandSetNVParam,0,,None,3,7,Dummy,Mode 0:,16, ,None,m,u,,0.0..65535.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,FreqHi,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,FreqVeryLo,Mode 4:,16, ,None,m,u,ms,160.0..160.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,K2Open,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,MX1Open,Mode 7:,16, ,None,m,u,ms,0.0..5000.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,MX2Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,NodeID,Mode 5:,8, ,None,m,u,,0.0..247.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,VOver120,Mode 2:,16, ,None,m,u,,1.0..30000.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,VUnder50pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+CFFAA41h,CommandSetNVParam,0,,None,4,7,SA_Mask,Mode 5:,8, ,None,m,u,,0.0..255.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,0,125K
+CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,1,250K
+CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,2,500K
+CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,3,1M
+CFFAA41h,CommandSetNVParam,0,,None,5,7,FreqLo,Mode 4:,16, ,None,m,u,ms,1.0..30000.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,K1Open,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,K2Close,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,MX1Close,Mode 7:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,V50to88pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,FreqHi,Mode 4:,16, ,None,m,u,ms,160.0..160.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,FreqVeryLo,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,K1Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,MX2Open,Mode 7:,16, ,None,m,u,ms,0.0..65535.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,V110to120pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+CFFAC41h,CommandPower,0,,None,1,7,RealPower_command,,32, ,None,m,u,W,-90000.0..90000.0
+CFFAC41h,CommandPower,0,,None,5,7,ReactivePower_command,,32, ,None,m,u,VA,-90000.0..90000.0
+CFFAE41h,CommandVF,0,,None,1,7,Voltage_command,,16, ,None,m,u,0.1  Vrms,10.0..500.0
+CFFAE41h,CommandVF,0,,None,3,7,Frequency_command,,16, ,None,m,u,0.1  Hz,45.0..65.0
+CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,0,Disable
+CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,1,Enable
+CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,2,Error
+CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,3,N/A
+CFFAF41h,CommandFactoryControl,0,,None,3,7,FactoryAccess,,16, ,None,m,u,,0.0..65535.0
+CFFAF41h,CommandFactoryControl,0,,None,5,7,SerialNumber,,32, ,None,m,u,,0.0..4294967295.0
+CFFC2F7h,StatusACParameters,100,,None,1,7,VoltageAC_measured,,16, ,None,m,u,0.1  V,0.0..65535.0
+CFFC2F7h,StatusACParameters,100,,None,3,7,CurrentAC_measured,,16, ,None,m,u,A,0.0..65535.0
+CFFC2F7h,StatusACParameters,100,,None,5,7,Frequency_measured,,16, ,None,m,u,0.1  Hz,0.0..65535.0
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,0,Power On Reset
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,1,Ready
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,2,Following
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,3,Fault
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,4,Forming
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,5,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,6,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,7,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,8,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,9,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,10,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,11,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,12,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,13,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,14,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,15,N/A
+CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,0,Disable
+CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,1,Enable
+CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,0,Normal
+CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,1,Clear Faults
+CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,0,Not Active
+CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,1,Active
+CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,0,None
+CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,1,Available
+CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,0,None
+CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,1,Available
+CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,0,Disabled
+CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,1,Enabled
+CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,0,Open
+CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,1,Closed
+CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,0,Open
+CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,1,Closed
+CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,0,Open
+CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,1,Closed
+CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,0,Open
+CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,1,Closed
+CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,0,Invalid
+CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,1,Valid
+CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,0,Invalid
+CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,1,Valid
+CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,0,Invalid
+CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,1,Valid
+CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,0,Normal
+CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,1,Warning
+CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,3,ErrorPassive
+CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,4,N/A
+CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,0,Disable
+CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,1,Enable
+CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,0,Normal - Three Phase Mode
+CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,1,Enable Split Phase Mode
+CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,0,Negative
+CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,1,Positive
+CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,0,No_Voltage
+CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,1,Voltage_Detected
+CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,0,Negative
+CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,1,Positive
+CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,1,FLT_A
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,2,N/A
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,3,FLT_C
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,4,OverVoltage
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,5,FLT_B
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,6,Overcurrent
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,7,5V
+CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,1,FLT_A
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,2,N/A
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,3,FLT_C
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,4,OverVoltage
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,5,FLT_B
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,6,Overcurrent
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,7,5V
+CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,3,N/A
+CFFCAF6h,MasterMeasuredPower,0,,None,1,7,RealPower_measured,,32, ,None,m,u,W,0.0..4294967295.0
+CFFCAF6h,MasterMeasuredPower,0,,None,5,7,ReactivePower_measured,,32, ,None,m,u,VA,0.0..4294967295.0
+CFFCAF7h,StatusMeasuredPower,100,,None,1,7,RealPower_measured,,32, ,None,m,u,W,0.0..4294967295.0
+CFFCAF7h,StatusMeasuredPower,100,,None,5,7,ReactivePower_measured,,32, ,None,m,u,VA,0.0..4294967295.0
+18FFC4F7h,StatusCommandedPower,100,,None,1,7,RealPower_echo,,32, ,None,m,u,W,0.0..4294967295.0
+18FFC4F7h,StatusCommandedPower,100,,None,5,7,ReactivePower_echo,,32, ,None,m,u,VA,0.0..4294967295.0
+18FFC9F7h,StatusCommandVF,100,,None,1,7,Voltage_echo,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
+18FFC9F7h,StatusCommandVF,100,,None,3,7,Frequency_echo,,16, ,None,m,u,0.1  Hz,0.0..65535.0
+18FFCBF7h,StatusTemps,100,,None,1,7,TempInlet_measured,,16, ,None,m,u,0.1  C,0.0..65535.0
+18FFCBF7h,StatusTemps,100,,None,3,7,TempInternal_measured,,16, ,None,m,u,0.1  C,0.0..65535.0
+18FFCBF7h,StatusTemps,100,,None,5,7,ConverterLosses,,16, ,None,m,u,W,0.0..65535.0
+18FFD0F7h,StatusLineCurrents,100,,None,1,7,L1Current_measured,,16, ,None,m,u,A,0.0..65535.0
+18FFD0F7h,StatusLineCurrents,100,,None,3,7,L2Current_measured,,16, ,None,m,u,A,0.0..65535.0
+18FFD0F7h,StatusLineCurrents,100,,None,5,7,L3Current_measured,,16, ,None,m,u,A,0.0..65535.0
+18FFD1F7h,StatusLineVoltages,100,,None,1,7,L1Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
+18FFD1F7h,StatusLineVoltages,100,,None,3,7,L2Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
+18FFD1F7h,StatusLineVoltages,100,,None,5,7,L3Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,0,ActParam0
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,1,ActLVM_ClearingTimes1
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,2,ActLVM_ClearingTimes2
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,3,ActLFM_Limits
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,4,ActLFM_ClearingTimes
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,5,StatusJ1939_Interface
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,6,StatusFault_Config
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,7,StatusContactorDelays1
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,8,StatusContactorDelays2
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,9,StatusContactorDelays3
+1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,0,Warning
+1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,1,Fault
+1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,2,Error
+1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,3,N/A
+1CFFA9F7h,StatusNVParam,0,,None,3,7,Dummy,Mode 0:,16, ,None,m,u,,5.0..10.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,FreqHi,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,FreqVeryLo,Mode 4:,16, ,None,m,u,ms,160.0..160.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusK2Open,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusMX1Open,Mode 7:,16, ,None,m,u,ms,0.0..5000.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusMX2Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusNodeID,Mode 5:,8, ,None,m,u,,0.0..247.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,VOver120,Mode 2:,16, ,None,m,u,,1.0..30000.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,VUnder50pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+1CFFA9F7h,StatusNVParam,0,,None,4,7,StatusSA_Mask,Mode 5:,8, ,None,m,u,,0.0..255.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,FreqLo,Mode 4:,16, ,None,m,u,ms,1.0..30000.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,0,125K
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,1,250K
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,2,500K
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,3,1M
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusK1Open,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusK2Close,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusMX1Close,Mode 7:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,V50to88pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,FreqHi,Mode 4:,16, ,None,m,u,ms,160.0..160.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,FreqVeryLo,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,StatusK1Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,StatusMX2Open,Mode 7:,16, ,None,m,u,ms,0.0..65535.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,V110to120pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+1CFFC1F7h,softwareRev,0,,None,1,7,ControlSwRev,,16, ,None,m,u,,0.0..65535.0
+1CFFC1F7h,softwareRev,0,,None,3,7,InterfaceRev,,16, ,None,m,u,,0.0..65535.0
+1CFFC1F7h,softwareRev,0,,None,5,7,BuildTime,,32, ,None,m,u,,0.0..4294967295.0
+1CFFC5F7h,StatusControlVoltage,100,,None,1,7,v5p0_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC5F7h,StatusControlVoltage,100,,None,3,7,v3p3_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC5F7h,StatusControlVoltage,100,,None,5,7,v24_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC5F7h,StatusControlVoltage,100,,None,7,7,v15_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC6F7h,StatusControlVolts2,100,,None,1,7,n15V_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC6F7h,StatusControlVolts2,100,,None,5,7,DiodeTemperature,,16, ,None,m,u,C,0.0..65535.0
+1CFFC6F7h,StatusControlVolts2,100,,None,7,7,IGBTTemperature,,16, ,None,m,u,C,0.0..65535.0
+1CFFC7F7h,StatusDCParameters,100,,None,1,7,VoltageDCInput_measured,,16, ,None,m,u,V,0.0..65535.0
+1CFFC7F7h,StatusDCParameters,100,,None,3,7,VoltageDCBus,,16, ,None,m,u,V,0.0..65535.0
+1CFFC7F7h,StatusDCParameters,100,,None,5,7,CurrentDC_measured,,16, ,None,m,u,A,0.0..65535.0
+1CFFCCF7h,serialNumber,0,,None,1,7,SerialNumber,,32, ,None,m,u,,0.0..4294967295.0
+1CFFCDF7h,softwareRevHash,0,,None,1,7,Hash,,28, ,None,m,u,,0.0..268435455.0
diff --git a/test/reference/from_xls/test.dbc b/tests/reference/from_xls/test.dbc
similarity index 100%
rename from test/reference/from_xls/test.dbc
rename to tests/reference/from_xls/test.dbc
diff --git a/test/reference/from_xls/test.dbf b/tests/reference/from_xls/test.dbf
similarity index 100%
rename from test/reference/from_xls/test.dbf
rename to tests/reference/from_xls/test.dbf
diff --git a/test/reference/from_xls/test.json b/tests/reference/from_xls/test.json
similarity index 100%
rename from test/reference/from_xls/test.json
rename to tests/reference/from_xls/test.json
diff --git a/test/reference/from_xls/test.kcd b/tests/reference/from_xls/test.kcd
similarity index 100%
rename from test/reference/from_xls/test.kcd
rename to tests/reference/from_xls/test.kcd
diff --git a/test/reference/from_xls/test.sym b/tests/reference/from_xls/test.sym
similarity index 100%
rename from test/reference/from_xls/test.sym
rename to tests/reference/from_xls/test.sym
diff --git a/test/reference/from_xls/test.xlsx b/tests/reference/from_xls/test.xlsx
similarity index 100%
rename from test/reference/from_xls/test.xlsx
rename to tests/reference/from_xls/test.xlsx
diff --git a/test/reference/from_xls/test.xml b/tests/reference/from_xls/test.xml
similarity index 100%
rename from test/reference/from_xls/test.xml
rename to tests/reference/from_xls/test.xml
diff --git a/test/reference/from_xls/test.yaml b/tests/reference/from_xls/test.yaml
similarity index 100%
rename from test/reference/from_xls/test.yaml
rename to tests/reference/from_xls/test.yaml
diff --git a/test/reference/from_xlsx/test.arxml b/tests/reference/from_xlsx/test.arxml
similarity index 100%
rename from test/reference/from_xlsx/test.arxml
rename to tests/reference/from_xlsx/test.arxml
diff --git a/test/reference/from_xlsx/test.csv b/tests/reference/from_xlsx/test.csv
similarity index 98%
rename from test/reference/from_xlsx/test.csv
rename to tests/reference/from_xlsx/test.csv
index b9233ae8125231681bbde7c99941ebfb12cb0c59..1796b809fbbcaad2a46f9288842927d56d5c89a9 100644
--- a/test/reference/from_xlsx/test.csv
+++ b/tests/reference/from_xlsx/test.csv
@@ -1,390 +1,390 @@
-ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
-FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,0,Disable
-FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,1,Enable
-FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,1,Clear Faults
-FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,0,Master
-FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,1,Follower
-FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,1,Force On
-FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,1,Force On
-FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,1,Force On
-FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,0,Normal
-FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,1,Force On
-FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,0,No invert
-FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,1,Invert
-FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,0,Disable
-FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,1,Enable
-FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,0,Normal - Three Phase Mode
-FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,1,Enable Split Phase Mode
-FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,3,N/A
-FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,0,Negative
-FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,1,Positive
-FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,2,Error
-FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,0,Disable
-FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,1,Enable
-FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,1,Clear Faults
-FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,0,Master
-FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,1,Follower
-FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,1,Force On
-FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,1,Force On
-FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,1,Force On
-FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,0,Normal
-FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,1,Force On
-FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,0,No invert
-FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,1,Invert
-FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,0,Disable
-FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,1,Enable
-FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,0,Normal - Three Phase Mode
-FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,1,Enable Split Phase Mode
-FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,3,N/A
-FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,0,Negative
-FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,1,Positive
-FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,2,Error
-FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,3,N/A
-CFF9C41h,CommandPowerAPU2,0,,None,1,7,RealPower_command,,32, ,None,m,u,W,-90000.0..90000.0
-CFF9C41h,CommandPowerAPU2,0,,None,5,7,ReactivePower_command,,32, ,None,m,u,VA,-90000.0..90000.0
-CFF9E41h,CommandVFAPU2,0,,None,1,7,Voltage_command,,16, ,None,m,u,0.1  Vrms,10.0..500.0
-CFF9E41h,CommandVFAPU2,0,,None,3,7,Frequency_command,,16, ,None,m,u,0.1  Hz,45.0..65.0
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,0,Param0
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,1,LVM_ClearingTimes1
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,2,LVM_ClearingTimes2
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,3,LFM_Limits
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,4,LFM_ClearingTimes
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,5,J1939_Interface
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,6,Fault_Config
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,7,ContactorDelays1
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,8,ContactorDelays2
-CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,9,ContactorDelays3
-CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,0,Warning
-CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,1,Fault
-CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,2,Error
-CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,3,N/A
-CFFAA41h,CommandSetNVParam,0,,None,3,7,Dummy,Mode 0:,16, ,None,m,u,,0.0..65535.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,FreqHi,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,FreqVeryLo,Mode 4:,16, ,None,m,u,ms,160.0..160.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,K2Open,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,MX1Open,Mode 7:,16, ,None,m,u,ms,0.0..5000.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,MX2Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,NodeID,Mode 5:,8, ,None,m,u,,0.0..247.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,VOver120,Mode 2:,16, ,None,m,u,,1.0..30000.0
-CFFAA41h,CommandSetNVParam,0,,None,3,7,VUnder50pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-CFFAA41h,CommandSetNVParam,0,,None,4,7,SA_Mask,Mode 5:,8, ,None,m,u,,0.0..255.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,0,125K
-CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,1,250K
-CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,2,500K
-CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,3,1M
-CFFAA41h,CommandSetNVParam,0,,None,5,7,FreqLo,Mode 4:,16, ,None,m,u,ms,1.0..30000.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,K1Open,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,K2Close,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,MX1Close,Mode 7:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,5,7,V50to88pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,FreqHi,Mode 4:,16, ,None,m,u,ms,160.0..160.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,FreqVeryLo,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,K1Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,MX2Open,Mode 7:,16, ,None,m,u,ms,0.0..65535.0
-CFFAA41h,CommandSetNVParam,0,,None,7,7,V110to120pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-CFFAC41h,CommandPower,0,,None,1,7,RealPower_command,,32, ,None,m,u,W,-90000.0..90000.0
-CFFAC41h,CommandPower,0,,None,5,7,ReactivePower_command,,32, ,None,m,u,VA,-90000.0..90000.0
-CFFAE41h,CommandVF,0,,None,1,7,Voltage_command,,16, ,None,m,u,0.1  Vrms,10.0..500.0
-CFFAE41h,CommandVF,0,,None,3,7,Frequency_command,,16, ,None,m,u,0.1  Hz,45.0..65.0
-CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,0,Disable
-CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,1,Enable
-CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,2,Error
-CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,3,N/A
-CFFAF41h,CommandFactoryControl,0,,None,3,7,FactoryAccess,,16, ,None,m,u,,0.0..65535.0
-CFFAF41h,CommandFactoryControl,0,,None,5,7,SerialNumber,,32, ,None,m,u,,0.0..4294967295.0
-CFFC2F7h,StatusACParameters,100,,None,1,7,VoltageAC_measured,,16, ,None,m,u,0.1  V,0.0..65535.0
-CFFC2F7h,StatusACParameters,100,,None,3,7,CurrentAC_measured,,16, ,None,m,u,A,0.0..65535.0
-CFFC2F7h,StatusACParameters,100,,None,5,7,Frequency_measured,,16, ,None,m,u,0.1  Hz,0.0..65535.0
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,0,Power On Reset
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,1,Ready
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,2,Following
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,3,Fault
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,4,Forming
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,5,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,6,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,7,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,8,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,9,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,10,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,11,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,12,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,13,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,14,N/A
-CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,15,N/A
-CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,0,Disable
-CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,1,Enable
-CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,0,Normal
-CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,1,Clear Faults
-CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,0,Not Active
-CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,1,Active
-CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,0,None
-CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,1,Available
-CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,0,None
-CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,1,Available
-CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,0,Disabled
-CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,1,Enabled
-CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,0,Open
-CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,1,Closed
-CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,0,Open
-CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,1,Closed
-CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,0,Open
-CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,1,Closed
-CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,0,Open
-CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,1,Closed
-CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,0,Invalid
-CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,1,Valid
-CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,0,Invalid
-CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,1,Valid
-CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,0,Invalid
-CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,1,Valid
-CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,0,Normal
-CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,1,Warning
-CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,3,ErrorPassive
-CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,4,N/A
-CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,0,Disable
-CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,1,Enable
-CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,0,Normal - Three Phase Mode
-CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,1,Enable Split Phase Mode
-CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,0,Negative
-CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,1,Positive
-CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,0,No_Voltage
-CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,1,Voltage_Detected
-CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,3,N/A
-CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,0,Negative
-CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,1,Positive
-CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,2,Error
-CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,1,FLT_A
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,2,N/A
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,3,FLT_C
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,4,OverVoltage
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,5,FLT_B
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,6,Overcurrent
-CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,7,5V
-CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,3,N/A
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,1,FLT_A
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,2,N/A
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,3,FLT_C
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,4,OverVoltage
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,5,FLT_B
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,6,Overcurrent
-CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,7,5V
-CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,0,Normal
-CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,1,Fault Active
-CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,2,Error
-CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,3,N/A
-CFFCAF6h,MasterMeasuredPower,0,,None,1,7,RealPower_measured,,32, ,None,m,u,W,0.0..4294967295.0
-CFFCAF6h,MasterMeasuredPower,0,,None,5,7,ReactivePower_measured,,32, ,None,m,u,VA,0.0..4294967295.0
-CFFCAF7h,StatusMeasuredPower,100,,None,1,7,RealPower_measured,,32, ,None,m,u,W,0.0..4294967295.0
-CFFCAF7h,StatusMeasuredPower,100,,None,5,7,ReactivePower_measured,,32, ,None,m,u,VA,0.0..4294967295.0
-18FFC4F7h,StatusCommandedPower,100,,None,1,7,RealPower_echo,,32, ,None,m,u,W,0.0..4294967295.0
-18FFC4F7h,StatusCommandedPower,100,,None,5,7,ReactivePower_echo,,32, ,None,m,u,VA,0.0..4294967295.0
-18FFC9F7h,StatusCommandVF,100,,None,1,7,Voltage_echo,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
-18FFC9F7h,StatusCommandVF,100,,None,3,7,Frequency_echo,,16, ,None,m,u,0.1  Hz,0.0..65535.0
-18FFCBF7h,StatusTemps,100,,None,1,7,TempInlet_measured,,16, ,None,m,u,0.1  C,0.0..65535.0
-18FFCBF7h,StatusTemps,100,,None,3,7,TempInternal_measured,,16, ,None,m,u,0.1  C,0.0..65535.0
-18FFCBF7h,StatusTemps,100,,None,5,7,ConverterLosses,,16, ,None,m,u,W,0.0..65535.0
-18FFD0F7h,StatusLineCurrents,100,,None,1,7,L1Current_measured,,16, ,None,m,u,A,0.0..65535.0
-18FFD0F7h,StatusLineCurrents,100,,None,3,7,L2Current_measured,,16, ,None,m,u,A,0.0..65535.0
-18FFD0F7h,StatusLineCurrents,100,,None,5,7,L3Current_measured,,16, ,None,m,u,A,0.0..65535.0
-18FFD1F7h,StatusLineVoltages,100,,None,1,7,L1Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
-18FFD1F7h,StatusLineVoltages,100,,None,3,7,L2Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
-18FFD1F7h,StatusLineVoltages,100,,None,5,7,L3Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,0,ActParam0
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,1,ActLVM_ClearingTimes1
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,2,ActLVM_ClearingTimes2
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,3,ActLFM_Limits
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,4,ActLFM_ClearingTimes
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,5,StatusJ1939_Interface
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,6,StatusFault_Config
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,7,StatusContactorDelays1
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,8,StatusContactorDelays2
-1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,9,StatusContactorDelays3
-1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,0,Warning
-1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,1,Fault
-1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,2,Error
-1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,3,N/A
-1CFFA9F7h,StatusNVParam,0,,None,3,7,Dummy,Mode 0:,16, ,None,m,u,,5.0..10.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,FreqHi,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,FreqVeryLo,Mode 4:,16, ,None,m,u,ms,160.0..160.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusK2Open,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusMX1Open,Mode 7:,16, ,None,m,u,ms,0.0..5000.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusMX2Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusNodeID,Mode 5:,8, ,None,m,u,,0.0..247.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,VOver120,Mode 2:,16, ,None,m,u,,1.0..30000.0
-1CFFA9F7h,StatusNVParam,0,,None,3,7,VUnder50pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-1CFFA9F7h,StatusNVParam,0,,None,4,7,StatusSA_Mask,Mode 5:,8, ,None,m,u,,0.0..255.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,FreqLo,Mode 4:,16, ,None,m,u,ms,1.0..30000.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,0,125K
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,1,250K
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,2,500K
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,3,1M
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusK1Open,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusK2Close,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusMX1Close,Mode 7:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,5,7,V50to88pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,FreqHi,Mode 4:,16, ,None,m,u,ms,160.0..160.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,FreqVeryLo,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,StatusK1Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,StatusMX2Open,Mode 7:,16, ,None,m,u,ms,0.0..65535.0
-1CFFA9F7h,StatusNVParam,0,,None,7,7,V110to120pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
-1CFFC1F7h,softwareRev,0,,None,1,7,ControlSwRev,,16, ,None,m,u,,0.0..65535.0
-1CFFC1F7h,softwareRev,0,,None,3,7,InterfaceRev,,16, ,None,m,u,,0.0..65535.0
-1CFFC1F7h,softwareRev,0,,None,5,7,BuildTime,,32, ,None,m,u,,0.0..4294967295.0
-1CFFC5F7h,StatusControlVoltage,100,,None,1,7,v5p0_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC5F7h,StatusControlVoltage,100,,None,3,7,v3p3_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC5F7h,StatusControlVoltage,100,,None,5,7,v24_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC5F7h,StatusControlVoltage,100,,None,7,7,v15_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC6F7h,StatusControlVolts2,100,,None,1,7,n15V_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
-1CFFC6F7h,StatusControlVolts2,100,,None,5,7,DiodeTemperature,,16, ,None,m,u,C,0.0..65535.0
-1CFFC6F7h,StatusControlVolts2,100,,None,7,7,IGBTTemperature,,16, ,None,m,u,C,0.0..65535.0
-1CFFC7F7h,StatusDCParameters,100,,None,1,7,VoltageDCInput_measured,,16, ,None,m,u,V,0.0..65535.0
-1CFFC7F7h,StatusDCParameters,100,,None,3,7,VoltageDCBus,,16, ,None,m,u,V,0.0..65535.0
-1CFFC7F7h,StatusDCParameters,100,,None,5,7,CurrentDC_measured,,16, ,None,m,u,A,0.0..65535.0
-1CFFCCF7h,serialNumber,0,,None,1,7,SerialNumber,,32, ,None,m,u,,0.0..4294967295.0
-1CFFCDF7h,softwareRevHash,0,,None,1,7,Hash,,28, ,None,m,u,,0.0..268435455.0
+ID,Frame Name,Cycle Time [ms],Launch Type,Launch Parameter,Signal Byte No.,Signal Bit No.,Signal Name,Signal Function,Signal Length [Bit],Signal Default, Signal Not Available,Byteorder,is signed,Name / Phys. Range,Function / Increment Unit,Value
+FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,0,Disable
+FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,1,Enable
+FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,1,1,Enable_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,1,Clear Faults
+FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,0,Master
+FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,1,Follower
+FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,1,Force On
+FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,1,Force On
+FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,1,Force On
+FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,0,Normal
+FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,1,Force On
+FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,0,No invert
+FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,1,Invert
+FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,0,Disable
+FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,1,Enable
+FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,0,Normal - Three Phase Mode
+FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,1,Enable Split Phase Mode
+FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,3,N/A
+FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,0,Negative
+FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,1,Positive
+FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,2,Error
+FF9B41h,CommandModeControlAPU2,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,0,Disable
+FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,1,Enable
+FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,1,1,Enable_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,1,Clear Faults
+FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,1,3,FaultClear_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,0,Master
+FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,1,Follower
+FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,3,1,MasterFollowerMode_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,1,Force On
+FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,5,1,ForceRelayMX1_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,1,Force On
+FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,5,3,ForceRelayMX2_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,1,Force On
+FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,5,5,ForceRelayK1_Precharge_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,0,Normal
+FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,1,Force On
+FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,5,7,ForceRelayRelayK2_DCRun_comand,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,0,No invert
+FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,1,Invert
+FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,8,1,InvertHwEnable_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,0,Disable
+FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,1,Enable
+FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,8,3,EnableUPSMode_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,0,Normal - Three Phase Mode
+FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,1,Enable Split Phase Mode
+FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,8,5,EnableSplitPhase_command,,2, ,None,m,u,,3,N/A
+FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,0,Negative
+FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,1,Positive
+FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,2,Error
+FFAB41h,CommandModeControl,0,,None,8,7,PhaseRotation_command,,2, ,None,m,u,,3,N/A
+CFF9C41h,CommandPowerAPU2,0,,None,1,7,RealPower_command,,32, ,None,m,u,W,-90000.0..90000.0
+CFF9C41h,CommandPowerAPU2,0,,None,5,7,ReactivePower_command,,32, ,None,m,u,VA,-90000.0..90000.0
+CFF9E41h,CommandVFAPU2,0,,None,1,7,Voltage_command,,16, ,None,m,u,0.1  Vrms,10.0..500.0
+CFF9E41h,CommandVFAPU2,0,,None,3,7,Frequency_command,,16, ,None,m,u,0.1  Hz,45.0..65.0
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,0,Param0
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,1,LVM_ClearingTimes1
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,2,LVM_ClearingTimes2
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,3,LFM_Limits
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,4,LFM_ClearingTimes
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,5,J1939_Interface
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,6,Fault_Config
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,7,ContactorDelays1
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,8,ContactorDelays2
+CFFAA41h,CommandSetNVParam,0,,None,1,7,CommandSetNVParam_MUX,Mode Signal: ,16, ,None,m,u,,9,ContactorDelays3
+CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,0,Warning
+CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,1,Fault
+CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,2,Error
+CFFAA41h,CommandSetNVParam,0,,None,3,1,ThermalOverload,Mode 6:,2, ,None,m,u,,3,N/A
+CFFAA41h,CommandSetNVParam,0,,None,3,7,Dummy,Mode 0:,16, ,None,m,u,,0.0..65535.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,FreqHi,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,FreqVeryLo,Mode 4:,16, ,None,m,u,ms,160.0..160.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,K2Open,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,MX1Open,Mode 7:,16, ,None,m,u,ms,0.0..5000.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,MX2Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,NodeID,Mode 5:,8, ,None,m,u,,0.0..247.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,VOver120,Mode 2:,16, ,None,m,u,,1.0..30000.0
+CFFAA41h,CommandSetNVParam,0,,None,3,7,VUnder50pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+CFFAA41h,CommandSetNVParam,0,,None,4,7,SA_Mask,Mode 5:,8, ,None,m,u,,0.0..255.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,0,125K
+CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,1,250K
+CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,2,500K
+CFFAA41h,CommandSetNVParam,0,,None,5,7,Baudrate,Mode 5:,4, ,None,m,u,,3,1M
+CFFAA41h,CommandSetNVParam,0,,None,5,7,FreqLo,Mode 4:,16, ,None,m,u,ms,1.0..30000.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,K1Open,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,K2Close,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,MX1Close,Mode 7:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,5,7,V50to88pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,FreqHi,Mode 4:,16, ,None,m,u,ms,160.0..160.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,FreqVeryLo,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,K1Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,MX2Open,Mode 7:,16, ,None,m,u,ms,0.0..65535.0
+CFFAA41h,CommandSetNVParam,0,,None,7,7,V110to120pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+CFFAC41h,CommandPower,0,,None,1,7,RealPower_command,,32, ,None,m,u,W,-90000.0..90000.0
+CFFAC41h,CommandPower,0,,None,5,7,ReactivePower_command,,32, ,None,m,u,VA,-90000.0..90000.0
+CFFAE41h,CommandVF,0,,None,1,7,Voltage_command,,16, ,None,m,u,0.1  Vrms,10.0..500.0
+CFFAE41h,CommandVF,0,,None,3,7,Frequency_command,,16, ,None,m,u,0.1  Hz,45.0..65.0
+CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,0,Disable
+CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,1,Enable
+CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,2,Error
+CFFAF41h,CommandFactoryControl,0,,None,1,1,WriteSerialNumber,,2, ,None,m,u,,3,N/A
+CFFAF41h,CommandFactoryControl,0,,None,3,7,FactoryAccess,,16, ,None,m,u,,0.0..65535.0
+CFFAF41h,CommandFactoryControl,0,,None,5,7,SerialNumber,,32, ,None,m,u,,0.0..4294967295.0
+CFFC2F7h,StatusACParameters,100,,None,1,7,VoltageAC_measured,,16, ,None,m,u,0.1  V,0.0..65535.0
+CFFC2F7h,StatusACParameters,100,,None,3,7,CurrentAC_measured,,16, ,None,m,u,A,0.0..65535.0
+CFFC2F7h,StatusACParameters,100,,None,5,7,Frequency_measured,,16, ,None,m,u,0.1  Hz,0.0..65535.0
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,0,Power On Reset
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,1,Ready
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,2,Following
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,3,Fault
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,4,Forming
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,5,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,6,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,7,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,8,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,9,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,10,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,11,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,12,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,13,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,14,N/A
+CFFC3F7h,StatusBits,100,,None,1,3,State_status,,4, ,None,m,u,,15,N/A
+CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,0,Disable
+CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,1,Enable
+CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,1,5,Enable_echo,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,0,Normal
+CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,1,Clear Faults
+CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,1,7,FaultClr_echo,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,0,Not Active
+CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,1,Active
+CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,2,1,HardwareEnable_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,0,None
+CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,1,Available
+CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,2,3,PowerAvailAC_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,0,None
+CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,1,Available
+CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,2,5,PowerAvailDC_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,0,Disabled
+CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,1,Enabled
+CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,2,7,PowerCircuitEnabled_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,0,Open
+CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,1,Closed
+CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,3,1,MX1Permissive_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,0,Open
+CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,1,Closed
+CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,3,3,MX2Permissive_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,0,Open
+CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,1,Closed
+CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,3,5,K1PrechargePermissive_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,0,Open
+CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,1,Closed
+CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,3,7,K2DCRunPermissive_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,0,Invalid
+CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,1,Valid
+CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,4,1,MessageValidModeControl_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,0,Invalid
+CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,1,Valid
+CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,4,3,MessageValidPowerCMD_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,0,Invalid
+CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,1,Valid
+CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,4,5,MessageValidVF_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,0,Normal
+CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,1,Warning
+CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,3,ErrorPassive
+CFFC3F7h,StatusBits,100,,None,4,7,CANbus_status,,2, ,None,m,u,,4,N/A
+CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,0,Disable
+CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,1,Enable
+CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,5,1,EnableUPSMode_echo,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,0,Normal - Three Phase Mode
+CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,1,Enable Split Phase Mode
+CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,5,3,EnableSplitPhase_echo,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,0,Negative
+CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,1,Positive
+CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,5,5,PhaseRotation_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,0,No_Voltage
+CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,1,Voltage_Detected
+CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,5,7,LineVoltageDetected_status,,2, ,None,m,u,,3,N/A
+CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,0,Negative
+CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,1,Positive
+CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,2,Error
+CFFC3F7h,StatusBits,100,,None,6,1,PhaseRotation_echo,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,1,1,GeneralFault_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,1,3,OvercurrentAC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,1,5,LossOfAC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,1,7,OvercurrentDC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,2,1,OvervoltageDC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,2,3,UndervoltageDC_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,2,5,OvertempInternal_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,2,7,OvertempPowerDevice_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,3,3,ControlHardwareFail_status,,4, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,3,7,LossValidControlMessage_status,,4, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,4,1,EStopShutdown_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,4,3,IllegalTransition_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,4,5,InvalidEEHeader_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,4,7,InvalidEESection_status,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,5,1,ThermalOverload,,2, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,1,FLT_A
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,2,N/A
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,3,FLT_C
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,4,OverVoltage
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,5,FLT_B
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,6,Overcurrent
+CFFC8F7h,StatusFaults,100,,None,6,2,BridgeBFault_status,,3, ,None,m,u,,7,5V
+CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,6,3,BridgeBVoltageOk_status,,1, ,None,m,u,,3,N/A
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,1,FLT_A
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,2,N/A
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,3,FLT_C
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,4,OverVoltage
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,5,FLT_B
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,6,Overcurrent
+CFFC8F7h,StatusFaults,100,,None,8,2,BridgeAFault_status,,3, ,None,m,u,,7,5V
+CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,0,Normal
+CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,1,Fault Active
+CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,2,Error
+CFFC8F7h,StatusFaults,100,,None,8,3,BridgeAVoltageOk_status,,1, ,None,m,u,,3,N/A
+CFFCAF6h,MasterMeasuredPower,0,,None,1,7,RealPower_measured,,32, ,None,m,u,W,0.0..4294967295.0
+CFFCAF6h,MasterMeasuredPower,0,,None,5,7,ReactivePower_measured,,32, ,None,m,u,VA,0.0..4294967295.0
+CFFCAF7h,StatusMeasuredPower,100,,None,1,7,RealPower_measured,,32, ,None,m,u,W,0.0..4294967295.0
+CFFCAF7h,StatusMeasuredPower,100,,None,5,7,ReactivePower_measured,,32, ,None,m,u,VA,0.0..4294967295.0
+18FFC4F7h,StatusCommandedPower,100,,None,1,7,RealPower_echo,,32, ,None,m,u,W,0.0..4294967295.0
+18FFC4F7h,StatusCommandedPower,100,,None,5,7,ReactivePower_echo,,32, ,None,m,u,VA,0.0..4294967295.0
+18FFC9F7h,StatusCommandVF,100,,None,1,7,Voltage_echo,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
+18FFC9F7h,StatusCommandVF,100,,None,3,7,Frequency_echo,,16, ,None,m,u,0.1  Hz,0.0..65535.0
+18FFCBF7h,StatusTemps,100,,None,1,7,TempInlet_measured,,16, ,None,m,u,0.1  C,0.0..65535.0
+18FFCBF7h,StatusTemps,100,,None,3,7,TempInternal_measured,,16, ,None,m,u,0.1  C,0.0..65535.0
+18FFCBF7h,StatusTemps,100,,None,5,7,ConverterLosses,,16, ,None,m,u,W,0.0..65535.0
+18FFD0F7h,StatusLineCurrents,100,,None,1,7,L1Current_measured,,16, ,None,m,u,A,0.0..65535.0
+18FFD0F7h,StatusLineCurrents,100,,None,3,7,L2Current_measured,,16, ,None,m,u,A,0.0..65535.0
+18FFD0F7h,StatusLineCurrents,100,,None,5,7,L3Current_measured,,16, ,None,m,u,A,0.0..65535.0
+18FFD1F7h,StatusLineVoltages,100,,None,1,7,L1Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
+18FFD1F7h,StatusLineVoltages,100,,None,3,7,L2Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
+18FFD1F7h,StatusLineVoltages,100,,None,5,7,L3Voltage_measured,,16, ,None,m,u,0.1  Vrms,0.0..65535.0
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,0,ActParam0
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,1,ActLVM_ClearingTimes1
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,2,ActLVM_ClearingTimes2
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,3,ActLFM_Limits
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,4,ActLFM_ClearingTimes
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,5,StatusJ1939_Interface
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,6,StatusFault_Config
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,7,StatusContactorDelays1
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,8,StatusContactorDelays2
+1CFFA9F7h,StatusNVParam,0,,None,1,7,StatusNVParam_MUX,Mode Signal: ,16, ,None,m,u,,9,StatusContactorDelays3
+1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,0,Warning
+1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,1,Fault
+1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,2,Error
+1CFFA9F7h,StatusNVParam,0,,None,3,1,StatusThermalOverload,Mode 6:,2, ,None,m,u,,3,N/A
+1CFFA9F7h,StatusNVParam,0,,None,3,7,Dummy,Mode 0:,16, ,None,m,u,,5.0..10.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,FreqHi,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,FreqVeryLo,Mode 4:,16, ,None,m,u,ms,160.0..160.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusK2Open,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusMX1Open,Mode 7:,16, ,None,m,u,ms,0.0..5000.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusMX2Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,StatusNodeID,Mode 5:,8, ,None,m,u,,0.0..247.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,VOver120,Mode 2:,16, ,None,m,u,,1.0..30000.0
+1CFFA9F7h,StatusNVParam,0,,None,3,7,VUnder50pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+1CFFA9F7h,StatusNVParam,0,,None,4,7,StatusSA_Mask,Mode 5:,8, ,None,m,u,,0.0..255.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,FreqLo,Mode 4:,16, ,None,m,u,ms,1.0..30000.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,0,125K
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,1,250K
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,2,500K
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusBaudrate,Mode 5:,4, ,None,m,u,,3,1M
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusK1Open,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusK2Close,Mode 9:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,StatusMX1Close,Mode 7:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,5,7,V50to88pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,FreqHi,Mode 4:,16, ,None,m,u,ms,160.0..160.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,FreqVeryLo,Mode 3:,16, ,None,m,u,0.1  Hz,40.0..70.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,StatusK1Close,Mode 8:,16, ,None,m,u,ms,0.0..2000.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,StatusMX2Open,Mode 7:,16, ,None,m,u,ms,0.0..65535.0
+1CFFA9F7h,StatusNVParam,0,,None,7,7,V110to120pct,Mode 1:,16, ,None,m,u,ms,1.0..30000.0
+1CFFC1F7h,softwareRev,0,,None,1,7,ControlSwRev,,16, ,None,m,u,,0.0..65535.0
+1CFFC1F7h,softwareRev,0,,None,3,7,InterfaceRev,,16, ,None,m,u,,0.0..65535.0
+1CFFC1F7h,softwareRev,0,,None,5,7,BuildTime,,32, ,None,m,u,,0.0..4294967295.0
+1CFFC5F7h,StatusControlVoltage,100,,None,1,7,v5p0_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC5F7h,StatusControlVoltage,100,,None,3,7,v3p3_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC5F7h,StatusControlVoltage,100,,None,5,7,v24_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC5F7h,StatusControlVoltage,100,,None,7,7,v15_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC6F7h,StatusControlVolts2,100,,None,1,7,n15V_Supply,,16, ,None,m,u,0.01  V,0.0..65535.0
+1CFFC6F7h,StatusControlVolts2,100,,None,5,7,DiodeTemperature,,16, ,None,m,u,C,0.0..65535.0
+1CFFC6F7h,StatusControlVolts2,100,,None,7,7,IGBTTemperature,,16, ,None,m,u,C,0.0..65535.0
+1CFFC7F7h,StatusDCParameters,100,,None,1,7,VoltageDCInput_measured,,16, ,None,m,u,V,0.0..65535.0
+1CFFC7F7h,StatusDCParameters,100,,None,3,7,VoltageDCBus,,16, ,None,m,u,V,0.0..65535.0
+1CFFC7F7h,StatusDCParameters,100,,None,5,7,CurrentDC_measured,,16, ,None,m,u,A,0.0..65535.0
+1CFFCCF7h,serialNumber,0,,None,1,7,SerialNumber,,32, ,None,m,u,,0.0..4294967295.0
+1CFFCDF7h,softwareRevHash,0,,None,1,7,Hash,,28, ,None,m,u,,0.0..268435455.0
diff --git a/test/reference/from_xlsx/test.dbc b/tests/reference/from_xlsx/test.dbc
similarity index 100%
rename from test/reference/from_xlsx/test.dbc
rename to tests/reference/from_xlsx/test.dbc
diff --git a/test/reference/from_xlsx/test.dbf b/tests/reference/from_xlsx/test.dbf
similarity index 100%
rename from test/reference/from_xlsx/test.dbf
rename to tests/reference/from_xlsx/test.dbf
diff --git a/test/reference/from_xlsx/test.json b/tests/reference/from_xlsx/test.json
similarity index 100%
rename from test/reference/from_xlsx/test.json
rename to tests/reference/from_xlsx/test.json
diff --git a/test/reference/from_xlsx/test.kcd b/tests/reference/from_xlsx/test.kcd
similarity index 100%
rename from test/reference/from_xlsx/test.kcd
rename to tests/reference/from_xlsx/test.kcd
diff --git a/test/reference/from_xlsx/test.sym b/tests/reference/from_xlsx/test.sym
similarity index 100%
rename from test/reference/from_xlsx/test.sym
rename to tests/reference/from_xlsx/test.sym
diff --git a/test/reference/from_xlsx/test.xls b/tests/reference/from_xlsx/test.xls
similarity index 100%
rename from test/reference/from_xlsx/test.xls
rename to tests/reference/from_xlsx/test.xls
diff --git a/test/reference/from_xlsx/test.xml b/tests/reference/from_xlsx/test.xml
similarity index 100%
rename from test/reference/from_xlsx/test.xml
rename to tests/reference/from_xlsx/test.xml
diff --git a/test/reference/from_xlsx/test.yaml b/tests/reference/from_xlsx/test.yaml
similarity index 100%
rename from test/reference/from_xlsx/test.yaml
rename to tests/reference/from_xlsx/test.yaml
diff --git a/test/test.py b/tests/test.py
old mode 100755
new mode 100644
similarity index 97%
rename from test/test.py
rename to tests/test.py
index 90f0983a5d06f47fded2dd4311b9cb2699188f84..1b9887d93240b4eebecb040ce7041e3303074554
--- a/test/test.py
+++ b/tests/test.py
@@ -1,7 +1,5 @@
 #!/usr/bin/env python3
 
-from __future__ import absolute_import, division, print_function
-
 import copy
 import os
 import shutil
diff --git a/src/canmatrix/tests/test_arxml.py b/tests/test_arxml.py
similarity index 71%
rename from src/canmatrix/tests/test_arxml.py
rename to tests/test_arxml.py
index b39c027bf627fb70987437e6b082a0a24d931be3..224aa04f0510730ba3ef2b82f6ea3bd171944e98 100644
--- a/src/canmatrix/tests/test_arxml.py
+++ b/tests/test_arxml.py
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 import canmatrix.formats.arxml
+import decimal
 
 try:
     from pathlib import Path
@@ -8,9 +9,8 @@ except ImportError:
 
 
 def test_ecu_extract():
-    here = Path(__file__).parent
-
-    db = canmatrix.formats.arxml.load(str(here / "MyECU.ecuc.arxml"))['']
+    test_file = "tests/files/arxml/MyECU.ecuc.arxml"
+    db = canmatrix.formats.arxml.load(test_file)['']
     assert db.frames is not None
     assert len(db.frames) == 2
     assert len(db.frames[0].signals) == 3
@@ -18,8 +18,8 @@ def test_ecu_extract():
 
 
 def test_get_signals_from_container_i_pdu():
-    here = Path(__file__).parent
-    matrix = canmatrix.formats.arxml.load(str(here / "ARXMLContainerTest.arxml"))
+    test_file = "tests/files/arxml/ARXMLContainerTest.arxml"
+    matrix = canmatrix.formats.arxml.load(test_file)
     assert matrix["New_CanCluster"].frames[0].signals[0].name == 'Header_ID'
     assert matrix["New_CanCluster"].frames[0].signals[1].name == 'Header_DLC'
     assert matrix["New_CanCluster"].frames[0].pdus[0].name == 'PDU_Contained_1'
@@ -28,23 +28,24 @@ def test_get_signals_from_container_i_pdu():
 
 
 def test_get_signals_from_secured_pdu():
-    here = Path(__file__).parent
-    matrix = canmatrix.formats.arxml.load(str(here / "ARXMLSecuredPDUTest.arxml"))
+    test_file = "tests/files/arxml/ARXMLSecuredPDUTest.arxml"
+    matrix = canmatrix.formats.arxml.load(test_file)
     assert matrix["CAN"].frames[0].signals[0].name == 'someTestSignal'
     assert matrix["CAN"].frames[0].signals[1].name == 'Signal'
 
 
 def test_min_max():
-    here = Path(__file__).parent
-    matrix = canmatrix.formats.arxml.load(str(here / "ARXML_min_max.arxml"))
+    test_file = "tests/files/arxml/ARXML_min_max.arxml"
+    matrix = canmatrix.formats.arxml.load(test_file)
     assert matrix["New_CanCluster"].frames[0].signals[0].is_signed is False
 
 
 def test_decode_compu_method_1():
-    here = Path(__file__).parent
+    test_file = "tests/files/arxml/ARXMLCompuMethod1.arxml"
     ea = canmatrix.formats.arxml.Earxml()
-    ea.open(str(here / "ARXMLCompuMethod1.arxml"))
+    ea.open(test_file)
     compu_method = ea.find("COMPU-METHOD")
+    # default_float_factory = decimal.Decimal
     values, factor, offset, unit, const = canmatrix.formats.arxml.decode_compu_method(compu_method, ea, float)
     assert values == {'0': 'no trailer detected', '1': 'trailer detected'}
     assert factor == 42
diff --git a/src/canmatrix/tests/test_arxml_gw.py b/tests/test_arxml_gw.py
similarity index 100%
rename from src/canmatrix/tests/test_arxml_gw.py
rename to tests/test_arxml_gw.py
diff --git a/src/canmatrix/tests/test_canmatrix.py b/tests/test_canmatrix.py
similarity index 97%
rename from src/canmatrix/tests/test_canmatrix.py
rename to tests/test_canmatrix.py
index 3c1e6330f33cdc757837028c616ccef5cef17f97..bc8e77aa21c74c246808358b55c2454597971b23 100644
--- a/src/canmatrix/tests/test_canmatrix.py
+++ b/tests/test_canmatrix.py
@@ -17,6 +17,17 @@ def test_signal_defaults_to_decimal():
     assert isinstance(signal.factor, decimal.Decimal)
 
 
+def test_enum_defines_from_decimal():
+    db = canmatrix.CanMatrix()
+    db.add_frame_defines("test_enum", 'ENUM  "eins","zwei","drei","vier"')
+    s1 = canmatrix.canmatrix.Signal('signal', size=32, is_float=True)
+    f1 = canmatrix.canmatrix.Frame('frame', arbitration_id=1, size=4)
+    f1.add_signal(s1)
+    f1.add_attribute("test_enum", "2.00001")
+    db.add_frame(f1)
+    db.enum_attribs_to_values()
+ 
+
 def test_encode_signal():
     s1 = canmatrix.canmatrix.Signal('signal', size=8)
     assert s1.phys2raw() == 0
@@ -286,7 +297,7 @@ def test_signal_encode_named_value(some_signal):
 
 
 def test_signal_encode_invalid_named_value(some_signal):
-    with pytest.raises(ValueError):
+    with pytest.raises(decimal.InvalidOperation):
         some_signal.phys2raw("wrong")
 
 
@@ -947,7 +958,7 @@ def test_canmatrix_get_frame_by_wrong_pgn(empty_matrix, empty_frame):
     empty_frame.arbitration_id.id = 0xAB123456
     empty_frame.arbitration_id.extended = True
     empty_matrix.add_frame(empty_frame)
-    assert empty_matrix.frame_by_pgn(0xAB34) == None
+    assert empty_matrix.frame_by_pgn(0xAB34) is None
 
 
 def test_canmatrix_iterate_over_frames(empty_matrix, empty_frame):
@@ -976,6 +987,21 @@ def test_canmatrix_rename_ecu_by_wrong_name(empty_matrix):
     assert ecu.name == "old_name"
 
 
+def test_canmatrix_rename_ecu_check_frame(empty_matrix):
+    ecu = canmatrix.Ecu(name="old_name")
+    frame = canmatrix.Frame(name="test_frame")
+    signal = canmatrix.Signal(name="test_signal")
+    signal.add_receiver("old_name")
+    frame.add_signal(signal)
+    frame.update_receiver()
+    assert "old_name" in frame.receivers
+    
+    empty_matrix.add_ecu(ecu)
+    empty_matrix.add_frame(frame)
+    empty_matrix.rename_ecu("old_name", "new_name")
+    assert "old_name" not in frame.receivers
+    assert "new_name" in frame.receivers
+
 def test_canmatrix_rename_ecu_by_instance(empty_matrix):
     ecu = canmatrix.Ecu(name="old_name")
     empty_matrix.add_ecu(ecu)
diff --git a/src/canmatrix/tests/test_cli_compare.py b/tests/test_cli_compare.py
similarity index 68%
rename from src/canmatrix/tests/test_cli_compare.py
rename to tests/test_cli_compare.py
index fa908f690d0ade8487f9296ec2ade54ca28c3047..c10f5b3a7413734ddaa324e25e367cd060986688 100644
--- a/src/canmatrix/tests/test_cli_compare.py
+++ b/tests/test_cli_compare.py
@@ -1,43 +1,49 @@
+import os
 import sys
+import tempfile
 
-import canmatrix.formats
 import pytest
 
+import canmatrix.formats
+
 try:
     from pathlib import Path
 except ImportError:
     from pathlib2 import Path
 
 pytest_plugins = ["pytester"]
-here = Path(__file__).parent
+here = Path(__file__).parent / "files"
+tmp_dir = tempfile.mkdtemp()
 
 
 @pytest.fixture
 def run(testdir):
     def do_run(*args):
-        args = [sys.executable,"-m","canmatrix.cli.compare"] + list(args)
+        args = [sys.executable, "-m", "canmatrix.cli.compare"] + list(args)
         return testdir.run(*args)
     return do_run
 
 def test_silent(tmpdir, run):
-    inputFile1 = str(here / "test_frame_decoding.dbc")
-    inputFile2 = str(here / "ARXML_min_max.arxml")
+    inputFile1 = str(here / "dbc" / "test_frame_decoding.dbc")
+    inputFile2 = str(here / "arxml" / "ARXML_min_max.arxml")
 
-    normal_result = run(inputFile1 ,inputFile2)
-    silent_result = run("-s", inputFile1 ,inputFile2)
+    normal_result = run(inputFile1, inputFile2)
+    silent_result = run("-s", inputFile1, inputFile2)
     assert len(normal_result.errlines) > len(silent_result.errlines)
+    assert len(normal_result.outlines) == len(silent_result.outlines)
 
 def test_verbose(tmpdir, run):
-    inputFile1 = str(here / "test_frame_decoding.dbc")
-    inputFile2 = str(here / "ARXML_min_max.arxml")
+    inputFile1 = str(here / "dbc" / "test_frame_decoding.dbc")
+    inputFile2 = str(here / "arxml" / "ARXML_min_max.arxml")
 
     normal_result = run(inputFile1, inputFile2)
-    verbose_result = run("-vv", inputFile1 ,inputFile2)
-    assert len(normal_result.errlines) < len(verbose_result.errlines)
+    verbose_result = run("-vv", inputFile1, inputFile2)
+    assert len(normal_result.errlines) + len(normal_result.outlines) < len(verbose_result.errlines) + len(verbose_result.outlines)
 
 def create_dbc():
-    outFile1 = str(here / "tmpa.dbc")
-    outFile2 = str(here / "tmpb.dbc")
+    outFile1 = tmp_dir + "/output_cli_compare_tmpa.dbc"
+    outFile2 = tmp_dir + "/output_cli_compare_tmpb.dbc"
+
     myFrame = canmatrix.Frame("testFrame3", arbitration_id=canmatrix.arbitration_id_converter(0x124), size=8, transmitters=["testBU"])
     mySignal = canmatrix.Signal("someTestSignal",
                       size=11,
@@ -55,7 +61,7 @@ def create_dbc():
     canmatrix.formats.dumpp({"": db}, outFile1, dbcExportEncoding='iso-8859-1',
                             dbcExportCommentEncoding='iso-8859-1')
 
-    db.add_frame_defines("myAttribute","INT -5 10")
+    db.add_frame_defines("myAttribute", "INT -5 10")
     db.add_signal_defines("mySignalAttribute", 'INT 0 65535')
     mySignal.add_attribute("mySignalAttribute", "7")
     myFrame.add_attribute("myAttribute", "42")
@@ -78,7 +84,7 @@ def test_attributes(tmpdir, run):
 
     reference = run(inputFile1, inputFile2)
     result = run("--attributes", inputFile1, inputFile2)
-    assert len(reference.outlines) < len(result.outlines)
+    assert len(reference.errlines) + len(reference.outlines) < len(result.errlines) + len(result.outlines)
     assert "ATTRIBUTES" not in "".join(reference.outlines)
     assert "ATTRIBUTES" in "".join(result.outlines)
 
@@ -87,7 +93,7 @@ def test_value_tables(tmpdir, run):
 
     reference = run(inputFile1, inputFile2)
     result = run("--valueTable", inputFile1, inputFile2)
-    assert len(reference.outlines) > len(result.outlines)
+    assert len(reference.errlines) + len(reference.outlines) > len(result.errlines) + len(result.outlines)
     assert "Valuetable" in "".join(reference.outlines)
     assert "Valuetable" not in "".join(result.outlines)
 
@@ -95,7 +101,7 @@ def test_comments(tmpdir, run):
     (inputFile1, inputFile2) = create_dbc()
     reference = run(inputFile1, inputFile2)
     result = run("--comments", inputFile1, inputFile2)
-    assert len(reference.outlines) < len(result.outlines)
+    assert len(reference.errlines) + len(reference.outlines) < len(result.errlines) + len(result.outlines)
     assert "comment:" not in "".join(reference.outlines)
     assert "comment:" in "".join(result.outlines)
 
diff --git a/src/canmatrix/tests/test_cli_convert.py b/tests/test_cli_convert.py
similarity index 69%
rename from src/canmatrix/tests/test_cli_convert.py
rename to tests/test_cli_convert.py
index f1dfe7624500a7fbe4423375ae4737221a42fb16..32a9581cb875d51c331ee93235a6d581ab4d5753 100644
--- a/src/canmatrix/tests/test_cli_convert.py
+++ b/tests/test_cli_convert.py
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-
+import os
 import sys
+import tempfile
 
-import canmatrix.formats
 import pytest
+import canmatrix.formats
 
 try:
     from pathlib import Path
@@ -10,48 +12,55 @@ except ImportError:
     from pathlib2 import Path
 
 pytest_plugins = ["pytester"]
-here = Path(__file__).parent
+here = Path(__file__).parent / "files"
+tmp_dir = tempfile.mkdtemp()
 
 
 @pytest.fixture
 def run(testdir):
     def do_run(*args):
-        args = [sys.executable,"-m","canmatrix.cli.convert"] + list(args)
+        args = [sys.executable, "-m", "canmatrix.cli.convert"] + list(args)
         return testdir.run(*args)
     return do_run
 
 def test_silent(tmpdir, run):
-    inputFile = str(here / "test_frame_decoding.dbc")
+    inputFile = str(here / "dbc" / "test_frame_decoding.dbc")
 
-    normal_result = run(inputFile ,"tmp.dbc")
-    silent_result = run("-s", inputFile,"tmp.dbc")
+    normal_result = run(inputFile, "tmp.dbc")
+    silent_result = run("-s", inputFile, "tmp.dbc")
     assert len(normal_result.errlines) > len(silent_result.errlines)
 
 def test_verbose(tmpdir, run):
-    inputFile = str(here / "ARXML_min_max.arxml")
+    inputFile = str(here / "arxml" / "ARXML_min_max.arxml")
 
-    normal_result = run(inputFile ,"tmp.dbc")
-    verbose_result = run("-vv", inputFile,"tmp.dbc")
-    assert len(normal_result.errlines) < len(verbose_result.errlines)
+    normal_result = run(inputFile, "tmp.dbc")
+    verbose_result = run("-vv", inputFile, "tmp.dbc")
+    assert len(normal_result.errlines) + len(normal_result.outlines) < len(verbose_result.errlines) + len(verbose_result.outlines)
 
 def test_force_output_format(tmpdir, run):
-    inputFile = str(here / "test_frame_decoding.dbc")
-    outFile =  str(here / "tmp.tmp")
-    normal_result = run("-v", "-f","dbc", inputFile, outFile)
-    assert 'INFO - convert - done' in normal_result.errlines[-1]
+    inputFile = str(here / "dbc" / "test_frame_decoding.dbc")
+    outFile = tmp_dir + "/cli_convert_test_force.tmp"
+
+    normal_result = run("-vv", "-f", "dbc", inputFile, outFile)
+    assert 'INFO - convert - Export Done' in normal_result.errlines[-1]
+
     with open(outFile, "r") as fd:
         first_line = fd.readline()
         assert first_line == 'VERSION "created by canmatrix"\n'
 
-def test_foce_input_format(tmpdir, run):
-    #requires test_force_output to run first
-    inputFile =  str(here / "tmp.tmp")
-    normal_result = run("-i","dbc", inputFile, "tmp.dbc")
-    assert 'INFO - convert - done' in normal_result.errlines[-1]
+def test_force_input_format(tmpdir, run):
+    inputFile = tmp_dir + "/cli_convert_test_force.tmp"
+
+    normal_result = run("-i", "dbc", inputFile, "tmp.dbc")
+    assert 'INFO - convert - Export Done' in normal_result.errlines[-1]
 
 def create_dbc_with_special_char():
-    outFile = str(here / "tmp.dbc")
-    myFrame = canmatrix.Frame("testFrame1", arbitration_id=canmatrix.arbitration_id_converter(0x123), size=8, transmitters=["testBU"])
+    outFile = tmp_dir + "/output_cli_convert_tmp.dbc"
+
+    myFrame = canmatrix.Frame("testFrame1", 
+                              arbitration_id=canmatrix.arbitration_id_converter(0x123), 
+                              size=8, 
+                              transmitters=["testBU"])
     mySignal = canmatrix.Signal("someTestSignal",
                       size=11,
                       is_little_endian=False,
@@ -67,137 +76,140 @@ def create_dbc_with_special_char():
     db = canmatrix.CanMatrix()
     db.add_frame(myFrame)
     db.add_frame_defines("SomeUnneededDefine", 'INT 0 65535')
-    canmatrix.formats.dumpp({"": db}, outFile, dbcExportEncoding='iso-8859-1',
+    canmatrix.formats.dumpp({"": db},
+                            outFile, 
+                            dbcExportEncoding='iso-8859-1',
                             dbcExportCommentEncoding='iso-8859-1')
     return outFile
 
 def test_ignore_encoding_errors(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    normal_result = run("--ignoreEncodingErrors","--dbcExportEncoding", "ascii", inputFile, "tmp2.dbc")
-    assert 'INFO - convert - done' in normal_result.errlines[-1]
+    normal_result = run("--ignoreEncodingErrors", "--dbcExportEncoding", "ascii", inputFile, "tmp2.dbc")
+    assert 'INFO - convert - Export Done' in normal_result.errlines[-1]
 
 def test_delete_obsolete_defines(tmpdir, run):
     inputFile = create_dbc_with_special_char()
     deleted_result = run("--deleteObsoleteDefines", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
-        assert b"BA_DEF_" not in content
+        assert b"SomeUnneededDefine" not in content
     normal_result = run(inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
-        assert b"BA_DEF_" in content
+        assert b"SomeUnneededDefine" in content
 
 def test_delete_ecu(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--deleteEcu","testBU", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    deleted_result = run("--deleteEcu", "testBU", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"testBU" not in content
 
 def test_rename_ecu(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--renameEcu","testBU:renamedECU", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    deleted_result = run("--renameEcu", "testBU:renamedECU", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"testBU" not in content
         assert b"renamedECU" in content
 
 def test_delete_signal(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--deleteSignal","someTestSignal", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    deleted_result = run("--deleteSignal", "someTestSignal", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"someTestSignal" not in content
 
 def test_rename_signal(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--renameSignal","someTestSignal:renamedSignal", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    deleted_result = run("--renameSignal", "someTestSignal:renamedSignal", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"someTestSignal" not in content
         assert b"renamedSignal" in content
 
 def test_delete_frame(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--deleteFrame","testFrame1", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    deleted_result = run("--deleteFrame", "testFrame1", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert "testFrame1" not in content
 
 def test_rename_frame(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--renameFrame","testFrame1:renamedFrame", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    deleted_result = run("--renameFrame", "testFrame1:renamedFrame", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"testFrame1" not in content
         assert b"renamedFrame" in content
 
 def test_add_frame_receiver(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--addFrameReceiver","testFrame1:newECU", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    deleted_result = run("--addFrameReceiver", "testFrame1:newECU", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"recBU,newECU" in content
 
 def test_change_frame_id(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--changeFrameId","291:666", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    deleted_result = run("--changeFrameId", "291:666", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"BO_ 666" in content
 
 def test_set_frame_fd(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    deleted_result = run("--setFrameFd","testFrame1", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    deleted_result = run("--setFrameFd", "testFrame1", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b'BA_ "VFrameFormat" BO_ 291 14' in content
-    deleted_result = run("--unsetFrameFd","testFrame1", "tmp2.dbc", "tmp3.dbc")
-    with open("tmp3.dbc","rb") as fd:
+    deleted_result = run("--unsetFrameFd", "testFrame1", "tmp2.dbc", "tmp3.dbc")
+    with open("tmp3.dbc", "rb") as fd:
         content = fd.read()
         assert b'BA_ "VFrameFormat" BO_ 291 14' not in content
 
 def test_recalc_dlc(tmpdir, run):
     inputFile = create_dbc_with_special_char()
-    result = run("--recalcDLC","max", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    result = run("--recalcDLC", "max", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"testFrame1: 8" in content
 
-    result = run("--recalcDLC","force", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    result = run("--recalcDLC", "force", inputFile, "tmp2.dbc")
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"testFrame1: 2" in content
 
 def test_skip_long_dlc(tmpdir, run):
     inputFile = create_dbc_with_special_char()
     result = run("--skipLongDlc", "7", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert "someTestSignal" not in content
 
 def test_cut_long_frames(tmpdir, run):
     inputFile = create_dbc_with_special_char()
     result = run("--cutLongFrames", "1", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert "someTestSignal" not in content
     result = run("--cutLongFrames", "2", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"someTestSignal" in content
 
 def test_copy_signals(tmpdir, run):
     inputFile = create_dbc_with_special_char()
     result = run("--signals", "someTestSignal", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"someTestSignal" in content
         assert b"VECTOR__INDEPENDENT_SIG_MSG" in content
 
-
 def create_dbc(additionalReceiver = []):
-    outFile = str(here / "tmpb.dbc")
+    tmp_dir = tempfile.mkdtemp()
+    outFile = tmp_dir + "/output_cli_convert_tmpb.dbc"
+
     myFrame = canmatrix.Frame("testFrame3", arbitration_id=canmatrix.arbitration_id_converter(0x124), size=8, transmitters=["testBU"])
     mySignal = canmatrix.Signal("someTestSignal",
                       size=11,
@@ -210,7 +222,7 @@ def create_dbc(additionalReceiver = []):
                       receivers=["recBU"])
     myFrame.add_signal(mySignal)
     myFrame2 = canmatrix.Frame("testFrame2", arbitration_id=canmatrix.arbitration_id_converter(0x125), size=8, transmitters=["testBU2"])
-    myFrame2.add_attribute("myAttribute","42")
+    myFrame2.add_attribute("myAttribute", "42")
     mySignal2 = canmatrix.Signal("someTestSignal2",
                       start_bit=15,
                       size=11,
@@ -238,7 +250,7 @@ def create_dbc(additionalReceiver = []):
     db = canmatrix.CanMatrix()
     db.add_frame(myFrame)
     db.add_frame(myFrame2)
-    db.add_frame_defines("myAttribute","INT -5 10")
+    db.add_frame_defines("myAttribute", "INT -5 10")
     db.add_signal_defines("mySignalAttribute", 'INT 0 65535')
     canmatrix.formats.dumpp({"": db}, outFile, dbcExportEncoding='iso-8859-1',
                             dbcExportCommentEncoding='iso-8859-1')
@@ -247,7 +259,7 @@ def create_dbc(additionalReceiver = []):
 def test_copy_ecus(tmpdir, run):
     inputFile = create_dbc()
     result = run("--ecus", "testBU", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert "testBU2" not in content
         assert "testBU" in content
@@ -255,7 +267,7 @@ def test_copy_ecus(tmpdir, run):
 def test_copy_ecus_rx(tmpdir, run):
     inputFile = create_dbc()
     result = run("--ecus", "recBU:rx", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert "recBU2" not in content
         assert "recBU" in content
@@ -263,7 +275,7 @@ def test_copy_ecus_rx(tmpdir, run):
 def test_copy_ecus_tx(tmpdir, run):
     inputFile = create_dbc(additionalReceiver = ["testBU"])
     result = run("--ecus", "testBU:tx", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert "testFrame2" not in content
         assert "testFrame3" in content
@@ -271,7 +283,7 @@ def test_copy_ecus_tx(tmpdir, run):
 def test_copy_frames(tmpdir, run):
     inputFile = create_dbc()
     result = run("--frames", "testFrame3", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","rb") as fd:
+    with open("tmp2.dbc", "rb") as fd:
         content = fd.read()
         assert b"testFrame2" not in content
         assert b"testFrame3" in content
@@ -279,22 +291,21 @@ def test_copy_frames(tmpdir, run):
 def test_delete_frame_attributes(tmpdir, run):
     inputFile = create_dbc()
     result = run("--deleteFrameAttributes", "myAttribute", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert 'BA_ "myAttribute"' not in content
 
 def test_delete_zero_signals(tmpdir, run):
     inputFile = create_dbc()
     result = run("--deleteZeroSignals", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert 'zeroSignal' not in content
 
-
 def test_delete_signal_attributes(tmpdir, run):
     inputFile = create_dbc()
     result = run("--deleteSignalAttributes", "mySignalAttribute", inputFile, "tmp2.dbc")
-    with open("tmp2.dbc","r") as fd:
+    with open("tmp2.dbc", "r") as fd:
         content = fd.read()
         assert 'BA_ "mySignalAttribute"' not in content
 
diff --git a/tests/test_codec.py b/tests/test_codec.py
new file mode 100644
index 0000000000000000000000000000000000000000..09db9f8a1a9e81a4ef660166e09b25a00da0795d
--- /dev/null
+++ b/tests/test_codec.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""Tests for `canmatrix` package."""
+import os
+import unittest
+import tempfile
+
+from canmatrix import formats
+from canmatrix.canmatrix import Signal, ArbitrationId
+
+
+class TestCanmatrixCodec(unittest.TestCase):
+    """Tests for `canmatrix` package."""
+
+    def setUp(self):
+        """Set up test fixtures, if any."""
+
+    def tearDown(self):
+        """Tear down test fixtures, if any."""
+
+    # def test_bitstruct_format(self):
+    #     """"""
+    #     s1 = Signal('signal')
+    #     self.assertEqual(s1.bitstruct_format(), '<s0')
+
+    #     s2 = Signal('signal', size=8)
+    #     self.assertEqual(s2.bitstruct_format(), '<s8')
+
+    #     s3 = Signal('signal', size=8, is_signed=False)
+    #     self.assertEqual(s3.bitstruct_format(), '<u8')
+
+    #     s4 = Signal('signal', size=8, is_little_endian=False)
+    #     self.assertEqual(s4.bitstruct_format(), '>s8')
+
+    def test_encode_by_signal_raw_value(self):
+        test_file = "tests/files/dbc/test.dbc"
+        for bus in formats.loadp(test_file).values():
+            test_frame1 = ArbitrationId(0x123)
+            data = {
+                'Signal': 2,
+                'someTestSignal': 101,
+            }
+            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
+            assert data_bytes == (0, 0xCA, 0x20, 0, 0, 0, 0, 0)
+
+    def test_encode_by_signal_physical_value(self):
+        test_file = "tests/files/dbc/test.dbc"
+        for bus in formats.loadp(test_file).values():
+            test_frame1 = ArbitrationId(0x123)
+            data = {
+                'someTestSignal': "101",
+                'Signal': u'two'
+            }
+            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
+            assert data_bytes == (0, 0x28, 0x20, 0, 0, 0, 0, 0)
+
+    def test_encode_decode_signal_value(self):
+        test_file = "tests/files/dbc/test.dbc"
+        for bus in formats.loadp(test_file).values():
+            test_frame1 = ArbitrationId(0x123)
+
+            data = {
+                'Signal': 2,
+                'someTestSignal': 101,
+            }
+            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
+            decoded = bus.decode(test_frame1, data_bytes)
+
+            for k, v in data.items():
+                assert decoded[k].raw_value == v
+
+    def test_encode_decode_signal_value_choice_unicode(self):
+        test_file = "tests/files/dbc/test.dbc"
+        for bus in formats.loadp(test_file).values():
+            test_frame1 = ArbitrationId(0x123)
+
+            data = {
+                'Signal': u'two'
+            }
+            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
+
+            decoded = bus.decode(test_frame1, data_bytes)
+
+            for k, v in data.items():
+                assert decoded[k].signal.values[decoded[k].raw_value] == v
+
+    def test_encode_decode_signal_value_choice_str(self):
+        test_file = "tests/files/dbc/test.dbc"
+        for bus in formats.loadp(test_file).values():
+            test_frame1 = ArbitrationId(0x123)
+
+            data = {
+                'Signal': 'two'
+            }
+            data_bytes = tuple(bytearray(bus.encode(test_frame1, data)))
+
+            decoded = bus.decode(test_frame1, data_bytes)
+
+            for k, v in data.items():
+                assert decoded[k].signal.values[decoded[k].raw_value] == v
+
+    def test_import_export_additional_frame_info(self):
+        test_file = "tests/files/dbc/test.dbc"
+        dbs = formats.loadp(test_file)
+        tmp_dir = tempfile.mkdtemp()
+        # for extension in ['csv', 'json']: # json will not export None type
+        for extension in ['csv']:
+            out_file_name = tmp_dir + "/output." + extension
+            formats.dumpp(dbs, out_file_name, additionalFrameAttributes="UserFrameAttr")
+            with open(out_file_name, "r") as file:
+                data = file.read()
+            self.assertIn("UserFrameAttr", data)
+
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/src/canmatrix/tests/test_copy.py b/tests/test_copy.py
similarity index 99%
rename from src/canmatrix/tests/test_copy.py
rename to tests/test_copy.py
index 6340a77056e606d9671eec80f75847f16d66f655..f7f461197d48c9b2c9ca8a3f8bef8149e50d1916 100644
--- a/src/canmatrix/tests/test_copy.py
+++ b/tests/test_copy.py
@@ -80,6 +80,7 @@ def test_copy_ecu_with_attributes():
     assert matrix1.ecu_by_name("ECU").attribute("Node Address") == '42'
     assert matrix1.ecu_by_name("ECU").attribute("some_ecu_define", matrix1) == "default_value"
 
+
 def test_copy_frame_default_attributes():
     source = canmatrix.canmatrix.CanMatrix()
     frame1 = canmatrix.canmatrix.Frame("Frame1", arbitration_id=1)
diff --git a/src/canmatrix/tests/test_dbc.py b/tests/test_dbc.py
similarity index 87%
rename from src/canmatrix/tests/test_dbc.py
rename to tests/test_dbc.py
index bf60dedaf141cb91697a0f8a64dade452e9dcc0d..45d34fe6fab8d47926ef81b81e1770880adaaa60 100644
--- a/src/canmatrix/tests/test_dbc.py
+++ b/tests/test_dbc.py
@@ -339,6 +339,20 @@ def test_j1939_frametype():
     matrix = canmatrix.formats.dbc.load(dbc, dbcImportEncoding="utf8")
     assert matrix.frames[0].is_j1939 == False
 
+def test_multiplex_frame():
+    dbc = io.BytesIO(textwrap.dedent(u'''\
+    BU_: someOtherEcu
+    
+    BO_ 123 someFrame: 8 someOtherEcu
+     SG_ someSignal m2 : 8|8@1+ (1,0) [0|9] ""  CCL_TEST
+     SG_ someOtherSignal m1 : 8|8@0+ (1,0) [0|9] ""  CCL_TEST
+     SG_ someMultiplexor M : 0|8@1+ (1,0) [0|2] ""  CCL_TEST
+    ''').encode('utf-8'))
+    matrix = canmatrix.formats.dbc.load(dbc, dbcImportEncoding="utf8")
+    assert matrix.frames[0].is_multiplexed
+
+    assert matrix.frames[0].signal_by_name("someSignal").muxer_for_signal == "someMultiplexor"
+
 
 def test_attributes_with_spaces_before_semicolumn():
     dbc = io.BytesIO(textwrap.dedent(u'''\
@@ -374,7 +388,6 @@ def test_cycle_time_handling():
     assert matrix.frames[0].signal_by_name("sig1").cycle_time == 10
     assert matrix.frames[0].signal_by_name("sig2").cycle_time == 20
 
-
 #    assert "GenMsgCycleTime" not in matrix.frame_defines
 #    assert "GenSigCycleTime" not in matrix.signal_defines
 
@@ -541,9 +554,52 @@ def test_default_initial_value():
 
     matrix = canmatrix.formats.dbc.load(dbc, dbcImportEncoding="utf8")
     assert matrix.frames[0].signals[0].initial_value == 10
-#    outdbc = io.BytesIO()
-#    canmatrix.formats.dump(matrix, outdbc, "dbc")
 
+def test_keep_individual_inital_value():
+    dbc = io.BytesIO(textwrap.dedent(u'''\
+        BO_ 561 ECU1_Message2: 1 ECU1
+            SG_ ECU2_Signal2 : 0|8@0+ (2,0) [-2|250] "g" ECU2
+
+        BA_DEF_ SG_ "GenSigStartValue" FLOAT 0.0 100.0;
+        
+        BA_DEF_DEF_ "GenSigStartValue" 10.0;
+        BA_ "GenSigStartValue" SG_ 561 ECU2_Signal2 42;
+    ''').encode('utf-8'))
+    matrix1 = canmatrix.formats.dbc.load(dbc, dbcImportEncoding="utf8")
+    assert matrix1.frames[0].signals[0].initial_value == decimal.Decimal('84')  # in matrix should be the physical value!
+    outdbc = io.BytesIO()
+    canmatrix.formats.dump(matrix1, outdbc, "dbc")
+    # in dbc should be the raw value
+    assert  'BA_ "GenSigStartValue" SG_ 561 ECU2_Signal2 42' in outdbc.getvalue().decode('utf8')
+
+
+def test_individual_initial_value_merge():
+    dbc1 = io.BytesIO(textwrap.dedent(u'''\
+            BO_ 560 ECU1_Message: 1 ECU1
+              SG_ ECU2_Signal : 0|8@0+ (1,-5) [-2|250] "g" ECU2
+
+            BA_DEF_ SG_ "GenSigStartValue" FLOAT 0.0 100.0;
+            
+            BA_DEF_DEF_ "GenSigStartValue" 10.0;
+    ''').encode('utf-8'))
+
+    dbc2 = io.BytesIO(textwrap.dedent(u'''\
+            BO_ 561 ECU1_Message2: 1 ECU1
+              SG_ ECU2_Signal2 : 0|8@0+ (1,0) [-2|250] "g" ECU2
+
+            BA_DEF_ SG_ "GenSigStartValue" FLOAT 0.0 100.0;
+            
+            BA_DEF_DEF_ "GenSigStartValue" 10.0;
+            BA_ "GenSigStartValue" SG_ 561 ECU2_Signal2 42;
+    ''').encode('utf-8'))
+
+    matrix1 = canmatrix.formats.dbc.load(dbc1, dbcImportEncoding="utf8")
+    matrix2 = canmatrix.formats.dbc.load(dbc2, dbcImportEncoding="utf8")
+    matrix1.merge([matrix2])
+    outdbc = io.BytesIO()
+    canmatrix.formats.dump(matrix1, outdbc, "dbc")
+
+    assert  'BA_ "GenSigStartValue" SG_ 561 ECU2_Signal2 42' in outdbc.getvalue().decode('utf8')
 
 def test_no_initial_value():
     dbc = io.BytesIO(textwrap.dedent(u'''\
@@ -586,3 +642,24 @@ def test_int_attribute_zero():
     assert 'BO_ 0 0' in outdbc.getvalue().decode('utf8')
     assert 'TestEcu 1' in outdbc.getvalue().decode('utf8')
     assert 'TestEcu 0' in outdbc.getvalue().decode('utf8')
+
+def test_env_var_with_val():
+
+    dbc = io.BytesIO(textwrap.dedent(u'''\
+        EV_ XYZ2_RADAR__LDWwarningStatusFl11: 0 [1|3] "km/h" 2 1 DUMMY_NODE_VECTOR0 Vector__XXX;
+        BA_ "SystemEnvVarLongSymbol" EV_ XYZ2_RADAR__LDWwarningStatusFl11 "XYZ2_RADAR__LDWwarningStatus__RADAR_XYZ2";
+        VAL_ XYZ2_RADAR__LDWwarningStatusFl11 0 "on" 1 "off" 2 "reserved" 3 "error" ;
+    ''').encode('utf-8'))
+
+    matrix = canmatrix.formats.dbc.load(dbc)    
+    key, var = next(iter(matrix.env_vars.items()))
+    assert key == 'XYZ2_RADAR__LDWwarningStatus__RADAR_XYZ2'
+    assert var['min'] == '1'
+    assert var['max'] == '3'
+    assert var['initialValue'] == '2'
+    assert var['unit'] == 'km/h'
+    assert len(var['values']) == 4
+    assert var['values']['0'] == 'on'
+    assert var['values']['1'] == 'off'
+
+    
\ No newline at end of file
diff --git a/src/canmatrix/tests/test_dbf.py b/tests/test_dbf.py
similarity index 100%
rename from src/canmatrix/tests/test_dbf.py
rename to tests/test_dbf.py
diff --git a/src/canmatrix/tests/test_formats.py b/tests/test_formats.py
similarity index 100%
rename from src/canmatrix/tests/test_formats.py
rename to tests/test_formats.py
diff --git a/src/canmatrix/tests/test_frame_decoding.py b/tests/test_frame_decoding.py
similarity index 98%
rename from src/canmatrix/tests/test_frame_decoding.py
rename to tests/test_frame_decoding.py
index c4d0eaaeaa768d3d8a54492fc76cecef398d8819..ee8288ffa7b1d818998f63ec7c626516d915ff80 100644
--- a/src/canmatrix/tests/test_frame_decoding.py
+++ b/tests/test_frame_decoding.py
@@ -9,8 +9,8 @@ from canmatrix.convert import convert_pdu_container_to_multiplexed
 
 
 def load_dbc():
-    here = os.path.dirname(os.path.realpath(__file__))
-    return canmatrix.formats.loadp_flat(os.path.join(here, "test_frame_decoding.dbc"))
+    test_file = "tests/files/dbc/test_frame_decoding.dbc"
+    return canmatrix.formats.loadp_flat(test_file)
 
 
 def test_decode_with_dbc_big_endian():
diff --git a/src/canmatrix/tests/test_frame_encoding.py b/tests/test_frame_encoding.py
similarity index 97%
rename from src/canmatrix/tests/test_frame_encoding.py
rename to tests/test_frame_encoding.py
index c091018fe764dd14e61454eb8008e41b693737a1..1df3211a0c7da8e462138f79eb8328e949bc2185 100644
--- a/src/canmatrix/tests/test_frame_encoding.py
+++ b/tests/test_frame_encoding.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 import io
-import os.path
+# import os.path
 import textwrap
 
 import attr
@@ -8,8 +8,8 @@ import canmatrix.formats
 
 
 def load_dbc():
-    here = os.path.dirname(os.path.realpath(__file__))
-    return canmatrix.formats.loadp_flat(os.path.join(here, "test_frame_decoding.dbc"))
+    test_file = "tests/files/dbc/test_frame_decoding.dbc"
+    return canmatrix.formats.loadp_flat(test_file)
 
 
 def test_encode_with_dbc_big_endian():
diff --git a/src/canmatrix/tests/test_j1939_decoder.py b/tests/test_j1939_decoder.py
similarity index 100%
rename from src/canmatrix/tests/test_j1939_decoder.py
rename to tests/test_j1939_decoder.py
diff --git a/src/canmatrix/tests/test_json.py b/tests/test_json.py
similarity index 100%
rename from src/canmatrix/tests/test_json.py
rename to tests/test_json.py
diff --git a/src/canmatrix/tests/test_scapy.py b/tests/test_scapy.py
similarity index 91%
rename from src/canmatrix/tests/test_scapy.py
rename to tests/test_scapy.py
index 171e9065aa74b6cd84e0b6972022e2a050a46512..98e0b998c6a96e7981dfcc94d61af7b1b82b81a0 100644
--- a/src/canmatrix/tests/test_scapy.py
+++ b/tests/test_scapy.py
@@ -1,6 +1,8 @@
-import  canmatrix.formats.scapy
-import io
 import os
+import io
+
+import canmatrix.formats.scapy
+
 
 def test_scapy_frame_exists():
     db = canmatrix.CanMatrix()
@@ -12,8 +14,9 @@ def test_scapy_frame_exists():
 
 
 def test_scapy_muliplexed_frame():
-    here = os.path.dirname(os.path.realpath(__file__))
-    db = canmatrix.formats.loadp_flat(os.path.join(here, "test_frame_decoding.dbc"))
+    # here = os.path.dirname(os.path.realpath(__file__))
+    test_file = "tests/files/dbc/test_frame_decoding.dbc"
+    db = canmatrix.formats.loadp_flat(test_file)
     outscapy = io.BytesIO()
     canmatrix.formats.dump(db, outscapy, "scapy")
     assert "ConditionalField" in outscapy.getvalue().decode("utf8")
diff --git a/src/canmatrix/tests/test_sym.py b/tests/test_sym.py
similarity index 100%
rename from src/canmatrix/tests/test_sym.py
rename to tests/test_sym.py
diff --git a/src/canmatrix/tests/test_utils.py b/tests/test_utils.py
similarity index 100%
rename from src/canmatrix/tests/test_utils.py
rename to tests/test_utils.py
diff --git a/src/canmatrix/tests/test_wireshark.py b/tests/test_wireshark.py
similarity index 89%
rename from src/canmatrix/tests/test_wireshark.py
rename to tests/test_wireshark.py
index 1a7f9071a708c0cacb09f41da3c2d9ab0f914837..703123e3cf4ce7e1f3036106d040926e9ef5930e 100644
--- a/src/canmatrix/tests/test_wireshark.py
+++ b/tests/test_wireshark.py
@@ -12,8 +12,10 @@ def test_wireshark_frame_exists():
 
 
 def test_wireshark_muliplexed_frame():
-    here = os.path.dirname(os.path.realpath(__file__))
-    db = canmatrix.formats.loadp_flat(os.path.join(here, "test_frame_decoding.dbc"))
+    # here = os.path.dirname(os.path.realpath(__file__))
+    # db = canmatrix.formats.loadp_flat(os.path.join(here, "test_frame_decoding.dbc"))
+    test_file = "tests/files/dbc/test_frame_decoding.dbc"
+    db = canmatrix.formats.loadp_flat(test_file)
     outlua = io.BytesIO()
     canmatrix.formats.dump(db, outlua, "wireshark")
     assert "if muxer ==" in outlua.getvalue().decode("utf8")
diff --git a/src/canmatrix/tests/test_xls.py b/tests/test_xls.py
similarity index 100%
rename from src/canmatrix/tests/test_xls.py
rename to tests/test_xls.py
diff --git a/tox.ini b/tox.ini
index ab77dc1cea4b6aa9c3469c92762034fef7a9e365..d417cc6f6be3e8312d1c05335546636b7f1ad764 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,45 +1,57 @@
 [tox]
-envlist = py{37,38,39,310,311}, mypy
+envlist = py
 
 [testenv]
+package = wheel
+deps =
+    pytest==7.3.*
+    pytest-timeout==2.1.*
+    coveralls==3.3.1
+    pytest-cov==4.0.0
+    coverage==6.5.0
+    parameterized==0.9.*
+
 extras =
     arxml
-    test
+    xlsx
     xls
-deps=
-    coverage
-    pytest-cov
-passenv=
-    TOXENV
+    yaml
+
+commands =
+    pytest {posargs} 
+
+recreate = True
+
+[testenv:gh]
+passenv =
     CI
-    APPVEYOR
-    APPVEYOR_*
-commands=
-    python -c 'import sys; print(sys.version)'
-    pytest -s --basetemp={envtmpdir} canmatrix --cov-config={toxinidir}/.coveragerc --cov=canmatrix --pyargs {posargs}
-    coverage report
-
-[testenv:dist]
-envdir={toxworkdir}/{envname}_env
-commands=
-    python -c 'import sys; print(sys.version)'
-    python setup.py sdist --formats=gztar,zip --dist-dir={toxinidir}/dist
-    python setup.py bdist_wheel --universal --dist-dir={toxinidir}/dist
-
-[testenv:codecov]
-deps=
-    codecov
-commands=
-    codecov
-
-[testenv:old_tests]
-commands=
-    ./test.sh
-
-[testenv:mypy]
-description = type check
-basepython = python3.6
-deps=
-    mypy
-commands=
-    python -m mypy src --config-file mypy.ini
+    GITHUB_*
+    COVERALLS_*
+    PY_COLORS
+
+[pytest]
+testpaths = tests
+addopts = -v --timeout=300 --cov=canmatrix --cov-config=tox.ini --cov-report=lcov --cov-report=term
+
+[coverage:run]
+relative_files = True
+branch = False
+
+[coverage:paths]
+source =
+   src
+   */site-packages
+
+[coverage:report]
+# two digits after decimal point
+precision = 3
+show_missing = True
+exclude_lines =
+    # Have to re-enable the standard pragma, see https://coverage.readthedocs.io/en/coverage-4.5.1a/config.html#syntax
+    pragma: no cover
+
+    # Don't complain if non-runnable code isn't run:
+    if __name__ == .__main__.:
+
+    # Don't complain if tests don't hit defensive assertion code:
+    raise NotImplementedError
diff --git a/versioneer.py b/versioneer.py
index 9da01c2bb6c56a49ed8d52a1ba944663466f8dc2..a7638bea0c9e3fc37b2894e2e3404aa7a9725a43 100644
--- a/versioneer.py
+++ b/versioneer.py
@@ -336,9 +336,9 @@ def get_config_from_root(root):
     # configparser.NoOptionError (if it lacks "VCS="). See the docstring at
     # the top of versioneer.py for instructions on writing your setup.cfg .
     setup_cfg = os.path.join(root, "setup.cfg")
-    parser = configparser.SafeConfigParser()
+    parser = configparser.ConfigParser()
     with open(setup_cfg, "r") as f:
-        parser.readfp(f)
+        parser.read_file(f)
     VCS = parser.get("versioneer", "VCS")  # mandatory
 
     def get(parser, name):