Именуване на MQTT теми за OEE: Един шаблон за всяка линия
Основни изводи
- Именувайте темите от завода надолу: site, area, line, machine, след това стойността.
- Използвайте стабилни ID, а не имена за показване, в малки букви и без интервали.
- Plain MQTT ви оставя да изберете дървото. Sparkplug B задава собствената си форма, като вашата йерархия влиза в ID-тата.
- Дръжте времевия печат в съобщението, поставен в източника, а не в темата.
- Публикувайте само при промяна, така че брокерът да носи събития вместо шум.
MQTT пренася данни от завода като съобщения в именовани теми. За OEE името на темата е начинът, по който всяка следваща система намира състоянието на машина и броячи. Изберете един шаблон от завода надолу, използвайте го на всяка линия и никога не преименувайте тема след като по нея тръгне данни.
Fabrico, софтуер за OEE и лек MES с AI камери, записва престой автоматично от машинния сигнал, независимо как пътува този сигнал. Как данните достигат Fabrico във вашата мрежа се договаря с техническия екип на Fabrico. Това ръководство обхваща независимата от доставчик страна на именуването.
Защо именуването на MQTT теми има значение за OEE?
- Абонатите филтрират по тема. Добро дърво позволява една абонация да събере всеки filler в даден сайт.
- Докладите се свързват по имена. Идентификаторите на линия и машина в темите трябва да съвпадат с тези в графика на смени.
- Историята следва темата. Преименувате ли тема, данните от миналия месец изглеждат като да принадлежат на различна машина.
MQTT брокерът не проверява имената вместо вас. Какъвто и да е шаблонът, който първата gateway използва, става шаблон за целия завод — затова го решете преди първата линия да влезе в експлоатация.
Кой шаблон трябва да следват OEE темите?
Повечето заводи следват нивата ISA-95, които също оформят идеята за унифицирано пространство от имена: едно споделено дърво за целия сайт. Edge gateway-овете често изграждат точно това дърво от PLC данни.
| Level | Example | Rule |
|---|---|---|
| Site | plant2 | Фиксиран site ID, никога само името на града |
| Area | packaging | Една дума на зона |
| Line | line4 | ID, използван в графика на смени |
| Machine | filler | Едно име за всяка роля на машината |
| Value | state, total_count, fault_code | Една тема на стойност, едни и същи имена на всяка машина |
Така състоянието на filler на линия 4 живее на plant2/packaging/line4/filler/state. Нашето ръководство за unified namespace разглежда по-широката идея.
Кои правила съдържат имената на темите чисти?
- Само малки букви. MQTT темите са чувствителни към регистъра, така че Line4 и line4 са две различни теми.
- Без интервали и без специални символи. Използвайте букви, цифри и долна черта.
- Никога не използвайте + или # в име. Те са джокерите, които абонатите използват.
- Не започвайте с наклонена черта или с $. Темите, започващи с $, са запазени за употреба от брокера.
- Използвайте ID-та, които никога не се променят. "filler" остава "filler", когато машината бъде заменена.
- Дръжте единиците извън името. Поставете единицата в съобщението или в списъка с тагове, за да не се променя темата при смяна на единицата.
- Запишете шаблона на една страница и го дайте на всеки интегратор преди да свърже gateway.
Plain MQTT или Sparkplug B?
С plain MQTT вие проектирате цялото дърво сами, както по-горе. Sparkplug B добавя фиксирана форма на тема, формат на payload и състояние на сесия. Неговите теми следват spBv1.0/group_id/message_type/edge_node_id/device_id, а пространството от имена трябва да бъде spBv1.0.
В Sparkplug вашата заводска йерархия влиза в ID-тата. Групата може да бъде plant2_packaging, edge node line4_gw и устройството filler. Стойностите пътуват като метрики вътре в съобщението, а не като отделни теми. Нашето ръководство за Sparkplug B обяснява неговите birth и death съобщения.
Пример: теми за една линия
Примерна линия (илюстративни числа, не клиент). Линия 4 има три машини: filler, capper и labeller. Всяка публикува пет стойности: state, total_count, reject_count, fault_code и sku. Това е 3 x 5 = 15 теми.
- plant2/packaging/line4/filler/state
- plant2/packaging/line4/capper/fault_code
- plant2/packaging/line4/labeller/total_count
Един абонамент за plant2/packaging/+/+/state събира състоянието на всяка машина в packaging. Джокерът + съвпада точно с едно ниво.
Сега обемът. Запитване за всички 15 стойности всяка секунда изпраща 15 x 3,600 = 54,000 съобщения на час.
Вместо това публикувайте състояния, грешки и SKU-та само когато се променят, около 100 съобщения на час. Изпращайте двата брояча на всяка машина на всеки 10 секунди: 3 x 2 x 360 = 2,160 съобщения. Това е приблизително 2,260 съобщения на час, около 96% по-малко.
Кои грешки при именуването създават проблеми по-късно?
- Имена за показване в темите, като "Filler (new)", които се променят, когато някой редактира екрана.
- Преименуване на линия след промяна на разположението, така че нейната история се разделя на две.
- Смесени езици или правописи между заводите, така че групов отчет не може да ги свърже.
- Една гигантска тема, носеща целия завод в едно съобщение, която никой не може да филтрира.
- Липса на времеви печат в съобщението, така че събитията получават времето на пристигане вместо времето на възникване.
Публикуването само при промяна е идеята зад report by exception. Нашата статия за report by exception vs polling разглежда това, а MQTT in manufacturing покрива протокола.
Къде се вписва Fabrico?
Fabrico е платформа за производителност в производството, с активирано компютърно зрение. OEE и лек MES идват първи, на един набор от имена на линии и машини.
- Автоматично регистриране на престой от машинния сигнал.
- Операторът потвърждава причината с едно докосване, защото тема носи състояние, а не причината.
- OEE в реално време по линия и смяна, с всяка загуба оценена в пари.
- Един изглед през заводите, което работи само когато имената съвпадат.
Това е OEE слой на light MES. Започвате на една линия, с базова линия и договорена дата за решение предварително. Няма безплатен план и няма нива: всеки завод получава оферта.
Често задавани въпроси
Какво е конвенция за именуване на MQTT теми?
Това е фиксирано правило на завода за това как се изграждат темите, например site, area, line, machine и value, в този ред. Всеки gateway го следва. По този начин всяка система може да намери данните на машина по име и един отчет може да свърже линии и заводи без ръчно картографиране.
Трябва ли MQTT темите да следват ISA-95?
За OEE това е разумен избор. Нивата ISA-95 на site, area, line и machine съответстват на начина, по който заводите се управляват и отчитат. Повечето дизайни на unified namespace използват този ред. Най-важно е да изберете един шаблон и да го използвате навсякъде.
Какъв е форматът на темите в Sparkplug B?
Темите на Sparkplug B следват spBv1.0, след това group ID, message type, edge node ID и device ID. Частта от пространството от имена трябва да е spBv1.0. Вашата заводска йерархия влиза в group, node и device ID-тата, а стойностите пътуват като метрики в съобщението.
Как работят MQTT джокерите?
Абонатите могат да използват два джокера. Плюс знакът съвпада точно с едно ниво, така че plant2/packaging/+/filler/state съвпада с filler на всяка packaging линия. Решетката съвпада с всички останали нива, така че plant2/# съвпада с всичко в този сайт.
Трябва ли времевият печат да бъде в темата или в съобщението?
В съобщението. Темите обозначават откъде идват данните; те не трябва да се променят с всяко събитие. Отбележете всяко събитие с часовника на PLC или gateway-a в момента на възникване. Поставете това време в payload-а, така че закъсняло съобщение да запази своето реално време.
Донесете дървото на темите си на демо
Донесете списъка с линии на вашия завод. Ще покажем спиранията и броячите на една линия, именовани според начина, по който работи вашият завод.
Свързани статии

Реални плочки на Fabrico, примерни данни.











