Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Интернет вещей

Разработка границ IIoT - Использование протоколов OPC UA

Примечание редактора. Промышленный Интернет вещей (IIoT) обещает обеспечить глубокое понимание промышленных операций и повысить эффективность подключенных машин и систем. Крупномасштабные приложения IIoT полагаются на многоуровневую архитектуру для сбора данных с широкого диапазона датчиков, надежного и безопасного перемещения данных в облако и выполнения анализа, необходимого для обеспечения такого понимания и эффективности. В статье «Разработка промышленных Интернет-приложений» авторы подробно исследуют архитектуру IIoT и обсуждают подходы для удовлетворения широких требований, связанных с этими системами.

По материалам Industrial Internet Application Development, авторы:Алена Траукина, Джаянт Томас, Прашант Тяги, Кишор Реддипалли.


Глава 3. Разработка IIoT Edge (продолжение)
Авторы:Алена Траукина, Джаянт Томас, Прашант Тяги, Кишор Реддипалли

Промышленные протоколы M2M - OPC UA

В этом разделе мы попытаемся создать простое приложение IoT для отправки данных из модуля симулятора датчика на принимающее устройство (ПК или облако), используя концентратор Raspberry Pi и протокол OPC UA:


Поток данных от имитатора датчика к приемному устройству

Протокол OPC UA похож на Modbus, но работает с большим количеством типов данных и не имеет серьезных ограничений, обеспечивая безопасность, сжатие и низкую задержку.

Протокол был разработан OPC Foundation как промышленный протокол межмашинной связи. OPC UA (унифицированная архитектура) - это улучшенная версия Open Platform Communications ( OPC ), с одним из основных изменений:новый протокол доступен бесплатно без каких-либо ограничений.

В следующей таблице вы можете найти более подробное описание протокола, чтобы понять, подходит ли он для ваших нужд:

Ключ Значение Открытый исходный код Да Уровень OSI Транспорт или приложение Типы данных Целое число, число с плавающей запятой, строка, логическое значение, дата, время и т.д.

Таблица 5:Спецификации протокола OPC UA

Для сборки приложения нам потребуется следующее:

Подготовка SD-карты

Чтобы подготовить SD-карту, выполните последовательность действий, как описано:

  1. Загрузите последний образ Raspbian LITE (доступен по адресу https:// raspberrypi.org/downloads/raspbian/).

  2. Подключите SD-карту к компьютеру и используйте Etcher (https:// io /) для прошивки файла .img Raspbian на SD. карта.

  3. Включить SSH:

cd / Volumes / boot touch ssh

  1. Чтобы включить Wi-Fi, создайте conf со следующим содержимым:

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

Чтобы создать файл в консоли Linux, вы можете использовать редактор GNU nano. Он предустановлен в большинстве дистрибутивов Linux. Все, что вам нужно, это запустить команду nano FILE_NAME и следовать отображаемым инструкциям.
  1. Создайте / home / pi / hub

  2. Создайте файл /home/pi/hub/package.json со следующим содержимым:

{
«name»:«hub»,
«version»:«1.0.0»,
«description»:«»,
« main »:« index.js »,« scripts »:{
« start »:« node index.js »,
« test »:« echo «Ошибка:тест не указан» &&exit 1 ″
},
«автор»:«»,
«лицензия»:«ISC», «зависимости»:{
«async»:«^ 2.4.0»,
«узел-opcua»:«0.0.64»,
«запрос»:«^ 2.81.0»
}
}

  1. Создайте файл /home/pi/hub/index.js со следующим содержимым, заменив

REMOTE-SERVER-ADDRESS.com и REMOTE-SENSOR-ADDRESS с реальными значениями:
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 ([
// функция установления соединения (cb) {
client.connect (sensor, function (err) {
if (err) {
console.log) («Подключение к» + датчик + «сбой»);
} else {
console.log («Подключение выполнено успешно»);
}
cb (err);
});
},
// запускаем функцию сеанса (cb) {
client.createSession (function (err, res) {
if (! Err) session =res;
cb (err);
});
},
// чтение значения
function (cb) {
session.readVariableValue (“ ns =1; s =Variable1 », function (err, dataValue) {
if (! err) console.log (« Variable1 =«, dataValue.value.value);
cb (err);
});
},
// записываем значение
function (cb) {
session.writeSingleNode («ns =1; s =Variable1», new opcua.Variant ({
DataType:opcua.DataType.Double, значение:100
}), function (err) {
cb (err);
});
},
// подписаться на изменения
function (cb) {
subscription =new opcua.ClientSubscription (session, {
maxNotificationsPerPublish:5,
priority:5,
publishingEnabled:истина,
requiredLifetimeCount:5,
requestedMaxKeepAliveCount:3,
requestedPublishingInterval:500,
});
subscription.on («start», function () {
console.log («идентификатор подписки:«,
subscription.subscriptionId);
}). on («завершено», function () {
cb ();
});
setTimeout (function () {
subscription.terminate ();
}, 5000);
// устанавливаем отслеживаемый элемент
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 («изменено», function (dataValue) {
console.log («Variable1 =«, dataValue.value.value);
// отправляем получателю
var data ={
device:«sensor1»,
Отметка времени:Date.now (),
Variable1:dataValue.value.value
};
request.post ({url:Receiver, form:data}, function (err) {
if (err) console.log («Не удалось отправить» +
JSON.stringify (data) + »к» + получателю);
});
});
},
// закрыть сеанс
function (cb) {
session.close (function (err) {
if (err) console.log («Failed to закрыть сессию »); cb ();
});
}
],
function (err) {if (err) {
console.log («Failed with error:» , err);
} else {
console.log («Успешно завершено»);
}
client.disconnect (function () {
});
}
);

  1. Создайте файл / home / pi / hub / Dockerfile со следующим содержимым:

ОТ hypriot / rpi-node:boron-onbuild

  1. Создайте / home / pi / sensor

  2. Создайте файл /home/pi/sensor/package.json со следующим содержимым:

{
«name»:«sensor»,
«version»:«1.0.0»,
«description»:«»,
« main »:« index.js »,
« scripts »:{
« start »:« node index.js »,
« test »:« echo «Ошибка:тест не указан» &&exit 1 ″
},
«автор»:«»,
«лицензия»:«ISC»,
«зависимости»:{
«node-opcua »:« 0.0.64 »
}
}

  1. Создайте файл /home/pi/sensor/index.js со следующим содержимым:

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»,
},
порт :4334,
resourcePath:«UA / resourcePath»,
});
host.initialize (function () {
var space =host.engine.addressSpace;
Var componentOf =space.addObject ({
browseName:«browseName»,
organizationBy:space.rootFolder.objects,
});
var variable1 =0;
// генерируем новое значение
setInterval (function () {
variable1 =Math.floor (max - Math.random () * (max - min));
}, 500);
space.addVariable ({
browseName:«browseName»,
componentOf:componentOf,
dataType:«Double»,
nodeId:«ns =1; s =Variable1 ”, // строковое значение nodeID
:{
get:function () {
return new opcu a.Variant ({dataType:opcua.DataType.Double, value:variable1});
},
set:function (option) {
variable1 =parseFloat (variant.value);
return opcua.StatusCodes.Good;
}
}
});
host.start (function () {
var endpoint =
host.endpoints [0] .endpointDescriptions () [0] .endpointUrl; console.log («Конечная точка:«, конечная точка);
});
});

  1. Настройте минимальное и максимальное значения в начале

файл /home/pi/sensor/index.js.

  1. Создайте файл / home / pi / sensor / Dockerfile со следующим содержимым:

ОТ hypriot / rpi-node:boron-onbuild


Интернет вещей

  1. Советы и тенденции безопасности IIoT на 2020 год
  2. Cisco анонсирует комплексную архитектуру безопасности IIoT, Cyber ​​Vision для прозрачности и Edge Intelligence
  3. Управление безопасностью IIoT
  4. Интеллектуальная сенсорная плата ускоряет разработку периферийного ИИ
  5. Компания по разработке продуктов, использующая для всего этого 3D-печать
  6. Перспективы развития промышленного Интернета вещей
  7. Почему периферийные вычисления так важны для IIoT
  8. Производители и дистрибьюторы наконец используют IIoT и AI для увеличения продаж и производительности
  9. Разработка приложений Интернета вещей получает повышение гибкости от контейнерных технологий
  10. Меняют ли периферийные вычисления и IIoT наше представление о данных?