Open main menu

DAVE Developer's Wiki β

MISC-TN-024: Automated test equipment (ATE) monitoring with SBCSPG gateway and ThingsBoard IoT platform

Revision as of 14:13, 14 June 2022 by U0001 (talk | contribs)

Info Box
SBCSPG-1.jpg Applies to SBCSPG
Cloud-computing-banner.jpg Applies to IoT
Warning-icon.png This technical note was validated against specific versions of hardware and software. It may not work with other versions. Warning-icon.png


Contents

HistoryEdit

Version Date Notes
1.0.0 June 2022 First public release

IntroductionEdit

You can think about this This Technical Note (TN) as an evolution of the article "MISC-TN-021: SBCSPG and ThingsBoard IoT". The use case described here is a real-world application based on the same elements:

The application is to monitor robotized DAVE Embedded Systems' ATEs like the one shown here.

ImplementationEdit

The implementation is suitable for a production environment. Unlike what we did for this TN, in this case the ThingsBoard IoT platform was installed on the cloud, specifically on a AWS EC2 instance running Ubuntu Linux. The following diagram shows the complete solution.

Technically, the gateway can communicate with the ATE using different physical links and protocols. In the example under discussion, the physical link is Ethernet and the protocol is Modbus/TCP. The gateway retrieves periodically some data regarding the robotic arm used to move the device under test (DUT). These data are exposed by the PLC governing the arm and are documented in detail here.

ThingsBoard IoT configurationEdit

To install ThingsBoard IoT platform on an EC2 instance,

ThingsBoard IoT gateway configurationEdit

TBD

armbian@sbcspg:~$ cat /etc/thingsboard-gateway/config/modbus.json
{
    "master": {
      "slaves": [
        {
          "host": "192.168.30.42",
          "port": 502,
          "type": "tcp",
          "method": "socket",
          "timeout": 35,
          "byteOrder": "BIG",
          "retries": true,
          "retryOnEmpty": true,
          "retryOnInvalid": true,
          "pollPeriod": 5000,
          "unitId": 1,
          "deviceName": "UR5",
          "sendDataOnlyOnChange": true,
          "connectAttemptTimeMs": 5000,
          "connectAttemptCount": 5,
          "waitAfterFailedAttemptsMs": 300000,
          "timeseries": [
            {
              "tag": "base_joint_temperature_deg_C",
              "type": "16int",
              "functionCode": 3,
              "objectsCount": 1,
              "address": 300
            },
            {
              "tag": "shoulder_joint_temperature_deg_C",
              "type": "16int",
              "functionCode": 3,
              "objectsCount": 1,
              "address": 301
            },
            {
                "tag": "base_joint_current_mA",
                "type": "16int",
                "functionCode": 3,
                "objectsCount": 1,
                "address": 290
            },
            {
                "tag": "shoulder_joint_current_mA",
                "type": "16int",
                "functionCode": 3,
                "objectsCount": 1,
                "address": 291
            },
            {
                "tag": "elbow_joint_current_mA",
                "type": "16int",
                "functionCode": 3,
                "objectsCount": 1,
                "address": 292
            },
            {
              "tag": "wrist1_joint_current_mA",
              "type": "16int",
              "functionCode": 3,
              "objectsCount": 1,
              "address": 293
            },
            {
                "tag": "wrist2_joint_current_mA",
                "type": "16int",
                "functionCode": 3,
                "objectsCount": 1,
                "address": 294
            },
            {
                "tag": "wrist3_joint_current_mA",
                "type": "16int",
                "functionCode": 3,
                "objectsCount": 1,
                "address": 295
            }
          ]
        }
      ]
    }
  }

DashboardsEdit

TBD

this link