Zabbix + Wirenboard: monitoramento de produção

Introdução

Neste artigo, vou falar sobre como usamos Zabbix e Wirenboard para monitorar equipamentos de produção, como conseguimos obter dados de linhas e fontes de recursos básicos. O artigo descreve o conceito e os principais pontos da organização do monitoramento por meio de software livre, mas não discutirá sistemas sérios da classe SCADA. Minha tarefa era implantar rapidamente o monitoramento sem investimento de capital e começar a receber dados o mais rápido possível do que já existe.

Uma tarefa

Temos linhas transportadoras de matéria-prima e produtos acabados, temos fornos, autoclaves e outras peças que são úteis na produção. Tudo isso consome diversos recursos (gás, água, eletricidade) e exige monitoramento (em funcionamento ou ocioso). Precisamos de um monitoramento que nos permita identificar gargalos na produção e tirar conclusões sobre a eficiência do uso de recursos e equipamentos.

Dificuldades de integração

Infelizmente, todos os equipamentos de produção são controlados por seus próprios controladores locais, nem todos têm uma interface de rede, todos têm seus próprios protocolos, o acesso ao sistema operacional é fechado, sensores analógicos são usados ​​- poucas pessoas querem compartilhar informações com o mundo exterior.

Alterar tudo Ă© demorado, caro e difĂ­cil, e vocĂŞ precisa obter os dados agora, a conclusĂŁo: vocĂŞ precisa estar incorporado.

Controlador

Escolhemos Wirenboard como controlador . Um Linux completamente aberto está rodando a bordo, você pode instalar quaisquer pacotes adicionais, ele tem seu próprio mecanismo de regras e uma interface web. O fabricante do controlador produz toda a linha necessária de sensores e medidores que se comunicam entre si usando o protocolo aberto Modbus RTU. Todos os dados são coletados no MQTT. Na minha opinião, MQTT é a forma mais adequada de coletar e entregar dados de telemetria, o protocolo é aberto e o mais fácil de usar possível.

Zabbix-mqtt-Wirenboard

O Zabbix não funciona diretamente com MQTT, mas é possível usar módulos externos, aqui estão duas opções que usei.

- 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. .

Exemplo de item mestre para métricas MQTT
Master item MQTT

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. , , . ( ) ( , – ). (, , ), ( ).

WB-MAP3H
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]
item mestre para sondar o controlador Delta
master item Delta
  • $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 , .

Configurando uma métrica de um registro de controlador

Siemens

Siemens S7 profinet / profibus, Snap7. zbx_s7_get , .

Amostra de solicitação de dados

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 011b 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

  • ( )

  • ( )

, , – , . Grafana , .

:

  • , . lorawan

  • CAS

P.S.  

Este artigo foi escrito antes do lançamento do Zabbix 5.2. A nova versão está focada em trabalhar com iot e já tem a capacidade de receber dados de MQTT e Modbus sem módulos adicionais, pelo que muitos agradecimentos aos desenvolvedores do Zabbix. Agradecimentos especiais a @wabbit pelos módulos no git https://github.com/v-zhuravlev, eles deram o impulso principal para o desenvolvimento do monitoramento.




All Articles