Introducción
En este artículo hablaré sobre cómo usamos Zabbix y Wirenboard para monitorear equipos de producción, cómo pudimos obtener datos de líneas y fuentes de recursos básicos. El artículo describe el concepto y los puntos principales de la organización del monitoreo mediante software libre, pero no discutirá los sistemas serios de la clase SCADA. Mi tarea consistía en implementar rápidamente el monitoreo sin inversión de capital y comenzar a recibir datos lo antes posible de lo que ya está allí.
Una tarea
Contamos con líneas transportadoras con materias primas y productos terminados, tenemos hornos, autoclaves y otras piezas que son útiles en producción. Todo esto consume varios recursos (gas, agua, electricidad) y requiere monitoreo (en funcionamiento o inactivo). Necesitamos un seguimiento que nos permita identificar cuellos de botella en la producción y sacar conclusiones sobre la eficiencia del uso de recursos y equipos.
Dificultades de integración
Desafortunadamente, todos los equipos de producción están controlados por sus propios controladores locales, no todos tienen una interfaz de red, todos tienen sus propios protocolos, el acceso al sistema operativo está cerrado, se utilizan sensores analógicos; pocas personas quieren compartir información con el mundo exterior.
Cambiar todo es largo, costoso y difícil, y necesita obtener los datos ahora mismo, la conclusión: necesita estar integrado.
Controlador
Wirenboard . linux, , web . , Modbus RTU. MQTT. MQTT - , .
Zabbix-mqtt-Wirenboard
Zabbix c 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 counter
Zabbix 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.
Este artículo fue escrito antes del lanzamiento de Zabbix 5.2. La nueva versión está enfocada a trabajar con iot y ya tiene la capacidad de recibir datos de MQTT y Modbus sin módulos adicionales, por lo que muchas gracias a los desarrolladores de Zabbix. Un agradecimiento especial a @wabbit por los módulos en git https://github.com/v-zhuravlev, dieron el impulso principal al desarrollo de la monitorización.