这种方案通常用于无法进行外呼(呼叫电梯到指定楼层)或者为了最大化利用电梯运力(人机混乘)的场景。由于是通过“内呼”逻辑,机器人需要像人一样进入电梯后才能按下目标楼层。

梯控模式切换指令(Type 类型参数)

Type 值 模式说明 适用场景
0 梯控专用模式 刷卡 / 刷脸 / 机器人专用电梯,禁止无权限使用
1 梯控退出模式 电梯恢复原始状态,无需权限即可使用
2 VIP 强制接管模式 禁止外呼和内部按键操作,仅 VIP 或机器人可使用


import time

class ElevatorControl:
    def __init__(self, current_floor, target_floor, direction):
        self.current_floor = current_floor
        self.target_floor = target_floor
        self.direction = direction
        self.elevator_status = None

    def send_call_button(self):
        # 发送内呼点亮楼层按键指令
        print(f"发送内呼点亮楼层按键指令: {self.current_floor}")

    def read_elevator_status(self):
        # 模拟读取电梯运行状态
        status = {
            "direction": "up" if self.target_floor > self.current_floor else "down",
            "current_floor": self.current_floor,
            "door_open": False
        }
        return status

    def control_flow(self):
        while True:
            self.send_call_button()
            time.sleep(1)  # 每秒获取一次状态
            self.elevator_status = self.read_elevator_status()

            if self.elevator_status["direction"] == self.direction and \
               self.elevator_status["current_floor"] == self.current_floor and \
               self.elevator_status["door_open"]:
                print("电梯门开到位,开始进入电梯")
                break

            if self.elevator_status["door_open"] and self.elevator_status["direction"] != self.direction:
                print("电梯门开但方向不对,等待电梯关门")
                time.sleep(1)  # 等待电梯关门
                continue

            if self.elevator_status["door_open"] and self.elevator_status["direction"] == self.direction:
                print("电梯门开且方向对,进入电梯")
                break

            time.sleep(1)  # 每秒检查一次状态

# 示例调用
control = ElevatorControl(current_floor=8, target_floor=1, direction="down")
control.control_flow()
 

以下是基于多奥提供的信息及行业标准逻辑整理的详细流程:

🤖 第一阶段:召唤电梯(内呼DAIC-DT-MB按键模拟)

机器人到达电梯厅门口后,由于没有“外呼”权限或功能,它需要通过控制“内呼板”来影响电梯。

  1. 发送内呼指令
    • 机器人向梯控系统发送指令,模拟按下当前所在楼层的按键。
    • 目的:告诉电梯“我要去这个楼层”,从而诱使电梯来到机器人面前。
    • 设备指令点亮当前楼层按键 (DAIC-DT-MB)

核心指令说明

指令代码 指令功能 调用场景
DAIC-DT-MB 内呼点亮楼层 / 开门按键 召唤电梯、电梯内选层、保持电梯门开启
DAIC-DT-ZT 读取电梯运行状态 实时判断电梯方向、当前楼层、门状态

🔍 第二阶段:判断与进入(状态DAIC-DT-ZT轮询)

机器人需要实时监控电梯状态,以决定是否进入。建议每秒发送一次读取状态指令 (DAIC-DT-ZT)

系统会根据电梯的运行方向和当前状态,出现以下三种情况:

情况 A:正确电梯(推荐进入)
  • 条件:电梯的运行方向与机器人需求一致(例如机器人都要下楼),且停靠楼层正是机器人所在楼层,同时门已完全打开
  • 动作:机器人立即驶入电梯轿厢。
情况 B:方向错误,等待重试(保守策略)
  • 条件:电梯到了,门也开了,但运行方向不对(例如机器人要下楼,结果来了个上行电梯)。
  • 动作
    • 不进入电梯。
    • 等待:等待电梯门关闭并离开。
    • 重新召唤:待电梯走后,再次发送指令点亮当前楼层按键,直到正确的方向到来。
    • 注意:在此期间不要持续发指令,否则电梯会认为有人挡门而不关门。
情况 C:方向错误,人机混乘(激进策略)
  • 条件:电梯到了,门开了,方向不对,但机器人选择进入。
  • 动作
    • 机器人进入电梯,跟随当前乘客到达其目的地。
    • 重新点亮目标:当电梯到达乘客楼层,按键灯可能会熄灭。机器人需要检测到电梯开始反向行驶(即准备回程)时,再次发送指令,点亮自己想去的目标楼层。
    • 注意:这是纯内呼方案的弊端,运力较低且逻辑复杂。

flowchart TD
    A[机器人抵达目标电梯厅] --> B[持续发送“内呼”指令<br>点亮当前楼层按钮]
    B --> C[循环查询电梯状态]
    
    C --> D{电梯是否到达本层<br>且开门?}
    D -- 否 --> C
    D -- 是 --> E{判断电梯运行方向<br>与目标方向是否一致?}
    
    E -- 是, 方向一致 --> F[安全进入电梯]
    E -- 否, 方向相反 --> G{决策: 进还是不进?}
    
    G --> H[策略A: 放弃等待<br>(不进入)]
    H --> I[确认电梯离开并关门]
    I --> B
    
    G --> J[策略B: 跟随搭乘<br>(进入)]
    J --> K[进入反方向电梯]
    K --> L[静默等待电梯完成当前任务<br>(如上行至顶层)]
    L --> M[电梯清空/反向运行后<br>重新点亮目标楼层按钮]
    M --> N[乘梯至目标层]
    
    F --> N
    
    N --> O[在目标层安全离开电梯]


🚪 第三阶段:出梯流程

当电梯到达目标楼层后,机器人需要控制开门并驶出。

  1. 持续轮询
    • 机器人持续发送读取状态指令,监测当前楼层开门状态
  2. 确认到达
    • 当检测到“当前楼层 = 目标楼层”且“门已开到位”时,机器人开始驶出。
  3. 强制保持开门
    • 在出梯过程中,机器人应持续发送内呼点亮“开门”按钮的指令(每秒一次),直到完全驶出。
    • 原因:梯控系统必须在收到“开门指令”且“按钮被按住”的情况下,才会反馈“门开状态”。如果机器人到了楼层但不发开门指令,梯控会认为门是关的。

⚙️ 关键参数与防捣蛋机制

在实施上述逻辑时,必须注意以下技术细节:

表格

注意事项 说明
防捣蛋功能 电梯按钮通常有“防捣蛋”逻辑:在电梯未启动前,连续按两次同一按钮会取消登记。机器人程序需避免误触此逻辑。
开门保持逻辑 机器人必须持续发送指令,梯控才会保持继电器吸合(模拟人按住开门键)。一旦停止发指令,梯控松开,电梯可能会按自身逻辑关门。
时间间隔 建议每 10-15秒 发送一次开门指令(具体视现场电梯开关门时间而定),以确保电梯门不会因超时而关闭。

🔐 梯控状态DAIC-TK-ZT模式说明

根据你的补充内容,梯控系统通常有以下几种交互模式,机器人需根据场景调用:

表格

模式 Type 数值 描述
专用模式 0 进入该状态。只有刷卡、刷脸或授权的AGV/AMR才能使用电梯。
原始模式 1 退出该状态。电梯恢复原始状态,任何人都可以按按钮使用。
强制接管 2 VIP状态。禁止外部呼叫及内部按键(除了特权用户),通常用于紧急情况或特定任务。

💡 总结建议

多奥描述的这套流程是典型的“纯内呼”“虚拟内呼”方案。

指令类型说明

内容 字节 数据说明
Type类型 1 0 = 进入梯控状态,刷卡、刷人脸,AGV机器人、AMR、机器狗等才可以使用电梯(专用模式)
1 = 退出梯控状态,不刷卡、不刷人脸等也可以使用电梯(电梯恢复原始状态)
2 = 强制接管,禁止外呼及内在按键(VIP乘梯状态,只有等VIP用完或AGV机器人、AMR、机器狗用完)

  • 优点:改造成本低,不需要电梯预留外呼接口。
  • 缺点:效率低(可能叫来反方向电梯),逻辑复杂(需要处理按键灯灭、反向行驶等情况)。
  • 建议:如果条件允许,尽量采用外呼+内呼的混合方案,即先通过外呼叫来电梯,进入后再通过内呼选择目标楼层,这样逻辑最稳定,运力最高。

机器人需通过指令设置梯控模式(基于以上提供的数据表):

Type值 模式描述 用途场景
0 进入梯控状态(专用模式) 仅授权设备(如机器人)或人员(刷卡/人脸)使用电梯,普通用户无法操作。
1 退出梯控状态(原始状态) 电梯恢复默认,无需授权即可使用,机器人指令可能失效。
2 强制接管模式(VIP状态) 禁止所有外呼及内呼按键,仅当前机器人或VIP使用,完成后需手动退出。
机器人初始应发送Type=0指令激活专用模式,任务完成后发送Type=1恢复。

多奥将AGV机器人、AMR、机器狗乘梯指令调用电梯内召乘梯流程系统优化:

缺陷/风险

具体表现

后果与应对策略

1. 无法主动召梯,运力低下

机器人只能被动等待任何一部停靠的电梯,无法调度最优电梯。

核心后果:等待时间不可控,整体运输效率低,高峰期可能长时间等待。应对:此为架构性缺陷,最优解是加装外呼控制器。本方案仅为无外呼条件时的备选。

2. 方向判断与路径复杂

机器人需处理方向错误时的复杂决策(进/不进),逻辑复杂,容易出错。

后果:程序鲁棒性要求极高。应对:在机器人调度系统中预设清晰策略(如“高峰期限定只坐同向梯”、“非高峰可跟车”),并记录决策日志用于优化。

3. 电梯状态检测盲区

您提到“电梯灯灭梯控系统无法检测”,即电梯自身任务结束,轿内按钮灯熄灭,此时梯控系统无法感知电梯是否处于“空闲待命”还是“正在运行”。

严重后果:机器人可能误判。应对:机器人必须依赖持续的“楼层”和“运行方向”状态反馈,而非按键灯。当检测到电梯在非目标层静止且无方向时,可尝试重新发送内呼指令。

4. “防捣蛋”功能干扰

连续按两次可取消登记。机器人持续发送“开门保持”指令时可能误触发。

后果:目标楼层登记被意外取消,导致过站不停。应对:必须与物业/电梯维保确认此功能,并在机器人逻辑中规避。例如,在检测到电梯开始运行后,立即停止发送“开门保持”指令,改为仅发送“查询状态”指令。

5. 开门指令与状态同步

您注意点中描述的“AGV查询到门开后再发开门指令”的循环依赖。

核心:这是一个严格的时序和因果要求。必须确保:机器人先发开门指令 -> 梯控按住开门按钮 -> 门开 -> 梯控反馈开门状态 -> 机器人进入。​ 任何环节延时或丢包都会导致失败。需设置指令重发和超时机制

🔧 Type模式详解与系统管理策略

Type值

模式名称

系统行为

适用场景

0

机器人专用模式

梯控系统激活,响应机器人的内呼/查询指令。但人工刷卡/按键可能仍有效(除非轿厢内物理屏蔽)。

机器人正常作业时段。人机可能混用,依赖管理规则。

1

开放模式

梯控系统脱离控制,电梯恢复原始状态,任何人都可自由使用。机器人指令无效。

日常办公时段、机器人维护期、消防状态。

2

强制接管/VIP模式

最高优先级。梯控系统锁定电梯,只响应授权指令(如VIP卡、特定机器人任务)。禁止一切外呼及轿内非授权按键。

高管乘梯、紧急物资配送、重要的机器人集群任务时,确保运输绝对优先和私密。

模式切换建议:模式切换应由中央调度系统根据时间表或事件触发,通过标准指令下发,避免混乱。例如,夜间自动切换为Type 0,工作日白天切换为Type 1,收到VIP任务时临时切换为Type 2。

数值 功能描述 应用场景
0 进入梯控状态(专用模式) AGV/机器人独立使用电梯时
1 退出梯控状态(原始模式) 恢复普通乘客使用电梯
2 强制接管(VIP模式) 优先保障特定机器人/人员使用
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐