Open main menu

DAVE Developer's Wiki β

Changes

Introduction
==Introduction==
In essence, this Technical Note (TN) is very similar to [[MISC-TN-024: Automated test equipment (ATE) monitoring with SBCSPG gateway and ThingsBoard IoT platform|this one''MISC-TN-024: Automated test equipment (ATE) monitoring with SBCSPG gateway and ThingsBoard IoT platform'']]. There is a noticeable difference, however, as a different software stack was used on the edge device. In this case, [https://www.lfedge.org/projects/fledge/ LF EdgeFledge] was utilized.
==Testbed==
===Enabling the connection to the PLC===
As described in [[MISC-TN-024: Automated test equipment (ATE) monitoring with SBCSPG gateway and ThingsBoard IoT platform|''MISC-TN-024'']], the PLC we want to talk to is connected to a different subnet, namely 192.168.30.0/24. For testing the connection to the PLC, after adding the required subnet configuration, the <code>modbus</code> command line tool was used, which is provided by the <code>modbus_cli</code> package. In the following example, the register mapped ad the address 300 is read.
<pre class="board-terminal">
=== Enabling the connection to ThingsBoard IoT platform ===
In order to upload collected data to ThingsBoard platform, a simple North plugin was developed. To this end, the Microsoft Azure plugin was used as reference. The ThingsBoard South North plugin is minimalist and '''unfit for a real-world production environment'''. Nevertheless, it was enough to perform the basic tests described in this TNdocument. Before testing this new plugin, the <code>mosquitto-clients </code> package was installed as the plugin invokes the <code>mosquitto_pub</code> command line tool.
<pre class="board-terminal">
The following box shows the code of the ThingsBoard plugin.
<syntaxhighlight lang="python" class"mw-collapsible ="" mw-collapsed"="">
# -*- coding: utf-8 -*-
</syntaxhighlight>
   You can think about this This Technical Note (TN) as an evolution == Visualization 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: uploaded data ==* Similarly to what we did in [[MISC-TN-004024: Running Debian Automated test equipment (armbianATE) on SBCSPG#The hardware platform|The ''monitoring with SBCSPG'' industrial gateway]] * [https://thingsboard.io/docs/ ''and ThingsBoard IoT platform|''] * [https://thingsboard.io/docs/iotMISC-gateway/whatTN-is-iot-gateway/ ''ThingsBoard IoT gateway024'']. The application is to monitor robotized DAVE Embedded Systems' ATEs like the one shown [https://youtu.be/OoNiKgJXq00?t=409 here]. == Implementation ==The implementation is suitable for , we created a production environment. Unlike what we did for [[MISC-TNsimple dashboard to visualize in real-021: SBCSPG and ThingsBoard IoT|this TN]], in this case the ThingsBoard IoT platform was installed time on the cloud, specifically on an AWS EC2 instance running Ubuntu Linux. The following diagram shows the complete solution. [[File:ATE monitoring SBCSPG ThingsBoard.png|center|thumb|1000x1000px]] 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 side collected data regarding the robotic arm used to move the device under test (DUT). These data are [https://www.universal-robots.com/articles/ur/interface-communication/modbus-server/ exposed by the PLC governing the arm] and are documented as shown in detail [https://s3-eu-west-1.amazonaws.com/ur-support-site/16377/ModBus%20server%20data.pdf here]. === ThingsBoard IoT configuration ===To install ThingsBoard IoT platform on an EC2 instance, [https://thingsboard.io/docs/user-guide/install/cluster/aws-self-hosted-setup/ these instructions] were followed.  === ThingsBoard IoT gateway configuration ===To run this esample, the most important module to configure was the [https://thingsboard.io/docs/iot-gateway/config/modbus/ Modbus connector]. The following box shows the resulting configuration file needed to poll some variables of the arm's joints (namely temperatures and currents)example.<syntaxhighlight lang="json">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"File: "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 } ] } ] } }</syntaxhighlight> == Dashboards ==ThingsBoard IoT allows to create easily custom dashboards to visualize data. At [http://ec2-15-160-47-190.euSBCSPG-southFledge-1.compute.amazonaws.com:8080/dashboard/1178fb20-e56d-11ec-8592-e3cb29424137?publicId=28967df0-e56d-11ec-8592-e3cb29424137 this link] such a dashboard is available showing some temperatures and currents of the arm's joints.[[File:ATE monitoring SBCSPG ThingsBoard dashboard18.png|center|thumb|600x600px|Visualization of uploaded data.]]
4,650
edits