AGV/機器人對接多奧梯控門禁系統的核心思路是:機器人作為MQTT客户端,通過訂閲和發佈特定主題的消息,與梯控系統實現“狀態感知”與“指令控制”的閉環。下面為你梳理了完整的對接流程與關鍵指令。

MQTT協議關鍵配置

參數

示例值

説明

Broker地址

tcp://doorguard.mqtt:1883

多奧梯控服務器地址

客户端ID

AGV_01

設備唯一標識

主題格式

floorctrl/+/command

通配符訂閲所有電梯指令反饋

QoS等級

1

至少交付一次,確保指令可靠性

基於Web的MQTT梯控門禁模擬系統,用於AGV、機器人、ARM等設備通過MQTT協議控制多奧梯控和門禁。

## 功能特性
- **MQTT連接管理**: 支持連接任意MQTT Broker
- **電梯內召控制**: 發送單個樓層權限,自動按鍵
- **門禁通道控制**: 開啓門禁通道
- **電梯外呼控制**: 控制電梯外呼上下鍵
- **實時狀態監控**: 顯示電梯運行方向、樓層、門狀態等信息
- **消息日誌記錄**: 完整的MQTT消息收發日誌

## 使用説明
1. **連接配置**: 輸入MQTT Broker地址、端口和設備ID
2. **設備控制**: 選擇目標樓層或門禁設備進行控制
3. **狀態查詢**: 實時查詢電梯和門禁狀態

## 核心指令
1. 電梯內召控制 - 自動點亮對應樓層按鍵
2. 門禁通道控制 - 開啓門禁通道
3. 電梯外呼控制 - 控制外呼上下鍵
4. 狀態查詢 - 獲取電梯實時運行狀態

## 技術棧
- HTML5 + CSS3 + JavaScript
- TailwindCSS + Font Awesome
- Paho MQTT客户端庫

## 部署運行
直接打開`index.html`文件即可在瀏覽器中運行系統
<code_end>

這個Web應用實現了完整的MQTT電梯門禁控制系統,主要功能包括:
1. **MQTT連接管理** - 支持配置和連接MQTT Broker
2. **電梯控制功能** - 內召、外呼、狀態查詢等核心操作
3. **實時狀態顯示** - 電梯運行方向、樓層、門狀態等實時更新
4. **消息監控界面** - 完整的MQTT消息收發日誌記錄
5. **響應式設計** - 適配不同屏幕尺寸的設備
6. **模擬響應機制** - 模擬電梯系統的響應行為

graph TD
    A[機器人/AGV] -->|MQTT over WiFi/4G| B(MQTT Broker)
    B -->|TCP| C{多奧梯控主機}
    C --> D[電梯控制器]
    D --> E[電梯轎廂/門禁]
 

AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_機器人

系統採用現代化UI設計,包含漸變背景、圓角卡片、陰影效果等視覺元素,提供了直觀的設備控制界面和實時狀態監控功能。

參數

取值説明

運行方向

0=未知, 1=停止, 2=上行, 3=下行

所在樓層

0=未知, 1-128=正常樓層, 65535=-1層

門狀態

0=未知, 1=開門到位, 3=關門到位

轎廂佔用情況

1=佔用, 2=空(貨物/活體檢測)

AGV 外呼梯 + 乘梯流程(多奧推薦方案)

  1. 外呼請求:AGV 發送外呼指令(指令碼0x0003)至目標樓層外呼梯控設備(主題DA/Dwr/ID_Sx);
  2. 指令應答:梯控系統接收指令後,返回執行結果(成功 / 失敗),會話字段匹配請求標識;
  3. 狀態監聽:AGV 訂閲DA/Drd/ID_Sx主題,實時接收電梯運行狀態;
  4. 電梯到達:電梯到達目標樓層,梯控系統推送 “所在樓層 = 目標樓層 + 運行方向 = 停止 + 門狀態 = 開門到位” 報文;
  5. AGV 乘梯:AGV 確認狀態後,駛入轎廂;
  6. 內召選層:AGV 發送內召指令(指令碼0x0001)至轎廂梯控設備,選擇目標樓層;
  7. 電梯運行:梯控系統點亮樓層按鍵,電梯啓動,實時推送運行狀態;
  8. 到達目的地:電梯到達目標樓層,門狀態變為開門到位,AGV 駛出。

AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_機器人_02

通用報文結構

字段序號

字段名稱

長度(Byte)

填寫規則

1

指令碼

2

標識具體操作(如內召、外呼、開門、狀態查詢,見 4. 核心指令集)

2

參數長度

2

後續參數部分的總字節數(無參數時填0x0000

3

參數內容

N

指令對應的具體參數(如樓層號、外呼方向、設備 ID 等,根據指令碼動態變化)

4

會話(Session)

1

請求報文填0x00,響應報文填協商的會話標識(如0x01-0xFF

5

校驗位

2

採用 CRC16 校驗(覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段)

 機器人門禁通行流程

  1. 開門請求:機器人發送門禁開啓指令(指令碼0x0002)至門禁設備(主題DA/Dwr/ID_Sx);
  2. 指令應答:門禁系統返回執行結果(成功 = 開門,失敗 = 保持關門);
  3. 通行確認:機器人檢測到門開啓後,執行通行動作;
  4. 狀態反饋:門禁系統在門關閉到位後,推送門狀態報文(門狀態 = 3)。

功能

實現方式

電梯內召控制

發送樓層權限指令,自動點亮轎廂按鍵

門禁通道開啓

發送IO控制命令(支持門狀態定製)

電梯外呼控制

外呼梯控系統指令(推薦加裝方案)

轎廂狀態讀取

訂閲狀態推送(平層/方向/門狀態等)

sequenceDiagram
    participant R as AGV/機器人
    participant B as MQTT Broker
    participant E as 多奧梯控系統

    Note over R, E: 階段一:召喚電梯至當前層
    R->>B: 發佈消息至 [DA/Dwr/電梯ID]: 外呼指令(上行/下行)
    B->>E: 轉發外呼指令
    E->>E: 執行外呼,控制電梯運行
    loop 狀態輪詢
        E->>B: 發佈消息至 [DA/Drd/電梯ID]: 狀態(運行方向, 所在樓層, 門狀態)
        B->>R: 轉發實時狀態
        R->>R: 判斷電梯是否到達且門開
    end

    Note over R, E: 階段二:進入轎廂並前往目標層
    R->>B: 發佈消息至 [DA/Dwr/電梯ID]: 內召指令(目標樓層)
    B->>E: 轉發內召指令
    E->>E: 執行內召,點亮目標樓層按鈕
    Note over R, E: 電梯開始運行...
    loop 狀態輪詢
        E->>B: 持續發佈狀態(樓層, 門狀態)
        B->>R: 轉發實時狀態
        R->>R: 判斷是否到達目標層且門開
    end
    R->>B: 發佈消息至 [DA/Dwr/電梯ID]: 貨物/活體狀態(佔用->空)
    B->>E: 轉發狀態,告知機器人已離開

AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_AMR_03

一、MQTT通信架構

  1. 主題(Topic)設計
  • 門禁/梯控指令主題DA/Dwr/ID_Sx(第三方發佈指令)
  • 狀態反饋主題DA/Drd/ID_Sx(第三方訂閲狀態)
    其中ID_Sx為設備唯一標識(如電梯或門禁ID)。
  • 獨立通道:電梯內召、外呼、門禁控制採用獨立話題,避免指令衝突。
  1. 消息格式
  • 控制報文:包含1字節會話標識(僅應答時有效,請求時填0)。
  • 狀態數據:JSON格式,包含電梯運行方向、樓層、門狀態等關鍵參數。

主題類型

主題格式

發送方

接收方

功能描述

控制請求主題

DA/Dwr/ID_Sx

第三方設備

多奧梯控 / 門禁系統

機器人 / AGV 發送控制指令(內召、外呼、開門)

狀態反饋主題

DA/Drd/ID_Sx

多奧梯控 / 門禁系統

第三方設備

梯控系統推送運行狀態、指令執行結果

注:ID_Sx需替換為實際梯控 / 門禁設備的唯一 ID。


AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_AGV_04

二、核心指令交互流程

場景1:電梯外呼控制(機器人召喚電梯)

// Topic: floorctrl/E01/command
{
  "msg_id": "CALL_202405211530",
  "cmd": "call_elevator",
  "target_floor": 5,       // 目標樓層
  "cur_floor": 1,          // 當前樓層
  "direction": "up",       // 上行/下行
  "timeout": 30            // 超時秒數
}
 

電梯外呼控制(DOP 外呼梯控)

功能描述

機器人 / AGV 發送指令後,梯控系統自動點亮目標樓層外呼按鍵(上行 / 下行),召喚電梯到達指定樓層(推薦加裝外呼梯控系統,避免邏輯混亂)。

字段

內容(十六進制)

説明

指令碼

0x0003

固定標識外呼控制指令

參數長度

0x0003

參數為樓層編碼(2Byte)+ 外呼方向(1Byte)

參數內容

樓層編碼 + 方向碼

樓層編碼規則同 4.1;方向碼:0 = 未知,1 = 上行,2 = 下行

會話(Session)

0x00

請求報文固定填 0

校驗位

CRC16 結果

覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段

示例(外呼 1 樓上行)

  • 報文內容:00 03 00 03 00 01 01 00 [CRC16]
  • 發送主題:DA/Dwr/ID_SxID_Sx為目標樓層外呼梯控設備 ID)
  1. 機器人發佈指令 json

{ "command": "call_elevator", "elevator_id": "DAIC-001", "target_floor": 5, "direction": "up", "timeout": 60 }

  • 主題DA/Dwr/ID_Sx
  • 邏輯
    • 若電梯不在目標樓層,梯控系統點亮外呼按鈕並調度電梯到達。
    • 若電梯已在目標樓層,直接觸發開門並保持timeout秒。

請求與響應報文差異

報文類型

會話字段值

核心特徵

示例場景

請求報文

0x00

無會話信息,主動發起操作請求

AGV 發送外呼 1 樓上行指令

響應報文

0x01-0xFF

攜帶會話標識,反饋執行結果

梯控系統響應外呼指令執行成功

  1. 梯控系統狀態反饋 json

{ "status": "SUCCESS", "elevator_status": { "current_floor": 3, "direction": "UP", "door_status": "CLOSED" } }

  • 主題DA/Drd/ID_Sx
  • 機器人動作:訂閲該主題,實時監測電梯位置與門狀態。

AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_門禁_05

場景2:轎廂內目標樓層控制(機器人進入電梯後)

  1. 機器人發佈內召指令 json

{ "command": "IN_CALL", "elevator_id": "DAIC-001", "target_floor": 10, "timeout": 60 }

  • 主題DA/Dwr/ID_Sx
  • 邏輯:梯控系統通過幹接點模擬按鍵(如DAIC-TK-NH模塊),點亮目標樓層按鈕。
  1. 狀態同步
  • 電梯運行至目標樓層後,推送door_status: "OPEN",機器人確認開門到位後進入。

機器人 / AGV 發送指令後,梯控系統自動點亮轎廂內指定樓層按鍵,實現自動選層。

字段

內容(十六進制)

説明

指令碼

0x0001

固定標識內召控制指令

參數長度

0x0002

參數為樓層號(2Byte)

參數內容

樓層編碼

編碼規則:- 1~128 層:直接填對應數值(如 1 樓 = 0x0001,10 樓 = 0x000A);- -1 層 = 0xFFFF,-2 層 = 0xFFFE,-3 層 = 0xFFFD(依次遞減)

會話(Session)

0x00

請求報文固定填 0

校驗位

CRC16 結果

覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段

示例(內召 10 樓)

  • 報文內容:00 01 00 02 00 0A 00 [CRC16]
  • 發送主題:DA/Dwr/ID_SxID_Sx為目標電梯轎廂梯控設備 ID)

場景3:門禁通道控制(聯動閘機/擋鼠板)

  1. 開啓門禁指令 json

{ "command": "OPEN_GATE", "device_id": "DAIC-MJ-002" }

  • 主題DA/Dwr/ID_Sx
  • 執行:梯控系統聯動門禁控制器(如DAIC-MJ-MB),釋放電鎖或道閘。
  1. 完成通行後關閉門禁 json

{ "command": "CLOSE_GATE", "device_id": "DAIC-MJ-002" }

  • 注意:門禁收到指令後鬆開控制信號,實際關閉由硬件邏輯決定。

門禁通道開啓控制

功能描述

機器人 / AGV 發送指令,門禁 / 人行通道閘機開啓,允許通行。

字段

內容(十六進制)

説明

指令碼

0x0002

固定標識門禁開啓指令

參數長度

0x0000

無額外參數

參數內容

-


會話(Session)

0x00

請求報文固定填 0

校驗位

CRC16 結果

覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段

示例(開啓門禁通道)

  • 報文內容:00 02 00 00 00 [CRC16]
  • 發送主題:DA/Dwr/ID_SxID_Sx為目標門禁 / 通道閘機設備 ID)

// Topic: floorctrl/E01/door_ctrl
{
  "msg_id": "DOOR_202405211531",
  "cmd": "open_door",
  "duration": 10,          // 開門保持時間(秒)
  "safety_check": true     // 啓用紅外避障檢測
}
 

AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_梯控_06


場景4:實時狀態監測(關鍵安全環節)

電梯運行狀態查詢

功能描述

機器人 / AGV 發送查詢指令後,梯控系統返回轎廂實時運行狀態(平層、上下行、開關門等)。

字段

內容(十六進制)

説明

指令碼

0x0004

固定標識狀態查詢指令

參數長度

0x0000

無額外參數

參數內容

-


會話(Session)

0x00

請求報文固定填 0

校驗位

CRC16 結果

覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段

響應報文格式(梯控系統推送)

字段

內容(十六進制)

説明

指令碼

0x8004

響應指令碼(原查詢指令碼最高位置 1)

參數長度

0x0008

參數共 8Byte(6 個狀態字段 + 2 個預留字段)

參數內容

運行方向(1Byte)

0 = 未知,1 = 停止,2 = 上行,3 = 下行

所在樓層(2Byte)

編碼規則同 4.1

門狀態(1Byte)

0 = 未知,1 = 開門到位,2 = 正在開關門,3 = 關門到位

貨物狀態(1Byte)

0 = 未知,1 = 佔用,2 = 空

活體狀態(1Byte)

0 = 未知,1 = 有,2 = 無

預留(2Byte)

0x0000

會話(Session)

0x01(示例)

與請求報文匹配(可自定義協商)

校驗位

CRC16 結果

覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段

  • 機器人訂閲狀態主題DA/Drd/ID_Sx
  • 狀態數據示例: json

{ "current_floor": 5, "direction": 1, // 1=停止 "door_status": 1, // 1=開門到位 "cargo_status": 2 // 2=空 }

  • 應用邏輯
  • 機器人根據door_status判斷是否安全進出。
  • cargo_status=1(佔用),暫停任務避免碰撞。
  • 狀態訂閲:AGV、機器人(狗)、ARM 作為訂閲者,訂閲 DA/Drd/ID_Sx 主題,接收多奧梯控門禁系統發佈的電梯運行狀態信息。
  • 狀態數據格式
  • 電梯運行方向:0 = 未知,1 = 停止,2 = 上行,3 = 下行
  • 電梯所在樓層:0 = 未知,1~128 為正樓層,65535 = -1 層,65534 = -2 層,65533 = -3 層……
  • 電梯門狀態:0 = 未知,1 = 開門到位,2 = 正在開關門,3 = 關門到位
  • 轎廂內貨物:0 = 未知,1 = 佔用,2 = 空
  • 轎廂內活體:0 = 未知,1 = 有,2 = 無

AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_機器人_07

三、安全與冗餘設計

  1. 狀態校驗機制
  • 機器人執行指令前需驗證電梯狀態:
  • 電梯需處於AGV專用模式(通過物理開關或軟件指令設置)。
  • 門狀態需為開門到位,否則重試或報警。
  • 緊急釋放:消防信號觸發時,梯控系統自動切斷控制權。
  1. 通信可靠性
  • 本地化部署:MQTT Broker部署於本地服務器,避免雲端延遲。
  • 協議冗餘:支持LoRa作為備用通信鏈路(點對點傳輸,延遲<50ms)。

四、實施建議

電梯轎廂運行狀態主動推送機制

// Topic: floorctrl/E01/status
{
  "elevator_id": "E01",
  "current_floor": 3,
  "door_status": "opened",  // closed/opened
  "motion": "stopped",      // moving/stopped
  "error_code": 0           // 0=正常, 非0為故障碼
}
 

推送觸發條件

當電梯滿足以下狀態變化時,梯控系統主動向DA/Drd/ID_Sx主題推送狀態報文:

  1. 運行方向改變(如停止→上行、上行→下行);
  2. 到達新樓層(平層狀態);
  3. 門狀態變化(如關門到位→開門、開門→正在關門);
  4. 轎廂負載狀態變化(空→佔用、佔用→空);
  5. 轎廂內活體檢測狀態變化(無→有、有→無)。
  6. 外呼梯控優先級
  • 多奧建議為機器人加裝獨立外呼控制板(如DAIC-TK-WH),避免與轎廂內按鈕邏輯衝突。
  • 通過幹接點擴展板(如DA-DT-K16)實現32路樓層按鍵控制。
  1. 狀態輪詢優化
  • 機器人以1Hz頻率訂閲狀態主題,確保實時性。
  • 關鍵動作(如進梯)前增加主動查詢指令: json

{"command": "STATUS_QUERY", "elevator_id": "DAIC-001"}

  1. 異常處理
  • 超時重試:若未收到狀態反饋,3次重試後切換備用電梯。
  • 活體檢測:若occupant_status=1(有活體),暫停任務並上報。

異常處理機制

故障類型

應對策略

網絡中斷

本地緩存指令,重連後批量提交

電梯故障(反饋非0)

觸發避讓算法,自動切換備用電梯

指令超時

發佈cmd: cancel_call並觸發告警


AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_AMR_08

五、典型應用場景

表格

場景

指令序列

機器人跨樓層配送

外呼電梯 → 開啓門禁 → 進入轎廂 → 內召目標層 → 出梯關閉門禁

機器狗巡檢

查詢電梯空閒狀態 → 外呼至目標層 → 實時監測門狀態 → 進入後內召設備層

多機協同調度

動態分配電梯資源,響應時間500ms,支持20+設備併發


風險提示

  1. 電梯平層精度需保證≤5mm,縫隙<30mm,避免AGV卡滯。
  2. 人機混用場景需制定操作規範(如劃分機器人專用電梯)。
  3. 首次部署需通過AC 250V耐壓測試,確保電氣安全。

如需具體代碼示例(如Python MQTT客户端實現),您可進一步提供需求細節讓多奧協助您完成。

AGV/機器人(狗)、AMR通過MQTT協議與多奧梯控及門控系統對接,實現狀態感知與指令控制,支持電梯內召外呼、門禁通道及狀態查詢等功能。_AMR_09

編輯

典型應用場景枚舉與工程優化建議

應用場景

描述

技術挑戰

解決方案

醫院藥品配送 AGV × 多電梯協同

多台 AGV 在門診樓、住院部間穿梭送藥,跨樓層頻繁調用電梯

資源競爭激烈,響應延遲大

引入中央調度器統一分配電梯資源,優先級分級(急診 > 日常)

產業園區巡檢機器人乘梯巡查

機器狗每日定時巡查各樓層消防通道、温濕度

如何判斷電梯是否適合進入?

綜合 CargoStatus=2 且 DoorStatus=1 才允許駛入

智能製造工廠 AMR 上下立體倉庫

AMR 將物料從地面倉運往三樓組裝線

負載大件物品,需確認轎廂空間

使用紅外/激光傳感器輔助判斷“空載”,並與 CargoStatus 聯動驗證

寫字樓夜間清潔機器人作業

清潔機器人夜間自動啓動,逐層清掃

安全性要求高,不能與人共乘

設置策略:僅當 LivingBody=2 且非高峯時段才允許運行

  1. 跨樓層物流AGV
  • 場景:醫療物資配送機器人從1樓藥房至5樓病房
  • 流程:
    AGV呼梯 → 電梯抵達 → 紅外避障確認 → 開門10秒 → AGV進入 → 關門升梯 → 到達後開門釋放
  1. 安防巡邏機器狗
  • 特殊處理:
    Python
    if door_status == "opened" and obstacle_detected(): publish("floorctrl/E01/emergency_stop") // 急停保護
  1. AMR柔性產線
  • 協議優化:採用QoS=2確保關鍵指令(如急停)零丟失
  • 數據壓縮:二進制payload替代JSON(帶寬降低40%)

術語説明

  • AGV(Automated Guided Vehicle):自動導引車;
  • AMR(Autonomous Mobile Robot):自主移動機器人;
  • COP(Car Operating Panel):電梯轎廂操作盤(內召面板);
  • DOP(Door Operating Panel):電梯門操作盤(外呼面板);
  • CRC16:16 位循環冗餘校驗碼(用於報文完整性校驗)。