Thingsboard và những công nghệ liên quan-OPC UA

Tích hợp OPC-UA và Thingsboard

Trên hệ điều hành CentOS

dòng ngang

https://opcdatahub.com/Images/060313_OPC_1.gif

Giới thiệu

Tài liệu này sẽ hướng dẫn các bạn:

  • Kết nối với local KEPServerEX chạy trên window.
  • Truyền tải dữ liệu OPC-UA đến Thingsboard
  • Hiển thị dữ liệu OPC-UA lên Thingsboard

Giả sử như bạn đã cài đặt KEPServerEX trên window

SCADA là gì?

SCADA (Supervisory Control And Data Acquisition) hiểu theo nghĩa truyền thống là một hệ thống điều khiển giám sát và thu thập dữ liệu. Nhằm hỗ trợ con người trong quá trình giám sát và điều khiển từ xa.

Hệ thống SCADA đóng vai trò quan trọng với công nghiệp. SCADA đảm bảo sự hiệu quả cho dây chuyền sản xuất, xử lí dữ liệu để đưa ra những quyết định (decision), và kịp thời quản lí các vấn đề phát sinh trong hệ thống công nghiệp.

Một hệ thống SCADA bao gồm:

  • Các cảm biến (sensors) được kết nối với các PLC
  • Các PLC
  • Các HMI (Human-Machine Interface) panel và HMI Computer

Hệ thống SCADA hiện đại – OPC

Hệ thống SCADA hiện đại được kết nối thông qua OPC.

OPC (Open Platform Communications) là các chuẩn đặc trưng trong viễn thông công nghiệp, nguồn gốc từ chuẩn giao tiếp OLE for Process Control (Object Linking and Embeded for Process Control) được phát triển năm 1996.

OPC-DA

OPC-DA (OPC Data Access) là chuẩn giao tiếp đặc trưng để truyền tải dữ liệu thực (real-time data) giữa nguồn dữ liệu (data source) và nơi chứa dữ liệu (data sink) mà không cần thông qua các giao tiếp vốn có của chúng.

Năm 1994, đặc tả OPC đầu tiên là OPC Data Access hay là OPC truy cập dữ liệu thời gian thực quy định cách thức truy cập SCADA (Client) đến PLC thông qua phần mềm (Server) chạy trên máy tính hệ điều hành Windows. Hiện nay các phần mềm SCADA kết nối với các PLC thông qua 3 cách phổ biến:

  • Thông qua driver trực tiếp. SCADA sử dụng các hàm đọc/ghi/cấu hình ở trong file driver (DLL) để truy cập đến PLC;
  • Thông qua DDE Server, SCADA đóng vai trò là DDE Client;
  • Thông qua OPC Server, SCADA đóng vai trò là OPC Client (OPC ở đây là OPC DA). Thực tế người dùng (kỹ sư lập trình SCADA) hay dùng driver trực tiếp để kết nối với PLC. Khi không có driver trực tiếp, người dùng mới sử dụng OPC DA bởi một số điểm hạn chế của OPC DA;

OPC-UA

OPC-UA (OPC Unified Architecture) được hiểu là một chuẩn truyền thông bậc cao độc lập, được phát triển bởi hiệp hội OPC Foundation, nhưng OPC-UA hoàn toàn khác trước so với đặc tả đàn anh của mình OPC DA. Chính vì vậy OPC UA được hiểu bằng cụm từ Open Platform Communication (OPC) Unified Architecture (UA) nhằm tránh đi cụm từ đã không hợp thời OLE for Process Control của OPC DA và những đặc tả khác.

OPC DA hoàn toàn là hệ điều hành phụ thuộc trong khi OPC-UA độc lập với hệ điều hành. Một số ứng dụng OPC UA SDK có thể được tạo trên một nền tảng mà hệ điều hành không có mặt.

Cách giao tiếp của OPC-DA là COM /DCOM còn OPC-UA là TCP/IP hoặc HTTPS.

Máy chủ OPC UA có thể là hệ điều hành độc lập (hoàn toàn phụ thuộc vào loại SDK). Trong tương lai nếu muốn di chuyển sang bất kỳ hệ điều hành nào thì nó sẽ không bị ảnh hưởng trước.

Tích hợp OPC-UA với Thingsboard

Hệ thống

Cài đặt và khởi động Thingsboard Gateway

Cũng như Thingsboard, Thingsboard Gateway yêu cầu Java 8. Download phiên bản mới nhất của Thingsboard Gateway tại:

https://github.com/thingsboard/thingsboard-gateway/releases

Sau khi đã tải tb-gateway về, thực thi câu lệnh:

rpm -Uvh tb-gateway-

your_version.rpm

Thay you_version bằng version bạn đã tải về

Sau đó khởi động Thingsboard Gateway dưới dạng service của CentOS

sudo service tb-gateway start

Sau đó, vào đăng nhập vào Thingsboard Web UI > Vào mục Devices tạo thiết bị và tick vào ô Is Gateway

Sau khi đã tạo Devices là gateway, ta vào lấy ACCESS_TOKEN

Sau khi lấy ACCESS_TOKEN ta vào chỉnh sửa file config của Gateway:

sudo vi /etc/tb-gateway/conf/tb-gateway.yml

Ở phần

connection:

host: “${GATEWAY_HOST:YOUR_HOST}”

port: 1883

retryInterval: 3000

maxInFlight: 1000

security:

accessToken: “${GATEWAY_ACCESS_TOKEN:YOUR_TOKEN}”

thay YOUR_HOST và YOUR_TOKEN bằng host của Thingsboard (nếu bạn cài đặt Thingsboard và Thingsboard Gateway ở chung một server thì sẽ là localhost) và ACCESS_TOKEN lấy từ phần ở trên.

Bước 2: Cấu hình cho KEPServerEX

Bước 2.1: Cung cấp xác thực của gateway cho KEPServerEX

Mở cửa sổ OPC UA Configuration Manager > Hướng đến tab Trusted Clients

Import file example.der từ folder configuration của gateway được lưu tại:

Linux: /etc/tb-gateway/conf

*Lưu ý: Nếu như certificate hết hạn, bạn có thể generate sử dụng lệnh:

keytool -genkeypair -v -alias gateway -dname “CN=Thingsboard Gateway, OU=TB, O=ThingsBoard, L=San Francisco, ST=CA, C=US” -keystore example.jks -keypass secret -storepass secret -keyalg RSA -keysize 2048 -validity 9999keytool -importkeystore -srckeystore example.jks -destkeystore example.pfx -srcstoretype JKS -deststoretype PKCS12 -srcstorepass secret -deststorepass secret -srcalias gateway -destalias gateway -srckeypass secret -destkeypass secret -nopromptkeytool -exportcert -alias gateway -keypass secret -keystore example.pfx -storepass secret -file example.der

image

Bước 2.2: Thêm server endpoint cho KEPServerEX

Nếu như bạn cài đặt KEPServerEX với Thingsboard Gateway ở hai server khác nhau thì KEPServerEX cần được tùy chỉnh để remote connection.

Mở OPC UA Configuration Manager > Hướng đến tab Server Endpoints và cấu hình

image

Bước 3: Kích hoạt OPC-UA extension.

Mở file

sudo vi /etc/tb-gateway/conf/tb-gateway.yml

Tìm dòng

extensions:

id: “http”

type: “HTTP”

extensionConfiguration: http-config.json

Thêm vào:

id: “opc”

type: “OPC UA”

extensionConfiguration: opc-config.json

Mở file

sudo vi /etc/tb-gateway/conf/opc-config.json

Chỉnh sửa như code

“servers”: [

{

“applicationName”: “Thingsboard OPC-UA client”,

“applicationUri”: “”,

“host”: “YOUR_KEPSERVEREX_HOST”,

“port”: YOUR_PORT,

“scanPeriodInSeconds”: 10,

“timeoutInMillis”: 5000,

“security”: “Basic128Rsa15”,

“identity”: {

“type”: “anonymous”

},

“keystore”: {

“type”: “PKCS12”,

“location”: “example.pfx”,

“password”: “secret”,

“alias”: “gateway”,

“keyPassword”: “secret”

},

“mapping”: [

{

“deviceNodePattern”: “Channel1.Device1”,

“deviceNamePattern”: “Device ${_System._DeviceId}”,

“attributes”: [

{

“key”: “Tag1”,

“type”: “string”,

“value”: “${Tag1}”

}

],

“timeseries”: [

{

“key”: “Tag2”,

“type”: “long”,

“value”: “${Tag2}”

}

]

}

]

}

]

*Lưu ý: Những giá trị YOUR_HOST, YOUR_PORT là tùy chỉnh theo từng máy

Bước 4: Truyền dữ liệu

Tạo file opc-ua-extension.json với nội dung

[{

“id”: “opc”,

“type”: “OPC UA”,

“configuration”: {

“servers”: [

{

“applicationName”: “Thingsboard OPC-UA client”,

“applicationUri”: “”,

“host”: “YOUR_KEPSERVEREX_HOST”,

“port”: YOUR_PORT,

“scanPeriodInSeconds”: 10,

“timeoutInMillis”: 5000,

“security”: “Basic128Rsa15”,

“identity”: {

“type”: “anonymous”

},

“keystore”: {

“type”: “PKCS12”,

“location”: “example.pfx”,

“password”: “secret”,

“alias”: “gateway”,

“keyPassword”: “secret”

},

“mapping”: [

{

“deviceNodePattern”: “Channel1.Device1”,

“deviceNamePattern”: “Device ${_System._DeviceId}”,

“attributes”: [

{

“key”: “Tag1”,

“type”: “string”,

“value”: “${Tag1}”

}

],

“timeseries”: [

{

“key”: “Tag2”,

“type”: “long”,

“value”: “${Tag2}”

}

]

}

]

}

]

}

}]

Sau đó import vào phần Extension của Device Gateway vừa tạo ở trên

*Lưu ý:

Ở phần

“deviceNodePattern”: “Channel1.Device1”,

Cần chỉnh sửa sao cho phù hợp với tên node trên KEPServerEX.

0 replies


Leave a Reply

Your email address will not be published.