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:
$ 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
$ 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
$ sudo apt-get install i2c-tools $ sudo apt-get install python-smbus Testirati $ sudo i2cdetect -y 1
$ 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
$ 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
$ 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
$ 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 dataRaspakovati 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 *.txtRazmena podataka izmedju /var/www/html/index.php i programa /home/rpi/ppov3 je pomoću fajla:
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, 230Podaci 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, 4Akvizicija 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; 0Akvizicija 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 F7Arhiva 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