From 73f18e8bc8603e52e358fcefec8b593c7a2b7b22 Mon Sep 17 00:00:00 2001 From: CodeShepherd Date: Fri, 24 Mar 2023 11:42:09 +0100 Subject: [PATCH] added reset error --- doc/EXAMPLES.md | 60 ++++++++++++++---- ...mple-motion-reset-axis-error-dashboard.png | Bin 0 -> 2525 bytes .../example-motion-reset-axis-error.png | Bin 0 -> 12394 bytes .../examples_diagnosis_confirm_error.png | Bin 10342 -> 12145 bytes ...ples_diagnosis_confirm_error_dashboard.png | Bin 0 -> 2170 bytes .../examples_diagnosis_confirm_errors.png | Bin 0 -> 13984 bytes ...les_diagnosis_confirm_errors_dashboard.png | Bin 0 -> 2185 bytes ...iagnosis - Confirm all pending errors.json | 2 +- .../Diagnosis - Confirm single error.json | 1 + examples/Motion axes - Reset error.json | 1 + 10 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 doc/images/example-motion-reset-axis-error-dashboard.png create mode 100644 doc/images/example-motion-reset-axis-error.png create mode 100644 doc/images/examples_diagnosis_confirm_error_dashboard.png create mode 100644 doc/images/examples_diagnosis_confirm_errors.png create mode 100644 doc/images/examples_diagnosis_confirm_errors_dashboard.png create mode 100644 examples/Diagnosis - Confirm single error.json create mode 100644 examples/Motion axes - Reset error.json diff --git a/doc/EXAMPLES.md b/doc/EXAMPLES.md index 3d076a8..71da6e3 100644 --- a/doc/EXAMPLES.md +++ b/doc/EXAMPLES.md @@ -15,23 +15,24 @@ This page contains various examples for different use cases. Looking through the - [Monitor CPU utilisation in line chart](#monitor-cpu-utilisation-in-line-chart) - [Use a catch node to handle errors](#use-a-catch-node-to-handle-errors) -[Diagnosis Logbook examples](#diagnosis-logbook-examples) +[Diagnosis and Logbook examples](#diagnosis-and-logbook-examples) -- [Confirm all errors in the diagnosis logbook](#confirm-all-errors-in-the-diagnosis-logbook) +- [Confirm all pending errors in the system diagnostic](#confirm-all-pending-errors-in-the-system-diagnostic) +- [Confirm single pending error in the system diagnostic](#confirm-single-pending-error-in-the-system-diagnostic) [PLC examples](#plc-examples) - [Read a PLC variable](#read-a-plc-variable) - [Write a PLC variable (boolean)](#write-a-plc-variable-boolean) -[Dashboard examples for ctrlX CORE - PLC App](#dashboard-examples-for-ctrlx-core---plc-app) +[ctrlX CORE - PLC App dashboard examples](#dashboard-examples-for-ctrlx-core---plc-app) - [Monitor and handle a boolean PLC variable "bBoolean"]( #monitor-and-handle-a-boolean-plc-variable-bboolean) - [Monitor and handle an integer PLC variable "iInteger"]( #monitor-and-handle-an-integer-plc-variable-iinteger) - [Monitor and handle a real PLC variable "rReal"]( #monitor-and-handle-a-real-plc-variable-rreal) - [Monitor and handle a string PLC variable "sString"]( #monitor-and-handle-a-string-plc-variable-sstring) -[Dashboard examples for ctrlX CORE - MOTION App](#dashboard-examples-for-ctrlx-core---motion-app) +[ctrlX CORE - MOTION App dashboard examples](#dashboard-examples-for-ctrlx-core---motion-app) - [Monitor and switch motion state]( #monitor-and-switch-motion-state) - [Browse and show all available axes]( #browse-and-show-all-available-axes) @@ -40,8 +41,9 @@ This page contains various examples for different use cases. Looking through the - [Monitor position of an axis "AxisX"]( #monitor-position-of-an-axis-axisx) - [Move an axis "AxisX"]( #move-an-axis-axisx) - [Abort an axis movement of "AxisX"]( #abort-an-axis-movement-of-axisx) +- [Reset an error of "AxisX"](#reset-an-error-of-axisx) -[Dashboard examples for script interpreter and ctrlX CORE - Python Runtime App](#dashboard-examples-for-script-interpreter-and-ctrlx-core---python-runtime-app) +[Script interpreter and ctrlX CORE - Python Runtime App dashboard examples](#dashboard-examples-for-script-interpreter-and-ctrlx-core---python-runtime-app) - [Create an interpreter instance "MyInstance" for python]( #create-an-interpreter-instance-myinstance-for-python) - [Browse and show all available interpreter instances]( #browse-and-show-all-available-interpreter-instances) @@ -51,6 +53,10 @@ This page contains various examples for different use cases. Looking through the - [Execute a python file "test.py" in an interpreter instance "MyInstance"]( #execute-a-python-file-testpy-in-an-interpreter-instance-myinstance) - [Abort an interpreter instance "MyInstance"](#abort-an-interpreter-instance-myinstance) +[ctrlX CORE - EtherCat Master App dashboard examples](#ctrlx-core---ethercat-master-app-dashboard-examples) + +- [Monitor and switch state of an EtherCat master instance "ethercatmaster"](#monitor-and-switch-state-of-an-ethercat-master-instance-ethercatmaster) + ## How to import examples The example flows can either be imported via the clipboard or by importing directly in the Node-RED editor via the **Import Nodes** Dialog. @@ -118,16 +124,33 @@ Errors in the nodes e.g. node is missing or node path is invalid can be catched [{"id":"3984d15c.b6a4be","type":"comment","z":"b7f42922c8391768","name":"Example: Use a catch node to handle errors.","info":"","x":430,"y":540,"wires":[]},{"id":"adcdeb72.352b88","type":"debug","z":"b7f42922c8391768","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":890,"y":600,"wires":[]},{"id":"bf808c7e.2b56a","type":"ctrlx-datalayer-request","z":"b7f42922c8391768","device":"7b877229.678964","method":"READ","path":"invalid/path/value/to/force/error","name":"","x":610,"y":600,"wires":[["adcdeb72.352b88"]]},{"id":"eda269ff.f06d88","type":"inject","z":"b7f42922c8391768","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":360,"y":600,"wires":[["bf808c7e.2b56a"]]},{"id":"b55ac3d1.719b1","type":"catch","z":"b7f42922c8391768","name":"","scope":["bf808c7e.2b56a"],"uncaught":false,"x":420,"y":680,"wires":[["e91439fb.0fa298"]]},{"id":"e91439fb.0fa298","type":"debug","z":"b7f42922c8391768","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":650,"y":680,"wires":[]},{"id":"7b877229.678964","type":"ctrlx-config","name":"localhost","hostname":"localhost","debug":false}] ``` -## Diagnosis Logbook examples +## Diagnosis and Logbook examples + +### Confirm all pending errors in the system diagnostic + +To confirm all pending errors in the system diagnostic you need to send an empty `WRITE` request to `diagnosis/confirm/error`. This can be done by setting the `payload` to null. + +![examples_diagnosis_confirm_errors.png](./images/examples_diagnosis_confirm_errors.png) +![examples_diagnosis_confirm_errors_dashboard.png](./images/examples_diagnosis_confirm_errors_dashboard.png) + +```JSON +[{"id":"b5effce.db9fd","type":"comment","z":"ec52577b3db3c043","name":"Example: Confirm all pending errors in the system diagnostic","info":"","x":440,"y":700,"wires":[]},{"id":"64d6212b.ba6cd","type":"ctrlx-datalayer-request","z":"ec52577b3db3c043","device":"7b877229.678964","method":"WRITE","path":"diagnosis/confirm/error","payloadFormat":"value_type","name":"","x":870,"y":740,"wires":[[]]},{"id":"226bf82.26e5e88","type":"inject","z":"ec52577b3db3c043","name":"Manual Trigger","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":340,"y":740,"wires":[["efa89bd3d50d6f25"]]},{"id":"8d40fd0bb68b143c","type":"ui_button","z":"ec52577b3db3c043","name":"","group":"cd7a7d59d153b666","order":1,"width":"3","height":"1","passthru":false,"label":"Confirm errors","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":320,"y":780,"wires":[["efa89bd3d50d6f25"]]},{"id":"efa89bd3d50d6f25","type":"function","z":"ec52577b3db3c043","name":"make confirm errors","func":"msg.payload = null;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":740,"wires":[["64d6212b.ba6cd"]]},{"id":"7b877229.678964","type":"ctrlx-config","name":"localhost","hostname":"localhost","debug":false},{"id":"cd7a7d59d153b666","type":"ui_group","name":"Diagnosis","tab":"9cba2148.8c9148","order":9,"disp":true,"width":"6","collapse":false,"className":""},{"id":"9cba2148.8c9148","type":"ui_tab","name":"Examples","icon":"dashboard","order":7,"disabled":false,"hidden":false}] +``` +### Confirm single pending error in the system diagnostic -### Confirm all errors in the diagnosis logbook +This Example shows how to confirm a single pending error in the system diagnostic. Following error is expected to present in the pending diagnostics: -To confirm all errors in the diagnosis logbook you need to send an empty `WRITE` request to `diagnosis/confirm/error`. This can be done by setting the `payload` to null. +```JSON +Main Diagnosis Number : "091F2006" +Detailed Diagnosis Number : "0C560107" +Entity : "motion/axs/AxisX" +``` ![examples_diagnosis_confirm_error.png](./images/examples_diagnosis_confirm_error.png) +![examples_diagnosis_confirm_error_dashboard.png](./images/examples_diagnosis_confirm_error_dashboard.png) ```JSON -[{"id":"b5effce.db9fd","type":"comment","z":"b7f42922c8391768","name":"Example: Confirm all diagnosis in the logbook","info":"","x":430,"y":720,"wires":[]},{"id":"477443cd.9b7bd4","type":"debug","z":"b7f42922c8391768","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":930,"y":780,"wires":[]},{"id":"64d6212b.ba6cd","type":"ctrlx-datalayer-request","z":"b7f42922c8391768","device":"7b877229.678964","method":"WRITE","path":"diagnosis/confirm/error","payloadFormat":"value_type","name":"","x":710,"y":780,"wires":[["477443cd.9b7bd4"]]},{"id":"226bf82.26e5e88","type":"inject","z":"b7f42922c8391768","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":360,"y":780,"wires":[["d4a0a352.ae8488"]]},{"id":"d4a0a352.ae8488","type":"function","z":"b7f42922c8391768","name":"","func":"msg.payload = null;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":500,"y":780,"wires":[["64d6212b.ba6cd"]]},{"id":"7b877229.678964","type":"ctrlx-config","name":"localhost","hostname":"localhost","debug":false}] +[{"id":"9c0aca12bc2a9640","type":"function","z":"ec52577b3db3c043","name":"make Confirm error","func":"var newMsg = {};\nnewMsg.payload = { \n \"type\": \"object\", \n \"value\": { \n \"mainDiagnosisNumber\": \"091F2006\", \n \"detailedDiagnosisNumber\": \"0C560107\", \n \"entity\": \"motion/axs/AxisX\" \n } \n}\nreturn newMsg;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":570,"y":440,"wires":[["a8efc66b4b7461ef"]]},{"id":"bfe0636f9fe41f01","type":"inject","z":"ec52577b3db3c043","name":"Manual Trigger","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":340,"y":480,"wires":[["9c0aca12bc2a9640"]]},{"id":"a8efc66b4b7461ef","type":"ctrlx-datalayer-request","z":"ec52577b3db3c043","device":"7b877229.678964","method":"WRITE","path":"diagnosis/confirm/error","payloadFormat":"value_type","name":"Confirm error","x":780,"y":440,"wires":[[]]},{"id":"3edc488be0bb09aa","type":"comment","z":"ec52577b3db3c043","name":"Example: Confirm single pending error \"Axis limit exceeded\"","info":"","x":440,"y":400,"wires":[]},{"id":"9add50cbdef40e90","type":"ui_button","z":"ec52577b3db3c043","name":"","group":"cd7a7d59d153b666","order":1,"width":"3","height":"1","passthru":false,"label":"Confirm error","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":320,"y":440,"wires":[["9c0aca12bc2a9640"]]},{"id":"7b877229.678964","type":"ctrlx-config","name":"localhost","hostname":"localhost","debug":false},{"id":"cd7a7d59d153b666","type":"ui_group","name":"Diagnosis","tab":"9cba2148.8c9148","order":9,"disp":true,"width":"6","collapse":false,"className":""},{"id":"9cba2148.8c9148","type":"ui_tab","name":"Examples","icon":"dashboard","order":7,"disabled":false,"hidden":false}] ``` ## PLC examples @@ -186,7 +209,7 @@ The request returns in `msg.payload` the written value: } ``` -## Dashboard examples for ctrlX CORE - PLC App +## ctrlX CORE - PLC App dashboard examples Please note that for these examples the installation of the ctrlX CORE - PLC App is expected. See [our store](https://developer.community.boschrexroth.com/t5/Store-and-How-to/ctrlX-CORE-PLC-App/ba-p/13298) and the corresponding [documentation of the ctrlX CORE - PLC App](https://docs.automation.boschrexroth.com/doc/729184690/plc-app-plc-runtime-environment-for-ctrlx-core-application-manual/latest/en/). @@ -299,7 +322,7 @@ sString; [{"id":"52f3b28.7154acc","type":"ctrlx-datalayer-request","z":"4ff80d56.dd60fc","device":"7b877229.678964","method":"WRITE","path":"plc/app/Application/sym/GVL/sString","payloadFormat":"value_type","name":"Write \"sString\" value","x":780,"y":580,"wires":[[]]},{"id":"a84a6218.d8fa38","type":"ui_text_input","z":"4ff80d56.dd60fc","name":"","label":"sString","tooltip":"","group":"938bb9af.bc8108","order":1,"width":0,"height":0,"passthru":false,"mode":"text","delay":"0","topic":"topic","topicType":"msg","x":400,"y":580,"wires":[["b77fcdb1.bb59e"]]},{"id":"b77fcdb1.bb59e","type":"function","z":"4ff80d56.dd60fc","name":"make value","func":"var newMsg = {}\nnewMsg.payload = {\"type\":\"string\",\"value\":msg.payload}\nreturn newMsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":570,"y":580,"wires":[["52f3b28.7154acc"]]},{"id":"7fd8a2ba.130acc","type":"ctrlx-datalayer-subscribe","z":"4ff80d56.dd60fc","subscription":"632bcc2.eddf134","path":"plc/app/Application/sym/GVL/sString","name":"Read \"sString\" value","x":200,"y":580,"wires":[["a84a6218.d8fa38"]]},{"id":"efa71414.90e038","type":"comment","z":"4ff80d56.dd60fc","name":"Example: Monitor and handle a string PLC variable \"sString\"","info":"","x":310,"y":540,"wires":[]},{"id":"7b877229.678964","type":"ctrlx-config","name":"localhost","hostname":"localhost","debug":false},{"id":"938bb9af.bc8108","type":"ui_group","name":"PLC Variable handling","tab":"9cba2148.8c9148","order":1,"disp":true,"width":"4","collapse":false},{"id":"632bcc2.eddf134","type":"ctrlx-config-subscription","device":"7b877229.678964","name":"Sub_Default","publishIntervalMs":""},{"id":"9cba2148.8c9148","type":"ui_tab","name":"Examples","icon":"dashboard","order":7,"disabled":false,"hidden":false}] ``` -## Dashboard examples for ctrlX CORE - MOTION App +## ctrlX CORE - MOTION App dashboard examples Please note that for these examples the installation of the ctrlX CORE - MOTION App is expected. See [our store](https://developer.community.boschrexroth.com/t5/Store-and-How-to/ctrlX-CORE-Motion-App/ba-p/13294) and the corresponding [documentation of the ctrlX CORE - MOTION App](https://docs.automation.boschrexroth.com/doc/1993836051/motion-app-motion-laufzeitumgebung-fuer-ctrlx-core-anwendungsbeschreibung/latest/en/). @@ -380,7 +403,18 @@ The following example shows how to abort an movement of a motion axis `AxisX` in [{"id":"79e751dd.c8402","type":"function","z":"4ff80d56.dd60fc","name":"make abort command","func":"var newMsg = {};\nnewMsg.payload = {\n \"type\":\"object\",\n \"value\":{\"dec\":\"10\",\"jrkDec\":\"0\"}\n }\nreturn newMsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":440,"y":1840,"wires":[["7cb11da0.1916bc"]]},{"id":"7cb11da0.1916bc","type":"ctrlx-datalayer-request","z":"4ff80d56.dd60fc","device":"7b877229.678964","method":"CREATE","path":"motion/axs/AxisX/cmd/abort","payloadFormat":"value_type","name":"\"AxisX\" abort","x":660,"y":1840,"wires":[[]]},{"id":"dc3e7b2.6ab9388","type":"comment","z":"4ff80d56.dd60fc","name":"Example: Abort an axis movement of \"AxisX\"","info":"","x":240,"y":1800,"wires":[]},{"id":"a11e7b1a.b3a8d","type":"ui_button","z":"4ff80d56.dd60fc","name":"","group":"eb7620ae.6f5d","order":3,"width":"2","height":"1","passthru":false,"label":"Stop \"AxisX\"","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":210,"y":1880,"wires":[["79e751dd.c8402"]]},{"id":"690b0e68.ffc46","type":"inject","z":"4ff80d56.dd60fc","name":"Manual Trigger","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":200,"y":1840,"wires":[["79e751dd.c8402"]]},{"id":"7b877229.678964","type":"ctrlx-config","name":"localhost","hostname":"localhost","debug":false},{"id":"eb7620ae.6f5d","type":"ui_group","name":"Axes handling","tab":"9cba2148.8c9148","order":3,"disp":true,"width":"5","collapse":false},{"id":"9cba2148.8c9148","type":"ui_tab","name":"Examples","icon":"dashboard","order":7,"disabled":false,"hidden":false}] ``` -## Dashboard examples for script interpreter and ctrlX CORE - Python Runtime App +### Reset an error of "AxisX" + +The following example shows how to reset an error of a motion axis `AxisX` in the ctrlX MOTION. The state of the ctrlX MOTION has to be `Running`. The corresponding motion object has to be present and its state has to be `ERRORSTOP` ([see axis state machine documentation](https://docs.automation.boschrexroth.com/doc/359516816/axis-objects/latest/en/)). + +![example-motion-reset-axis-error.png](./images/example-motion-reset-axis-error.png) +![example-motion-reset-axis-error-dashboard.png](./images/example-motion-reset-axis-error-dashboard.png) + +```JSON +[{"id":"d134226bd80e1be5","type":"function","z":"ec52577b3db3c043","name":"make Reset error","func":"var newMsg = {};\nnewMsg.payload = null\nreturn newMsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":590,"y":280,"wires":[["c654bbe59916dcd8"]]},{"id":"c654bbe59916dcd8","type":"ctrlx-datalayer-request","z":"ec52577b3db3c043","device":"7b877229.678964","method":"CREATE","path":"motion/axs/AxisX/cmd/reset","payloadFormat":"value_type","name":"Reset error of \"AxisX\"","x":820,"y":280,"wires":[[]]},{"id":"ee10a5d37883f0b2","type":"comment","z":"ec52577b3db3c043","name":"Example: Reset error of \"AxisX\"","info":"","x":350,"y":240,"wires":[]},{"id":"7e4f970aeb1a9af7","type":"ui_button","z":"ec52577b3db3c043","name":"","group":"eb7620ae.6f5d","order":4,"width":"3","height":"1","passthru":false,"label":"Reset error of \"AxisX\"","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":340,"y":320,"wires":[["d134226bd80e1be5"]]},{"id":"a68723ea4473153d","type":"inject","z":"ec52577b3db3c043","name":"Manual Trigger","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":340,"y":280,"wires":[["d134226bd80e1be5"]]},{"id":"7b877229.678964","type":"ctrlx-config","name":"localhost","hostname":"localhost","debug":false},{"id":"eb7620ae.6f5d","type":"ui_group","name":"Axes handling","tab":"9cba2148.8c9148","order":3,"disp":true,"width":"5","collapse":false},{"id":"9cba2148.8c9148","type":"ui_tab","name":"Examples","icon":"dashboard","order":7,"disabled":false,"hidden":false}] +``` + +## Script interpreter and ctrlX CORE - Python Runtime App dashboard examples Please note that for these examples the installation of the `ctrlX CORE - Python Runtime App` is expected. See [our store](https://developer.community.boschrexroth.com/t5/Store-and-How-to/ctrlX-CORE-Python-Runtime-App/ba-p/15901) and the corresponding [documentation of the "Script parser/interpreter (Python)"](https://docs.automation.boschrexroth.com/doc/2758030364/script-parser-interpreter-python/latest/en/). @@ -470,7 +504,7 @@ The following example shows how to abort a running script or command in a script [{"id":"0f30727715f9f47e","type":"function","z":"244b5a539daa7df9","name":"make abort command","func":"var newMsg = {};\nreturn newMsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":360,"y":1220,"wires":[["73c8c291c5af4037"]]},{"id":"73c8c291c5af4037","type":"ctrlx-datalayer-request","z":"244b5a539daa7df9","device":"7b877229.678964","method":"CREATE","path":"script/instances/MyInstance/cmd/abort","payloadFormat":"value_type","name":"Abort \"MyInstance\"","x":590,"y":1220,"wires":[[]]},{"id":"0ff7dae9e392de65","type":"ui_button","z":"244b5a539daa7df9","name":"","group":"f675e9d2.c9935","order":1,"width":"3","height":"1","passthru":false,"label":"Abort instance","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":120,"y":1220,"wires":[["0f30727715f9f47e"]]},{"id":"9b7ad38852b20c26","type":"inject","z":"244b5a539daa7df9","name":"Manual Trigger","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":1260,"wires":[["0f30727715f9f47e"]]},{"id":"5048f7d0ef2fe811","type":"comment","z":"244b5a539daa7df9","name":"Example: Abort interpreter instance \"MyInstance\"","info":"","x":200,"y":1180,"wires":[]},{"id":"7b877229.678964","type":"ctrlx-config","name":"localhost","hostname":"localhost","debug":false},{"id":"f675e9d2.c9935","type":"ui_group","name":"Interpreter handling","tab":"9cba2148.8c9148","order":4,"disp":true,"width":"4","collapse":false},{"id":"9cba2148.8c9148","type":"ui_tab","name":"Examples","icon":"dashboard","order":7,"disabled":false,"hidden":false}] ``` -## Dashboard examples for ctrlX CORE - EtherCat Master App +## ctrlX CORE - EtherCat Master App dashboard examples Please note that for these examples the installation of the `ctrlX CORE - EtherCat Master App` is expected. See [our store](https://developer.community.boschrexroth.com/t5/Store-and-How-to/ctrlX-CORE-EtherCAT-Master-App/ba-p/13282) and the corresponding [documentation of the EtherCat Master App](https://docs.automation.boschrexroth.com/doc/3229083526/ethercat-master-app-ethercat-master-for-ctrlx-core-application-manual/latest/en/). diff --git a/doc/images/example-motion-reset-axis-error-dashboard.png b/doc/images/example-motion-reset-axis-error-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c428dbc5e3fd8578e93c1b1066c9b99e7cdfb3 GIT binary patch literal 2525 zcmbtWdpy(KAD_n)%XOB^+=;A0zNL{a?#5C)q}<9(7c>k@S!KkgVl$)bmh_~XNBAlC z+cIn+?CE^ZK0gKA)R^xH!s6sY!uAAX$`? zy*mgbCbMCOf+aR)k7MZ04fs9K=BNz_R6vtn!ED-CZw`0z#)Cl6pF@nYwM=q@i$&Sn zctrb6WVD8TLMmRLg`S#24Pd;42IGcBIfpC7de1fGF%KKt{?(o&OD5?`t>4V4 zUfIQ;xqlzO1wF3N4_|#UfTeLC;w_i^c9qY~@VSW)TO%7734(`6=+`QJVQGc$6zhTnvhxR!GgKc4D>o~ z&~JI_z{Evbzn~_9B{rbGrwq_4q?Ue{-4qPngvua`0q}IGT10@l z=c06olRO(#s+ulkm$dA+eCI=9e$%CueuY=AJ&N(&T8IMNqvKsj?GKrTJ^A0uwWMlW zx$uW~&DLIAOBkaHUiOOHRG1|Lg)wQo^t6C=gMFR({TxrthTZppA=`_rvuD(L+JFC0 zO!p9Nm1nwhUP;-FC`{&{obyft4<;3%m8f z;*m!TWP)GTq?h1~azT;~Q_SYbkiuT`B#~nC0Mj(=j8(pS8|6$VI>AhZS2$R`il`GP zugG)Ep^1A&MlXv9a+6Us?W_wE(=n!0;4yN(u3l@%s*Pa@j}JeBP2et$fSE1y;E~i1 zD|@J;`jByEh1pSwF>uy}LtO=iP%Id-=O*BOG!-j{e&j_ z@KRZP9t1hr)f4z(>6s$(+hx+n{l9@rloPRw_TpflEi%P(M=gWQLYeeik8EGc-sx)1 z(CevA1R|+lIiat2V1_4ie7WRvy@_C&NUVMAq(*8!AL=BE0Sx-CAbTGZo*-n={4hmRH5C#W0{aRgxI!97FK3HGA!i?nXP(I46_Fi%g<1oFztlBuq`vlkZn;<_=NTxT*eH&@j3+%*$? z|6q0XUcwt;1iQ4d@+6AQifAxvye_W|E{nQ)2o;K=5(qlf^3F7etLtl3zV_=2_4N*T zBC+p5Mh0T4uS##YgYJ{YNb5>dOZS-_0zVaNI_IqHs_g#oH+k(KiR*TZXzTU=Ja0Q*QsXqRs&hWTLyId2sO0@)x9#o$h$y#j#ks^b#3T!I2Z}eHIqMeU*eZ z4GoPK$%h-BZAHLws=^{KV$%S&F_Mm;7ky6Kluo`f_wDvCcSlFZZ#<}%vLU7+eqw6M zyrQDw+hgdfY^UZ%9&|}l7GuP`2F%aTGcqzXque%s_INU~G6fT&ogth^@6C3^>06$) zcTLcL{o0L{sZ05i05pu-z~T~Ls1&#vPfOFv*}E>BTN+7X)*)Q<>L*K7IUfVG z`Y*TYM@|+3XC6!lLQM_v>8%poPrr&2sAM-k!T0D|!dA*%4@ED)4@l_ZoViY^P)6`95*e@irfbt5v0>HR>S z?&HvySKQnH6%Hi!NbnlD)mheRU-i{|q&IdYn5299R(}40{9=RiZGjzS&X+3zaF*69 z_Tt;c;Gi7={qF~f#X}|1cG??W0uGkDzQ zuKkx#G!+R4UM|f^0&$gjbdBt*KA@ z#we_ost#ytKCSW#X(3vtU1l}?|$h^f19`u0Ys>M-Au{y4V}zTA%isw{QvRa!{ItW%|G^yX3g zgrGzF0I}97|Ml6QDM8t=UE6h;KT1QgIVb;r!*x0^99xxdyz_@Re!;<0%hYGo|dZ+FCo3o0vFe{2%ZBCeYH-!f0x8CKdQ^D2kUP2Q*t8u^&Hf!)@QUo>ZsG&@3k}99~}JGu3ftrIXO8a kB9R)#=#~pClesPyeu}L<6=+_z(Vu}(4lee2w*K+|2E{17umAu6 literal 0 HcmV?d00001 diff --git a/doc/images/example-motion-reset-axis-error.png b/doc/images/example-motion-reset-axis-error.png new file mode 100644 index 0000000000000000000000000000000000000000..5066292a8b2964145703ec5e9ff6294a7fe93408 GIT binary patch literal 12394 zcmcJ0c|4T;*FRB)>{POiv6tJDh%7UiDPu_#CBi7l7AD!(VwlQWWDUtKOWAiBm2BBf z)-fT=*cr<({H}E0-+Oz$|2)s@_j+*|OditEa2|Zqh6z_O(9p;+ zYhTnb^0Zh;o^|HOCyr5J+xl98^g-H>l328$qFUlw&~^c#3oqDOE(Q8({qUBnJWG4; zex#`G$VWfIMTfPQ7ftKS-CG9i4d0&9eUl$vEE?U%n0l>YAr70JcV+Wd|NK1|Y+S=5 zc`7&atqxnHz1LDRIKY+r($#}6#VboyDjL(mX{juf!PkF3*xJBCmbGSVg8a|@+Knv^vezH?0YlaA|BhT)*h7gS?R>oRJK^W6lL%tENR9=<@~^dc08Sa>tF6T zG$_l1Gd4CJ{rC~XCn)Hi>QBj4_22c(O-xD}<^)MTv(LZsN|`7wAu-zCe%XaJ=Wt4l zV^`-9>ivU5X$c{gJtDvtiA0W;Ip9auraSqB+e6uV_(y6yI`#DQs>;gBbhM#rr-uJr zpRG-UG=yJdJe+x)9ia^A_%vGMF*-kg-}*H8pEu89k05D0VAPS6j5`&Ah9|P^YSh=( znkBS`NLcf&muSF#9Tw&*PGKfK|7J!f$kb~64Du@K2Oa(is>&r({w2#l*6VBtYVI(p zyeiKf)5iVt2} zL74x13e+!=N5oeIgQ|9IF|YGhWSoPrNgu2{WZCtvfq>ZQ=f`nWpBbXg^}p3Aa32xhyop*w2X*d!(QW(oMT?osF~JcarUe<|D_5sc(#y>cs$*7ktHDPjw)Rj%Fb4-azF$4Yt;Sk?4a@kFAt z1;OBEUtcfGNStU$$2M5#)kb?qZPG{j%SN<8KAtUO!6QDkw2i_-ztX)nB=fIO-V_wS zxVE;I3*nCxW6iB-yiLCNKZ{S&sv4TH`VnR2&)>2a!Z)Mx8o@C{(O?@Z zzJHAk<`5s44c-_p3c6dc_E=&l9d#Mi4wJ6@yn$2=N5%d~uWqMry=Np|bNGWm5&h66} z`jfuGBU-Olc3Mj@!m|=WG_zfq*_j2bpO?Fd+ME4uG=y&0IkPlrHNWw<`*L3rBY!K| zXe_-SnO|RAP#mjN1e;S#lYb;1P}8cCMgAH2F8zmU;eH>F4jYuqLdpJEyM&5TM(UC8 znH7)^#XHvF|4zb+STu;p+elmMyDeX3$90>}x$ENVz123^=%vlY(W4ui$GC7D7VJhn z3UYE$zB;zgEk)W+-PWOpF}mgSK0e+XMWfHCzx7dJC^XKAw0YRO-W#g&B{*taob>wn zLfTHNnvgnp+!v|8^5I8}k|w}u8MlP^mX`zeR! ziZ@gPP$24&YsXDxwyE9sR4qaO-0}_xzwG?>#;|kr28ef6SWpeg-)kZ}rENGrCD}oP z8*mR6hV%Z9X*N<&T?ejgVG=nWCXs>}>d(8uMC3X4m6t>OZuW-QycR&&u z+y7b?0jSO==Ek#{3=Cupfzqe|mbmgtE5(KTpVjnd$qkQdYHDhHZI*RV4aLR9M^;x| ztWWd(yW+C~U?bh)ongk$Gi88`J8{p(M#^w|IphAHU?@GAT8>%n@4v1jFaKg!$yHJ= z4)U{1GN>`yd3z5P6criktP-^c{{SjootmmUj*LW0M@Q*xq$e8P)zQ%*rsNQNsvY5U zC|%Ot2V=z%_u7)aHkO9f^IG{I$YQ;u`>TH=yUaN6gRm#qy+(_hH$i_vR8?pAntj#( zX_-92^Y|{uFNE}0r~nva`@cYS|NRmlHm*OhBtPSSL52VQ`u`3j%Rxj>T1JbD-y2?K z9PjAtWN0HDqu#d{Z|Kr>GM(L$JS5m~uDdhq-l{{~n#RC`7V0N)%3vR;q3eNQD0Ix- z6@)T3cSAI#J9XAOZ4&D(Hm~9haw%`k%?qt;L+sBkkiZYkcNj*#ZQU*IY}qpwU6{c- zoidSyj(A`aaFY?KR0`v9I0Ynf&b5mW9%pZ?pHrHQgt-X-EocDvK&UJLc0} z7*c{-yshO%4qxIOCi3w<3Rww^wvex;kucABSD-?3NvU|EZa~ zKSl*jdB(?^q!qDtbA6@U5yH=~*4G!q$H(^&%POD)_k2EtA2c_nSvtRrwe$+(!R0Qt zSULILacSO7=hN->Pe)K$Sbl=)>!pkQOX!klE7c!c0w?*{j-Y2|+whB1N!LBRX5ZJi z>^J8XI?b&1L@r`&WVs^w*ix#c_}cW!h0 zzLVmQu_Eufrux*mb{9aY&~3AAZ1Y#D{riAK9;z1$tvOM}gEaW!s{8VAYvJ7B^_H=<`g4 zv}}i`)E+lBWe2)>0SkET=V!Ipo^ZCM-iZ5KQD{a2740=-7C=oO2aP)$6O2auiT&SO zEPXftcZEcRFAZ}{)A7fdi$vdo7lR=Dx4jp8G~;hjT!9+6)>CI)@w{=gTgpSJU$-Gj z;=mGg_|{7)ApZkwigYA-ja@ip_TTsViL@BWXS=6;GO#(9f>m*Rd+#xb?lcR^5XCwEBy z;Hn$!P6Hp$a0Wrgcm;7Qc!fe*WB^LyIMk!AiL21T@=hCOb}fv zifO>+r*ZEBmfTyKkqHaIG*ZC7TZ*}O#L`zTn7CDqu(G2+nsAr zavl>MW*TNza*A{fm_Pp6qv~vLz_g$&2JujfnP_x&rawVuvm?z|I`iT=a>0g$crCKiU_Z*9k+@Hi^{Cn;1Q4ht0c7Vu za=<=#@9H&h-Y_e52S$}`k;l%xdu2kYA&T6h+}$oq^oFTVZMeCMIe%60TpkziXm76^ z8?)F1`pdfkc_-%amwGPye>?Y0^V^NRjieNQj~&&`YKG>f#=#ST6;Wg(pX8)mcG^dt7mnyEx39mE@O`ld9){k214&9?802{)=WzqKUeW~Y;oI| z_lP#^y%iBzJ7ETPW+t9`-4U8^bocEkLOCb%cL~bI#Mt{+;%bx^To$qXnN&=6<$6LKxrXkUf)pdCn}{a5*yVVeAO}Zd z5RxW!n4Dy3t`5)H?*~)sq^IH;_Gs7I+Sm^%$BGzLLxyl?6KNAcgEyL zbJ!y|mJ6wMjaG1}1t2E)5S~o7K@PY^vMO8oI$LfmyUgul`;rtlP%Y@YO8eea3NfSL z3tRPf5wd^fCZcp}yZ4R4zFJx`3@1%W_bW?HQ7S(gTN3M?aGc1-pBn^UlhvuDw{~$k z?MY)#l%4oy^CZM`Z`W(;))|FR@ZPYKx3@}VN2#2!zq>epN*ON)&N{;+QrT+q#BI|o z#KNV$9Hm1gf@!hueiLa~9-yw_q$$Cg1D_aDy;VAli`X*a&b*Z!kT5EI33TdT+@lUU zb;B$)W9xd~T{L*Weq&8z{=rj@m9(a#+Bcm-o-Z4K@Qs%-c7ry%D)dUZLA%|9rS%}c zYbnPlB|pOL)?a#uZH2VXt#p&C&A%W3Dq!crH*rqimD~!|xh|w;1-Z8SMkg}%>QHO> z*Busv5HHHw7t=!FU|oZ(tkuZK(h2_a*KLQ{1>ZJz-gq$;;q_P_V5?Lk=n(=D96}u2 z9OuN^bwK?K8L)a1`)M+#TILwrR6N^{$4g#&IdSDCFQ&Sn-wT?GHln?K?+opO15HVg z%R9q`Gt1JrdhEVGlfWZW+n|8Hcl-Es+4?Qvn-)doZA*Q*hT6CIiLZRdN%5x#xAJau9pbh4_=Wnput8oV?dn3ljZM(zLq2o zY?6nc?QYvyAGVCqZBQfR(v-1f4`9MtY&tW*Ss|L?XHU7S!-0Cw zs}EmE<*FBe@bA2*SHu(>C|^1`2Y;*|gEy`x8RT4d4rpL@M6^9Aj-PsTN39s{ndln- zSs}I&WfPOe()tOt2@oWuU4%`i7$z1Xrx~9Z{p1a1;$~dvQKCw|@Wob1nLv?4){^aS zSglQMvv+1Uss-Kr)dO?;5GH%xCrjwrO37_-$jPxiFrP5v*n2YMwxBIvV!-n|pb9DX zonW{!t}OQ59_3TkYP_!D9YiHq_)K`$>0Xe(H*aGX0VbBw#6X3_IG`B&AljDX!vq5# zty(L;Zi`lHFDuF$)X?gu_2%p`)-?H*#%w3-IbiKj>rlvU9I)}X#^S43l(}b4s`E;6a_n`~J2FTP zw24j*RQEk(gl+H}gB#DsQeWgP#^5NhAP4suX_3zAqL>!fu<`6^hHa70Wt2JVu-VY< z>|nyTJ=?hJu|I;`Z(3|G?!-u2L~vG$*RBrEJV(=O&5M9Mul>M&{7pMx<;iR)C7)fe zm%x_nf3hCy>sk{Pc_R#|4&kR-C)sU7ugNs%ncmzCpgYy1r|GQxZG9?qrtko^$#$BBa-C>!llQi5{j}Z2c28 zPU%ydvZf2ZRzD`1BS%}JC8C!FUSODO!$^%m42x53aW7LE41l}BO@JkLZ}r8g39UnR zTRci%s%UBES@ZgR(w)28XF}2S3zKt((S%0Q_o$)TQAJ#$^=H~J_42Z)Gt{f8#^TUw z<`l_jFRX9tap(5?g?wip=*e%;CB$+V3Cyel=lXS@lg2b}Y~mYbxxk}G;0c&-KNpV0 zm^J7n_6)GKrL_^C5-y=sBUIF#QQm%C$XIhqrsG=iN4~S_FOT8QFh#^|a8sYa=M^|_ ztUUb?J}!`l{P0oXP}ChW`D!SNNn zGm-FNLYdNLraI-4dRcw3;4^@k-9lKtd~O^t#1<@HKv%dC$nGxo5n=n5YHg$<{qfBe zcctd*iIN7#;KAf-zZ_`Nc$@>TOXM2$& zI20&9<Yo*yjkgYp#Nh@!$-j zuA)nilG#p)V|1fFN@R)E>ddePn=pPAE`5nU$<*R4D)7RRDQ%>va}}BFlq6odLg#Ed z=nESZ6z-diN-<`e^)^3|7;qBT=B=Vqa~3raG`(p00cbSH6e8FrKaO>*#$)MIv!s1c|{>3sgTLY_qPP7n<^|p@Ba|=POpPZS$Bz|r69;&ubd}`@N{mvS ze0N8oPxqe{hj}vogmo4$vwLsolnWOuOiUigTGZy0=CEOW?n~W2yQ{QiyV=~LI9^FF zwgKD^MC3ju67~f3*@0xUS(Uq|F6{$dj%sn*|Dsj0?jsN)&5#?tWW8_ldNm zc-VqwWP43Y8cL?IUG*z@Wq=#Pj}O~m#e*$f*zq#aCA_ zOOj196$YeGZ=v7YE||ykbJgty>YM`58AkU5ouP+0SjAOxcIl`_?awx@mVUn=RjgFw z7VMD(^e_e;7K5ED0a{EARcXvbt~k$jER8=A7p&7E%U$Jr2Ey-Mv$5!{8urMFxAO>t zBz_zq=_z=sM(FcV;WIkIfrI+4N481 z8Hp83u;1HocT-Ta6-eyS#HONast$PixX$JbZqqvv%mJ*HM`-JzmA zHYHMhudxt4mc|PD?q_|OYTA$OAP4X>x0-g=&ugVH6gDcfA{N#Tnrf?w9ruqwn{SQ( zG8r57+Y9!TktmZYR({HQ&%)hmUR=>gLHT1>Pd1>89ND!H`WC;8;12rdT)Q$JTmf9e+}6b3JhkimpXw-=n_MK!t#|n2PJAo zq>ga{<}AlK-x!_B1dsObz^bK=5mj5+OB=%(^haNY+x4aGcFgf2ak;Sr^TveAKgp}( zxWl_{;T#X>ZOk;U#YBK%iyQL`t~Ezk>FFMxyaRG}hCJGI-c_uvudf%`>-M8k+!P-z z4VFlF-9z(Uk_CS~D&m*CxH^Jt{9qOWELu322CCRoVfB@PX8IA84&k)*Em!*X_Kt)U z-(&AlYVGmkxD9<+kvPHlt@Y9`k`G{+`rF|&;Qx?&3lKBOCbsm2bgKy`ePqQB+S%Eq z}qn4e59}nkeanz71Kf<-6j!I|L{V5?h?JQ`mfgB)=&8 zlO)#M3O?X72aZE(K?gJJ@+N0A`W-JW73ybtilu4cFDeIs*yq8C9E{3sOTmTI7@7!D z*qxt6tRJ+2Evz=WoFRuCX=hK<9 z=$&7>3dzs0dsoj)_BmQs!USTrm$@4(e3ohT%_!}V$gQ*4?bOv zhN2MvbEO2I_}7xpIMoC8Mg*X~mAp7$1W8I!_c?xF_bT^cw`8ap%eQ@BG-7K#1F_Y$ zJ)x0mN+#n`612w%Vw2x{osEl18?GOhT}SL22=rHf*ZPl%e7wAQA!xJ27Yu*eccdX@ zUkvm1T|s7B_t-Qp_^9?b?vD0aAKGUahm*tsk+GhQ^hjvll~m;iZ%iYWcu!${VeR^J z8L5{Y0@Q`2$x%_|g7Pe~8Wqt~jZ2WVz`Iq-oPtQH?K2o8{HMO6TMOoAC>}$8A^3Rs zm+(WA!~YTnEubLwML6tUFgmw)iqrcO;=U@7lfQjZ-n)L4Y+a~t`Z&0z? zg-$O2G?kV7m-j|c3Jdei?1GFxr;eH;RR1j^)}CgGM0y)@?~gc02f-XbNUeUY@qXg< zAQ*&9UJVGnrH}`m_BwU`Fcp5X&P>22e zd1P!1TH)aNaUmh`)b)U~%JUoG?XWkAI-?~FW}Tn+U@GUY*Kub&mw36dvSJTvcrc-v zsgU%SPfu0E=t_1l;Y{58t6<^opyCfGLal#2tktz@BYIU$);DfyWksDP>#7CY!n=Jt z)0QGTfb`t+KEhy*f7)rjpDD%CjYLM)JWcXAm3KzxZXt@r-*Tro5xkh06^olw<+3yLbQ1INb3?Abr95>;jTY2A1-t^p*V3~x zjh6plb`X@^S+z1d8VjA><`+ynq*#om# zJ2)>w1aOaINXyK-c0!I2#t&Z9jJg;r*K!kp9mg?;}{$&X=wG5P<30tuS0JiWP zCX_TN@f-+w`kCeix9Hp+Jb3R?%8eLW39Ycw0W}}>xnq|ZZNc#?H@qb*Ia@FvaYES| zAN?b7=yBj4hzzAXe{Xp(#Wa%2vDtW}`tZl)Dce&aT`NA*Uz6==2o=t#zI4Xm8!EHM zXb(ac7;a$rWWP5m66(>6I=1v`YsnD&Q!`^BqWs9$GZiBKbMrrjmbMMC%tRGWU7^k4j|WV( zqA+Hnhl_FCXJcO5sVo0abN+UPkb??9JOB%sXD^gRJeD!9Hp+dP{qln@?0l$$aXr~_Lt*+Jt-xG@?f-Dz|FB| z=M@#F+&4F>zS5;u7dE95&$ZfMcfS8-!R^ny@|J{z|{Tv9cPNT z=H3-`*8pfCf&!zk76oBI7%eRpe*v$N5a0 zJFg5dIA08dg@ar7C-%2GVpruwZ_63s?Q!RHhn>7`pKz0uonRCCEqdcqt#$R)pW3+O zolS;FMrnS;dy(%_Qc~Jq76(BaD!vFRmD=)rK zo(ZqN7Rf;{Fj0qATT~qNnsIyV3I+{d3Z>NCrs~U(SA!~M06j^I)Jo{lebilsN*{npsM$DdM)2jV` z{?zGfl}FSzws?4XT^>Gs*a9vS5fN#8y>PVX4a{TlmCy3HhKn!vCDqi6p^yHf)d7G= zA{5hXHk>TZe)@z7LK&C%e`5s!_A)I>fb)<_;AZFv*%wxa)cj0$Zjp-r{h0a0+h#1I zCIJ~=RrxJtugx9H*Q|_yR|fdbx<$p%@Vub+Tu4Xw-6xbT^9`dq&l-g+N%lGljmk`> zADg(U4{BDiN5Nu3yN*oREo4|Y^GTORdlPCn@{}+WKXj@FPd4+&AgkO+H#o~5=qbw> zHg0yE(f+AOHJa#O7a^)B1b9zm`P5ba5HIqt$yL)6GLp&j5ap-kgs{-+x9i_OXk zp7FbydJJbp*-7h_ZQ6{AbULxx{cI&i0+Zfw|Ex3t**aCBeU!B4EHo7#`5Vesz4Zpb zqTl9AA1*>QT-hL-=4@{1{VC@FUI8&Y>)gH`v=$5&tlp8mQ696y33n52o06;)KS_Hf z%bNZ=L$%sd=gX*4y`#kURI1x@+ec)@V*_!>xu5HXK=97dS*7GAml+q&?;hRwi1aI+ z!*Lei_2<@c{&vH)znM6`lfb6fQh*<~d?s%W9y)I7B^VzY z#V=CY?{9h&dH+P6y7lPQthN$=y4iHR-cWjS%*%omXXmP~DZ5DS?>$^?(RxGM8OHPn z3HkR!8WkAV(po443Z;;XQ})(S3_)iV9#Th3nheMgWo6ix$I+n zxKnxExF??byV`i4$+P$~YA@CU!^f_t&^{=Pk$|(Z%Hg|vf53Wd19|xLx!}F%k z(*B3=Id#A^jHCb)xC40;&=Plcy}M;*md`K!sq5b!zyo{_b3|BWAy+CxlZ(mkaOrC` z0GG<4+P~n%AO4S-1#lIAI&qXPsBmoyE_a}E%1Z#+Pq}l819;?O9Yf*osz}lw77RjH6fOxu4mKyLIxT)tf||?%S&{jstn`0E++dfj{-k z4teY{mPTe{Stdox3QrCGgQ2NYQ&X+o%K%QvV^OS literal 0 HcmV?d00001 diff --git a/doc/images/examples_diagnosis_confirm_error.png b/doc/images/examples_diagnosis_confirm_error.png index 18fbfdbb8af6fcaf8f6b1c8542dbb6d93c37382e..d74ef4b0613ba038aad8a0be05fc72e6c18a0c32 100644 GIT binary patch literal 12145 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 literal 10342 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 diff --git a/doc/images/examples_diagnosis_confirm_error_dashboard.png b/doc/images/examples_diagnosis_confirm_error_dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b4ff2e86dd0d478d595238f12054f2c364b126 GIT binary patch literal 2170 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