Bagaimana saya memantau RIP-12 dari Bolid

Catu daya yang berlebihan digunakan di mana-mana. Mereka menyediakan catu daya tanpa gangguan ke perangkat keamanan dan alarm kebakaran, peralatan kontrol akses, dan sistem lainnya. Di perusahaan kami, sebagai sumber tersebut, sebagai aturan, kami menggunakan perangkat dari ZAO NVP Bolid. Beberapa di antaranya, seperti RIP-12-6 / 80M3-R-RS, memiliki antarmuka RS485, yang memungkinkannya untuk disertakan dalam sistem pemantauan.





Alat pemantauan

Kami menggunakan Zabbix 5.2. Kami akan menerima data dari RIP menggunakan Modbus RTU melalui protokol TCP. Dukungan untuk protokol ini diimplementasikan di Zabbix menggunakan modul loadable libzbxmodbus . Juga, konverter protokol C2000-PP (ver. 1.32) dalam mode "Master" dan konverter antarmuka serial (RS485 ke Ethernet) terlibat dalam proses pemantauan.





Memantau objek

Untuk memulainya, mari kita putuskan apa sebenarnya yang bisa kita kendalikan. Dari dokumentasi untuk RIP-12-6 / 80M3-R-RS dan S2000-PP, ternyata kita dapat mengandalkan memperoleh status tujuh zona (AL) dan nilai numerik arus dan tegangan. Selama percobaan, saya dapat mereproduksi keadaan loop berikut:





Loop # 0 Status perangkat





149





Meretas casing perangkat





Gedung RIP terbuka





152





Pemulihan casing perangkat





Gedung RIP ditutup





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.  Konfigurasi 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 dalam gambar
RIP 12 mod 56 RIP 12 6 80 M3 R RS
Contoh pembuatan host

: 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 DIPERPANJANG dalam gambar
RIP 12 mod 56 RIP 12 6 80 M3 R RS EXTENDED
Terbaru RIP 12 mod 56 RIP 12 6 80 M3 R RS DIPERPANJANG
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