En aquest taller aprendràs a desplegar un entorn de simulació de dispositius industrials OT, instal·lant simuladors del protocol Modbus TCP i del protocol s7comm que utilitzen els dispositius Siemens.
Utilitzarem les aplicacions QModMaster i Modbuspal amb les eines Snap7 que simulen dispositius Siemens per simular un entorn industrial.
Per comprovar el funcionament configurarem les eines d'escaneig actiu utilitzant les aplicacions NMap i PLCScan. I finalment proposem realitzar 3 exercicis.
Aquest taller està separat en dues parts
En la primera part instal·larem un grup d'eines que et permetran simular les comunicacions que es generen en dispositius que utilitzen el protocol Modbus, en concret Modbus TCP. Aquests dispositius simularan un Mestre Modbus, que és el que realitza la petició i la consulta de la informació que emmagatzema l'Esclau Modbus, i un Esclau Modbus que és el que rep les peticions i envia la informació al Mestre Modbus, com faria un PLC Industrial.
En la segona que instal·larem les eines necessàries per simular un dispositiu PLC Siemens, amb el paquet de programariSnap7. Aquest paquet de programari està format per dues aplicacions de tipus client/servidor i ambdues en conjunt simulen el funcionament d'un dispositiu PLC Siemens.
Abans de començar a treballar s'ha de tenir instal·lat a l'ordinador els programes Oracle VM VirtualBox 7.0 i dins, almenys una màquina virtual de Ubuntu 20_04 LTS.
Descàrregues que utilitzarem per realitzar l'entorn industrial virtual:
En primer lloc executa les instruccions que et permeten la actualització dels paquets de programari del repositori:
$ sudo apt update $ sudo apt upgrade
Un cop tens els repositoris actualitzats, instal·la el paquet net-tools per poder utilitzar l'ordre
ifconfig que tornarà tota la informació de la interfície de xarxa que utilitzeu, com la adreça IP.
$ sudo apt install net-tools
Ara hem d'instal·lar 2 paquets de software qt5 i qtcreator, que formen part del framework multiplataforma per desenvolupar aplicacions gràfiques Qt, necessaris per la aplicació QModMaster
$ sudo apt install qt5-default $ sudo apt install qtcreator
Per últim, instal·lem el paquet de software «g++» (compilador de C++ de GNU):
§ sudo apt install g++
Descarrega i descomprimeix l'arxiu qModMaster-code-0.5.2-3.zip a la carpeta Documents i crea una carpeta «build». que es on construirem el programa executable qModMaster.pro:
§ cd qModMaster-code-0.5.2-3/ § mkdir build § cd build/ § qmake ../qModMaster.pro § make
Copiem la carpeta ManModbus de forma recursiva i executem el programa:
§ cp -r ../ManModbus/ ManModbus § ./qModMaster
Es pot observar la següent finestra de l'aplicació QModMaster:
Obre un nou terminal i realitza l'instal·lació del paquet de software per a màquines virtuals de Java:
§ sudo apt install default-jre
Descarrega i descomprimeix l'arxiu modbuspal.jar a la nova carpeta modbuspal, deprés executa l'arxiu ModbusPal.jar:
§ mkdir Documentos/modbuspal § cp Descargas/ModbusPal.jar Documentos/modbuspal/ § cd Documentos/modbuspal/ § sudo java -jar ModbusPal.jar
Ara ja tenim el simulador de dispositius ModbusPal amb el qual, més endavant, crearem els nostres esclaus:
Aquest paquet de programari està format per dues aplicacions de tipus client/servidor i totes dues en conjunt simulen el funcionament d'un dispositiu PLC Siemens. La primera és l'aplicació Snap7 Server Demo i és la que exerceix el rol de dispositiu PLC i subministra les dades quan li són sol·licitades.
La segona aplicació és l'encarregada d'interactuar amb aquest PLC com a client i interfície per mostrar tota la informació del mateix.
Obre un nou terminal i realitza en primer lloc l'instal·lació del paquet de software python 3 pip, necessari pel funcionament de Sanp7
§ sudo apt install python3-pip
Descarrega i descomprimeix l'arxiu snap7-full-1.4.2: a Documents, després compila l'arxiu dins del nostre sistema Linux de 64 bits:
§ cd Documentos/snap7-full-1.4.2/build/unix/ § make -f x86_64_linux.mk § cd ../bin/x86_64-linux/ § sudo cp libsnap7.so /usr/lib
Hem de crear els vincles necessaris per les biblioteques compartides amb ldconfig i donar permisos d'execució a les dues aplicacions d'Snap7
§ sudo ldconfig § cd ../../../rich-demos/x86_64-linux/bin/ § chmod u+x clientdemo § chmod u+x serverdemo
Ara ja podem executar les 2 aplicacions, abans hem de executar ifconfig per esbrinar la IP de l'adaptador de xarxa de la MV Ubuntu. En el nostre cas la direcció IP és la 10.0.2.15:
Primer, executa l'aplicació «serverdemo» :
sudo ./serverdemo
Segon, en un nou terminal, executa l'aplicació Client Demo :
§ cd Documentos/snap7-full-1.4.2/rich-demos/x86_64-linux/bin/ § ./clientdemo
Per comprovar que funciona hem de posar la direcció IP 10.0.2.15 i a l'entrada «Connect as«, escollim S7 BASIC. Si fem click sobre el botó «Connect» veurem que es connecta i ara a la pestanya «Control» podem realitzar operació de parada del PLC (Stop) i arrancada del PLC (Start):
Es important per tornar a arrencar el PLC, premer el botó «Hot Restart« i si vols desconectar prems en aquest ordre al botó de «Disconnect» (a l'aplicació Snap 7 Client Demo) i «Stop» (a l'aplicació Snap 7 Server Demo).
Obre un nou terminal i instal·lem i verifiquem el paquet de software Nmap:
§ sudo apt install nmap § nmap -V § sudo apt install git
Per utilitzar l'eina PLCscan clonarem a la carpeta «Documentos» el repositori del GitHub, seguidament per poder exectar-lo hem d'instal·lar python2
§ git clone https://github.com/meeas/plcscan § cd Documentos § sudo apt install python2 § cd plcscan/ § python2 plcscan.py
En aquest apartat crearem un esclau a l'aplicació ModbusPal i establirem la comunicació Modbus TCP amb l'aplicació QModMaster per a la lectura de les dades.
• Les coils són noms d'adreces de memòria, és a dir, són registres o noms de variables predefinides de tipus booleà, i que poden ser llegides o escrites. • Els holding registers, igual que els coils, són noms d'adreces de memòria que permeten emmagatzemar dades de tipus integer (és a dir, nombres enters).
En aquest apartat es crearà un segon esclau amb l'aplicació Modbuspal (com has vist anteriorment) i s'establirà la comunicació Modbus TCP amb l'aplicació QModMaster per a la lectura de les dades del Holding register de l'esclau nº1 que heu creat anteriorment i d'un nou Holding register que crearem a l'esclau nº2.
En aquest apartat s'utilitzarà l'eina PLCScan per a realitzar la identificació de dispositius que utilitzen el protocol Modbus TCP, així com els dispositius Siemens que utilitzen el protocol de comunicació s7comm