Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Teknologi Internet of Things

Pengembangan edge IIoT – Menggunakan protokol UA OPC

Catatan Editor:Industrial Internet of Things (IIoT) berjanji untuk memberikan wawasan mendalam tentang operasi industri dan meningkatkan efisiensi mesin dan sistem yang terhubung. Aplikasi IIoT skala besar mengandalkan arsitektur berlapis untuk mengumpulkan data dari berbagai sensor, memindahkan data dengan andal dan aman ke cloud, dan melakukan analisis yang diperlukan untuk memberikan wawasan dan efisiensi tersebut. Dalam Pengembangan Aplikasi Internet Industri, penulis memberikan pemeriksaan mendetail tentang arsitektur IIoT dan membahas pendekatan untuk memenuhi persyaratan luas yang terkait dengan sistem ini.

Diadaptasi dari Pengembangan Aplikasi Internet Industri, oleh Alena Traukina, Jayant Thomas, Prashant Tyagi, Kishore Reddipalli.


Bab 3. Pengembangan Edge IIoT (Lanjutan)
Oleh Alena Traukina, Jayant Thomas, Prashant Tyagi, Kishore Reddipalli

Protokol M2M Industri – OPC UA

Di bagian ini, kami akan mencoba membangun aplikasi IoT sederhana untuk mengirim data dari modul simulator sensor ke perangkat penerima (PC atau cloud), menggunakan hub Raspberry Pi dan protokol OPC UA:


Data mengalir dari simulator sensor ke perangkat penerima

Protokol UA OPC mirip dengan Modbus, tetapi bekerja dengan lebih banyak tipe data, dan tidak memiliki batasan serius, sambil menyediakan keamanan, kompresi, dan latensi rendah.

Protokol ini dikembangkan oleh OPC Foundation sebagai protokol komunikasi mesin-ke-mesin industri. OPC UA (Arsitektur Terpadu) adalah versi yang disempurnakan dari Komunikasi Platform Terbuka (OPC ) protokol, dengan salah satu perubahan besar adalah bahwa protokol baru tersedia secara gratis tanpa batasan apa pun.

Pada tabel berikut, Anda dapat menemukan deskripsi protokol yang lebih rinci untuk memahami apakah protokol tersebut sesuai dengan kebutuhan Anda:

Kunci Nilai Sumber terbukaYaLapisan OSITransport atau aplikasiTipe dataInteger, float, string, Boolean, tanggal, waktu, dan sebagainya BatasanTidak cocok untuk arsitektur yang kompleks Kemungkinan operasiVariabel baca/tulis/monitor/kueriLatencyRendahPenggunaanIIoTKeamananYaKompresiYa

Tabel 5:Spesifikasi protokol UA OPC

Untuk membangun aplikasi, kita memerlukan yang berikut ini:

Menyiapkan kartu SD

Untuk menyiapkan kartu SD, ikuti urutan tindakan seperti yang dijelaskan:

  1. Unduh gambar Raspbian LITE terbaru (tersedia di https:// raspberrypi.org/downloads/raspbian/).

  2. Hubungkan kartu SD Anda ke komputer dan gunakan Etcher (https://io/) untuk mem-flash file .img Raspbian ke SD kartu.

  3. Aktifkan SSH:

cd /Volume/boot touch ssh

  1. Untuk mengaktifkan Wi-Fi, buat conf dengan konten berikut:

network={
   ssid=”YOUR_SSID”
   psk=”YOUR_WIFI_PASSWORD”
}

Untuk membuat file di konsol Linux, Anda dapat menggunakan editor nano GNU. Ini sudah diinstal sebelumnya di sebagian besar distribusi Linux. Yang Anda butuhkan hanyalah menjalankan perintah nano FILE_NAME dan ikuti petunjuk yang ditampilkan.
  1. Buat /home/pi/hub

  2. Buat file /home/pi/hub/package.json dengan konten berikut:

{
   “name”:“hub”,
   “version”:“1.0.0”,
   “description”:“”,
   “ main”:“index.js”, “scripts”:{
      “start”:“node index.js”,
      “test”:“echo “Error:no test ditentukan” &&keluar 1″
   },
   “penulis”:“”,
   “lisensi”:“ISC”, “dependensi”:{
      “async”:“^2.4.0”,
      “node-opcua”:“0.0.64”,
      “request”:“^2.81.0”
   }
}

  1. Buat file /home/pi/hub/index.js dengan konten berikut, menggantikan

REMOTE-SERVER-ADDRESS.com dan REMOTE-SENSOR-ADDRESS dengan nilai real:
var opcua =require(“node-opcua”); var async =require(“async”);
var request =require(“request”);
var session, subscription;
var client =new opcua.OPCUAClient();
var sensor =“opc.tcp://REMOTE-SENSOR- ADDRESS:4334/UA/resourcePath”;
var receiver =“http://REMOTE-SERVER-ADDRESS.com:8080”;
async.series( [
// membangun fungsi koneksi (cb) {
   client.connect(sensor, function (err) {
      if (err) {
        console.log (“Sambungan ke ” + sensor + “gagal”);
      } else {
        console.log(“Sambungan berhasil”);
     }
     cb(err);
   });
},
// start session function (cb) {
   client.createSession(function (err, res) {
      if (!err) session =res;
      cb(err);
   });
},
// read value
function (cb) {
   session.readVariableValue(“ ns=1;s=Variable1”, function (err, dataValue) {
      if (!err) console.log(“Variable1 =“, dataValue.value.value);
      cb(err);
   });
},
// tulis nilai
fungsi (cb) {
   session.writeSingleNode(“ns=1;s=Variable1”, new opcua.Variant({
      dataType:opcua.DataType.Double, nilai:100
   }), function (err) {
      cb(err);
   });
},
// berlangganan perubahan
fungsi (cb) {
   langganan =new opcua.ClientSubscription(session, {
      maxNotificationsPerPublish:5,
     prioritas:5,
      publishingDiaktifkan:true,
      requestedLifetimeCount:5,
      requestedMaxKeepAliveCount:3,
     requestedPublishingInterval:500,
   });
   subscription.on(“started”, function () {
      console.log(“subscription id:“,
     subscription.subscriptionId);
   }).on(“dihentikan”, function () {
      cb();
   });
   setTimeout(function() {
      subscription.terminate();
   }, 5000);
   // install item yang dipantau
   var monitor =subscription .monitor({
      attributeId:opcua. AttributeIds.Value,
      nodeId:opcua.resolveNodeId(“ns=1;s=Variable1”),
   },
   {
     discardOldest:true,
     s 50,
      queueSize:5,
   },
   opcua.read_service.TimestampsToReturn.Both
   );
   monitor.on(“changed”, function (dataValue) {
      console.log(“Variable1 =“, dataValue.value.value);
      // kirim ke penerima
     var data ={
        perangkat:“sensor1”,
         stempel waktu:Date.now(),
        Variable1:dataValue.value.value
     };
   request.post({url:receiver, form:data}, function (err) {
      if (err) console.log(“Gagal mengirim ” +
      JSON.stringify(data) + ” to ” + receiver);
   });
});
},
// tutup sesi
function (cb) {
   session.close(function (err) {
      if (err) console.log(“Gagal untuk tutup sesi”); cb();
   });
}
],
function (err) { if (err) {
   console.log(“Gagal dengan kesalahan:” , err);
} else {
   console.log(“Berhasil selesai”);
}
client.disconnect(function () {
});
}
);

  1. Buat file /home/pi/hub/Dockerfile dengan konten berikut:

DARI hypriot/rpi-node:boron-onbuild

  1. Buat /home/pi/sensor

  2. Buat file /home/pi/sensor/package.json dengan konten berikut:

{
   “name”:“sensor”,
   “version”:“1.0.0”,
   “description”:“”,
   “ main”:“index.js”,
   “scripts”:{
     “start”:“node index.js”,
      “test”:“echo “Error:no test ditentukan” &&exit 1″
   },
   “author”:“”,
   “license”:“ISC”,
   “dependencies”:{
     “node-opcua ”:“0.0.64”
   }
}

  1. Buat file /home/pi/sensor/index.js dengan konten berikut:

var opcua =require(“node-opcua”);
var min =1;
var max =100;
var host =new opcua.OPCUAServer({ buildInfo:{
   buildDate:new Date(2018, 8, 8),
   buildNumber:“1234”,
   productName:“productName”,
},
port :4334,
resourcePath:“UA/resourcePath”,
});
host.initialize(function () {
   var space =host.engine.addressSpace;
   var componentOf =space.addObject({
      browseName:“browseName”,
      organizedBy:space.rootFolder.objects,
   });
   var variable1 =0;
   // menghasilkan nilai baru
   setInterval(function () {
     variable1 =Math.floor(max – Math.random() * (max – min));
   }, 500);
   space.addVariable({
      browseName:“browseName”,
     componentOf:componentOf,
     dataType:“Double”,
      nodeId:“ns=1;s=Variabel1”, // string nodeID
      nilai:{
        get:function () {
        return new opcu a.Variant({dataType:opcua.DataType.Double, value:variable1});
        },
        set:function (variant) {
          variable1 =parseFloat(variant.value);
           return opcua.StatusCodes.Baik;
        }
     }
   });
   host.start(function () {
     var endpoint =
host.endpoints[0].endpointDescriptions()[0].endpointUrl; console.log(“Endpoint:“, endpoint);
   });
});

  1. Konfigurasikan nilai minimum dan maksimum di awal

/home/pi/sensor/index.js file.

  1. Buat file /home/pi/sensor/Dockerfile dengan konten berikut:

DARI hypriot/rpi-node:boron-onbuild


Teknologi Internet of Things

  1. tips dan tren keamanan IIoT untuk tahun 2020
  2. Cisco mengumumkan arsitektur keamanan IIoT yang komprehensif, Cyber ​​Vision untuk visibilitas, dan Edge Intelligence
  3. Mengelola keamanan IIoT
  4. Papan sensor pintar mempercepat pengembangan AI tepi
  5. Perusahaan Pengembangan Produk yang Menggunakan Pencetakan 3D Untuk Melakukan Semuanya
  6. Prospek pengembangan IoT Industri
  7. Mengapa komputasi tepi sangat penting untuk IIoT
  8. Produsen dan distributor akhirnya menggunakan IIoT dan AI untuk meningkatkan penjualan dan produktivitas
  9. Pengembangan Aplikasi IoT Mendapat Peningkatan Kelincahan Dari Teknologi Kontainer
  10. Apakah edge computing dan IIoT mengubah cara kita berpikir tentang data?