本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 SiteWise Edge 中設定 OPC UA 來源
您可以使用 AWS IoT SiteWise 主控台或 SiteWise Edge 閘道功能來定義 OPC UA 來源,並將其新增至 SiteWise Edge 閘道,以代表本機 OPC UA 伺服器。
設定 OPC UA 來源 (主控台)
您可以使用 主控台,透過下列程序設定 OPC UA 來源。
注意
警告:重複TQVs 可能會導致重複充電。
使用 AWS IoT SiteWise 主控台設定 OPC UA 來源
-
導覽至 AWS IoT SiteWise 主控台
。 -
在左側導覽中,選擇 Edge 區段中的 Edge 閘道。
-
選取 SiteWise Edge 閘道以新增 OPC UA 來源。
-
選擇新增資料來源。
-
輸入來源的名稱。
-
輸入資料來源伺服器的 Local endpoint (本機端點)。端點可以是 IP 地址或主機名稱。您也可以將連接埠號碼新增至本機端點。例如,您的本機端點可能如下所示:
opc.tcp://203.0.113.0:49320
-
(選用) 對於用於選取的節點 ID,請新增節點篩選條件,以限制要擷取至 AWS 雲端的資料串流。根據預設,SiteWise Edge 閘道會使用伺服器的根節點來擷取所有資料串流。您可以使用節點篩選條件來減少 SiteWise Edge 閘道的啟動時間和 CPU 使用量,方法是只包含建立模型的資料路徑 AWS IoT SiteWise。根據預設,SiteWise Edge 閘道會上傳所有 OPC UA 路徑,但以 開頭的路徑除外
/Server/
。若要定義 OPC UA 節點篩選條件,您可以使用節點路徑和*
和**
萬用字元。如需詳細資訊,請參閱在 SiteWise Edge 中使用 OPC UA 節點篩選條件。 -
目的地會因啟用 MQTT 的 V3 閘道和 Classic 串流、V2 閘道而有所不同。
-
傳統蒸汽、V2 閘道目的地與來源有 1:1 的關係。每個來源都會將資料傳送至特定目的地。
-
啟用 MQTT 的 V3 閘道目的地會分別設定,因為中樞和輻條模型可讓您集中設定和管理不同閘道的多個資料來源。若要在 V3 閘道中設定目的地,請參閱 了解 AWS IoT SiteWise Edge 目的地。
-
-
在進階組態窗格中,您可以執行下列動作:
-
針對來源伺服器和 SiteWise Edge 閘道之間傳輸的連線和資料,選擇訊息安全模式。此欄位是 OPC UA 安全政策和訊息安全模式的組合。選擇您為 OPC UA 伺服器指定的相同安全政策和訊息安全模式。
-
如果您的來源需要身分驗證,請從身分驗證組態清單中選擇 AWS Secrets Manager 秘密。SiteWise Edge 閘道會在連線至此資料來源時,使用此秘密中的身分驗證憑證。您必須將秘密連接至 SiteWise Edge 閘道的 AWS IoT Greengrass 元件,以將其用於資料來源身分驗證。如需詳細資訊,請參閱設定 SiteWise Edge 的資料來源身分驗證。
提示
您的資料伺服器可能具有稱為 Allow anonymous login (允許匿名登入) 的選項。如果此選項為 Yes (是),則您的來源不需要身分驗證。
-
(選用) 您可以選取啟用資料串流字首 - 選用,以啟用資料串流字首。
-
輸入資料串流字首。SiteWise Edge 閘道會將此字首新增至來自此來源的所有資料串流。使用資料流前置詞以區分來自不同來源但具有相同名稱的資料串流。您帳戶中的每個資料串流應該都有唯一的名稱。
-
-
(選用) 選擇資料類型轉換選項,將不支援的 OPC UA 資料類型轉換為字串,然後再將其擷取至 AWS IoT SiteWise。將具有簡單資料類型的陣列值轉換為 JSON 字串,並將 DateTime 資料類型轉換為 ISO 8601 字串。如需詳細資訊,請參閱轉換不支援的資料類型。
-
(選用) 對於屬性群組,選擇新增群組。
-
輸入屬性群組的名稱。
-
對於屬性:
-
對於節點路徑,新增 OPC UA 節點篩選條件以限制要上傳哪些 OPC UA 路徑 AWS IoT SiteWise。格式類似於用於選取的節點 ID。
-
-
對於群組設定,請執行下列動作:
-
針對資料品質設定,選擇您希望 AWS IoT SiteWise 收集器擷取的資料品質類型。
-
對於掃描模式設定,使用掃描模式設定標準訂閱屬性。您可以選取訂閱或輪詢。如需掃描模式的詳細資訊,請參閱 使用 OPC UA 篩選資料擷取範圍。
-
-
-
-
選擇儲存。
設定 OPC UA 來源 (AWS CLI)
您可以使用 為 SiteWise Edge 閘道定義 OPC UA 資料來源 AWS CLI。若要這樣做,請建立 OPC UA 功能組態 JSON 檔案,並使用 update-gateway-capability-configuration
請求內文
sources
-
OPC UA 來源定義結構的清單,每個結構都包含下列資訊:
name
-
來源的唯一且易記名稱。
endpoint
-
包含下列資訊的端點結構:
certificateTrust
-
包含下列資訊的憑證信任政策結構:
type
-
來源的憑證信任模式。選擇下列其中一項:
-
TrustAny
– SiteWise Edge 閘道會在連線到 OPC UA 來源時信任任何憑證。 -
X509
– SiteWise Edge 閘道會在連線到 OPC UA 來源時信任 X.509 憑證。如果您選擇此選項,則必須在certificateTrust
中定義certificateBody
。您也可以certificateTrust
在中定義certificateChain
。
-
certificateBody
-
(選用性) X.509 憑證的主體。
如果您在
certificateTrust
中為type
選擇X509
,則此欄位為必要。 certificateChain
-
(選用) X.509 憑證的信任鏈。
僅當您在
certificateTrust
中為type
選擇X509
的情況下,才會使用此欄位。
endpointUri
-
OPC UA 來源的本機端點。例如,您的本機端點可能看起來會像
opc.tcp://203.0.113.0:49320
。 securityPolicy
-
要使用的安全政策,讓您可以保護從 OPC UA 來源讀取的訊息。選擇下列其中一項:
-
NONE
– SiteWise Edge 閘道無法保護來自 OPC UA 來源的訊息。我們建議您選擇不同的安全政策。如果您選擇此選項,您也必須為messageSecurityMode
選擇NONE
。 -
BASIC256_SHA256
–Basic256Sha256
安全政策。 -
AES128_SHA256_RSAOAEP
–Aes128_Sha256_RsaOaep
安全政策。 -
AES256_SHA256_RSAPSS
–Aes256_Sha256_RsaPss
安全政策。 -
BASIC128_RSA15
– (已棄用) OPC UA 規格中的Basic128Rsa15
安全政策已棄用,因為它不再被視為安全。我們建議您選擇不同的安全政策。如需詳細資訊,請參閱設定檔 SecurityPolicy – Basic128Rsa15。 -
BASIC256
– (已棄用) OPC UA 規格中的Basic256
安全政策已棄用,因為它不再被視為安全。我們建議您選擇不同的安全政策。如需詳細資訊,請參閱 SecurityPolicy – Basic256。
重要
如果您選擇 以外的安全政策
NONE
,您必須SIGN_AND_ENCRYPT
為 選擇SIGN
或messageSecurityMode
。您也必須將來源伺服器設定為信任 SiteWise Edge 閘道。如需詳細資訊,請參閱設定 OPC UA 伺服器以信任 AWS IoT SiteWise Edge 閘道。 -
messageSecurityMode
-
用於保護 OPC UA 來源連線的訊息安全模式。選擇下列其中一項:
-
NONE
– SiteWise Edge 閘道無法保護與 OPC UA 來源的連線。我們建議您選擇不同的訊息安全模式。如果您選擇此選項,您也必須為securityPolicy
選擇NONE
。 -
SIGN
– SiteWise Edge 閘道與 OPC UA 來源之間傳輸中的資料已簽署但未加密。 -
SIGN_AND_ENCRYPT
– 閘道與 OPC UA 來源之間傳輸中的資料會經過簽署和加密。
重要
如果您選擇 以外的訊息安全模式
NONE
,則必須選擇securityPolicy
以外的NONE
。您也必須將來源伺服器設定為信任 SiteWise Edge 閘道。如需詳細資訊,請參閱設定 OPC UA 伺服器以信任 AWS IoT SiteWise Edge 閘道。 -
identityProvider
-
包含下列資訊的身分提供者結構:
type
-
來源所需的身分驗證登入資料類型。選擇下列其中一項:
-
Anonymous
– 來源不需要身分驗證即可連線。 -
Username
– 來源需要使用者名稱和密碼才能連線。如果您選擇此選項,則必須在identityProvider
中定義usernameSecretArn
。
-
usernameSecretArn
-
(選用) AWS Secrets Manager 秘密的 ARN。SiteWise Edge 閘道會在連線至此來源時,使用此秘密中的身分驗證憑證。您必須將秘密連接到 SiteWise Edge 閘道的 IoT SiteWise 連接器,以將其用於來源身分驗證。如需詳細資訊,請參閱設定 SiteWise Edge 的資料來源身分驗證。
如果您在
identityProvider
中為type
選擇Username
,則此欄位為必要。
nodeFilterRules
-
定義傳送至 AWS 雲端之 OPC UA 資料串流路徑的節點篩選規則結構清單。您可以使用節點篩選條件來減少 SiteWise Edge 閘道的啟動時間和 CPU 使用量,方法是只包含您建模資料的路徑 AWS IoT SiteWise。根據預設,SiteWise Edge 閘道會上傳所有 OPC UA 路徑,但以 開頭的路徑除外
/Server/
。若要定義 OPC UA 節點篩選條件,您可以使用節點路徑和*
和**
萬用字元。如需詳細資訊,請參閱在 SiteWise Edge 中使用 OPC UA 節點篩選條件。清單中的每個結構都必須包含下列資訊:
action
-
此節點篩選規則的動作。您可以選擇下列選項:
-
INCLUDE
– SiteWise Edge 閘道僅包含符合此規則的資料串流。
-
definition
-
包含下列資訊的節點篩選規則結構:
type
-
此規則的節點篩選路徑類型。您可以選擇下列選項:
-
OpcUaRootPath
– SiteWise Edge 閘道會根據 OPC UA 路徑階層的根來評估此節點篩選路徑。
-
rootPath
-
針對 OPC UA 路徑階層的根評估的節點篩選路徑。此路徑必須以 開頭
/
。
measurementDataStreamPrefix
-
從來源附加至所有資料串流的字串。SiteWise Edge 閘道會將此字首新增至來自此來源的所有資料串流。使用資料流前置詞以區分來自不同來源但具有相同名稱的資料串流。您帳戶中的每個資料串流應該都有唯一的名稱。
typeConversions
-
不支援的 OPC UA 資料類型可用的轉換類型。每個資料類型都會轉換為字串。如需詳細資訊,請參閱轉換不支援的資料類型。
array
-
轉換為字串的簡單陣列資料類型。您可以選擇下列選項:
-
JsonArray
– 表示您選擇將簡易陣列資料類型轉換為字串。
-
datetime
-
轉換為字串的 DateTime 資料類型。您可以選擇下列選項:
-
ISO8601String
– 表示您選擇將 ISO 8601 資料類型轉換為字串。
-
destination
-
OPC UA 標籤目的地的組態。傳統串流、v2 和啟用 MQTT 的 V3 閘道具有不同的目的地組態。
type
-
目的地的類型。
streamName
– 僅適用於 Classic 串流、V2 閘道-
串流的名稱。串流名稱應該是唯一的。
streamBufferSize
– 僅適用於 Classic 串流、V2 閘道-
串流的緩衝區大小。這對管理來自 OPC UA 來源的資料流程非常重要。
propertyGroups
-
(選用) 定義通訊協定
scanMode
請求的deadband
和 的屬性群組清單。name
-
屬性群組的名稱。這應該是唯一的識別符。
deadband
-
deadband
值定義資料點值的最小變更,在資料傳送到雲端之前必須發生。其中包含下列資訊:type
-
支援的無效頻帶類型。您可以選擇下列選項:
-
ABSOLUTE
– 固定值,指定將資料點視為足夠重要以傳送至雲端所需的最低絕對變更。 -
PERCENT
– 動態值,以上次傳送資料點值的百分比指定所需的最低變更。當資料值隨時間大幅變化時,這種類型的無效頻帶很有用。
-
value
-
無效頻帶的值。當
type
為 時ABSOLUTE
,此值為無單位雙。當type
為 時PERCENT
,此值是介於1
和 之間的兩倍100
。 eguMin
-
(選用) 使用
PERCENT
無效頻帶時的工程單位最小值。如果 OPC UA 伺服器未設定工程單位,您可以設定此項目。 eguMax
-
(選用) 使用
PERCENT
無效頻帶時的工程單位上限。如果 OPC UA 伺服器未設定工程單位,您可以設定此項目。 timeoutMilliseconds
-
逾時前的持續時間,以毫秒為單位。最小值為
100
。
scanMode
-
包含下列資訊的
scanMode
結構:type
-
支援的 類型
scanMode
。接受的值為POLL
和EXCEPTION
。 rate
-
掃描模式的取樣間隔。
timestampToReturn
-
時間戳記的來源。您可以選擇下列選項:
-
SOURCE_TIME
– 使用您裝置的時間戳記。 -
SERVER_TIME
– 使用您伺服器的時間戳記。
注意
TimestampToReturn
搭配 IoT SiteWise OPC UA 收集器元件的 2.5.0 版或更新版本使用。如果您將此功能與舊版搭配使用,組態更新會失敗。如需詳細資訊,請參閱更新 AWS IoT SiteWise 元件的版本。 -
nodeFilterRuleDefinitions
-
(選用) 屬性群組中要包含的節點路徑清單。屬性群組不能重疊。如果您未指定此欄位的值,則群組會包含根目錄下的所有路徑,而且您無法建立其他屬性群組。
nodeFilterRuleDefinitions
結構包含以下資訊:type
-
OpcUaRootPath
是唯一支援的類型。這會指定 的值rootPath
是相對於 OPC UA 瀏覽空間根目錄的路徑。 rootPath
-
逗號分隔清單,指定要包含在屬性群組中的路徑 (相對於根)。
Classic 串流、V2 閘道 (AWS CLI) 的其他功能組態範例
下列範例會從存放在 JSON 檔案中的承載定義 OPC UA SiteWise Edge 閘道功能組態。
aws iotsitewise update-gateway-capability-configuration \ --capability-namespace "iotsitewise:opcuacollector:2" \ --capability-configuration file://opc-ua-configuration.json
範例 :OPC UA 來源組態
下列opc-ua-configuration.json
檔案定義了基本、不安全的 OPC UA 來源組態。
{ "sources": [ { "name": "Wind Farm #1", "endpoint": { "certificateTrust": { "type": "TrustAny" }, "endpointUri": "opc.tcp://203.0.113.0:49320", "securityPolicy": "NONE", "messageSecurityMode": "NONE", "identityProvider": { "type": "Anonymous" }, "nodeFilterRules": [] }, "measurementDataStreamPrefix": "" } ] }
範例 :OPC UA 來源組態與定義的屬性群組
下列opc-ua-configuration.json
檔案使用定義的屬性群組來定義基本、不安全的 OPC UA 來源組態。
{ "sources": [ { "name": "source1", "endpoint": { "certificateTrust": { "type": "TrustAny" }, "endpointUri": "opc.tcp://10.0.0.9:49320", "securityPolicy": "NONE", "messageSecurityMode": "NONE", "identityProvider": { "type": "Anonymous" }, "nodeFilterRules": [ { "action": "INCLUDE", "definition": { "type": "OpcUaRootPath", "rootPath": "/Utilities/Tank" } } ] }, "measurementDataStreamPrefix": "propertyGroups", "propertyGroups": [ { "name": "Deadband_Abs_5", "nodeFilterRuleDefinitions": [ { "type": "OpcUaRootPath", "rootPath": "/Utilities/Tank/Temperature/TT-001" }, { "type": "OpcUaRootPath", "rootPath": "/Utilities/Tank/Temperature/TT-002" } ], "deadband": { "type":"ABSOLUTE", "value": 5.0, "timeoutMilliseconds": 120000 } }, { "name": "Polling_10s", "nodeFilterRuleDefinitions": [ { "type": "OpcUaRootPath", "rootPath": "/Utilities/Tank/Pressure/PT-001" } ], "scanMode": { "type": "POLL", "rate": 10000 } }, { "name": "Percent_Deadband_Timeout_90s", "nodeFilterRuleDefinitions": [ { "type": "OpcUaRootPath", "rootPath": "/Utilities/Tank/Flow/FT-*" } ], "deadband": { "type":"PERCENT", "value": 5.0, "eguMin": -100, "eguMax": 100, "timeoutMilliseconds": 90000 } } ] } ] }
範例 :OPC UA 來源組態與屬性
的下列 JSON 範例opc-ua-configuration.json
定義具有下列屬性的 OPC UA 來源組態:
-
信任任何憑證。
-
使用
BASIC256
安全政策來保護訊息。 -
使用
SIGN_AND_ENCRYPT
模式來保護連線。 -
使用存放在 Secrets Manager 秘密中的身分驗證憑證。
-
篩選資料串流,路徑以
/WindFarm/2/WindTurbine/
開頭的資料串流除外。 -
將
/Washington
新增至每個資料串流路徑的開頭,以區分此「風力發電廠 #2」和另一個區域中的「風力發電廠 #2」。
{ "sources": [ { "name": "Wind Farm #2", "endpoint": { "certificateTrust": { "type": "TrustAny" }, "endpointUri": "opc.tcp://203.0.113.1:49320", "securityPolicy": "BASIC256", "messageSecurityMode": "SIGN_AND_ENCRYPT", "identityProvider": { "type": "Username", "usernameSecretArn": "arn:aws:secretsmanager:
region
:123456789012:secret:greengrass-windfarm2-auth-1ABCDE" }, "nodeFilterRules": [ { "action": "INCLUDE", "definition": { "type": "OpcUaRootPath", "rootPath": "/WindFarm/2/WindTurbine/" } } ] }, "measurementDataStreamPrefix": "/Washington" } ] }
範例 :OPC UA 來源組態與憑證信任
的下列 JSON 範例opc-ua-configuration.json
定義具有下列屬性的 OPC UA 來源組態:
-
信任指定的 X.509 憑證。
-
使用
BASIC256
安全政策來保護訊息。 -
使用
SIGN_AND_ENCRYPT
模式來保護連線。
{ "sources": [ { "name": "Wind Farm #3", "endpoint": { "certificateTrust": { "type": "X509", "certificateBody": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----", "certificateChain": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----" }, "endpointUri": "opc.tcp://203.0.113.2:49320", "securityPolicy": "BASIC256", "messageSecurityMode": "SIGN_AND_ENCRYPT", "identityProvider": { "type": "Anonymous" }, "nodeFilterRules": [] }, "measurementDataStreamPrefix": "" } ] }