AGV/機器人對接多奧梯控門禁系統的核心思路是:機器人作為MQTT客户端,通過訂閲和發佈特定主題的消息,與梯控系統實現“狀態感知”與“指令控制”的閉環。下面為你梳理了完整的對接流程與關鍵指令。
MQTT協議關鍵配置
|
參數 |
示例值 |
説明 |
|
Broker地址
|
|
多奧梯控服務器地址
|
|
客户端ID
|
|
設備唯一標識
|
|
主題格式
|
|
通配符訂閲所有電梯指令反饋
|
|
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[電梯轎廂/門禁]
系統採用現代化UI設計,包含漸變背景、圓角卡片、陰影效果等視覺元素,提供了直觀的設備控制界面和實時狀態監控功能。
|
參數
|
取值説明
|
|
運行方向
|
|
|
所在樓層
|
|
|
門狀態
|
|
|
轎廂佔用情況
|
|
AGV 外呼梯 + 乘梯流程(多奧推薦方案)
- 外呼請求:AGV 發送外呼指令(指令碼
0x0003)至目標樓層外呼梯控設備(主題DA/Dwr/ID_Sx); - 指令應答:梯控系統接收指令後,返回執行結果(成功 / 失敗),會話字段匹配請求標識;
- 狀態監聽:AGV 訂閲
DA/Drd/ID_Sx主題,實時接收電梯運行狀態; - 電梯到達:電梯到達目標樓層,梯控系統推送 “所在樓層 = 目標樓層 + 運行方向 = 停止 + 門狀態 = 開門到位” 報文;
- AGV 乘梯:AGV 確認狀態後,駛入轎廂;
- 內召選層:AGV 發送內召指令(指令碼
0x0001)至轎廂梯控設備,選擇目標樓層; - 電梯運行:梯控系統點亮樓層按鍵,電梯啓動,實時推送運行狀態;
- 到達目的地:電梯到達目標樓層,門狀態變為開門到位,AGV 駛出。
通用報文結構
|
字段序號
|
字段名稱
|
長度(Byte)
|
填寫規則
|
|
1
|
指令碼
|
2
|
標識具體操作(如內召、外呼、開門、狀態查詢,見 4. 核心指令集)
|
|
2
|
參數長度
|
2
|
後續參數部分的總字節數(無參數時填 |
|
3
|
參數內容
|
N
|
指令對應的具體參數(如樓層號、外呼方向、設備 ID 等,根據指令碼動態變化)
|
|
4
|
會話(Session)
|
1
|
請求報文填 |
|
5
|
校驗位
|
2
|
採用 CRC16 校驗(覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段)
|
機器人門禁通行流程
- 開門請求:機器人發送門禁開啓指令(指令碼
0x0002)至門禁設備(主題DA/Dwr/ID_Sx); - 指令應答:門禁系統返回執行結果(成功 = 開門,失敗 = 保持關門);
- 通行確認:機器人檢測到門開啓後,執行通行動作;
- 狀態反饋:門禁系統在門關閉到位後,推送門狀態報文(門狀態 = 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: 轉發狀態,告知機器人已離開
一、MQTT通信架構
- 主題(Topic)設計
- 門禁/梯控指令主題:
DA/Dwr/ID_Sx(第三方發佈指令) - 狀態反饋主題:
DA/Drd/ID_Sx(第三方訂閲狀態)
其中ID_Sx為設備唯一標識(如電梯或門禁ID)。 - 獨立通道:電梯內召、外呼、門禁控制採用獨立話題,避免指令衝突。
- 消息格式
- 控制報文:包含1字節會話標識(僅應答時有效,請求時填0)。
- 狀態數據:JSON格式,包含電梯運行方向、樓層、門狀態等關鍵參數。
|
主題類型
|
主題格式
|
發送方
|
接收方
|
功能描述
|
|
控制請求主題
|
|
第三方設備
|
多奧梯控 / 門禁系統
|
機器人 / AGV 發送控制指令(內召、外呼、開門)
|
|
狀態反饋主題
|
|
多奧梯控 / 門禁系統
|
第三方設備
|
梯控系統推送運行狀態、指令執行結果
|
|
注: |
二、核心指令交互流程
場景1:電梯外呼控制(機器人召喚電梯)
// Topic: floorctrl/E01/command
{
"msg_id": "CALL_202405211530",
"cmd": "call_elevator",
"target_floor": 5, // 目標樓層
"cur_floor": 1, // 當前樓層
"direction": "up", // 上行/下行
"timeout": 30 // 超時秒數
}
電梯外呼控制(DOP 外呼梯控)
功能描述
機器人 / AGV 發送指令後,梯控系統自動點亮目標樓層外呼按鍵(上行 / 下行),召喚電梯到達指定樓層(推薦加裝外呼梯控系統,避免邏輯混亂)。
|
字段
|
內容(十六進制)
|
説明
|
|
指令碼
|
|
固定標識外呼控制指令
|
|
參數長度
|
|
參數為樓層編碼(2Byte)+ 外呼方向(1Byte)
|
|
參數內容
|
樓層編碼 + 方向碼
|
樓層編碼規則同 4.1;方向碼:0 = 未知,1 = 上行,2 = 下行
|
|
會話(Session)
|
|
請求報文固定填 0
|
|
校驗位
|
CRC16 結果
|
覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段
|
示例(外呼 1 樓上行)
- 報文內容:
00 03 00 03 00 01 01 00 [CRC16] - 發送主題:
DA/Dwr/ID_Sx(ID_Sx為目標樓層外呼梯控設備 ID)
- 機器人發佈指令 json
{ "command": "call_elevator", "elevator_id": "DAIC-001", "target_floor": 5, "direction": "up", "timeout": 60 }
- 主題:
DA/Dwr/ID_Sx - 邏輯:
- 若電梯不在目標樓層,梯控系統點亮外呼按鈕並調度電梯到達。
- 若電梯已在目標樓層,直接觸發開門並保持
timeout秒。
請求與響應報文差異
|
報文類型
|
會話字段值
|
核心特徵
|
示例場景
|
|
請求報文
|
|
無會話信息,主動發起操作請求
|
AGV 發送外呼 1 樓上行指令
|
|
響應報文
|
|
攜帶會話標識,反饋執行結果
|
梯控系統響應外呼指令執行成功
|
- 梯控系統狀態反饋 json
{ "status": "SUCCESS", "elevator_status": { "current_floor": 3, "direction": "UP", "door_status": "CLOSED" } }
- 主題:
DA/Drd/ID_Sx - 機器人動作:訂閲該主題,實時監測電梯位置與門狀態。
場景2:轎廂內目標樓層控制(機器人進入電梯後)
- 機器人發佈內召指令 json
{ "command": "IN_CALL", "elevator_id": "DAIC-001", "target_floor": 10, "timeout": 60 }
- 主題:
DA/Dwr/ID_Sx - 邏輯:梯控系統通過幹接點模擬按鍵(如DAIC-TK-NH模塊),點亮目標樓層按鈕。
- 狀態同步
- 電梯運行至目標樓層後,推送
door_status: "OPEN",機器人確認開門到位後進入。
機器人 / AGV 發送指令後,梯控系統自動點亮轎廂內指定樓層按鍵,實現自動選層。
|
字段
|
內容(十六進制)
|
説明
|
|
指令碼
|
|
固定標識內召控制指令
|
|
參數長度
|
|
參數為樓層號(2Byte)
|
|
參數內容
|
樓層編碼
|
編碼規則:- 1~128 層:直接填對應數值(如 1 樓 = 0x0001,10 樓 = 0x000A);- -1 層 = 0xFFFF,-2 層 = 0xFFFE,-3 層 = 0xFFFD(依次遞減)
|
|
會話(Session)
|
|
請求報文固定填 0
|
|
校驗位
|
CRC16 結果
|
覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段
|
示例(內召 10 樓)
- 報文內容:
00 01 00 02 00 0A 00 [CRC16] - 發送主題:
DA/Dwr/ID_Sx(ID_Sx為目標電梯轎廂梯控設備 ID)
場景3:門禁通道控制(聯動閘機/擋鼠板)
- 開啓門禁指令 json
{ "command": "OPEN_GATE", "device_id": "DAIC-MJ-002" }
- 主題:
DA/Dwr/ID_Sx - 執行:梯控系統聯動門禁控制器(如DAIC-MJ-MB),釋放電鎖或道閘。
- 完成通行後關閉門禁 json
{ "command": "CLOSE_GATE", "device_id": "DAIC-MJ-002" }
- 注意:門禁收到指令後鬆開控制信號,實際關閉由硬件邏輯決定。
門禁通道開啓控制
功能描述
機器人 / AGV 發送指令,門禁 / 人行通道閘機開啓,允許通行。
|
字段
|
內容(十六進制)
|
説明
|
|
指令碼
|
|
固定標識門禁開啓指令
|
|
參數長度
|
|
無額外參數
|
|
參數內容
|
-
|
無
|
|
會話(Session)
|
|
請求報文固定填 0
|
|
校驗位
|
CRC16 結果
|
覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段
|
示例(開啓門禁通道)
- 報文內容:
00 02 00 00 00 [CRC16] - 發送主題:
DA/Dwr/ID_Sx(ID_Sx為目標門禁 / 通道閘機設備 ID)
// Topic: floorctrl/E01/door_ctrl
{
"msg_id": "DOOR_202405211531",
"cmd": "open_door",
"duration": 10, // 開門保持時間(秒)
"safety_check": true // 啓用紅外避障檢測
}
場景4:實時狀態監測(關鍵安全環節)
電梯運行狀態查詢
功能描述
機器人 / AGV 發送查詢指令後,梯控系統返回轎廂實時運行狀態(平層、上下行、開關門等)。
|
字段
|
內容(十六進制)
|
説明
|
|
指令碼
|
|
固定標識狀態查詢指令
|
|
參數長度
|
|
無額外參數
|
|
參數內容
|
-
|
無
|
|
會話(Session)
|
|
請求報文固定填 0
|
|
校驗位
|
CRC16 結果
|
覆蓋指令碼 + 參數長度 + 參數內容 + 會話字段
|
響應報文格式(梯控系統推送)
|
字段
|
內容(十六進制)
|
説明
|
|
指令碼
|
|
響應指令碼(原查詢指令碼最高位置 1)
|
|
參數長度
|
|
參數共 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)
|
填 |
|
|
會話(Session)
|
|
與請求報文匹配(可自定義協商)
|
|
校驗位
|
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專用模式(通過物理開關或軟件指令設置)。
- 門狀態需為
開門到位,否則重試或報警。
- 緊急釋放:消防信號觸發時,梯控系統自動切斷控制權。
- 通信可靠性
- 本地化部署: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主題推送狀態報文:
- 運行方向改變(如停止→上行、上行→下行);
- 到達新樓層(平層狀態);
- 門狀態變化(如關門到位→開門、開門→正在關門);
- 轎廂負載狀態變化(空→佔用、佔用→空);
- 轎廂內活體檢測狀態變化(無→有、有→無)。
- 外呼梯控優先級
- 多奧建議為機器人加裝獨立外呼控制板(如DAIC-TK-WH),避免與轎廂內按鈕邏輯衝突。
- 通過幹接點擴展板(如DA-DT-K16)實現32路樓層按鍵控制。
- 狀態輪詢優化
- 機器人以1Hz頻率訂閲狀態主題,確保實時性。
- 關鍵動作(如進梯)前增加主動查詢指令: json
{"command": "STATUS_QUERY", "elevator_id": "DAIC-001"}
- 異常處理
- 超時重試:若未收到狀態反饋,3次重試後切換備用電梯。
- 活體檢測:若
occupant_status=1(有活體),暫停任務並上報。
異常處理機制
|
故障類型 |
應對策略 |
|
網絡中斷
|
本地緩存指令,重連後批量提交
|
|
電梯故障(反饋非0)
|
觸發避讓算法,自動切換備用電梯
|
|
指令超時
|
發佈 |
五、典型應用場景
表格
|
場景 |
指令序列 |
|
機器人跨樓層配送 |
外呼電梯 → 開啓門禁 → 進入轎廂 → 內召目標層 → 出梯關閉門禁
|
|
機器狗巡檢 |
查詢電梯空閒狀態 → 外呼至目標層 → 實時監測門狀態 → 進入後內召設備層
|
|
多機協同調度 |
動態分配電梯資源,響應時間500ms,支持20+設備併發
|
風險提示:
- 電梯平層精度需保證≤5mm,縫隙<30mm,避免AGV卡滯。
- 人機混用場景需制定操作規範(如劃分機器人專用電梯)。
- 首次部署需通過AC 250V耐壓測試,確保電氣安全。
如需具體代碼示例(如Python MQTT客户端實現),您可進一步提供需求細節讓多奧協助您完成。
編輯
典型應用場景枚舉與工程優化建議
|
應用場景
|
描述
|
技術挑戰
|
解決方案
|
|
醫院藥品配送 AGV × 多電梯協同 |
多台 AGV 在門診樓、住院部間穿梭送藥,跨樓層頻繁調用電梯
|
資源競爭激烈,響應延遲大
|
引入中央調度器統一分配電梯資源,優先級分級(急診 > 日常)
|
|
產業園區巡檢機器人乘梯巡查 |
機器狗每日定時巡查各樓層消防通道、温濕度
|
如何判斷電梯是否適合進入?
|
綜合 |
|
智能製造工廠 AMR 上下立體倉庫 |
AMR 將物料從地面倉運往三樓組裝線
|
負載大件物品,需確認轎廂空間
|
使用紅外/激光傳感器輔助判斷“空載”,並與 CargoStatus 聯動驗證
|
|
寫字樓夜間清潔機器人作業 |
清潔機器人夜間自動啓動,逐層清掃
|
安全性要求高,不能與人共乘
|
設置策略:僅當 |
- 跨樓層物流AGV
- 場景:醫療物資配送機器人從1樓藥房至5樓病房
- 流程:
AGV呼梯 → 電梯抵達 → 紅外避障確認 → 開門10秒 → AGV進入 → 關門升梯 → 到達後開門釋放
- 安防巡邏機器狗
- 特殊處理:
Python
if door_status == "opened" and obstacle_detected(): publish("floorctrl/E01/emergency_stop") // 急停保護
- AMR柔性產線
- 協議優化:採用
QoS=2確保關鍵指令(如急停)零丟失 - 數據壓縮:二進制payload替代JSON(帶寬降低40%)
術語説明
- AGV(Automated Guided Vehicle):自動導引車;
- AMR(Autonomous Mobile Robot):自主移動機器人;
- COP(Car Operating Panel):電梯轎廂操作盤(內召面板);
- DOP(Door Operating Panel):電梯門操作盤(外呼面板);
- CRC16:16 位循環冗餘校驗碼(用於報文完整性校驗)。