RPi3 SCADA

Na ovoj stranici prikazan primer SCADA sistema (Supervisory Control And Data Acquisition) uradjen sa Raspberry Pi 3 modul koji predstavlja server, a sa dodatnim modulima predstavlja RTU (Remote Terminal Unit) ili PLC (Programmable Logic Controller).
Na RPi3 dotat je modul sa baferom SPI-BUS_A i SPI-BUS_D.
Na SPI-BUS_A moze se priključiti maksimalno 16 modula sa 8 analogna ulaza (maksimalno 128 analognih ulaza).
Na SPI-BUS_D priključuju se ostali moduli, digitalni ulazi ili izlazi, analogni izlazi (maksimalno 512 digitalnih ulaza-izlaza).

Šeme dodatnih modula:

  • Modul sa baferom SPI-BUS
  • Modul sa 16 digitalna ulaza galvanski izolovani optokaplerima
  • Modul sa 16 digitalna izlaza sa optoprekidacima
  • Modul sa 16 digitalna izlaza sa tranzisorima
  • Modul sa 8 releja, za module sa tranzistorima
  • Modul sa 8 analogna ulaza (10-bit ADC)
  • Modul sa 2 analogna izlaza (8-bit DAC)

  • Modul sa baferom serijske magistrale podataka SPI-BUS_A i SPI-BUS_D, ima WDT (WatchDog Timer) za digitalne izlaze. Prilikom starta PRi3, odnosno podizanja sistema ili kada ne radi softwer PPOV, WDT postavlja digitalne izlaze na nulu (74HC595), vreme zadrške je 10 sekundi. Drugi monostabil od CD4538 koristi se za generisanje impulsa 1us, potreban za čitanje digitalnih ulaza (74HC165). Moduli sa digitalnim ili analognim ulazima prikupljaju podatke, RPi3 ih obradjuje, vrši akviziciju podataka na FLASH disk, analogna merenja za svaki dan upisuje u fajl formata: aYYYYmmdd.csv, tako da se podaci mogu otvarati u MS Excel za dalju obradu ili crtanje grafika. Pomocu Apachi servera i PHP skripta prikazuje na WEB stranicu. Preko modula sa izlazima upravlja pogonima u postrojenju. U aplikacijama koje nemaju internet može se dodati dodatni modul sata realnog vremena i DCF77 prijemnik realnog vremena za sinhronizaciju.



    RPi3 PPOV - Postrojenje za prečiscavanje odpadnih voda

    SCADA za PPOV koristi jednobitnu signalizaciju ("0"=Nema "1"=Ima) i jednobitne komande ("0"=Isklj "1"=Uklj). PPOV ima 12 elektro-motorna pogona, rasporedjena u 3 razvodna ormara. Takodje ima 4 analogna merenja sa strujnim signalom 4-20mA: sadžaj kiseonika u vodi O2 (%), provodnost vode S, ph vode, protok vode Q (l/s).
    PPOV ima ukupno 48 digitalna ulaza (3 modula sa 16 digitalna ulaza), 16 digitalna izlaza (1 modul sa 16 digitalna izlaza sa tranzistorima i 2 modula sa 8 releja), 4 analogna ulaza (1 modul sa 8 analogna ulaza).
    Vrednosti %O2 učestvuju u automatskom upravljanju kompresora, koji uduvavaju vazduh u egalizacionomim bazenima. Raspored uključenja kompresora u zavisnosti od %O2 dat je tabelarno (set point).

    PPOV3.xls - Tabelarni prikaz potrebnih signala, komandi i set pointa.



    Simboli za Signalizaciju

    Napon Ima/Nema:
    Zastita Delovala/Normalno:
    Daljinski/Lokalno:
    Automatski/Ručno:
    Motor Isključen/Uključen/Kvar:

    Komadni prozori

    RO-PP Razvodni ormar pužne pumpe:

    RO-KO Razvodni ormar kompresori:

    RO-MP Razvodni ormar muljne pumpe:


    LINUX – najcešce komande

    $ sudo ime_kom		substitute user do (omogucuje izvršavanje komandi kao drugi korisnik)
    $ pwd			prikaži ime radnog direktorijuma
    $ cd ime_dir		promeni direktorijum
    $ ls			lista fajlova u direktorijumu
    $ ls -altr		lista fajlova u direktorijumu, poredjaj po vremenu formiranja fajla
    $ mkdir ime_dir	kreiraj novi direktorijum
    $ rmdir ime_dir	izbriši direktorijum
    $ rm ime		izbriši fajl
    $ rm *.txt		izbriši fajlove sa ekstenzijom txt
    $ touch ime		kreiraj tekst fajl u tekucem direktorijumu
    $ mv ime1 ime2		promeni ime  fajla
    $ cp ime /ime_dir	kopiraj fajl u direktorijum
    $ less ime		aplikacija za pregledanja fajlova (prekid pritiskom na Q)
    $ nano ime		tekst editor
    $ ./ime_prg		izvrši program
    $ exit			izlazak iz shell-a ako smo logovani kao root ili neki drugi korisnik
    $ man ime_kom		upustvo za komande i ostalo
    $ df 			prikaži prostor na disku
    $ free 			prikaži prostor RAM memorije
    $ ps aux		lista svih procesa
    $ top			zauzece procesora
    $ tar cvf ime.tar /ime_dir	pakovanje fajlova bez kompresije sa imenom direktorija
    $ tar xvf ime.tar	raspakivanje fajlova	
    $ tar cvf ime.tgz /ime_dir	kompresija fajlova sa imenom direktorija
    $ tar xvf ime.tgz	dekompresija fajlova	
    $ zip ime.zip *.*	kompresija svih fajlova u direktorijumu	
    $ unzip –La ime.zip 	dekompresija fajlova
    $ chown ime		promena vlasništva fajla ili direktorijuma
    $ chmod	ime		promena dozvola na fajlu ili folderu, prvi broj predstavlja kreatora, drugi grupu i tereci bilo koga. 
    			(read = 4, write = 2, exec = 1)
    $ chmod 000 		nije dozvoljeno ništa
    $ chmod 644 		najcešce dozvole
    $ chmod 754		korisnik – može sve, grupa – da cita i izvršava, i bilo ko – može samo da čita
    $ chmod 755		korisnik – može sve, grupa – da cita i izvršava, i bilo ko – da čita i izvršava
    $ id			identifikacija korisnika
    $ date			prikaži sistemsko vreme
    
    $ sudo shutdown –h now iskljuci racunar (RPi)
    
    nano - tekst editor komande:
    
    Ctrl+G = HELP
    Ctrl+K = CAT LINE
    Alt+6 = COPY LINE
    Ctrl+U = PASTE LINE
    
    Ctrl+O = SAVE FILE
    Ctrl+X = QUIT
    Ctrl+C = Cursor position
    Ctrl+W = Search text
    Alt+W = Replace
    Alt+R = Search and replace
    

    Instalacija operativnog sistema

    Skinuti YYYY-mm-dd-raspbian-stretch-lite, raspakovati sa 7-Zip, snimiti iso file na micro SD karticu od 4GB pomocu Win32 Disk Imager
    User: pi
    Password: raspberry
    $ df –h 		prikaži prostor na disku 
    $ free -h 		prikaži prostor RAM memorije
    $ hostname -I 		prikaži net adresu RPi-ja
    
    Promeniti password
    $ passwd
    
    Instalacija RS232
    $sudo nano /boot/config.txt
    Dodati liniju: enable_uart=1
    $sudo nano /boot/cmdline.txt
    Izbrisati console=serial0,115200
    $sudo reboot
    
    Instalacija Minicom
    $ sudo apt-get install minicom
    $ minicom –b 9600 –o –D /dev/serial0
    Exit with: Ctrl-A Q
    
    Testirati serijsku komunikaciju preko Minicom.
    
    Instalacija SSH telnet
    $ sudo systemctl enable ssh
    $ sudo systemctl start ssh
    
    Instalacija Apache servera i PHP:
    $ sudo apt-get install apache2 -y
    $ sudo apt-get install php libapache2-mod-php -y
    
    Instalacija FTP servera:
    $ sudo apt-get install pure-ftpd
    $ sudo groupadd ftpgroup
    $ sudo useradd ftpuser -g ftpgroup -s /sbin/nologin –d /dev/null
    $ sudo mkdir /home/pi/FTP
    $ sudo chown –R ftpuser:ftpgroup /home/pi/FTP
    $ sudo pure-pw useradd upload –u ftpuser –g ftpgroup –d /home/pi/FTP –m
    $ sudo pure-pw mkdb
    $ sudo ln –s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60puredb
    $ sudo service pure-ftpd restart
    
    Konfiguracija SPI, I2C, 1-Wire
    $ sudo raspi-config
    

    Enable P4 SPI i P5 I2C, Disable P7 1-Wire
    $ sudo apt-get install i2c-tools
    $ sudo apt-get install python-smbus
    
    Testirati
    $ sudo i2cdetect -y 1
    


    Instalacija WiringPi:
    $ sudo apt-get install git-core
    $ cd
    $ git clone git://git.drogon.net/wiringPi
    $ cd ~/wiringPi
    $ git pull origin
    $ ./build
    
    $ gpio -v
    
    U FILE:
    $ sudo nano /boot/config.txt
    Dodati liniju: dtoverlay=w1-gpio
    $ sudo reboot
    

    Formiranje RAM DISK

    $ sudo mkdir /var/tmp1
    u File /etc/fstab dodati:
    $ sudo nano /etc/fstab
    .
    .
    .
    tmpfs /var/tmp1 tmpfs nodev,nosuid,size=1M 0 0
    $ sudo mount -a
    $ df
    

    CPU monitoring

    $ vcgencmd measure_temp
    temp=39.5'C
    $ vcgencmd measure_volts
    volt=1.2000V
    $ vcgencmd measure_clock arm
    frequency(45)=600064000
    $ vcgencmd get_config int
    ...
    
    Više na: https://elinux.org/RPI_vcgencmd_usage
    

    Instalacija software RPi3 PPOV

    Kompajlirati softver pomoću gcc:
    $ gcc ppov3.c -o ppov3 -lm
    Testirati softver pomocu:
    $ ./ppov3
    
    U fajlu /etc/rc.local:
    $ sudo nano /etc/rc.local
    Dodati liniju:
    sudo /home/pi/ppov3
    
    Napraviti direktorijum : /var/www/data/
    $ cd /var/www
    $ sudo mkdir data
    $ sudo chmod 777 data
    
    
    Raspakovati fajlove ppov3.tar u directorijum /var/www/html
    $ tar xvf ppov3.tar
    
    $ ls /var/www/html
    styles.css	ppov.ico	index.php	post.php
    ppov_ko1.php	ppov_ko2.php	ppov_maz.php	ppov_mi1.php
    ppov_mi2.php	ppov_mp1.php	ppov_mp2.php	ppov_pes.php
    ppov_pp1.php	ppov_pp2.php	ppov_res.php	ppov_tal.php
    prikaz.php	a.png		d.png		l.png
    lj.png		ls.png		mb.png		mg.png
    mp.png		mr.png		ms.png		ppov.png
    r.png		sr.png		ss.png
    
    
    $ sudo cp /var/www/html/ppov_cal.txt /home/pi/
    
    File: /home/pi/ppov_cal.txt     - kalibracioni file za merenja, Cmin za 4mA, Cmax za 20mA 
    163, 818, 164, 817, 164, 818, 163, 819, 163, 818, 163, 818, 163, 818, 163, 818
    
    
    $ cd /var/www/html
    $ sudo chmod 777 *.txt
    
    Razmena podataka izmedju /var/www/html/index.php i programa /home/rpi/ppov3 je pomoću fajla:
    Podaci o analognim ulazima i digitalnim ulazima nalaze se na RAM-DISK-u (ppov3 upisuje 5 puta u sekundi, PHP čita):
    File: /var/tmp1/a_in.txt	- merenja za prikaz na php
    8.3, 1247, 6.1, 543, 0, 0, 0, 0
    
    File: /var/tmp1/d_in.txt	- digitalni ulazi za prikaz na php
    102, 230, 206, 230, 102, 230
    
    Podaci o digitalnim izlazima (komande) i auto/rucno, set pointi nalaze se na FLASH-DISK-u (PHP upisuje, ppov3 čita):
    File: /var/www/html/d_out.txt    - komande iz php 
    157, 119
    
    File: /var/www/html/d_mem.tx     - auto/rucno iz php 
    0
    
    File: /var/www/html/sp_res.txt	- set point za resetku
    10, 25
    
    File: /var/www/html/sp_pp.txt	- set point za puzne pumpe
    20
    
    File: /var/www/html/sp_ko.txt	- set point za oba kompresora KO1 i KO2
    0, 2, 2.5, 3, 3.5, 4
    
    File: /var/www/html/sp_ko1.txt	- set point za kompresor KO1
    0, 4
    
    File: /var/www/html/sp_ko2.txt	- set point za kompresor KO2
    0, 2.5, 4
    
    
    Akvizicija analognih merenja za svaki dan nalazi se na FLASH-DISK-u (ppov3 upisuje svaki minut, može da se čita pomoću MS-Excel-a):
    File: /var/www/data/aYYYYmmdd.csv	- akvizicija analognih ulaza-merenja na svaki minut
    12:37:00; 8.3; 1247; 6.1; 543; 0; 0; 0; 0
    12:38:00; 7.6; 1324; 6.2; 498; 0; 0; 0; 0
    12:39:00; 7.9; 1305; 5.1; 512; 0; 0; 0; 0
    12:40:00; 8.6; 1289; 5.8; 528; 0; 0; 0; 0
    
    Akvizicija digitalnih ulaza za svaki dan nalazi se na FLASH-DISK-u (ppov3 upisuje po promeni):
    File: /var/www/data/dYYYYmmdd.txt	- akvizicija digitalnih ulaza po promeni
    12:32:00  1F F9 F3 F9 BB B9 
    13:12:00  6E E6 CE E6 EE E6 
    14:35:00  7F F7 EF F7 FF F7 
    14:47:00  6F F7 EE F7 EF F7
    
    Arhiva zadatih komandi za svaki dan nalazi se na FLASH-DISK-u (PHP upisuje posle izdate komande):
    File: /var/www/data/rYYYYmmdd.txt 	- arhiva zadatih komandi iz php
    06/02 10:11:26 KO1 - Kompresor 1 - Auto
    06/02 10:31:37 PP1 - Puzna Pumpa 1 - Ukljuci
    06/02 10:39:22 RES - Resetka - Rucno
    06/02 10:40:28 KO1 - Kompresor 1 - Rucno
    06/02 11:18:31 MAZ - Mazalica - Ukljuci
    06/02 11:22:35 PP1 - Puzna Pumpa 1 - Ukljuci
    06/02 12:58:38 PP2 - Puzna Pumpa 2 - Ukljuci
    06/02 12:59:42 RES - Resetka - Auto
    06/02 13:34:47 PES - Peskolov - Iskljuci
    06/02 13:46:53 KO1 - Kompresor 1 - Rucno
    06/02 13:55:56 KO2 - Kompresor 2 - Ukljuci 9
    06/02 14:09:01 TAL - Taloznik - Iskljuci
    06/02 14:29:04 MP2 - Muljna Pumpa 2 - Ukljuci
    06/02 15:59:09 MI2 - Mikser 2 - Ukljuci
    





    Download File:
  • ppov3.c - Software za RPi3, C izvorni kod, koristi wiringPi biblioteku
  • ppov3.tar - Software za RPi3, PHP izvorni kod

  • ppov.c - Software za RPi B (Rev.2), C izvorni kod, koristi bcm2835 biblioteku
  • ppov.tar - Software za RPi B (Rev.2), PHP izvorni kod

  • Modul sa baferom serijske magistrale podataka SPI-BUS_A i SPI-BUS_D
  • Modul sa 16 digitalna ulaza galvanski izolovani optokaplerima
  • Modul sa 16 digitalna izlaza sa optoprekidacima
  • Modul sa 16 digitalna izlaza sa tranzisorima
  • Modul sa 8 releja za ploce sa tranzistorima
  • Modul sa 8 analogna ulaza (10-bit ADC)
  • Modul sa 2 analogna izlaza (8-bit DAC)

  • This is amateur project (home made), all information shown here is supplied without warranty. All copyrights recognised.
    Ovo je amaterski projekat (home made), sve informacije prikazane ovdje isporucuju se bez garancije. Sva autorska prava su priznata.