introduction
Dans cet article, je parlerai de la façon dont nous utilisons Zabbix et Wirenboard pour surveiller les équipements de production, comment nous avons pu obtenir des données à partir des lignes et des sources de ressources de base. L'article décrit le concept et les principaux points de l'organisation de la surveillance au moyen du logiciel libre, mais il ne traitera pas des systèmes sérieux de la classe SCADA. Ma tâche était de déployer rapidement la surveillance sans investissement en capital et de commencer à recevoir des données dès que possible à partir de ce qui existe déjà.
Une tâche
Nous avons des lignes de convoyage avec des matières premières et des produits finis, nous avons des fours, des autoclaves et d'autres pièces utiles à la production. Tout cela consomme diverses ressources (gaz, eau, électricité) et nécessite une surveillance (en fonctionnement ou à l'arrêt). Nous avons besoin d'un suivi qui nous permettra d'identifier les goulots d'étranglement dans la production et de tirer des conclusions sur l'efficacité d'utilisation des ressources et des équipements.
Difficultés d'intégration
Malheureusement, tout l'équipement de production est contrôlé par ses propres contrôleurs locaux, tout le monde n'a pas d'interface réseau, tout le monde a ses propres protocoles, l'accès au système d'exploitation est fermé, des capteurs analogiques sont utilisés - peu de gens veulent partager des informations avec le monde extérieur.
Tout changer est long, coûteux et difficile, et vous devez obtenir les données dès maintenant, la conclusion: vous devez être intégré.
Manette
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.
Cet article a été écrit avant la sortie de Zabbix 5.2. La nouvelle version est axée sur le travail avec iot et elle a déjà la possibilité de recevoir des données de MQTT et Modbus sans modules supplémentaires, pour lesquels un grand merci aux développeurs Zabbix. Un merci spécial à @wabbit pour les modules sur git https://github.com/v-zhuravlev, ils ont donné l'impulsion principale au développement de la surveillance.