Wie ich RIP-12 von Bolid aus überwacht habe

Redundante Netzteile werden überall eingesetzt. Sie versorgen Sicherheits- und Brandmeldeanlagen, Zugangskontrollgeräte und andere Systeme unterbrechungsfrei mit Strom. In unserem Unternehmen verwenden wir als solche Quellen in der Regel Geräte von ZAO NVP Bolid. Einige von ihnen, wie z. B. RIP-12-6 / 80M3-R-RS, verfügen über eine RS485-Schnittstelle, über die sie in das Überwachungssystem integriert werden können.





Überwachungstools

Wir verwenden Zabbix 5.2. Wir erhalten Daten vom RIP mit dem Modbus RTU over TCP-Protokoll. Die Unterstützung für dieses Protokoll wird in Zabbix mithilfe des ladbaren Moduls libzbxmodbus implementiert . Auch der C2000-PP-Protokollkonverter (Version 1.32) im „Master“ -Modus und der serielle Schnittstellenkonverter (RS485 zu Ethernet) sind am Überwachungsprozess beteiligt.





Objekte überwachen

Lassen Sie uns zunächst entscheiden, was genau wir steuern können. Aus der Dokumentation für RIP-12-6 / 80M3-R-RS und S2000-PP ging hervor, dass wir uns darauf verlassen können, den Zustand von sieben Zonen (AL) und numerische Werte für Strom und Spannung zu erhalten. Während der Experimente konnte ich die folgenden Zustände der Schleife reproduzieren:





Schleife # 0 Gerätestatus





149





Hacken des Gerätekoffers





Das RIP-Gebäude ist geöffnet





152





Restaurierung des Gerätegehäuses





RIP-Gebäude geschlossen





250













№1





193













192













199













250













№2





194









7,5





195









7,5





250













№3 №4 №1 №2





200









10 ,





202









7





211









11





250













№5





196













197













250













№6





1





220





< 150 > 250





2





220





150…250





250













, . , , №3 №4 [204] , №0 - [203] . , . , .





, . UProg :





  1. ( 2000-),





  2. 2000- (Modbus RTU),





  3. , , 2000-. , , -, , -, .





UProg.  Konfiguration S2000-PP
UProg. 2000-

:





  • - , 126,





  • - 0 6,





  • - , №0 "3 - ", - "8- / ".





Zabbix

, Zabbix libzbxmodbus Modbus-. - C2000-, , .





  • .





  • , .





, RIP 12 mod 56 RIP 12 6 80 M3 R RS. Request " ". : modbus_read[{$MODBUS_PORT},{$MODBUS_SLAVE},{$STATUS_REG},3,7*uint16] . , modbus C2000-.





  • {MODBUS_PORT} - (enc - Modbus RTU over TCP), .





  • {MODBUS_SLAVE} - Modbus UID 2000- ( UProg ).





  • {STATUS_REG} - №0 . : " 2000-" + 40000 - 1. : 450+40000-1 = 40449.





Request - 2000- JSON. JSON , 2000-, - :





{
  "40449":39115,
  "40450":51195,
  "40451":50171,
  "40452":51963,
  "40453":51451,
  "40454":50683,
  "40455":763
}
      
      



Request 7 . - JSON . :





  • Status - ( №0),





  • Uout - ( №1),





  • Iout - ( №2),





  • Ubat1 - 1 ( №3),





  • Ubat2 - 2 ( №4),





  • Capacity - ( №5),





  • Uin - ( №6).





№0 (Status), . JSONPath, 256, .





, JSONPath. javascritpt-. , Iout ( №2) javascript- :





function (value){
    var reg = parseInt({$STATUS_REG})+2;
    var data = JSON.parse(value);
    return data[reg];
}
      
      



. :





  1. ,





  2. ,





  3. ,





  4. 1,





  5. 2,





  6. 1 ,





  7. 2 ,





  8. 220 ,





  9. ,





  10. Status,





  11. Iout,





  12. Uout,





  13. 1,





  14. 2,





  15. Capacity,





  16. Uin,





  17. MODBUS.





RIP 12 mod 56 RIP 12 6 80 M3 R RS

RIP 12 mod 56 RIP 12 6 80 M3 R RS in Bildern
RIP 12 mod 56 RIP 12 6 80 M3 R RS
Ein Beispiel zum Erstellen eines Hosts

: RIP 12 mod 56 RIP 12 6 80 M3 R RS, RIP 12 mod 56 RIP 12 6 80 M3 R RS.





. , modbus- 2000-. , - . libzbxmodbus, .. c .





, , - , Zabbix. libzbxmodbus , .





, libzbxmodbus , .





shell

, , flock. Modbus modpoll. /usr/lib/zabbix/externalscripts rip_12_mod_56.sh





#!/bin/bash
# rip_12_mod_56.sh

# $1 - protocol://host:port
# $2 - Modbus UID
# $3 - Status register
# $4 - Offset (0 - 6)

# Example of requesting statuses:       ./rip_12_mod_56.sh enc://127.0.0.1:4001 1 40000
# Example value request:                ./rip_12_mod_56.sh enc://127.0.0.1:4001 1 40000 3

(($# < 3)) && { printf '%s\n' "You have given little data. Command exited with non-zero"; exit 1; }

lockfile=$(echo "$1" | awk -F "://" '{print $2}')

setzone()
{
        modpoll -m $1 -a $4 -r 46181 -0 -1 -c 1 -p $3 $2 $5> /dev/null 2>&1

    (($? != 0)) && { printf '%s\n' "Command exited with non-zero"; exit 1; }

    sleep 0.15
}

getvalue ()
{
        value=$(modpoll -m $1 -a $4 -r 46328 -0 -1 -c 1 -t 4:hex -p $3 $2 |grep ]: |awk '{print $2}')
        printf "%d" $value
}

getstatus ()
{
        status=$(modpoll -m $1 -a $4 -r $5 -1 -c 7 -t 4:hex -p $3 $2 | grep ]: | awk -F "0x" 'BEGIN { printf"["} NR!=7{printf "\""$2"\","} NR==7 {printf "\""$2"\""} END { printf "]"}')
    echo "{ \"status\": $status }"
}

(
        flock -e 200

        protocol=$(echo $1 | awk -F "://" '{print $1}');
        host=$(echo $1 | awk -F "://" '{print $2}' | awk -F ":" '{print $1}')
        port=$(echo $1 | awk -F "://" '{print $2}' | awk -F ":" '{print $2}')
        register=$(($3+1))

        if (($# >= 4)); then
                zone=$(($register+$4-40000))

                setzone $protocol $host $port $2 $zone

                echo $(getvalue $protocol $host $port $2)

                sleep 0.15

                exit 0
        fi

        echo $(getstatus $protocol $host $port $2 $register)

        sleep 0.15;

) 200> /tmp/$lockfile
      
      



Zabbix .





RIP 12 mod 56 RIP 12 6 80 M3 R RS EXTENDED

Request " ". : rip_12_mod_56.sh[{$MODBUS_PORT}, {$MODBUS_SLAVE}, {$STATUS_REG}]. RIP 12 mod 56 RIP 12 6 80 M3 R RS, Request - JSON .





JSON JSONPath. :





{
  "status": ["98CB","C7FB","C3FB","CAFB","C8FB","C5FB","02FB"]
}
      
      



. .

, Request 7 . - JSON .





5 " ".





  • Uout_value - , .





  • Iout_value - , .





  • Ubat1_value - №1, .





  • Ubat2_value - №2, .





  • Uin_value - , .





: rip_12_mod_56.sh[{$MODBUS_PORT}, {$MODBUS_SLAVE}, {$STATUS_REG}, < >].





, RIP 12 mod 56 RIP 12 6 80 M3 R RS.





RIP 12 mod 56 RIP 12 6 80 M3 R RS EXTENDED

RIP 12 mod 56 RIP 12 6 80 M3 R RS ERWEITERT in Bildern
RIP 12 mod 56 RIP 12 6 80 M3 R RS EXTENDED
Neueste RIP 12 mod 56 RIP 12 6 80 M3 R RS ERWEITERT
RIP 12 mod 56 RIP 12 6 80 M3 R RS EXTENDED

: RIP 12 mod 56 RIP 12 6 80 M3 R RS EXTENDED, rip_12_mod_56.sh.





RIP 12 mod 56 RIP 12 6 80 M3 R RS. - - . , . , .





, , . .





!








All Articles