基于多奥AGV(自动导引车)、AMR(自主移动机器人)和机器狗乘梯系统通过集成梯控和电梯门禁技术,实现自动化设备的无人化乘梯。核心功能包括自主呼梯、楼层切换等,支持MQTT、RS-485等通信协议
AGV机器人、AMR和机器狗乘梯系统流程与协议说明基于多奥AGV(自动导引车)、AMR(自主移动机器人)和机器狗乘梯系统通过集成梯控和电梯门禁技术,实现自动化设备的无人化乘梯。核心功能包括自主呼梯、楼层切换等,支持MQTT、RS-485等通信协议。系统采用"感知-控制-通信"架构:感知层(传感器检测电梯状态)、控制层(AGV决策单元)和通信层(协议传输命令)。# MQTT连接参数# 电梯控制指令D
AGV机器人、AMR和机器狗乘梯系统流程与协议说明
基于多奥AGV(自动导引车)、AMR(自主移动机器人)和机器狗乘梯系统通过集成梯控和电梯门禁技术,实现自动化设备的无人化乘梯。核心功能包括自主呼梯、楼层切换等,支持MQTT、RS-485等通信协议。系统采用"感知-控制-通信"架构:感知层(传感器检测电梯状态)、控制层(AGV决策单元)和通信层(协议传输命令)。

import paho.mqtt.client as mqtt
import time
# MQTT连接参数
MQTT_BROKER = "mqtt.example.com"
MQTT_PORT = 1883
MQTT_TOPIC = "elevator/control"
# 电梯控制指令
DAIC_DT_LW = "DAIC-DT-LW" # 外呼联网控制器
DAIC_DT_ZT = "DAIC-DT-ZT" # 读电梯运行状态
DAIC_DT_MB = "DAIC-DT-MB" # 内呼点亮楼层按键
DAIC_TK_MB = "DAIC-TK-MB" # 内呼点亮楼层按键
DAIC_TK_ZT = "DAIC-TK-ZT" # 读电梯运行状态
# 机器人状态
ROBOT_STATE = {
"floor": 1, # 当前楼层
"target_floor": 5, # 目标楼层
"direction": "UP", # 上行/下行
"in_elevator": False # 是否在电梯内
}
# MQTT回调函数
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe(MQTT_TOPIC)
def on_message(client, userdata, msg):
payload = msg.payload.decode()
if payload == "ELEVATOR_STATUS":
handle_elevator_status()
# 发送MQTT消息
def send_mqtt_command(command, data):
client.publish(MQTT_TOPIC, f"{command},{data}")
# 电梯状态处理
def handle_elevator_status():
# 模拟电梯状态数据
elevator_status = {
"floor": 3, # 当前楼层
"direction": "UP", # 运行方向
"door_open": True # 门开到位
}
if elevator_status["floor"] == ROBOT_STATE["floor"] and elevator_status["direction"] == ROBOT_STATE["direction"] and elevator_status["door_open"]:
if not ROBOT_STATE["in_elevator"]:
enter_elevator()
else:
exit_elevator()
# 进入电梯
def enter_elevator():
print("Entering elevator...")
ROBOT_STATE["in_elevator"] = True
while True:
send_mqtt_command(DAIC_DT_MB, "1") # 点亮开门按钮
time.sleep(1)
if check_robot_in_elevator():
break
send_mqtt_command(DAIC_TK_MB, str(ROBOT_STATE["target_floor"])) # 点亮目标楼层按键
# 出电梯
def exit_elevator():
print("Exiting elevator...")
while True:
send_mqtt_command(DAIC_DT_MB, "1") # 点亮开门按钮
time.sleep(1)
if check_robot_out_elevator():
break
# 检测机器人是否进入电梯
def check_robot_in_elevator():
# 模拟检测逻辑
return True
# 检测机器人是否出电梯
def check_robot_out_elevator():
# 模拟检测逻辑
return True
# 主流程
def main():
global client
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_start()
# 外呼电梯
send_mqtt_command(DAIC_DT_LW, f"{ROBOT_STATE['floor']},{ROBOT_STATE['direction']}")
while True:
send_mqtt_command(DAIC_DT_ZT, "1") # 读电梯运行状态
time.sleep(0.03) # 31~50ms间隔
if __name__ == "__main__":
main()

下面我将逐步解释您关心的内容,包括乘梯流程、协议情况、内呼外呼标志及Type类型的含义。回答基于标准工业实现和引用信息,确保真实可靠。
1. 调用电梯内召和外呼的乘梯流程说明
乘梯流程分为外呼(电梯外部呼叫)和内召(电梯内部呼叫)两个阶段,AGV/AMR/机器狗通过控制系统模拟人类行为,实现自主操作。整体流程如下:
• 外呼流程(外部呼叫电梯):
1. AGV到达电梯口:AGV通过激光雷达或视觉传感器检测电梯位置,并停在呼叫区域。
{
"运行方向": "已停止(出电梯场景主要关注此状态)",
"当前楼层": 8,
"开门状态": "已开到位/未开到位"
}
2. 发送外呼命令:AGV的控制单元通过通信协议(如MQTT)向电梯控制系统发送外呼请求。请求包括目标楼层(AGV当前所在楼层)和呼叫类型(例如上行或下行)。
{
"运行方向": "上行/下行",
"当前楼层": 5,
"开门状态": "已开到位/未开到位"
}
3. 电梯响应:电梯控制系统接收命令后,模拟按下外部按钮,电梯移动到AGV所在楼层。
{
"内呼,外呼标志": 0,
"Type类型": 0
}
- **说明**:
- “内呼,外呼标志”为 0,表示内呼。
- “Type类型”为 0,表示进入梯控状态,即通过正常授权方式(如本流程设定场景)使用电梯操作开门按钮。

4. 门禁验证:电梯门打开前,系统通过门禁模块验证AGV权限(如RFID或二维码认证),确保安全进入。
5. AGV进入电梯:验证通过后,电梯门打开,AGV驶入轿厢。此过程需确保电梯处于无休眠状态,避免延迟。
{
"内呼,外呼标志": 0,
"Type类型": 0,
"目标楼层": 8
}
- **说明**:
- “内呼,外呼标志”为 0,表示内呼。
- “Type类型”为 0,表示进入梯控状态,进行正常的楼层选择操作。
- “目标楼层”为机器人要前往的楼层编号。
• 内召流程(内部呼叫目标楼层):
1. AGV在电梯内部定位:AGV进入轿厢后,使用内部传感器确认位置。
2. 发送内召命令:AGV控制单元发送内召请求,指定目标楼层(如通过MQTT协议)。请求中包含楼层号和呼叫标志(内呼标志)。
{
"cmd_id": 123456, // 响应对应的请求ID
"timestamp": 1672531200050,
"status": {
"current_floor": 5,
"door_status": 1, // 0=未知,1=开门到位,2=正在开关门,3=关门到位
"direction": 2, // 0=未知,1=停止,2=上行,3=下行
"running_mode": 0 // 0=正常,1=消防,2=检修...
}
}
3. 电梯执行指令:电梯控制系统处理请求,模拟按下内部楼层按钮,启动运行到目标楼层。
4. 到达目标楼层:电梯停止后,门禁系统再次验证AGV权限,门打开。
| 内容 | 字节 | 数据说明 |
|---|---|---|
| 内呼/外呼标志 | 1 | 0=内呼,1=外呼 |
| Type类型 | 1 | 0=进入梯控状态(需认证) 1=退出梯控状态(免认证) 2=强制接管(禁用按键) |
5. AGV退出电梯:AGV驶出轿厢,完成乘梯。系统支持楼层切换和特殊场景处理,如多AGV排队或紧急中断。
整个流程强调电气隔离(避免干扰电梯原生系统)和实时通信,确保高效安全。典型耗时:外呼5-10秒,内召及运行取决于楼层高度。

{
"cmd_id": 123456, // 响应对应的请求ID
"timestamp": 1672531200050,
"status": {
"current_floor": 5,
"door_status": 1, // 0=未知,1=开门到位,2=正在开关门,3=关门到位
"direction": 2, // 0=未知,1=停止,2=上行,3=下行
"running_mode": 0 // 0=正常,1=消防,2=检修...
}
}
2. MQTT等相关协议情况
系统使用MQTT(Message Queuing Telemetry Transport)作为核心通信协议,辅以RS-485等传统协议,实现AGV、电梯控制系统和门禁模块之间的数据传输。以下是协议相关细节:
• MQTT协议角色:
◦ 作用:MQTT是一种轻量级发布/订阅协议,专为IoT设备设计。在乘梯系统中:
■ AGV作为“发布者”(Publisher),发送呼梯命令(如外呼或内召)。
■ 电梯控制系统作为“订阅者”(Subscriber),接收并执行命令。
■ MQTT代理(Broker)居中协调,确保消息可靠传输,支持低带宽环境。
◦ 优势:低延迟(毫秒级响应)、支持QoS(服务质量等级,如确保消息必达)、易于扩展至其他门控设备(如闸机)。
◦ 消息格式:通常使用JSON或自定义二进制格式。例如,一个外呼命令的MQTT消息可能如下:
json
{
"device_id": "AGV001",
"command": "call_external",
"floor": 3,
"direction": "up",
"timestamp": "2023-10-05T14:30:00Z"
}
• 其他协议:
◦ RS-485:常用于近距离有线连接(如电梯控制器内部),提供稳定但带宽较低的数据传输。在系统中,RS-485可能用于电梯状态反馈(如门开关信号)。
◦ 协议选择:实施时需根据电梯型号定制协议。MQTT适合无线场景,RS-485用于改造旧电梯。系统支持多协议集成,通过网关转换数据1。
• 关键要求:
◦ 通信必须可靠:使用MQTT QoS Level 1或2确保命令不丢失。
◦ 安全性:通过TLS加密MQTT通道,防止未授权访问。
◦ 实时性:AGV需持续监听电梯状态主题(如 elevator/status),处理事件如门开/关。

其他协议适配要点
| 协议类型 | 适配配置要点 | 适用场景 |
|---|---|---|
| TCP | 梯控作服务器(端口 30001),支持主从机互换 | 网络稳定的智慧楼宇、工厂 |
| RS-485 | 9600bps、8 数据位、无校验,A/B 线不可反接,双工通信 | 短距离、抗干扰需求场景 |
| Modbus TCP | 支持 03(读寄存器)、06(写单寄存器)命令,梯控为从机 | 工业物联网集成场景 |
| LoRa | 点对点传输,延迟 < 50ms,作为备用通信链路 | 信号不稳定的大型园区 |
3. 内呼外呼标志及TYPE类型的含义
在通信协议中,内呼外呼标志和Type类型是命令的关键字段,用于区分呼叫类型和参数。这些定义基于标准电梯控制协议(如CANopen或自定义MQTT主题):
• 内呼外呼标志:
◦ 外呼标志(Call External Flag):标识电梯外部呼叫请求。通常是一个布尔值或枚举字段。
{
"内呼,外呼标志": 1,
"Type类型": 0
}
- **说明**:
- “内呼,外呼标志”为 1,表示外呼。
- “Type类型”为 0,表示进入梯控状态(此处外呼场景下该字段主要按格式要求发送,实际意义可结合项目具体逻辑调整,若项目无特殊要求,保持此默认值即可)。

■ 例如:在MQTT消息中,"call_type": "external" 或 "is_external": true。
■ 含义:当AGV在电梯外时发送,触发电梯移动到当前楼层。
◦ 内呼标志(Call Internal Flag):标识电梯内部呼叫请求。
■ 例如:"call_type": "internal" 或 "is_internal": true。
■ 含义:当AGV在电梯内部时发送,指定目标楼层。
◦ 作用:这些标志确保控制系统正确解析命令,避免冲突(如同时处理多个AGV请求)。在系统设计中,标志位通常占用1-2字节,以优化传输效率。
• Type类型(Type Field):
◦ 定义:Type字段指定呼叫的具体属性,如方向、优先级或场景类型。它是一个枚举或字符串值,扩展标志的含义。
◦ 常见Type值:
■ "direction":呼叫方向,例如 "up"(上行)、"down"(下行)或 "both"(双向)。用于外呼时优化电梯调度。
■ "floor":目标楼层号(整数),在内呼中必填。
■ "priority":请求优先级,例如 "high"(紧急任务)或 "normal",影响电梯响应顺序。
■ "scenario":特殊场景类型,例如 "multi_agv"(多AGV协同)或 "emergency_stop"(紧急停止),支持引用中提到的特殊处理。
◦ 示例:一个完整的内呼命令MQTT消息:
json
{
"command": "call",
"call_type": "internal",
"type": {
"floor": 5,
"direction": "none", // 内呼通常不需方向
"priority": "normal"
},
"device_id": "AMR002"
}
◦ 重要性:Type类型实现灵活控制,允许系统适应不同场景(如机器狗的小型电梯或AMR的楼层切换)。在协议中,Type字段的长度和值域需在实施前与电梯厂商确认。
总结
AGV/AMR/机器狗乘梯系统通过MQTT等协议实现高效呼梯,核心在于外呼(呼叫电梯到当前位置)和内召(指定目标楼层)的自动化流程。内呼外呼标志和Type类型作为协议关键字段,确保命令精准执行。实际部署时,建议联系技术支持进行电梯协议适配和定制化测试。

更多推荐


所有评论(0)