跳到主要內容

AI 驅動文件

您想了解什麼?

TCP 通訊設定

本指南將向您展示如何使用 Node-RED 配置 OV20i 相機與外部裝置之間的 TCP 通訊。使用 TCP 通訊進行實時資料交換、遠端控制或與自定義應用程式和系統的整合。

影片指南

檢視此主題的實際操作:自動整合構建器

何時使用 TCP 通訊: 實時資料流、定製應用整合、與外部系統的雙向通訊、高頻資料交換,或當 HTTP/REST API 不適用時。

先決條件

  • 已設定並連線的 OV20i 相機系統
  • 具備 TCP 通訊能力的目標裝置/系統
  • 相機與目標裝置之間的網路連線
  • 對 IP 地址和埠號的基本理解
  • 已配置的活動配方(成像和檢測設定完成)

步驟 1:驗證網路配置

1.1 檢查相機 IP 地址

  1. 導航到系統設定
  2. 記錄相機 IP 地址(例如,192.168.0.100
  3. 驗證子網掩碼和網路配置

1.2 確認目標裝置網路

確保網路相容性:

  • 同一子網: 相機和目標裝置必須在同一網路範圍內
  • 可訪問埠: 目標裝置埠不得被防火牆阻塞
  • 網路連線性: 如果可能,使用 ping 命令進行測試

1.3 網路要求

要求相機目標裝置備註
IP 範圍192.168.0.100192.168.0.xxx必須在同一子網
子網掩碼255.255.255.0255.255.255.0標準配置
埠訪問49155(示例)49155(示例)避免保留埠
防火牆允許 TCP 流量允許 TCP 流量雙向

步驟 2:訪問 Node-RED 編輯器

2.1 導航到 IO 塊

  1. 在配方面包屑選單中點選 "IO 塊",或
  2. 從配方編輯器中選擇 "配置 I/O"

2.2 開啟 Node-RED 編輯器

  1. 點選 配置 IO 進入 Node-RED 流編輯器
  2. 驗證 Node-RED 介面是否正確載入

檢查點: 您應該看到帶有節點調色盤的 Node-RED 流編輯器在左側。

步驟 3:配置 TCP 輸入(接收資料)

3.1 新增 TCP 輸入節點

  1. 在左側面板(網路部分)中找到 "tcp in" 節點
  2. 將 "tcp in" 節點拖到流畫布上
  3. 雙擊節點進行配置

3.2 配置 TCP 輸入設定

節點配置:

設定描述
型別監聽相機作為伺服器
49155相機監聽的埠
資料模式持續資料流
資料型別UTF8基於文字的通訊
主題(可選)訊息分類

3.3 TCP 輸入配置步驟

  1. 伺服器配置:
    • 選擇 "監聽埠"(伺服器模式)
    • 輸入 埠號(例如,49155
  2. 資料處理:
    • 資料模式: 選擇 "流" 以實現持續資料
    • 資料型別: 選擇 "UTF8" 進行文字或 "Buffer" 進行二進位制
  3. 高階設定:
    • 新行字元: 除非需要特定分隔符,否則保持為空
    • 主題: 可選的訊息路由識別符號
  4. **點選 完成 以儲存配置

3.4 埠選擇指南

埠範圍用途建議
1-1023系統保留避免使用
1024-49151註冊埠檢查可用性
49152-65535動態/私有推薦使用

第 4 步:配置 TCP 輸出(傳送資料)

4.1 新增 TCP 輸出節點

  1. 在左側面板中找到 "tcp out" 節點(網路部分)
  2. 將 "tcp out" 節點拖到流程畫布上
  3. 雙擊節點進行配置

image.png

4.2 配置 TCP 輸出設定

節點配置:

設定描述
型別連線到相機作為客戶端
主機192.168.0.200目標裝置 IP 地址
49155目標裝置埠
模式客戶端出站連線

4.3 TCP 輸出配置步驟

  1. 連線設定:
    • 型別: 選擇 "連線到"(客戶端模式)
    • 主機: 輸入 目標裝置 IP 地址
    • 埠: 輸入 目標裝置埠號
  2. 連線選項:
    • 模式: 保持為 "客戶端"
    • 結束連線: 根據用例配置
  3. 資料格式:
    • Base64: 通常對文字資料禁用
    • TLS: 僅在需要安全連線時啟用
  4. 點選 完成 以儲存配置

第 5 步:建立通訊流程

5.1 構建完整流程

建立一個可以傳送和接收 TCP 資料的流程:

  1. 將以下節點新增到畫布上:
    • 注入節點(用於觸發訊息)
    • 函式節點(用於訊息處理)
    • TCP 輸出節點(用於傳送資料)
    • TCP 輸入節點(用於接收資料)
    • 除錯節點(用於監控)

5.2 配置注入節點

  1. 雙擊注入節點
  2. 配置設定:
    • 名稱: "傳送訊息"
    • 有效負載: 時間戳
    • 主題: (留空)
  3. 點選 完成

5.3 配置函式節點

函式節點將格式化您的出站訊息:

msg.payload = "Hello from OV20i camera";
return msg;

  1. 雙擊函式節點
  2. 將上述程式碼複製到 "訊息處理" 標籤中
  3. 名稱: "格式化訊息"
  4. 點選 完成

5.4 連線節點

按以下順序連線節點:

出站流程:

  • 注入 → 函式 → TCP 輸出
  • 函式 → 除錯(檢視出站訊息)

入站流程:

  • TCP 輸入 → 除錯(檢視入站訊息)

5.5 完整流程結構

您的最終流程應包含:

  • 注入 連線到 函式
  • 函式 連線到 TCP 輸出除錯
  • TCP 輸入 連線到單獨的 除錯節點

結果: 您可以透過點選注入按鈕傳送訊息,並在除錯面板中檢視出站和入站訊息。

第 6 步:配置訊息格式

6.1 定義訊息格式

保持訊息結構簡單:

訊息型別格式示例
簡單文字普通字串"來自相機的問候"
狀態更新帶資訊的文字"狀態:準備就緒"
資料值鍵值格式"溫度:25.5"

6.2 自定義訊息示例

您可以修改功能節點以適應不同的訊息型別:

簡單狀態訊息:

msg.payload = "Camera Ready";
return msg;

時間戳訊息:

msg.payload = "Time: " + new Date().toLocaleString();
return msg;

帶值的資料:

msg.payload = "INSPECTION_COUNT: 42";
return msg;

第 7 步:部署和測試配置

7.1 部署 Node-RED 流程

  1. 點選 Deploy 按鈕(右上角)
  2. 驗證部署成功 訊息
  3. 檢查節點狀態指示器:
    • 綠色點: 成功連線
    • 紅色點: 連線錯誤
    • 黃色點: 正在嘗試連線

7.2 測試 TCP 通訊

7.2.1 基本連線測試

使用命令列工具:

# Test TCP connection (Linux/Mac)
telnet [camera-ip] [port]
# Example: telnet 192.168.0.100 49155

# Test with netcat
nc [camera-ip] [port]
# Example: nc 192.168.0.100 49155

Windows PowerShell:

Test-NetConnection -ComputerName 192.168.0.100 -Port 49155

7.2.2 傳送測試訊息

  1. 連線到相機 TCP 埠
  2. 傳送測試命令:
    • "STATUS" → 應該收到狀態響應
    • "TRIGGER" → 應該觸發檢查
    • "INVALID" → 應該處理未知命令

7.2.3 監控除錯輸出

  1. 開啟 Node-RED 除錯面板(右側邊欄)
  2. 透過 TCP 傳送測試訊息
  3. 驗證除錯輸出 顯示:
    • 傳入訊息
    • 處理結果
    • 傳出響應

7.3 驗證清單

測試預期結果狀態
TCP 連線成功連線到相機埠
訊息接收除錯顯示傳入訊息
訊息處理功能節點正確處理
響應傳送目標裝置接收響應
錯誤處理無效訊息優雅處理

第 8 步:與檢查系統整合

8.1 連線到檢查觸發器

將 TCP 通訊與檢查工作流程連結:

  1. 新增 "All Block Outputs" 節點(如果尚未存在)
  2. 將檢查結果 連線到 TCP 輸出
  3. 格式化檢查資料 以進行 TCP 傳輸

8.2 檢查資料整合

處理檢查結果的功能節點:

// Get inspection results from All Block Outputs
const results = msg.payload;

// Extract key information
const inspectionSummary = {
result: results.pass ? "PASS" : "FAIL",
timestamp: new Date().toISOString(),
processing_time: results.processing_time,
roi_count: results.roi_results ? results.roi_results.length : 0
};

// Format for TCP transmission
msg.payload = JSON.stringify(inspectionSummary);
return msg;

8.3 雙向控制

透過 TCP 啟用遠端控制:

// Handle remote commands
const command = msg.payload.toString().toUpperCase();

switch(command) {
case "START_INSPECTION":
// Trigger inspection sequence
global.set("trigger_inspection", true);
msg.payload = "INSPECTION_STARTED";
break;

case "STOP_INSPECTION":
// Stop inspection sequence
global.set("trigger_inspection", false);
msg.payload = "INSPECTION_STOPPED";
break;

case "CHANGE_RECIPE":
// Recipe change logic
msg.payload = "RECIPE_CHANGED";
break;
}

return msg;

第 9 步:故障排除常見問題

9.1 連線問題

問題症狀解決方案
無法連線紅色狀態指示燈檢查 IP 地址和埠
連線中斷間歇性黃色狀態驗證網路穩定性
超時錯誤響應延遲調整超時設定
埠衝突連線被拒絕使用不同的埠號

9.2 資料傳輸問題

問題症狀解決方案
未接收到資料除錯顯示空訊息檢查資料格式設定
資料損壞除錯中出現亂碼驗證編碼(UTF8/Buffer)
訊息丟失訊息缺失檢查網路穩定性
大訊息問題資料被截斷使用較短的訊息

9.3 除錯技巧

系統化故障排除:

  1. 在每一步啟用除錯節點
  2. 監控 Node-RED 日誌以查詢錯誤
  3. 首先使用簡單的 TCP 客戶端進行測試
  4. 使用 ping 驗證網路連線

成功!您的 TCP 通訊已準備就緒

您的 TCP 通訊系統現在可以:

  • 在相機與外部裝置之間傳送和接收資料
  • 處理簡單訊息以進行基本通訊
  • 使用除錯節點監控資料流
  • 處理應用程式的基本網路通訊

持續維護

定期系統檢查

  • 監控連線穩定性隨時間變化
  • 驗證資料傳輸是否一致
  • 檢查除錯日誌以查詢錯誤模式
  • 在網路更改後測試通訊

下一步

在設定基本 TCP 通訊後:

  1. 使用已建立的連線測試您的外部系統
  2. 根據您的特定需求自定義訊息格式
  3. 隨著需求的增長新增更復雜的邏輯
  4. 如果 TCP 無法滿足所有需求,考慮其他通訊方法

🔗 另請參見

對於高吞吐量應用:

  1. 減少訊息頻率
  2. 批次處理多個訊息
  3. 對大資料使用二進位制格式
  4. 實現壓縮

除錯技巧

系統化故障排除:

  1. 在每一步啟用除錯節點
  2. 監控 Node-RED 日誌以查詢錯誤
  3. 使用網路監控工具(Wireshark)
  4. 首先使用簡單的 TCP 客戶端進行測試

成功!您的 TCP 通訊已準備就緒

您的 TCP 通訊系統現在可以:

  • 在相機與外部裝置之間傳送和接收資料
  • 處理命令以進行遠端控制
  • 實時傳輸檢測結果
  • 透過適當的錯誤處理優雅地處理錯誤
  • 與生產系統整合以實現自動化工作流

持續維護

定期系統檢查

  • 監控連線穩定性 隨時間變化
  • 驗證生產中的資料完整性
  • 根據需要更新安全配置
  • 根據使用模式最佳化效能

效能監控

  • 跟蹤訊息吞吐量 和延遲
  • 監控錯誤率 和連線失敗
  • 分析資料模式 尋找最佳化機會

下一步

在設定 TCP 通訊後:

  1. 使用已建立的協議與外部系統整合
  2. 為生產使用實施全面的錯誤處理
  3. 設定系統健康的日誌記錄和監控
  4. 考慮生產部署的安全增強

🔗 參見