From ad3bcc2844d0c5422d467e0e9b68c0c09a1f75ec Mon Sep 17 00:00:00 2001 From: Alexandre Detiste <tchet@debian.org> Date: Tue, 25 Feb 2025 21:19:02 +0100 Subject: [PATCH] New upstream version 1.2~github --- .github/workflows/ci.yml | 152 ++++ appveyor.yml | 1 - cmTemplate.xlsx | Bin 10675 -> 0 bytes examples/BusmasterRestbus.py | 1 - examples/j1939_test.py | 11 + mypy.ini | 2 +- requirements_docs.txt | 6 + setup.py | 22 +- src/canmatrix/__init__.py | 1 - src/canmatrix/cancluster.py | 1 - src/canmatrix/canmatrix.py | 223 ++++- src/canmatrix/cli/compare.py | 2 - src/canmatrix/cli/convert.py | 9 +- src/canmatrix/compare.py | 6 +- src/canmatrix/convert.py | 17 +- src/canmatrix/copy.py | 4 +- src/canmatrix/formats/__init__.py | 5 +- src/canmatrix/formats/arxml.py | 408 ++++++--- src/canmatrix/formats/csv.py | 20 +- src/canmatrix/formats/dbc.py | 70 +- src/canmatrix/formats/dbf.py | 1 - src/canmatrix/formats/eds.py | 258 ++++++ src/canmatrix/formats/fibex.py | 292 +++++- src/canmatrix/formats/json.py | 31 +- src/canmatrix/formats/kcd.py | 2 - src/canmatrix/formats/ldf.py | 8 +- src/canmatrix/formats/odx.py | 6 +- src/canmatrix/formats/scapy.py | 2 - src/canmatrix/formats/sym.py | 8 +- src/canmatrix/formats/xls.py | 9 +- src/canmatrix/formats/xls_common.py | 2 - src/canmatrix/formats/xlsx.py | 294 +++--- src/canmatrix/formats/yaml.py | 7 +- src/canmatrix/j1939_decoder.py | 2 - src/canmatrix/join.py | 1 - src/canmatrix/log.py | 6 +- src/canmatrix/utils.py | 7 +- test/test_codec.py | 110 --- {test => tests}/README | 0 {src/canmatrix/tests => tests}/__init__.py | 0 {test => tests}/createTestFdMatrix.py | 0 {test => tests}/createTestMatrix.py | 8 +- .../files/arxml}/ARXMLCompuMethod1.arxml | 0 .../files/arxml}/ARXMLContainerTest.arxml | 0 .../files/arxml}/ARXMLSecuredPDUTest.arxml | 4 +- .../files/arxml}/ARXML_min_max.arxml | 0 .../files/arxml}/MyECU.ecuc.arxml | 0 {test => tests/files/arxml}/test.arxml | 0 tests/files/dbc/aa.dbc | 78 ++ {test => tests/files/dbc}/test.dbc | 0 .../files/dbc}/test_frame_decoding.dbc | 0 {test => tests/files/dbf}/test.dbf | 178 ++-- {test => tests/files/json}/test.json | 0 {test => tests/files/kcd}/test.kcd | 0 {test => tests/files/sym}/test.sym | 838 +++++++++--------- .../from_sym => tests/files/xlsx}/test.xls | Bin {test => tests/files/xlsx}/test.xlsx | Bin {test => tests}/reference/from_arxml/test.kcd | 0 .../reference/from_arxml/test_CAN.csv | 782 ++++++++-------- .../reference/from_arxml/test_CAN.dbc | 0 .../reference/from_arxml/test_CAN.dbf | 0 .../reference/from_arxml/test_CAN.json | 0 .../reference/from_arxml/test_CAN.sym | 0 .../reference/from_arxml/test_CAN.xls | Bin .../reference/from_arxml/test_CAN.xlsx | Bin .../reference/from_arxml/test_CAN.xml | 0 .../reference/from_arxml/test_CAN.yaml | 0 {test => tests}/reference/from_dbc/test.arxml | 0 {test => tests}/reference/from_dbc/test.csv | 10 +- {test => tests}/reference/from_dbc/test.dbf | 0 {test => tests}/reference/from_dbc/test.json | 0 {test => tests}/reference/from_dbc/test.kcd | 0 {test => tests}/reference/from_dbc/test.sym | 0 {test => tests}/reference/from_dbc/test.xls | Bin {test => tests}/reference/from_dbc/test.xlsx | Bin {test => tests}/reference/from_dbc/test.xml | 0 {test => tests}/reference/from_dbc/test.yaml | 0 {test => tests}/reference/from_dbf/test.arxml | 0 {test => tests}/reference/from_dbf/test.csv | 10 +- {test => tests}/reference/from_dbf/test.dbc | 0 {test => tests}/reference/from_dbf/test.json | 0 {test => tests}/reference/from_dbf/test.kcd | 0 {test => tests}/reference/from_dbf/test.sym | 0 {test => tests}/reference/from_dbf/test.xls | Bin {test => tests}/reference/from_dbf/test.xlsx | Bin {test => tests}/reference/from_dbf/test.xml | 0 {test => tests}/reference/from_dbf/test.yaml | 0 .../reference/from_json/test.arxml | 0 {test => tests}/reference/from_json/test.csv | 6 +- {test => tests}/reference/from_json/test.dbc | 0 {test => tests}/reference/from_json/test.dbf | 0 {test => tests}/reference/from_json/test.kcd | 0 {test => tests}/reference/from_json/test.sym | 0 {test => tests}/reference/from_json/test.xls | Bin {test => tests}/reference/from_json/test.xlsx | Bin {test => tests}/reference/from_json/test.xml | 0 {test => tests}/reference/from_json/test.yaml | 0 {test => tests}/reference/from_kcd/test.arxml | 0 .../reference/from_kcd/test_test.kcd.csv | 780 ++++++++-------- .../reference/from_kcd/test_test.kcd.dbc | 0 .../reference/from_kcd/test_test.kcd.dbf | 0 .../reference/from_kcd/test_test.kcd.json | 0 .../reference/from_kcd/test_test.kcd.sym | 0 .../reference/from_kcd/test_test.kcd.xls | Bin .../reference/from_kcd/test_test.kcd.xlsx | Bin .../reference/from_kcd/test_test.kcd.xml | 0 .../reference/from_kcd/test_test.kcd.yaml | 0 {test => tests}/reference/from_sym/test.arxml | 0 {test => tests}/reference/from_sym/test.csv | 782 ++++++++-------- {test => tests}/reference/from_sym/test.dbc | 0 {test => tests}/reference/from_sym/test.dbf | 0 {test => tests}/reference/from_sym/test.json | 0 {test => tests}/reference/from_sym/test.kcd | 0 {test => tests/reference/from_sym}/test.xls | Bin {test => tests}/reference/from_sym/test.xlsx | Bin {test => tests}/reference/from_sym/test.xml | 0 {test => tests}/reference/from_sym/test.yaml | 0 {test => tests}/reference/from_xls/test.arxml | 0 {test => tests}/reference/from_xls/test.csv | 780 ++++++++-------- {test => tests}/reference/from_xls/test.dbc | 0 {test => tests}/reference/from_xls/test.dbf | 0 {test => tests}/reference/from_xls/test.json | 0 {test => tests}/reference/from_xls/test.kcd | 0 {test => tests}/reference/from_xls/test.sym | 0 {test => tests}/reference/from_xls/test.xlsx | Bin {test => tests}/reference/from_xls/test.xml | 0 {test => tests}/reference/from_xls/test.yaml | 0 .../reference/from_xlsx/test.arxml | 0 {test => tests}/reference/from_xlsx/test.csv | 780 ++++++++-------- {test => tests}/reference/from_xlsx/test.dbc | 0 {test => tests}/reference/from_xlsx/test.dbf | 0 {test => tests}/reference/from_xlsx/test.json | 0 {test => tests}/reference/from_xlsx/test.kcd | 0 {test => tests}/reference/from_xlsx/test.sym | 0 {test => tests}/reference/from_xlsx/test.xls | Bin {test => tests}/reference/from_xlsx/test.xml | 0 {test => tests}/reference/from_xlsx/test.yaml | 0 {test => tests}/test.py | 2 - {src/canmatrix/tests => tests}/test_arxml.py | 23 +- .../tests => tests}/test_arxml_gw.py | 0 .../tests => tests}/test_canmatrix.py | 30 +- .../tests => tests}/test_cli_compare.py | 40 +- .../tests => tests}/test_cli_convert.py | 147 +-- tests/test_codec.py | 117 +++ {src/canmatrix/tests => tests}/test_copy.py | 1 + {src/canmatrix/tests => tests}/test_dbc.py | 83 +- {src/canmatrix/tests => tests}/test_dbf.py | 0 .../canmatrix/tests => tests}/test_formats.py | 0 .../tests => tests}/test_frame_decoding.py | 4 +- .../tests => tests}/test_frame_encoding.py | 6 +- .../tests => tests}/test_j1939_decoder.py | 0 {src/canmatrix/tests => tests}/test_json.py | 0 {src/canmatrix/tests => tests}/test_scapy.py | 11 +- {src/canmatrix/tests => tests}/test_sym.py | 0 {src/canmatrix/tests => tests}/test_utils.py | 0 .../tests => tests}/test_wireshark.py | 6 +- {src/canmatrix/tests => tests}/test_xls.py | 0 tox.ini | 88 +- versioneer.py | 4 +- 159 files changed, 4363 insertions(+), 3242 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 cmTemplate.xlsx create mode 100644 examples/j1939_test.py create mode 100644 requirements_docs.txt create mode 100644 src/canmatrix/formats/eds.py delete mode 100755 test/test_codec.py rename {test => tests}/README (100%) rename {src/canmatrix/tests => tests}/__init__.py (100%) rename {test => tests}/createTestFdMatrix.py (100%) mode change 100755 => 100644 rename {test => tests}/createTestMatrix.py (88%) mode change 100755 => 100644 rename {src/canmatrix/tests => tests/files/arxml}/ARXMLCompuMethod1.arxml (100%) rename {src/canmatrix/tests => tests/files/arxml}/ARXMLContainerTest.arxml (100%) rename {src/canmatrix/tests => tests/files/arxml}/ARXMLSecuredPDUTest.arxml (99%) rename {src/canmatrix/tests => tests/files/arxml}/ARXML_min_max.arxml (100%) rename {src/canmatrix/tests => tests/files/arxml}/MyECU.ecuc.arxml (100%) rename {test => tests/files/arxml}/test.arxml (100%) create mode 100644 tests/files/dbc/aa.dbc rename {test => tests/files/dbc}/test.dbc (100%) rename {src/canmatrix/tests => tests/files/dbc}/test_frame_decoding.dbc (100%) rename {test => tests/files/dbf}/test.dbf (94%) rename {test => tests/files/json}/test.json (100%) rename {test => tests/files/kcd}/test.kcd (100%) rename {test => tests/files/sym}/test.sym (98%) rename {test/reference/from_sym => tests/files/xlsx}/test.xls (100%) rename {test => tests/files/xlsx}/test.xlsx (100%) rename {test => tests}/reference/from_arxml/test.kcd (100%) rename {test => tests}/reference/from_arxml/test_CAN.csv (99%) rename {test => tests}/reference/from_arxml/test_CAN.dbc (100%) rename {test => tests}/reference/from_arxml/test_CAN.dbf (100%) rename {test => tests}/reference/from_arxml/test_CAN.json (100%) rename {test => tests}/reference/from_arxml/test_CAN.sym (100%) rename {test => tests}/reference/from_arxml/test_CAN.xls (100%) rename {test => tests}/reference/from_arxml/test_CAN.xlsx (100%) rename {test => tests}/reference/from_arxml/test_CAN.xml (100%) rename {test => tests}/reference/from_arxml/test_CAN.yaml (100%) rename {test => tests}/reference/from_dbc/test.arxml (100%) rename {test => tests}/reference/from_dbc/test.csv (99%) rename {test => tests}/reference/from_dbc/test.dbf (100%) rename {test => tests}/reference/from_dbc/test.json (100%) rename {test => tests}/reference/from_dbc/test.kcd (100%) rename {test => tests}/reference/from_dbc/test.sym (100%) rename {test => tests}/reference/from_dbc/test.xls (100%) rename {test => tests}/reference/from_dbc/test.xlsx (100%) rename {test => tests}/reference/from_dbc/test.xml (100%) rename {test => tests}/reference/from_dbc/test.yaml (100%) rename {test => tests}/reference/from_dbf/test.arxml (100%) rename {test => tests}/reference/from_dbf/test.csv (99%) rename {test => tests}/reference/from_dbf/test.dbc (100%) rename {test => tests}/reference/from_dbf/test.json (100%) rename {test => tests}/reference/from_dbf/test.kcd (100%) rename {test => tests}/reference/from_dbf/test.sym (100%) rename {test => tests}/reference/from_dbf/test.xls (100%) rename {test => tests}/reference/from_dbf/test.xlsx (100%) rename {test => tests}/reference/from_dbf/test.xml (100%) rename {test => tests}/reference/from_dbf/test.yaml (100%) rename {test => tests}/reference/from_json/test.arxml (100%) rename {test => tests}/reference/from_json/test.csv (99%) rename {test => tests}/reference/from_json/test.dbc (100%) rename {test => tests}/reference/from_json/test.dbf (100%) rename {test => tests}/reference/from_json/test.kcd (100%) rename {test => tests}/reference/from_json/test.sym (100%) rename {test => tests}/reference/from_json/test.xls (100%) rename {test => tests}/reference/from_json/test.xlsx (100%) rename {test => tests}/reference/from_json/test.xml (100%) rename {test => tests}/reference/from_json/test.yaml (100%) rename {test => tests}/reference/from_kcd/test.arxml (100%) rename {test => tests}/reference/from_kcd/test_test.kcd.csv (99%) rename {test => tests}/reference/from_kcd/test_test.kcd.dbc (100%) rename {test => tests}/reference/from_kcd/test_test.kcd.dbf (100%) rename {test => tests}/reference/from_kcd/test_test.kcd.json (100%) rename {test => tests}/reference/from_kcd/test_test.kcd.sym (100%) rename {test => tests}/reference/from_kcd/test_test.kcd.xls (100%) rename {test => tests}/reference/from_kcd/test_test.kcd.xlsx (100%) rename {test => tests}/reference/from_kcd/test_test.kcd.xml (100%) rename {test => tests}/reference/from_kcd/test_test.kcd.yaml (100%) rename {test => tests}/reference/from_sym/test.arxml (100%) rename {test => tests}/reference/from_sym/test.csv (99%) rename {test => tests}/reference/from_sym/test.dbc (100%) rename {test => tests}/reference/from_sym/test.dbf (100%) rename {test => tests}/reference/from_sym/test.json (100%) rename {test => tests}/reference/from_sym/test.kcd (100%) rename {test => tests/reference/from_sym}/test.xls (100%) rename {test => tests}/reference/from_sym/test.xlsx (100%) rename {test => tests}/reference/from_sym/test.xml (100%) rename {test => tests}/reference/from_sym/test.yaml (100%) rename {test => tests}/reference/from_xls/test.arxml (100%) rename {test => tests}/reference/from_xls/test.csv (98%) rename {test => tests}/reference/from_xls/test.dbc (100%) rename {test => tests}/reference/from_xls/test.dbf (100%) rename {test => tests}/reference/from_xls/test.json (100%) rename {test => tests}/reference/from_xls/test.kcd (100%) rename {test => tests}/reference/from_xls/test.sym (100%) rename {test => tests}/reference/from_xls/test.xlsx (100%) rename {test => tests}/reference/from_xls/test.xml (100%) rename {test => tests}/reference/from_xls/test.yaml (100%) rename {test => tests}/reference/from_xlsx/test.arxml (100%) rename {test => tests}/reference/from_xlsx/test.csv (98%) rename {test => tests}/reference/from_xlsx/test.dbc (100%) rename {test => tests}/reference/from_xlsx/test.dbf (100%) rename {test => tests}/reference/from_xlsx/test.json (100%) rename {test => tests}/reference/from_xlsx/test.kcd (100%) rename {test => tests}/reference/from_xlsx/test.sym (100%) rename {test => tests}/reference/from_xlsx/test.xls (100%) rename {test => tests}/reference/from_xlsx/test.xml (100%) rename {test => tests}/reference/from_xlsx/test.yaml (100%) rename {test => tests}/test.py (97%) mode change 100755 => 100644 rename {src/canmatrix/tests => tests}/test_arxml.py (71%) rename {src/canmatrix/tests => tests}/test_arxml_gw.py (100%) rename {src/canmatrix/tests => tests}/test_canmatrix.py (97%) rename {src/canmatrix/tests => tests}/test_cli_compare.py (68%) rename {src/canmatrix/tests => tests}/test_cli_convert.py (69%) create mode 100644 tests/test_codec.py rename {src/canmatrix/tests => tests}/test_copy.py (99%) rename {src/canmatrix/tests => tests}/test_dbc.py (87%) rename {src/canmatrix/tests => tests}/test_dbf.py (100%) rename {src/canmatrix/tests => tests}/test_formats.py (100%) rename {src/canmatrix/tests => tests}/test_frame_decoding.py (98%) rename {src/canmatrix/tests => tests}/test_frame_encoding.py (97%) rename {src/canmatrix/tests => tests}/test_j1939_decoder.py (100%) rename {src/canmatrix/tests => tests}/test_json.py (100%) rename {src/canmatrix/tests => tests}/test_scapy.py (91%) rename {src/canmatrix/tests => tests}/test_sym.py (100%) rename {src/canmatrix/tests => tests}/test_utils.py (100%) rename {src/canmatrix/tests => tests}/test_wireshark.py (89%) rename {src/canmatrix/tests => tests}/test_xls.py (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..8f92453 --- /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 f993c54..33e3588 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 GIT binary patch literal 0 HcmV?d00001 literal 10675 zcmeHtg;!kJ@^$0TxVt83a7!S#OK@!<xVyW%1e##MA-F?ucMTFOxD(R22M7@OdS>4H zO(rwnU-0Iv)wjD>_uhA%b9dFLQ&r0HaPW8lL;x}X0H6jGqaAqJzyJW~2mk;s02x+S z+`-<}%-+>N-OJI;<u$9Poh?-!JS;;l02ccHf5-pu3REP0vhQU_8$3z8!qBKvBV8~` zrvpa(;Io%8!HlP6jg?7c;6+>Ww*p#<kt6pMs*v8@`8gfEp*t8feTH0;#j;pKRD)LG zD!1%4(rNDS{mE#2s7CJ#RN7@g?a0lQIrp+>H?z4eGf3e}&I@Uf_>&q(3fq-ZJxln3 zd3K2Ya9Ao_7bO}+vujGXs$wM~DOf)jM_zpKfZzW(6P|sz7Q$L%mi)@op&kz}>pWQl zDalu!!Pq>yN5`i<hL`Asw*KWKT%#A|2X4`4!$mZcZI*fHoxJx$VFOJrF<Z?tV0kSK zonU9@#eN{(E*x?g4}hmg#%2oH&Z852s>Xg^k5+A4AZUOiv>CGXh?t%IPFIGLK2U}f z&U0tRJ+FAU0XbKQv45nwHK=Q8$hW^U4H3ejs2q4vUPJnp_vN(;GOX1CrmR8TQIyl| z1QLbo%leB-k*v`a`KR-GZ%$0THw0drZyP}6_4o(}Q2vXJ;_7#rAwX?(9cqH8P#ZOH zHnVkMWBu*=uWkMh8{|(@uSoc$*!P=l%Cw6o-R;{`g-%YtrYl&*V!|}Uxdtx{sw9YB zU%@|xPnK$f8(PQ_e!OQ~UVU-773*uc$ka07%s6b#TUnXx%Sfqptr{9RXZR^4NkApO zZR^(h?v>ymH(vT2!dpFC<=UtzK>+;fWFWPPG_M=e72M$ECC`gl@;UenfiAemWpM&r zB`0>d+mM#Gc>*o<UW*y!WuNOU{K$p}xt;|M%FM-s_;MC}ZD)A$Bn;Hlr)&J>b^yD2 zDK)g2^h<h*m)8yK$`T>iqIJby*-8Uslef;fJCQ}vIj(~gYl|M$W2<DNM*+3FCXoWn zp%;bUrGiJAn1%k)YJ!B4-d#d}X@y!12>=<!)0XWI!|`x%wlQ{au=#Co`>zqfKsPw3 zh5c_2sEFkH*|7#sf={r%+Rs$c&}1A-hIUx{1;)S1sI|l4+|KFjc%Qc%X4Y|ub7MYy z{ev^@=-7s=ABk>1L`xZ;7WtBHVa)@$mJZ24!s=hr6@&)^>7Fipp4VC?B;$t2f4P;R zY4cRwNZrm)G9`;kkH(sUD3VT>@Qu!nl#GjdFg!Q&Vw;(U+s9S<&;*=bTMM=<N=<yc z#;{u^^#y+QllWvo^Yo1S3sR(1F$Smy%*y#>_~I;sXPXa<0N$%hx&Xa4E}1jELE96- zcnc;ApiOXr(2T97vwv|FyZgvky?m~lva>!ioETf)1%29o_q3Dc>UwBUy|}>v0GLoQ zKsEETTHdIsI4rSa`RCL>Zh&O`fYdOYBB9Z+Q)O;5>aABFI7h;?U$~oQ;BX&xU1u_r zf7ZV;%{jSWz4jCORDGZtPdFL=jCdwjI2YcujFa`6<Hz@SPh7b-W}GHsvXOhlXdU{# z_w2%qehZ9lRLE2cuTX8u(@rw#0~69Z%S4Rnv|3FG#5=AP3WLmw05yfDeLYm?@`JQ? z*ygtZ?CRMUcymmGDO7f-d7|twmkK@4#0f7lQ9W((u{AZ;K~e2CqEUu}_MG<AF?&Sf zZowW%x7w>@E!~H%FNjnF&gjk~=!m}@G91EvJeZuScEk&xx|1`bc5}rN78GzwE5%*H zZKi?DKZ!{E9&;$B+GNHddHsp-PR->m%A!#u)bd4-ug?|2O=k^97W_;k&ZztK1ng6x zv{tDH$>KrB!-Wb7UVGnfogC#}3a3u1J}Y@&191emo2QyUeRC)Fd9JL~E>biTl9xzF zEd;fP!t{FDlQ!YDsW1?SkNu4yl#>IWb(hPPI?UKozcqGP9vc8?E@F@~sKuhcwhcH* z{J8N=2Wf}YpvgM4zr{ss=-_Guji_9tKHQRpO<CiF={KW=>toptu8li#UnM9c<l2;f zvrfN1HdkVRzp;3LU$?TPuOc?gtSoX2A1F^r6(!txpg2DQ>1YnQsufeER0e2=2lHF| zUz-qALuK)I;Yj3}?e9S)wEzzQ;Qb*S7fT~&GgCEJXDfRPm*0GiuexsZGCST6OjAs; zOAlN6qgV2d0^G!~aC_|avH{_$>O1@dyPNy^7U@66U|Yl8O_CFnf|D+Xa(yQJvYwQ; z|1jcS4wBwEOaj*ibJa}SC9Nuc_ikwR9wJVtA$^|}#<&i5zHI%10Xr&8FGg(*t07T9 zdNB|?wS~Y|#2ONt>v*|Lri*DDf({_g0>^C8Jr@H_6dW)sd|#eytlRfNx-i*L=qbn1 z&`@;?(E6&L>=nQ-MW9b)h`EXT<f3D?Ta&3<39+mHRMl0J*S5hSaSZp8;dTjLNbyHO zqoyVAvfA!pt$a=1V=jbF==1B)9tLg4_s2MgDI{0iYDvs)WsXP<yWElp-Z69wK;jBi z3aT6O)95T`3bGH^FW=YS6yZwVYGkb!sA5r#&#B~p40#oj6Ly@?+kwVx0UoE|x>8xN z>%A$LGF;W&>j|W7Y-C!iD)VXL3^O=T5Wu8B8`XRL<f&Kw*#Vv6?mYiWh02>;t{UL3 zN(0dkEOo8E9#s$#hGMUr1qPRJ`9^y4{u=^vg@u!M4BvwVvCBD~0NWzY1~JTStkJ3N z<3x>A$&(jSH~Lcs!Uh8crjJuEiZZpt2I^0Z``_!2x+t!#^uO|Umn}JqS3i98qJ31k zIOWs`_(y3Jx=Q=TBLV=0q`#f8e)lP^mS%QlY`<SQepALFNXdaz60hsY8M%~?g9*Jm ziL_hU!Us}I)w~6keW!Mc6Gg$cx^!atZ|DuuPoGMN>cuxZiHH<xZm9|><RVAUR(EHl zt$tH<S4iN6h51IknDu@9?s2U>t;2s?w0{yCJK?<f=yUa)fP`@l*ov&a<7MANGCHPg z*fxi`0G*wKVu6Rr!Kz2qwgP@aB$YPhsKUyXSYg6=GX7p4dy1Bqm~m=`BeoGjHH|hg zsxO-Blg3(|^2%z7)Io}9CwSBAnp{<5hiCcACL#iws+c#g(6}{JVJMUiNN6CnqwxH_ z6-O{&4q=J}q>tig@(8$g)#m<dALqW|x2LfhTaPUDwsw9mJeWq<-YeT=3|5(_UvsFh zI{I>n9$3m*HGkmd^DQ$Q#&8`;qmo%NJ@!GWBXNp3@X#d9y=kt3N6$CtK}YthX7P+w zqbi751+Eqxi{qc)xVE70c8X|vHjdLdwRr44Pu>m#y7xv|@0!zbX!e8y62}(P*1KDF z<*0t5#+`6~wn++DFDX1l0OnC+vW*+}nlx}P(D>%W2vKn-7)hEGd__q!q!eq8$$y)x z?b4kAPiTG^&n7RPPMpx08)fZtLQgbpBzp4s;zVCCAR78|K0jR?>7!Jl5ajo|2`SuR zUKwyw*1I{+P<p)Ce{y*@Q*9vh&`!b@b7Ro?cmv51Dn}FpvOM)Z8%Q+B5%fCSq3`m$ zYliJ)IW0k^oQ{-n%^=GcrwFniWUu;S`joZNn8<j)qMLfMifUEuJzTrsPz7+Fy6Ws0 zSVE!Eol$oeR}rE-hF7`a`|J(bh7hEpPqGlk-bx<<71P2=d0cNSx>@`UxXjbT>9D!+ zxqPm@x#-?PCn=8f7+knX7#t36*d<vGj_UhWK{@iaV>JWE5qjWieo2T`p=`M87x-!8 zDc0C-whN}Lp3iZ1S0{NG78*Jy@lOa*P=Y{Vr{cY2Tx<PYVfjo6;$$E4dai4L<)LI_ zVFvx*3SgCxLY-zwaXa#p^B>?~ZV58|QN?@8T<?T3q*+xN_$%{TBKX*7JZ|bqw-`!$ zF)YalKAem&hB8PY>1p&_w`5S?lHUhz7an)YM{OV1q4toIyr5x$mH0F!5r*%8bKHMo zI6;@1$^^%=S~`mz`&een1$0|>_S9`$UgNbj))=YtDbr@_`++KdiIF{k1Yet%S>f>P zav6B^1M=*$R<HBEwVh!=xzJ7AIKytnTYB{635uC*?$<YmvNOK&3qgZ^M6;;lZxg>r ze|Q=yo%ON1rw0KxgGa{k8@0wJRX+;%v6~Vuim4obJi{iA;v4hkgvLSfi|RwKx>6;Y zMpv1NtM3aK)q9(V-ER{)R1v;vXK?7uz)y_Y9_h&8x%!ZsyRpo+w0w@WEMnqcaZYZC z8lNJ2m0gY)(!%q;L39!;D0zN!vKrJEgv7-;=iVgramBdZF^x5Wnj&#lTIZw|ygw)l zsz}0{@?J2UEFR*j(A=1tHeC-~_R3T@o!9PVy;#feWQ^Gedl$I0=W6Q2!3TO1x2#{@ zvUC{_PHcQ0RL3bGh2r^o-yWw9V4vYjYrBw>Hbyr}xMph>-6E?TaffMhozSaDE)%N$ zQahZNdrX}KmU%9-;=Wvg{lJV-StWLYeqad^zE7AAVPVRRCGAyYb@T-58_VUz`TC^u zG#X>9IPg^Dct17b^?@>i-=KPLazrWeEduLqeZzQ?ZsttEGyNFiO!6US6ek^fw`lV; z+sz`X9nRFIV9#9L!b7Q+m~vy)hXi%T@UzEP_#HXj<o!$9KHU**MnP{Uk{XA?fPCuj zpBDHVh(HXjkt9&{&U?Ax@mG{H9)rpD9(f_m=!tWVN$L^YBEh}>1!AJZFiEtyeim5e z#Xj$7M^we=@_<_(`=bSEq(jl&(Dmkh+9Je|-P9DOISn0)w?FwQaarQ+(iNvVDAJBz z>u10PctA`NiIbcUYOE|d?;tc^k9v%?8V<(KZBJO3^5_ZdG@pzD4K){lI#x?vMaYCJ z)^-C-R_#k;p>S*|JmEd<)N&hiD0{*+k1Cs7#=Y7OCF1_b4fs8TXbNb(h<Ufsb^`IN z@$QcBv5DmMJq5C$nWD<XMx92Gfpc-jg`k-&%c9r4pQs6BJZ*GhWMGur-P&kq&fT`O zw5P6E4KJK-QFidfpfCM1|4&=_cN@FpH}>o%a_NS_U=3JtOhI-pz=#81dZBIrH1z#@ zY-7R4Zlwr~Yl5K>G5UXE8&@w|v)_Z7b}bd~7B7~6_3R_oPL={yTT*VQ+6e2ktXAp1 zeR*ekKg<EyOXo2Pz0Z$p#2N4yhi1!(Bu^8@JUhRe3taUtM)>uGXqEBPNm9g}Y_aF& zCE?>{2;BcL<4F$_EsiQdei!_8Gst~2VgM{`nkD3T+g_-S1fXseSg~H6$S--;R8PH{ zWm^hRV9^lgZZA`qZHP`N6VDHqPJEFqg>FPsk9<+&izy>M3wiyL$!rE^eC`dGAG@~E zWYPtglo}u8lG{qTo>)7?%cgaT{w(>>wDJVNn&37r=RM9DJB=Jq0AdL{4pu!5o#=zl zo$9-<i#O;8YQ%SMmq^a}q3fd{jl6h60Ag%W4_d0YaBPSk4>J}ev5vqGt!pr5sF3Zu z>4~Nv^psae@@n*Ch>DNesT-c7+U*!0yV0F^$StD@-dG4YI1F$!4L%4Y*}i99)~p#e zoa50jMp)Xoxp%fS>O{aRQNSp%k6UAKCQ_nUbC{H!V9H!maLQh%@zcR)?5$wK8vwF~ z1V|A>CMLO_M>?};AdFU5m!Wvp<Vg-%Rl;a}7$-Q<Y21~xMsH{xW|HDn#lirqI83cq zvlwCbd5?>CgngTvf3j#5#S?=S=nr?li}2!I(uGC;T^&WF$<E1v$YHuhzObej@=Fv= zt4Cx}N=g>lyWs3kQ_NSyhnK=Vh<D!I*KbMSgrAr8@Kf21Vm8-v$X^{<Oz`Ht*Q_5l zTwIzre1?Aq6nC0>ms`w)#=Uy5UJ&jF^qA-7O<S9Pc%>jv(CtH+5HmZCH|50S2NUr8 zDi+>XrNA#J@Gjc>nIdzX$$8LRDUE%9RLlc6{z>!_1m%l^S^f1aAw$v^&}x9%H}M~c z%~_DmI;(eO{4O<X993yV*5~RMfjUP@<-_WcgAZnN^BYJDn)P%qs|*m$D6+Ey-s3Ox z#DCl_F<300MWn%0`jq2HPptF-s2~mtd8O{E^sKJ1=b3AXgL{)&dF$-PSM#PO8+4ub ziSi0$CKoO?%8=<?!Y1^OtGo;zHs<079bd!w3E{ZY_;|SD+w7E&8%0}m)%tH-I7CpJ z6oBtuPID_Hl&0;E%5XfF+&ou9V>y^M=MMw(V5Wmfb#Cr+=?UQis(#ePo;6!+9`QR` zTpj_PmZ@wE1UhAYv<UgB=uN;%rKdZ@$}6Pb-sgrn5coEPeA~PV;n|7fmIXHJxkNv# zUWEAjrgML@sv&soU*y;VDptF1vE5o|l1q51u!;}nwMRtJvq!Iz>KZ&knp!!_rIW4N z?%{VG3UT%jm>V2Gw_B;$ULXX2Zr=J}S>;(VIEefDGQZ?R?ez6oX~+}Im5?lBubcUq z^Ww`hD<0zUtsPs}oXH54+Ztao!4<;Mp&<<trL8T8-5$>uS$(ocFEIkX#sewsw(q=# zHX}>o#=kGv<|uLQJ`@u!+dHMx<k~$dV5vMO%O-sM$H=+lLMEsJT9<f%4*(GT;dp*K zjk{QynYp^K{r>iQ_*{_sT5VqjEBvI%`ca(eIwD>If#obI`UW9#>sUX6UFPG{L<K~Z zfFFBllizoVcht$*s9c3-1XnK<jlW((d~kFfnAvEuF>IS=8dy@oeTfU%;O=rDQ{YZJ zd>WZ|qGM{jHNx6Pj{<jh)iW%g3}SdpdV`UzIBMp_OzGp)LTysuB_k}D5k5sjWT`eR z9=7m66TyWfN&Rv2M-+UrScUGyn@=CJh<qEO#dyDL(ixR9gnVJffFJA9mIeh)C7gQn z(uzK`j`)WPj8OH{L_axuAH1ZAlfBYeAb?50G5h0~0-kzMQ@H+A7Vm5O#<Qs)M@2rB zj;|(=g&-M=;!$L#c)KR&Mv?`{@yNy7qs*+bhkMcwc2mubjVi5QmO&E;sAiQlnvJx< z1DOMchVtL;5-&_C5IHhFRt*^*^m>0x)^U7bGFgLN2>Swx=R7dU7VR*5njO0+r&miP zmF3fjFOu?{7tYp@tr<(;t$!f`Op(TfFsQ7koQ`TVo@3dOxB!j+(&+TDOuadjKdWr= zD-VI7YHQlg91X()E%-4e#h3-PwvtvCAwzq1(7$+Hc)#Vxn$eE$)-owUM}?UiQWo6u z7AdwgBWc}pf)F+Q%9JzH?;NI*$i~4FuCrre6n)$qGje&gQ?jR3QnsTYGI!tggWD<( z2Gmj!%M92}A0+P%0sxCLz&C&rg|0&6W-X{{S}GaHq#;rb+nI`MYk<((<fS<D642=p zc;fEeksYuhE}XG5vR1CmYWnE^z`jflBz#%#V4sdko1}7}BeSf>ET(UW|3J7|L(#-K z{Ea_bRl1I(x~vFwG}36*zLK_dN);$q+9v{UQOvil<Cq^jt`)ep*$BxVmXWhO?=4}R zj3jeql`j2|+W_mnxeU6V^-8pI?+;UKw%byrZ|CKhMd?z|+v^w2AlmCU%4nX8%I9^; z$L-*CD#!i7>r{+8WVfYHuQxsW0fzc@77^C;Tqz8-pC3C_!3QolG5$MC5gD5tG~~S_ zvUoW&R;vS-QIN+hjGGotL|ZDIQ!`ID!M*0T^Fnv{C#E*(x$WM-_;1Y;635t{kqz^{ zk!$=B288b$m+)zvM@KuJi-kll#Cfb<zC~ygHOLx$^0Ao(ySa3p7T0XW2roGc&j&m) z=*by#=5J~&5?NbB3yYcTohJdp3}=u4aY@uPfGsUUX@h+@sZ0mH2CC1Tk3<VMWx74; z1SdZla-WQhOLw*&_?PSQd4uiIWd!jHYvm=zS|!=skE2PXEaSJM!mBcb^1!5*JUTKO z(a3aN;vv-Yg17sg6taA4;8(8w^pXnl@D$yjmweO{yz#(tIM|=BuD<$97-aR(7YYz# z)w)4%%QZW@=sY*$P>SomN?D>7x0bI6C-yli5|p(o8KkGuhm4Lmp!eLbpzHarO?`YB zF7_+`2t@HJpUcl@+-}Fxbo_axbrPK##T1fi^fa}2s@G3$_f>sqj_IK+D8uvnwtQX6 z^hq~J`$_rNB{PA_ZZyW4^xi5|TC?n8A)*}f3X~f3w<Ii2%UxrBnnF7N^%Gq3saX)s zDX6l;{bV-Za$llf`6HAZO~|j76st^8q>R}5dLrcl)vZ_FR6c86Xqc9HAkxN76#d;S zdqMa!Ya*3C9-bBDJ{F!8l|Dh9H>E~m=xWxUx#7e-0;+wuJY%Hc=WjJA#*^6EL8rZR zq7OKQVfcO6@dC6#&%d<`=&8&HTYLn{gDCJft9i(-Ic^|r%Y3e@{?}NK7;)4)(S4vf zLPhPDX&w{(bRjN<Z+0$raWUR)Ahg9pboZ_CcfwL(cvqjI;-kcQog*tc&suGCPk6GP zQ{gl=FfK5IRfnH5V}eDf&nwAKl`wn-#%Rof5|yz<5%0;*nT>(rjC`NdAd77O=;8Ci zv51DCX|pkCz7-3aqc?RhQFeB4bYU}cbo?zb0xfU-o0*5MT!ET`!!kQs2j)V+sqY@+ z+ZlvDtYN0x4|(01%pxoLs8U6^?`utED&8JmALbl_ljGj@FNTx1l8#6V3JR&58>=lB z3}D52c<~ckSOqKIO*d;~3*j~8f3m_s(L<SgIX1&Gcq!HqKo9A8PBd)zDz$e&;59A} z7j>S#3A)o*jY+}zd&Dj7iqLAN{IkJ>cO>Ld7tD809mRL$n5D;q*pG-USUQsHFI#5_ zDP!#Vf|HqR?3uBc7~_mKQEZK@)rsF>Mz!0L*l=U%<{igk2;D{}u#v`UMpH9*B_Zs; zGqhZGLQ`v*G(1b!C;{3^FvcNxMNIMuAmQdEu#D@>ei6qR$Gq}Pr<0Fdu=+GZ5DX(N zAU;1w-?qT}Hn<f{o*VDo)w~i7nyRA~_^@{~$jG+Hy4Gf6BPUjH9-rSaj=iNfFr4z{ z@nkRbO06zXO&BOnuzhWf5%ggE>HB1MR_9u#{{H-wpfY=gDZ`oJ$3+;SyHi&iW?lC_ zo6VGs><A>q*&jua45v?L?-_kPoFAKuC0n$`yA!UBz?7)xaqBz_abLXA?Zb9DAxgQr z149okWh1Vceq)}ah&+sO>&hMfc&;)Ciusre6+bdm{MbK>-^9V$>|gamW&fYyn=qx= zM}-%DqTq|v+dwV}u}!a{Q!6G+Pu0#p!`OT=C5FNd!O0mVJRK--E!X9y)9dCFri9!_ zY~8&6yo+9u7)xQoFT(*lPD=gF_KiciRf5qMftldXvEdy0!F@wJ$BI1)6Qro~jU0v@ z@DZ@GZJ8My{#R>XLSH<fMYo75@5cLDR~QSC9laqMG+0C%_D_$Cg#846@ut4J|5Bn| z47m1Wd}R)s>O~L<p5+NLx$=4bH^bz+3$Za<hU80mTyLG^wh@AM`Kx^odY?_>4@Aru z#>DUa<&LXa9gNGPW-GPG96`w0K6^F{sONR)FP{ha!W_3b1|Xx@2Ynw*!M*!7V$gH^ zo{PgmGZ&LPP4Ss)6$KlO4U26K)<$#kV8otVf2ByO%6MiMaN9S5if+{4H28k5KEL6V zZkbIbE-z0w{CR%N>jo<2Q`!?fJ&R)uMa6PP)@wEIqylLaa!u~>K7IjT%Y*gS_1js5 z*|OosC{Thq3b}?=3T6b~IB%qlNPVZdH!mh-1zvn+w&e1y@}cG3Ny<9(`TRXyFuX3e zqym+7J5<)tj-o$(x`~^MtApLY!v3$Up-VKQ;1JACgmikB;D<E*vN5-WsGGskeZeS- z?Yauj3ej#x^Lg!ITXkgfK`pU^-{|A@r7Y>V@cu_WmBO?Qj#EVB7fHBpx%?x0?AzRn zyQdH@$h3lIh`7~5yv}d1IvA)+Ip0_hNjZ{-OcU{iC?_V&X=5JpHoXi}=HYcO!%)UU zc*2eQMO)227d%Onkk6avzQcpz>Q$Hc-NuwvMmKBCfz)bLAy3|O8?V903r(nwYP=SJ zP}K!gn-^c3MvvI+msAVAFU+ax8`wvEQ7d=|7qPvh??=7UX_FKykOrb%Z%~PPPLfM4 zhJ6o;He`F4p}1;1S`1IfH!j+9<dx%}#;_lZ^*$cqRn&OXwO8MNFLHt5ho2`0)U)#L zJo57964*V1%&m@84%fW*2pke@r*6(G_2cspq1USKFZ+Sh#btC?)8_Eb7pk>Cln4XM z0xiJ(b9dXH3;)Nbf9Q2nmj5fkUt4c}CMba3@~1|eUx9z^KKL291g!=A|9cUB<@vQD z{U;L!%HQhKzk+|QO8yC!M*SW9w;JWI48Iny{$wzQrUIeU__dVvE5WbH!#@e0K<lJX z0+;_wCH@Ni_4xlMG!vQ)_)ls6Z^?jPS^gSg{>cFV_)`D?zXqJYqW`)_|BUvb{t5lx o9s5`KUwz@vaMh<j!~f4SD$654<?&ma7b>6!8a1rY{r2tu0mZRLvH$=8 diff --git a/examples/BusmasterRestbus.py b/examples/BusmasterRestbus.py index 96bc2b5..61941f8 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 0000000..7dc0ab0 --- /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 d65d4e9..fab3a87 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 0000000..f0f5c31 --- /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 16368ce..bc7ffd1 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 f8ddc5c..b8cb9a9 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 54155bf..81e0bcd 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 ac80a9f..bb759ac 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 2718b8a..c34c374 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 e8caa85..ef67152 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 c18a831..24ce0dc 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 7e329b8..4c4151c 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 15b44bf..a2a881a 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 097c164..28dd6b9 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 2501d98..2a1dfc0 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 5f475ac..90918fa 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 3aa1c15..3361332 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 ee45bae..8b5a780 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 0000000..f744905 --- /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 e815847..319b4e0 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 bffc433..75d2ef9 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 929f5b3..2abf64c 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 c239724..7b4ba71 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 399bd53..27e976a 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 7a5c47d..0f8219a 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 e7b669f..4ce3ca3 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 011fbe0..b7d2a77 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 a4a3c9a..dc79223 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 7fa8d89..68d7ce1 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 972c7f6..0efdeeb 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 3cd03c6..840047d 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 a2b921a..3b143b6 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 bbecd5d..9db1f69 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 ea703da..2074481 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 53aadbb..0000000 --- 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 1645e96..fbfa5cb --- 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 8a00ed9..8f601cb 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 0000000..d2e06fe --- /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 1a9feaa..a4c7d1a 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 2271088..7701b0e 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 f5713f5..46bd0a3 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 ab65540..dae0614 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 f83ed37..ba6b137 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 55219fb..3cdfa20 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 ad49c8d..389509b 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 a3f21d4..153cf87 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 b9233ae..1796b80 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 b9233ae..1796b80 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 90f0983..1b9887d --- 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 b39c027..224aa04 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 3c1e633..bc8e77a 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 fa908f6..c10f5b3 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 f1dfe76..32a9581 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 0000000..09db9f8 --- /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 6340a77..f7f4611 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 bf60ded..45d34fe 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 c4d0eaa..ee8288f 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 c091018..1df3211 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 171e906..98e0b99 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 1a7f907..703123e 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 ab77dc1..d417cc6 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 9da01c2..a7638be 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): -- GitLab