AGV/机器人通过MQTT协议实现与多奥梯控门禁系统的对接,采用状态感知-指令控制闭环模式。系统支持电梯内召/外呼控制、门禁开关、实时状态监控等功能,下面为你梳理了完整的对接流程与关键指令。

AGV/机器人对接多奥梯控门禁系统的核心思路是:机器人作为MQTT客户端,通过订阅和发布特定主题的消息,与梯控系统实现“状态感知”与“指令控制”的闭环。下面为你梳理了完整的对接流程与关键指令。

MQTT协议关键配置

参数示例值说明
Broker地址tcp://doorguard.mqtt:1883多奥梯控服务器地址
客户端IDAGV_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[电梯轿厢/门禁]
 

系统采用现代化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 驶出。

通用报文结构

字段序号字段名称长度(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: 转发状态,告知机器人已离开


一、MQTT通信架构

  1. 主题(Topic)设计
    • 门禁/梯控指令主题DA/Dwr/ID_Sx(第三方发布指令)
    • 状态反馈主题DA/Drd/ID_Sx(第三方订阅状态)
      其中ID_Sx为设备唯一标识(如电梯或门禁ID)。
    • 独立通道:电梯内召、外呼、门禁控制采用独立话题,避免指令冲突。
  2. 消息格式
    • 控制报文:包含1字节会话标识(仅应答时有效,请求时填0)。
    • 状态数据:JSON格式,包含电梯运行方向、楼层、门状态等关键参数。
主题类型主题格式发送方接收方功能描述
控制请求主题DA/Dwr/ID_Sx第三方设备多奥梯控 / 门禁系统机器人 / AGV 发送控制指令(内召、外呼、开门)
状态反馈主题DA/Drd/ID_Sx多奥梯控 / 门禁系统第三方设备梯控系统推送运行状态、指令执行结果
注:ID_Sx需替换为实际梯控 / 门禁设备的唯一 ID。

二、核心指令交互流程

场景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
    • 机器人动作:订阅该主题,实时监测电梯位置与门状态。

场景2:轿厢内目标楼层控制(机器人进入电梯后)
  1. 机器人发布内召指令
    
    
    json

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

    • 主题DA/Dwr/ID_Sx
    • 逻辑:梯控系统通过干接点模拟按键(如DAIC-TK-NH模块),点亮目标楼层按钮。
  2. 状态同步
    • 电梯运行至目标楼层后,推送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),释放电锁或道闸。
  2. 完成通行后关闭门禁
    
    
    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     // 启用红外避障检测
}
 


场景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 = 无


三、安全与冗余设计

  1. 状态校验机制
    • 机器人执行指令前需验证电梯状态:
      • 电梯需处于AGV专用模式(通过物理开关或软件指令设置)。
      • 门状态需为开门到位,否则重试或报警。
    • 紧急释放:消防信号触发时,梯控系统自动切断控制权。
  2. 通信可靠性
    • 本地化部署: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. 轿厢内活体检测状态变化(无→有、有→无)。

  1. 外呼梯控优先级
    • 多奥建议为机器人加装独立外呼控制板(如DAIC-TK-WH),避免与轿厢内按钮逻辑冲突。
    • 通过干接点扩展板(如DA-DT-K16)实现32路楼层按键控制。
  2. 状态轮询优化
    • 机器人以1Hz频率订阅状态主题,确保实时性。
    • 关键动作(如进梯)前增加主动查询指令:
      
      
      json

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

  3. 异常处理
    • 超时重试:若未收到状态反馈,3次重试后切换备用电梯。
    • 活体检测:若occupant_status=1(有活体),暂停任务并上报。

异常处理机制

故障类型应对策略
网络中断本地缓存指令,重连后批量提交
电梯故障(反馈非0)触发避让算法,自动切换备用电梯
指令超时发布cmd: cancel_call并触发告警

五、典型应用场景

表格

场景指令序列
机器人跨楼层配送外呼电梯 → 开启门禁 → 进入轿厢 → 内召目标层 → 出梯关闭门禁
机器狗巡检查询电梯空闲状态 → 外呼至目标层 → 实时监测门状态 → 进入后内召设备层
多机协同调度动态分配电梯资源,响应时间500ms,支持20+设备并发

风险提示

  1. 电梯平层精度需保证≤5mm,缝隙<30mm,避免AGV卡滞。
  2. 人机混用场景需制定操作规范(如划分机器人专用电梯)。
  3. 首次部署需通过AC 250V耐压测试,确保电气安全。

如需具体代码示例(如Python MQTT客户端实现),您可进一步提供需求细节让多奥协助您完成。

    典型应用场景枚举与工程优化建议

    应用场景描述技术挑战解决方案
    医院药品配送 AGV × 多电梯协同多台 AGV 在门诊楼、住院部间穿梭送药,跨楼层频繁调用电梯资源竞争激烈,响应延迟大引入中央调度器统一分配电梯资源,优先级分级(急诊 > 日常)
    产业园区巡检机器人乘梯巡查机器狗每日定时巡查各楼层消防通道、温湿度如何判断电梯是否适合进入?综合 CargoStatus=2 且 DoorStatus=1 才允许驶入
    智能制造工厂 AMR 上下立体仓库AMR 将物料从地面仓运往三楼组装线负载大件物品,需确认轿厢空间使用红外/激光传感器辅助判断“空载”,并与 CargoStatus 联动验证
    写字楼夜间清洁机器人作业清洁机器人夜间自动启动,逐层清扫安全性要求高,不能与人共乘设置策略:仅当 LivingBody=2 且非高峰时段才允许运行

    1. 跨楼层物流AGV

      • 场景:医疗物资配送机器人从1楼药房至5楼病房

      • 流程:
        AGV呼梯 → 电梯抵达 → 红外避障确认 → 开门10秒 → AGV进入 → 关门升梯 → 到达后开门释放

    2. 安防巡逻机器狗

      • 特殊处理:

        Python

        if door_status == "opened" and obstacle_detected(): publish("floorctrl/E01/emergency_stop") // 急停保护

    3. AMR柔性产线

      • 协议优化:采用QoS=2确保关键指令(如急停)零丢失

      • 数据压缩:二进制payload替代JSON(带宽降低40%)

    术语说明

    • AGV(Automated Guided Vehicle):自动导引车;
    • AMR(Autonomous Mobile Robot):自主移动机器人;
    • COP(Car Operating Panel):电梯轿厢操作盘(内召面板);
    • DOP(Door Operating Panel):电梯门操作盘(外呼面板);
    • CRC16:16 位循环冗余校验码(用于报文完整性校验)。
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    深圳多奥智能一卡(码、脸)通系统

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值