المقدمة
في هذه المقالة سوف أتحدث عن كيفية استخدامنا Zabbix و Wirenboard لمراقبة معدات الإنتاج ، وكيف تمكنا من الحصول على البيانات من خطوط ومصادر الموارد الأساسية. يصف المقال المفهوم والنقاط الرئيسية لتنظيم المراقبة عن طريق البرمجيات الحرة ، لكنه لن يناقش الأنظمة الجادة لفئة SCADA. كانت مهمتي هي نشر المراقبة بسرعة دون استثمار رأس المال والبدء في تلقي البيانات في أقرب وقت ممكن مما هو موجود بالفعل.
مهمة
لدينا خطوط نقل بالمواد الخام والمنتجات النهائية ، ولدينا أفران وأوتوكلاف وقطع أخرى مفيدة في الإنتاج. كل هذا يستهلك موارد مختلفة (غاز ، ماء ، كهرباء) ويتطلب مراقبة (عاملة أو خاملة). نحتاج إلى مراقبة تسمح لنا بتحديد الاختناقات في الإنتاج واستخلاص استنتاجات حول كفاءة استخدام الموارد والمعدات.
صعوبات الاندماج
لسوء الحظ ، يتم التحكم في جميع معدات الإنتاج بواسطة وحدات التحكم المحلية الخاصة بها ، وليس لدى كل شخص واجهة شبكة ، فكل شخص لديه بروتوكولاته الخاصة ، والوصول إلى نظام التشغيل مغلق ، ويتم استخدام أجهزة الاستشعار التناظرية - قلة من الناس يريدون مشاركة المعلومات مع العالم الخارجي.
تغيير كل شيء طويل ومكلف وصعب ، وتحتاج إلى الحصول على البيانات الآن ، الخلاصة: يجب أن تكون مضمنًا.
مراقب
اخترنا Wirenboard كوحدة تحكم . يعمل نظام Linux المفتوح تمامًا على متن الطائرة ، ويمكنك تثبيت أي حزم إضافية ، وله محرك قواعد خاص به وواجهة ويب. تنتج الشركة المصنعة لوحدة التحكم الخط الكامل المطلوب من أجهزة الاستشعار والعدادات التي تتصل ببعضها البعض باستخدام بروتوكول Modbus RTU المفتوح. يتم جمع جميع البيانات في MQTT. في رأيي ، MQTT هي الطريقة الأنسب لجمع بيانات القياس عن بُعد وتسليمها ، والبروتوكول مفتوح وسهل الاستخدام قدر الإمكان.
Zabbix-mqtt-Wirenboard
لا يعمل Zabbix مباشرة مع MQTT ، ولكن من الممكن استخدام الوحدات الخارجية ، وهنا خياران استخدمتهما.
- Zabbix , MQTT mosquitto_sub. : «UserParameter=mqtt.value[*],mosquitto_sub -t '$1' -C 1», Zabbix , item key mqtt.value[ ].
, – MQTT . , , Zabbix . «retain», , Zabbix , , . – , . , .
Zabbix 4.2 zbx_mqtt. Zabbix , , JSON . «» . Preprocessing: – .
– -. :
/ .
, WB-MCM8 c modbus 32, , MQTT Wirenboard.
/devices/wb-mcm8_32/controls/Input 1 counter
/devices/wb-mcm8_32/controls/Input 2 counter
…
/devices/wb-mcm8_32/controls/Input 8 counterZabbix MasterItem_WB-MCM8_32 External check. .

key : mqtt["-t=/devices/wb-mcm8_32/#","--mqtt-host={HOST.CONN}"] :
mqtt[] –
-t=/devices/wb-mcm8_32/# - wb-mcm832
--mqtt-host={HOST.CONN} - Wirenboard. {HOST.CONN}
, Zabbix JSON, :
{…"/devices/wb-mcm8_32/controls/Input 7 counter": "3129705", "/devices/wb-mcm8_32/controls/Input 3 counter": "1885652", "/devices/wb-mcm8_32/controls/Input 1 counter/meta/type": "value", "/devices/wb-mcm8_32/controls/Input 5/meta/order": "13", "/devices/wb-mcm8_32/controls/Input 8/meta/order": "16"…}dependent item, .

key , mqtt . Preprocessing.

JSONPath -
Check for error in JSON - wb-mcm8 : , , Zabbix .
Simple change - , () – Simple change.
, , . , , .
WB-MAP3H. , , . ( ) ( , – ). (, , ), ( ).

, . , , – .
Delta Modbus TCP RTU
Delta, Modbus TCP. Modbus Zabbix libzbxmodbus. , TCP, com RTU Modbus. , .
Zabbix Master item, 17 Modbus TCP, , .
modbus_read[{$MODBUS_ADDRESS},1,4110,3,17*s]
$MODBUS_ADDRESS – Zabbix, ip , «tcp://192.168.0.2»
1 – Modbus. «1», RTU ,
4110 – ,
3 – Modbus. 3 –
17*s – , 17 , int16 (s=int16, f=float, b=bit )
5 Zabbix – Test, JSON 17 ( 4110 4126).
{"4110":967,"4111":960,"4112":395,"4113":0,"4114":0,"4115":0,"4116":665,"4117":803,"4118":2500,"4119":2500,"4120":447,"4121":999,"4122":1224,"4123":2154,"4124":1493,"4125":1254,"4126":418}, Preprocessing steps JSONPath = $.4110 4110 . , : In range 0 1500, – . Discard unchanged , .

Siemens
Siemens S7 profinet / profibus, Snap7. zbx_s7_get , .

s7_get.py :
s7_get.py[{HOST.CONN},{$S7.RACK},{$S7.SLOT},{$S7.DB},6,bool,--json]{HOST.CONN} – , ip ( host interface)
{$S7.RACK} – , rack id
{$S7.SLOT} – ,
{$S7.DB} – , id
6 - offset
Bool – , true / false. int float.
--json – . json, master item .
JSON, ( ).
{"6": ["True", "False", "False", "True", "False", "True", "True", "False"]}Linx 5900
Linx 5900 ( , ). , , - .
Zabbix moxa NPORT 5150. tcp rs232 serial /dev/ttyr01 linux , Zabbix . Linx Remote Communications Interface (RSI). , ( ).
: 1b 02 08 1b 03
: 1b 06 00 00 08 da bc b9 01 1b 03
:
1b 06 -
00 00
08 – 8 ( )
da bc b9 01 -
1b 03
UINT32 - Little Endian (DCBA)
01 B9 BC 8F 28949647
01 B9 BC DA 28949722
01 B9 BD 25 28949797, , .
Zabbix serial.get. Item key :
serial.get[/dev/ttyr01,5,1b02081b03,uint32]Zabbix , .
:
( )
OEE
( )
( )
:
, . lorawan
CAS
P.S.
تمت كتابة هذا المقال قبل إصدار Zabbix 5.2. يركز الإصدار الجديد على العمل مع iot ولديه بالفعل القدرة على تلقي البيانات من MQTT و Modbus بدون وحدات إضافية ، وذلك بفضل جزيل الشكر لمطوري Zabbix. شكر خاص لـ wabbit على الوحدات على git https://github.com/v-zhuravlev ، فقد أعطوا الدافع الرئيسي لتطوير المراقبة.