ISA-95 dijital ikizi, ISA-95 standardındaki ekipman hiyerarşisini (işletme, saha, alan, hat, hücre) hem ikiz modelinin hem de onu besleyen MQTT topic ağacının omurgası olarak kullanır. Bu rehberde seviyelerin ikiz nesnelerine ve topic'lere nasıl eşlendiğini, öğelerin tutarlı biçimde nasıl adlandırılacağını, Sparkplug B verilerinin bu yapıya nasıl oturduğunu ve tesisinizin ikizinizin beklediği yapıyı gerçekten yayınlayıp yayınlamadığını nasıl doğrulayacağınızı öğreneceksiniz.
Dijital İkizler Neden Bir Hiyerarşiye İhtiyaç Duyar
Tek bir makinenin ikizini düzenlemek kolaydır. Yüzlerce makineye sahip bir tesisin ya da birden fazla tesisi olan bir şirketin ikizi ise üzerinde uzlaşılmış bir yapı yoksa hızla rastgele adlardan oluşan bir karmaşaya dönüşür. Böyle bir yapı olmadığında:
- Her ekip kendi adlandırmasını icat eder; böylece aynı pres üç sistemde
Press_07,L2-P7vepress7olarak geçer. - İkiz görüntüleyicileri her veri kaynağı için özel kod gerektirir.
- "Montaj alanındaki tüm hatların OEE'si" gibi toplulaştırmalar elle hazırlanan eşleme tabloları gerektirir.
ISA-95 (IEC 62264), üretim için yaygın olarak kabul gören bir ekipman hiyerarşisini zaten tanımlar. Bunu ikiz için kullanmak, modelin tesis çalışanlarının operasyonu düşünme biçimiyle örtüşmesini sağlar ve MES ile ERP kavramlarıyla uyumludur. İkiz temelleri için dijital ikiz teknolojisi rehberine bakın.
ISA-95 Ekipman Hiyerarşisi Seviyeleri
| ISA-95 seviyesi | Anlamı | Örnek | İkiz nesnesi | Topic segmenti |
|---|---|---|---|---|
| Enterprise (İşletme) | Şirket | Acme Manufacturing | İkizin kökü | acme |
| Site (Saha) | Fiziksel bir lokasyon | İzmir tesisi | Harita ve KPI'larla saha ikizi | izmir |
| Area (Alan) | Bir sahanın fonksiyonel alanı | Talaşlı İşleme, Montaj, Yardımcı Tesisler | Alan görünümü, kat planı bölgesi | machining |
| Work center / Line (İş merkezi / Hat) | Üretim hattı veya proses hücresi grubu | Hat 2 | Akış topolojisiyle hat ikizi | line2 |
| Work unit / Cell (İş birimi / Hücre) | Tekil makine veya ünite | CNC 3, Robot 1 | Telemetriyle varlık ikizi | cnc3 |
Standart, üretim türüne bağlı olarak birkaç iş merkezi türünü (üretim hatları, proses hücreleri, üretim birimleri, depolama bölgeleri) birbirinden ayırır. MQTT topic'leri için bu ayrıma yol içinde nadiren ihtiyaç duyarsınız; bunun yerine bilgiyi ikiz nesnesinde meta veri olarak saklayın.
Ekipman hiyerarşisini ISA-95 fonksiyonel seviyeleriyle (Seviye 0 fiziksel prosesten Seviye 4 iş planlamasına kadar) karıştırmayın. Her ikisi de "ISA-95 seviyeleri" tartışmalarında geçer. Burada anlatılan ikiz hiyerarşisi ekipman hiyerarşisini kullanır.
Hiyerarşiyi MQTT Topic'lerine Eşlemek
Unified Namespace kalıbı, tüm tesis verilerini ekipman hiyerarşisini yansıtan bir topic ağacı altında bir broker'a yayınlar:
<enterprise>/<site>/<area>/<line>/<cell>/<data-type>
acme/izmir/machining/line2/cnc3/telemetry
acme/izmir/machining/line2/cnc3/state
acme/izmir/machining/line2/robot1/telemetry
acme/izmir/utilities/compressors/comp1/energy
Bu, ikize üç faydalı özellik kazandırır:
- Topic'lerden gelen yapı. Bir ikiz servisi, her varlık için ayrı yapılandırmaya gerek kalmadan topic yollarını ayrıştırarak nesne ağacını oluşturabilir.
- Wildcard ile kapsam. Bir hat ikizi
acme/izmir/machining/line2/#topic'ine, bir tesis genel görünümü iseacme/izmir/+/+/+/statetopic'ine abone olur. - Kararlı adresleme. Her değerin panoların, historian'ların ve analiz araçlarının ortak kullandığı tek bir kanonik adresi vardır.
Bu yaklaşım hakkında daha fazla bilgi için MQTT Sparkplug B ve Unified Namespace yazısını okuyun.
İleride sorun yaşamanızı önleyen adlandırma kuralları
- Yalnızca küçük harf, harf, rakam ve kısa çizgi kullanın. Boşluk,
+veya#olmasın. - Her seviyede tek bir kavram; hiçbir seviyeyi atlamayın. Bir makine bir hatta değilse
generalgibi bir yer tutucu kullanın. - Topic'lerde kararlı ID'ler (
cnc3) kullanın, görünen adları (DMG Mori NHX 4000 #3) meta veride tutun. - Veri türünü küçük ve sabit bir sözcük dağarcığıyla son segment olarak tutun:
telemetry,state,alarm,energy,health,command. - Ağacı belgeleyin ve değişikliklere kod değişikliği gibi, gözden geçirme süreciyle yaklaşın.
ConnectMQ ISA-95 Dijital İkizini Nasıl Destekler
ConnectMQ bu yapı göz önünde bulundurularak geliştirilmiştir. ISA-95 ve Unified Namespace topic'lerini algılar; portaldaki cihazlar görünümü de cihazları ISA-95 seviyelerine göre düzenler. Böylece işletme, saha, alan, hat ve hücreye tıpkı ikizin yapacağı şekilde göz atabilirsiniz. Canlı topic gezgini ise sorun giderme için ham ağacı ve mesajları gösterir.
Birçok uç cihaz, topic'leri farklı bir şemayı (spBv1.0/<group>/<message-type>/<edge-node>/<device>) izleyen ve payload'ları Protobuf olan Sparkplug B kullanır. ConnectMQ, Sparkplug B'yi (Protobuf veya JSON) çözer ve ISA-95 topic'lerine yeniden yayınlar. Örneğin:
spBv1.0/factory1/DDATA/line1/cnc1 -> connectmq/factory1/production/line1/cnc1/telemetry
İkiziniz kendi başına hiçbir Sparkplug çözümlemesi yapmadan ISA-95 tarafına abone olabilir; Sparkplug'ı tanıyan SCADA istemcileri ise orijinal topic'leri kullanmaya devam eder. Bu, mevcut (brownfield) Sparkplug cihazlarını yeni bir ikizle birleştirirken karşılaşılan en yaygın entegrasyon engellerinden birini ortadan kaldırır.
Bu omurgayı kendiniz işletmek istemiyorsanız, yönetilen bir MQTT broker erişilebilirliği, TLS'i ve erişim kontrolünü üstlenir; ekibiniz de hiyerarşiye ve ikize odaklanabilir.
İkiz Modelini Topic'lerden Oluşturmak
İkiz modeli, düğümleri meta veri ve canlı değerler taşıyan bir ağaçtır. Basit bir JSON gösterimi:
{
"id": "acme/izmir/machining/line2",
"level": "line",
"name": "Line 2 - Housings",
"children": [
{ "id": "acme/izmir/machining/line2/cnc3", "level": "cell", "name": "CNC 3", "type": "cnc" },
{ "id": "acme/izmir/machining/line2/robot1", "level": "cell", "name": "Loading Robot", "type": "robot" }
]
}
Canlı değerler, telemetry ve state topic'lerinden hücre düğümlerine bağlanır. Hat durumu veya hat OEE'si gibi toplu değerler bir ikiz servisi tarafından hesaplanır ve hat seviyesindeki bir topic'e, örneğin acme/izmir/machining/line2/kpi topic'ine geri yayınlanır; böylece her görüntüleyici aynı sayıları okur.
Uygulamalı: Topic Hiyerarşinizi Doğrulayın
İkizi kurmadan önce cihazların yayınladıklarının hiyerarşiyle eşleştiğini kontrol edin. Bu betik, ücretsiz herkese açık MQTT broker üzerinde bir öneke abone olur ve kuralları ihlal eden topic'leri raporlar. Benzersiz bir önek ve simüle edilmiş veriler kullanın; herkese açık alan herkes tarafından okunabilir.
import re
import uuid
import paho.mqtt.client as mqtt
PREFIX = "connectmq/demo-isa-3e8f" # your unique demo prefix
LEVELS = ["enterprise", "site", "area", "line", "cell", "datatype"]
DATA_TYPES = {"telemetry", "state", "alarm", "energy", "health", "command", "kpi"}
SEGMENT = re.compile(r"^[a-z0-9-]+$")
seen = set()
def check(topic):
parts = topic[len(PREFIX) + 1 :].split("/")
problems = []
if len(parts) != len(LEVELS):
problems.append(f"expected {len(LEVELS)} levels, got {len(parts)}")
for name, seg in zip(LEVELS, parts):
if not SEGMENT.match(seg):
problems.append(f"{name} '{seg}' has invalid characters")
if parts and parts[-1] not in DATA_TYPES:
problems.append(f"unknown data type '{parts[-1]}'")
return problems
def on_connect(client, userdata, flags, reason_code, properties):
client.subscribe(f"{PREFIX}/#")
print("Validating topics under", PREFIX)
def on_message(client, userdata, msg):
if msg.topic in seen:
return
seen.add(msg.topic)
problems = check(msg.topic)
print(("OK " if not problems else "FAIL ") + msg.topic + ("" if not problems else " -> " + "; ".join(problems)))
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"isa95-check-{uuid.uuid4().hex[:6]}")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_forever()
Çalıştığını görmek için birkaç test topic'i yayınlayın:
mosquitto_pub -h broker.connectmq.com -p 1883 -i isa-pub-1 -t "connectmq/demo-isa-3e8f/acme/izmir/machining/line2/cnc3/telemetry" -m '{"rpm":8000}'
mosquitto_pub -h broker.connectmq.com -p 1883 -i isa-pub-2 -t "connectmq/demo-isa-3e8f/acme/izmir/Machining/cnc3/Telemetry" -m '{"rpm":8000}'
İkinci topic, büyük/küçük harf kullanımı ve eksik hat seviyesi nedeniyle başarısız olur. Demo öneki bilinçli olarak iki seviye derinliğindedir: herkese açık broker en fazla 8 topic seviyesine izin verir ve altı seviyeli hiyerarşi ile iki seviyeli önek tam olarak bu sınıra sığar. Özel bir broker'da hiç önek kullanmanız gerekmez.
Uygulama Kontrol Listesi
- İşletme, saha ve alan adlarında operasyon ve BT ekipleriyle uzlaşın.
- Her alan için hatların ve hücrelerin envanterini çıkarın; kararlı ID'ler atayın.
- Veri türü sözcük dağarcığını ve her tür için payload şemalarını sabitleyin.
- Uç ağ geçitlerini veya Sparkplug yeniden yayınlamasını ISA-95 topic'leri üretecek şekilde yapılandırın.
- Görselleri oluşturmadan önce topic'leri bir betikle ve ISA-95 cihazlar görünümüyle doğrulayın.
- İkiz ağacını topic'lerden ve adlar ile türler için bir meta veri dosyasından oluşturun.
- Toplu değerleri tanımladıkları seviyede yayınlayın.
- Hiyerarşi belgesini sürümleyin ve her değişikliği gözden geçirin.
Bu yapı doğrudan bir fabrika dijital ikizine ve üretimde dijital ikiz programlarına uygulanabilir.
Tesis Verilerinizi ConnectMQ ile Düzenleyin
ConnectMQ, ISA-95 ve Unified Namespace topic'lerini tanır, Sparkplug B'yi çözer ve size ISA-95 seviyelerine göre bir cihazlar görünümü sunar. Ücretsiz Serverless plan için app.connectmq.com adresinden kaydolun; kredi kartı gerekmez. Cihazlar bağlandıkça hiyerarşinizin şekillendiğini görün.
Sık Sorulan Sorular
ISA-95 dijital ikizi nedir?
Modeli ve veri topic'leri ISA-95 ekipman hiyerarşisine (işletme, saha, alan, hat ve hücre) göre düzenlenmiş bir dijital ikizdir; böylece ikiz tesisin yapısıyla örtüşür.
ISA-95 ile Unified Namespace aynı şey mi?
Hayır. ISA-95 hiyerarşiyi tanımlayan bir standarttır; Unified Namespace ise tüm verileri bir broker'a yayınlayan bir mimari kalıptır. Bir UNS, topic ağacı için yaygın olarak ISA-95 hiyerarşisini kullanır.
Sparkplug B cihazları bir ISA-95 ikizini besleyebilir mi?
Evet. ConnectMQ, Sparkplug B'yi çözer ve verileri ISA-95 topic'lerine yeniden yayınlar; böylece ikiz doğrudan ISA-95 ağacına abone olabilir.
Bir makine herhangi bir hatta ait değilse ne olur?
Hat seviyesinde general gibi bir yer tutucu segment kullanın; böylece her topic aynı derinliği korur ve wildcard abonelikleri çalışmaya devam eder.



