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

Memanfaatkan OPC UA untuk Pengembangan Edge IIoT yang Kuat

Memanfaatkan OPC UA untuk Pengembangan Edge IIoT yang Kuat Catatan Editor: Industrial Internet of Things (IIoT) janji akan memberikan wawasan mendalam ke dalam operasi industri dan meningkatkan efisiensi mesin dan sistem yang terhubung. Aplikasi IIoT skala besar bergantung pada arsitektur berlapis untuk mengumpulkan data dari berbagai sensor, memindahkan data secara andal dan aman ke cloud, dan melakukan analisis yang diperlukan untuk memberikan wawasan dan efisiensi tersebut. Dalam Industrial Internet Application Development, para penulis memberikan pemeriksaan rinci tentang arsitektur IIoT dan membahas pendekatan untuk memenuhi persyaratan luas yang terkait dengan sistem ini.

Disadaptasi dari Industrial Internet Application Development, 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

Dalam bagian ini, kita 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:

Memanfaatkan OPC UA untuk Pengembangan Edge IIoT yang Kuat
Aliran data dari simulator sensor ke perangkat penerima

Protokol OPC UA mirip dengan Modbus, tetapi bekerja dengan lebih banyak tipe data, dan tidak memiliki keterbatasan 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 ditingkatkan dari protokol Open Platform Communications (OPC ), dengan salah satu perubahan utama adalah protokol baru tersedia secara gratis tanpa pembatasan apa pun.

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

Kunci Nilai Open source Ya Lapisan OSI Transport atau aplikasi Tipe data Integer, float, string, Boolean, tanggal, waktu, dan lain-lain Keterbatasan Tidak cocok untuk arsitektur kompleks Operasi yang mungkin Baca/tulis/pantau/kueri variabel Latensi Rendah Penggunaan IIoT Keamanan Ya Kompresi Ya

Tabel 5: Spesifikasi protokol OPC UA

Untuk membangun aplikasi, kami akan membutuhkan hal berikut:

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 berkas .img Raspbian ke kartu SD.

  3. Aktifkan SSH:

cd /Volumes/boot touch ssh

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

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

Memanfaatkan OPC UA untuk Pengembangan Edge IIoT yang Kuat Untuk membuat berkas di konsol Linux, Anda dapat menggunakan editor GNU nano. Nano sudah terinstal di sebagian besar distribusi Linux. Yang perlu Anda lakukan adalah menjalankan perintah nano FILE_NAME dan mengikuti instruksi yang ditampilkan.
  1. Buat /home/pi/hub

  2. Buat berkas /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 specified” && exit 1″
},
“author”: “”,
“license”: “ISC”, “dependencies”: {
“async”: “^2.4.0”,
“node-opcua”: “0.0.64”,
“request”: “^2.81.0”
}
}

  1. Buat berkas /home/pi/hub/index.js dengan konten berikut, mengganti

REMOTE-SERVER-ADDRESS.com and REMOTE-SENSOR-ADDRESS with real values:
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 = “https://REMOTE-SERVER-ADDRESS.com:8080”;
async.series( [
// establishing connection function (cb) {
client.connect(sensor, function (err) {
if (err) {
console.log(“Connection to ” + sensor + “failed”);
} else {
console.log(“Connection successful”);
}
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);
});
},
// write value
function (cb) {
session.writeSingleNode(“ns=1;s=Variable1”, new opcua.Variant({
dataType: opcua.DataType.Double, value: 100
}), function (err) {
cb(err);
});
},
// subscribe to changes
function (cb) {
subscription = new opcua.ClientSubscription(session, {
maxNotificationsPerPublish: 5,
priority: 5,
publishingEnabled: true,
requestedLifetimeCount: 5,
requestedMaxKeepAliveCount: 3,
requestedPublishingInterval: 500,
});
subscription.on(“started”, function () {
console.log(“subscription id: “,
subscription.subscriptionId);
}).on(“terminated”, function () {
cb();
});
setTimeout(function () {
subscription.terminate();
}, 5000);
// install monitored item
var monitor = subscription.monitor({
attributeId: opcua.AttributeIds.Value,
nodeId: opcua.resolveNodeId(“ns=1;s=Variable1”),
},
{
discardOldest: true,
samplingInterval: 50,
queueSize: 5,
},
opcua.read_service.TimestampsToReturn.Both
);
monitor.on(“changed”, function (dataValue) {
console.log(“Variable1 = “, dataValue.value.value);
// send to receiver
var data = {
device: “sensor1”,
timestamp: Date.now(),
Variable1: dataValue.value.value
};
request.post({url: receiver, form: data}, function (err) {
if (err) console.log(“Failed to send ” +
JSON.stringify(data) + ” to ” + receiver);
});
});
},
// close session
function (cb) {
session.close(function (err) {
if (err) console.log(“Failed to close session”); cb();
});
}
],
function (err) { if (err) {
console.log(“Failed with error:”, err);
} else {
console.log(“Successfully finished”);
}
client.disconnect(function () {
});
}
);

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

FROM hypriot/rpi-node:boron-onbuild

  1. Buat /home/pi/sensor

  2. Buat berkas /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 specified” && exit 1″
},
“author”: “”,
“license”: “ISC”,
“dependencies”: {
“node-opcua”: “0.0.64”
}
}

  1. Buat berkas /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;
// generate new value
setInterval(function () {
variable1 = Math.floor(max – Math.random() * (max – min));
}, 500);
space.addVariable({
browseName: “browseName”,
componentOf: componentOf,
dataType: “Double”,
nodeId: “ns=1;s=Variable1”, // a string nodeID
value: {
get: function () {
return new opcua.Variant({dataType: opcua.DataType.Double, value: variable1});
},
set: function (variant) {
variable1 = parseFloat(variant.value);
return opcua.StatusCodes.Good;
}
}
});
host.start(function () {
var endpoint =
host.endpoints[0].endpointDescriptions()[0].endpointUrl; console.log(“Endpoint: “, endpoint);
});
});

  1. Konfigurasikan nilai min dan max di awal dari

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

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

FROM hypriot/rpi-node:boron-onbuild

Teknologi Internet of Things

  1. Keamanan IoT Industri: Tren Utama dan Praktik Terbaik untuk 2020
  2. Cisco Meluncurkan Arsitektur Keamanan IIoT Komprehensif dan Kecerdasan Edge untuk Visibilitas OT
  3. Mengamankan IIoT: Strategi, Standar, dan Rantai Kepercayaan
  4. ECM3532: Papan Sensor AI Ultra-Rendah Daya Terpadu Pertama Eta Compute
  5. Glassboard: Memanfaatkan Pencetakan 3D untuk Pengembangan Produk Cepat dan Terpercaya
  6. Outlook Masa Depan: Meningkatkan Industrial IoT untuk Keunggulan Produksi
  7. Edge Computing: Kunci Keberhasilan IoT Industri Real-Time
  8. Memanfaatkan IIoT dan AI untuk Meningkatkan Penjualan dan Produktivitas Produsen dan Distributor
  9. Kontainer Memberdayakan Pengembangan Aplikasi IoT yang Fleksibel
  10. Edge Computing & IIoT: Mengtransformasi Strategi Data Industri