Depo dijital ikizi, dağıtım merkezinizin canlı bir 3D veya 2D modelidir; bu modelde envanter hareket eder, AGV'ler yol alır ve konveyörler tıpkı sahada olduğu gibi durum değiştirir. Bu rehber, lojistik ekipleri için önemli olan kullanım senaryolarını, araçlar, konveyörler ve stok hareketleri için MQTT topic'lerinin nasıl tasarlanacağını ve gerçek zamanlı güncellenen bir ikizin nasıl prototiplenebileceğini ele alıyor.
Depo Dijital İkizi Neyi Gösterir
Bir depo, bir akış sistemidir. Mallar gelir, depolanır, toplanır, paketlenir ve sevk edilir; darboğazlar ise gün içinde yer değiştirir. Geleneksel sistemler resmi parçalara böler:
- WMS (depo yönetim sistemi) lokasyonları, siparişleri ve stok seviyelerini bilir.
- WCS veya PLC'ler konveyör ve ayırıcı (sorter) durumlarını bilir.
- Filo yöneticisi AGV'lerin ve AMR'lerin nerede olduğunu ve ne yaptığını bilir.
- El terminalleri ve RFID hareket olayları üretir.
Depo dijital ikizi bu akışları tek bir mekânsal modelde birleştirir. Bir vardiya amiri 4 numaralı birleşme noktasında oluşan bir sıkışmayı, arkasında kuyruğa girmiş üç AGV'yi ve sıkışma on dakika daha sürerse kamyon kesim saatini kaçıracak sevkiyat dalgasını görür. Genel ikiz kavramları için dijital ikiz teknolojisi rehberine bakın.
Lojistik Operasyonları İçin Kullanım Senaryoları
| Kullanım senaryosu | Gerekli veriler | İkizin kattığı değer |
|---|---|---|
| Canlı saha genel görünümü | Konveyör durumları, AGV konumları, rampa kapısı durumu | İşin nerede aktığının veya takıldığının mekânsal resmi |
| Tıkanıklık ve sıkışma tespiti | Fotosel durumları, bölge doluluğu, AGV kuyruk uzunlukları | Bir arızanın yukarı akışında biriken kuyrukları gösterir |
| AGV filo izleme | Konum, batarya, görev, hata kodları | Yerleşim planı üzerinde filo sağlığı ve trafik yoğunluk noktaları |
| Envanter hareketi | Lokasyonlu tarama ve RFID olayları | Stokun planlanan yola kıyasla gerçekte nereden geçtiği |
| Adresleme (slotting) analizi | Zaman içinde lokasyon başına toplama sıklığı | Hızlı dönen ürünlerin yer değiştirmesine yön veren ısı haritaları |
| Yerleşim senaryoları | Değiştirilmiş bir yerleşimde yeniden oynatılan geçmiş akışlar | İstasyonları taşımanın veya hat eklemenin etkisini tahmin eder |
İlk üçü gerçek zamanlıdır ve düşük gecikmeli verilere dayanır. Son üçü geçmişi kullanır ve ikizin aylar içinde kendini amorti ettiği yer onlardır.
MQTT ile Veri Mimarisi
En temiz mimari, her kaynak ile her tüketici arasına bir MQTT broker yerleştirir:
- Konveyörler ve ayırıcılar: PLC'ler veya WCS, bölge durumlarını ve sıkışma alarmlarını değişiklik anında yayınlar.
- AGV'ler ve AMR'ler: filo yöneticisi (veya araçların kendisi) konum ve durumu sabit bir hızda, genellikle saniyede bir ila birkaç kez yayınlar.
- WMS olayları: küçük bir adaptör stok hareketlerini (yerleştirme, toplama, transfer) olay olarak yayınlar.
- İkiz servisleri: kuyruk uzunluklarını, bekleme sürelerini ve tıkanıklık skorlarını türeten ve geçmişi yazan aboneler.
- İkiz görüntüleyicileri: Secure WebSocket üzerinden abone olan ve 3D sahneyi canlandıran tarayıcı istemcileri.
Tam yönetilen bir MQTT hizmeti burada iyi bir seçimdir, çünkü ikizin değeri bu omurganın her zaman erişilebilir olmasına bağlıdır ve depo BT ekipleri genellikle broker işletimi yerine WMS'e odaklanır.
Topic tasarımı
connectmq/<site>/<area>/<asset-type>/<asset-id>/<data-type>
connectmq/dc-east/outbound/conveyor/zone-12/state
connectmq/dc-east/outbound/conveyor/merge-4/alarm
connectmq/dc-east/fleet/agv/agv-03/pose
connectmq/dc-east/fleet/agv/agv-03/status
connectmq/dc-east/inventory/movements
Bazı pratik kurallar:
- Konveyör bölge durumları: retained, QoS 1, yalnızca değişiklik anında yayınlanır.
- AGV konumları (pose): retained değil, QoS 0, sabit hız. Kaybolan bir konum güncellemesinin yerini bir an sonra yenisi alır.
- AGV durumu ve hataları: retained, QoS 1; böylece vardiya ortasında açılan bir görüntüleyici mevcut görevi ve bataryayı görür.
- Envanter hareketleri: QoS 1 olaylar, retained değil; stok konumlarını tutan bir servis tarafından tüketilir.
Dijital ikiz durum senkronizasyonu makalesi bu tercihleri daha derinlemesine açıklıyor.
Uygulamalı: Bir AGV'yi ve Bir Konveyör Bölgesini Canlandırın
broker.connectmq.com adresindeki herkese açık MQTT test broker'ı ile prototip oluşturun. Limitleri (istemci başına saniyede 10 mesaj, mesaj başına 64 KB) birkaç simüle edilmiş araç için yeterlidir. Herkese açık alan herkes tarafından okunabildiği için orada gerçek operasyonel veri yayınlamayın.
Bir döngü üzerinde ilerleyen bir AGV ve zaman zaman sıkışan bir konveyör bölgesi için bir Python simülatörü:
import json
import math
import random
import time
import uuid
import paho.mqtt.client as mqtt
RUN = "wh-44d0" # change to your own unique id
BASE = f"connectmq/demo/{RUN}/dc-east"
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"wh-sim-{uuid.uuid4().hex[:6]}")
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_start()
t = 0.0
battery = 100.0
zone_state = "running"
client.publish(f"{BASE}/outbound/conveyor/zone-12/state", json.dumps({"state": zone_state}), qos=1, retain=True)
while True:
t += 0.5
x = 20 + 15 * math.cos(t / 10)
y = 10 + 6 * math.sin(t / 10)
heading = (math.degrees(t / 10) + 90) % 360
battery = max(5.0, battery - 0.01)
client.publish(f"{BASE}/fleet/agv/agv-03/pose",
json.dumps({"x": round(x, 2), "y": round(y, 2), "headingDeg": round(heading, 1), "ts": time.time()}))
if int(t * 2) % 20 == 0:
client.publish(f"{BASE}/fleet/agv/agv-03/status",
json.dumps({"mission": "replenish-A12", "batteryPct": round(battery, 1)}), qos=1, retain=True)
new_state = "jammed" if random.random() < 0.02 else ("running" if zone_state == "jammed" and random.random() < 0.2 else zone_state)
if new_state != zone_state:
zone_state = new_state
client.publish(f"{BASE}/outbound/conveyor/zone-12/state", json.dumps({"state": zone_state, "ts": time.time()}),
qos=1, retain=True)
print("zone-12 ->", zone_state)
time.sleep(0.5)
Tarayıcıda görüntüleyici abone olur ve bir 3D nesneyi hareket ettirir:
import mqtt from "mqtt";
const base = "connectmq/demo/wh-44d0/dc-east";
const client = mqtt.connect("wss://broker.connectmq.com:8084/mqtt", {
clientId: "wh-viewer-" + Math.random().toString(16).slice(2, 10),
protocolVersion: 5,
});
client.on("connect", () => {
client.subscribe([`${base}/fleet/agv/+/pose`, `${base}/fleet/agv/+/status`, `${base}/outbound/conveyor/+/state`]);
});
client.on("message", (topic, payload) => {
const data = JSON.parse(payload.toString());
const parts = topic.split("/");
if (topic.endsWith("/pose")) {
const agv = scene.getObjectByName(parts[parts.length - 2]);
if (agv) {
agv.position.set(data.x, 0, data.y);
agv.rotation.y = (-data.headingDeg * Math.PI) / 180;
}
} else if (topic.endsWith("/state")) {
const zone = scene.getObjectByName(parts[parts.length - 2]);
if (zone) zone.material.color.set(data.state === "jammed" ? 0xd94040 : 0x3fa34d);
}
});
scene nesnesi, varlık ID'lerine göre adlandırılmış mesh'ler içeren three.js sahnenizdir. Mesajlar arasında konumları enterpole etmek, saniyede iki güncellemede bile hareketin akıcı görünmesini sağlar. Sahneyi oluşturmak için three.js dijital ikiz yazısına, WSS üzerinden canlı aktarılan bir konveyör ve robot kol içeren çalışan bir örnek için ise ConnectMQ 3D dijital ikiz web demosuna göz atın.
Devreye Alma Kontrol Listesi
- Sıkışmaların maliyetli ve görünür olduğu, sevkiyat konveyörleri gibi tek bir alanla başlayın.
- Ölçekli bir kat planı edinin ve AGV konumları ile 3D model için tek bir koordinat sisteminde anlaşın.
- Her PLC bölgesini ve AGV ID'sini modeldeki bir mesh adına eşleyin.
- Durumları değişiklik anında, konumları ise sabit ve makul bir hızda yayınlayın.
- Gerçek sistemleri bağlamadan önce, her kaynak sistem için bir kimlik bilgisiyle TLS üzerinden özel bir broker'a geçin.
- Bağlantıları sayın: her AGV, ağ geçidi, servis ve görüntüleyici sekmesi bir istemcidir. Ücretsiz Serverless plan en fazla 25, ücretli Serverless ise en fazla 1.000 bağlantıyı destekler.
- Adresleme ve yerleşim analizi için geçmişi ayrı bir aboneyle kaydedin.
- İkize güvenmeden önce yoğun bir vardiya sırasında onu sahayla karşılaştırarak doğrulayın.
Sık Yapılan Hatalar
- Koordinat uyumsuzlukları. Filo yöneticisinin harita orijini nadiren CAD orijiniyle eşleşir. Bilinen noktalarla kalibre edin.
- Broker'ı konum mesajlarıyla boğmak. Görselleştirme için 20 Hz'de on araç gereksizdir. Enterpolasyonla saniyede iki ila beş güncelleme akıcı görünür.
- WMS verilerini gerçek zamanlı saymak. Birçok WMS güncellemesi toplu halde yapılır. Kullanıcıların stok verilerinin ne kadar güncel olduğunu bilmesi için zaman damgalarını gösterin.
- 3D modeli gereğinden fazla ayrıntılandırmak. Raflar ve konveyörler için basit kutular daha hızlı çizilir ve bakımı daha kolaydır.
- Bağlantı kopmalarını göz ardı etmek. Filo yöneticisi veya bir PLC ağ geçidi ağdan düşerse ikiz, son konumları ve durumları hiçbir şey olmamış gibi göstermeye devam eder. Her kaynak için retained bir çevrimiçi/çevrimdışı durumu yayınlayın (MQTT last will mesajları bunun için idealdir) ve kaynağı çevrimdışı olan varlıkları gri gösterin; böylece amirler asla donmuş verilere göre hareket etmez.
- Ekran başına sınırsız görüntüleyici. Açık her tarayıcı sekmesi ayrı bir MQTT istemcisidir. Duvar ekranları, amir dizüstü bilgisayarları ve tabletler hızla birikir; bağlantı limitlerini planlarken bunları da hesaba katın.
Bu kalıpların çoğu fabrika dijital ikizi ile ortaktır.
Depo Dijital İkizinizi ConnectMQ Üzerinde Kurun
ConnectMQ, PLC'lerinize, filo yöneticinize ve tarayıcı görüntüleyicilerinize TLS, WebSocket ve MQTT 5 desteğiyle tek bir MQTT omurgası sağlar. app.connectmq.com adresinde ücretsiz bir Serverless broker oluşturun; kredi kartı gerekmez. İkizi kurarken AGV ve konveyör topic'lerini izlemek için canlı topic gezginini kullanın.
Sık Sorulan Sorular
Depo dijital ikizi nedir?
Envanter hareketlerini, araç konumlarını ve ekipman durumlarını gerçek zamanlı olarak yansıtan, izleme, analiz ve yerleşim planlaması için kullanılan bir deponun canlı dijital modelidir.
AGV konumları ne sıklıkla yayınlanmalı?
Görselleştirme için, görüntüleyici konumlar arasında enterpolasyon yaptığında saniyede bir ila beş güncelleme genellikle yeterlidir. Güvenlik açısından kritik navigasyon ise filo sisteminin kendi içinde kalır.
Depo ikizi WMS'imle entegre olabilir mi?
Evet. Bir adaptör WMS olaylarını API'si veya veritabanı üzerinden okur ve MQTT'ye yayınlar; böylece ikiz bunları diğer veri kaynakları gibi tüketir.
Konveyör durumları retained message kullanmalı mı?
Evet. Durum topic'lerini retained tutmak, yeni açılan bir ikiz görüntüleyicisinin bir sonraki değişikliği beklemeden her bölgenin mevcut durumunu hemen göstermesini sağlar.



