Τα συστήματα SCADA/ICS χρησιμοποιούν πολλά διαφορετικά πρωτόκολλα επικοινωνίας από τα τυπικά συστήματα πληροφορικής. Το πιο ευρέως χρησιμοποιούμενο και το de facto πρότυπο είναι το πρωτόκολλο modbus. Αναπτύχθηκε για πρώτη φορά από την Modicon (σήμερα Schneider Electric) το 1979 ως σειριακό πρωτόκολλο, έχει τροποποιηθεί και επικαιροποιηθεί για να εκτελείται μέσω TCP και συχνά αναφέρεται ως Modbus TCP. Παρακάτω μπορείτε να δείτε ένα διάγραμμα των δύο δομών πακέτων.
Σε αυτόν τον οδηγό, θα προσομοιώσουμε μια διαμόρφωση των modbus master και slave σε μια προσπάθεια να δείξουμε πώς λειτουργεί αυτό το πανταχού παρόν πρωτόκολλο SCADA σε ένα βιομηχανικό περιβάλλον. Αυτή η προσομοίωση μας βοηθά να κατανοήσουμε καλύτερα πώς λειτουργεί αυτό το πρωτόκολλο και πώς μπορεί να παραβιαστεί, να χειραγωγηθεί και να προστατευτεί.
Table of Contents
Βήμα #1 Λήψη και εγκατάσταση
Μπορείτε να κατεβάσετε τα αρχεία .jar των Modbus Master και Modbus PAL (slave) κάνοντας κλικ στους συνδέσμους. Πρόκειται για αρχεία Java και μπορούν να χρησιμοποιηθούν σε οποιοδήποτε σύστημα με δυνατότητα Java. Εδώ θα τα εκτελέσουμε στο σύστημα Windows, αλλά μπορούν εξίσου εύκολα να χρησιμοποιηθούν σε Linux, OSX και σε οποιοδήποτε άλλο σύστημα με δυνατότητα Java.
Αφού εκτελέσετε αυτά τα δύο αρχεία, θα πρέπει να έχετε μια οθόνη που μοιάζει με την παρακάτω.
Βήμα #2 Επιλέξτε να εκτελέσετε το Modbus TCP
Για να ξεκινήσουμε, πρέπει να ρυθμίσουμε τους προσομοιωτές αυτούς ώστε να λειτουργούν σε λειτουργία TCP. Όπως γνωρίζετε, το modbus σχεδιάστηκε αρχικά για να εκτελείται μέσω σειριακής σύνδεσης και αυτός ο προσομοιωτής είναι ικανός να χρησιμοποιεί TCP ή σειριακή σύνδεση.
Βεβαιωθείτε ότι και οι δύο λειτουργούν στη θύρα 502. Στη συνέχεια, μεταβείτε στο Master και στο πτυσσόμενο μενού Options (Επιλογές) επιλέξτε Modbus TCP.
Αυτό θα πρέπει να ανοίξει ένα παράθυρο όπως το παρακάτω, όπου μπορούμε να ρυθμίσουμε τη θύρα και τη διεύθυνση IP. Προς το παρόν, ας αφήσουμε τις προεπιλογές 127.0.0.1 και θύρα 502. Κάντε κλικ στο OK.
Βήμα #3 Προσθήκη Slaves
Στη συνέχεια, πρέπει να προσθέσουμε έναν slave στον προσομοιωτή slave. Κάντε κλικ στο κουμπί Add (Προσθήκη) και θα εμφανιστεί το παράθυρο New Slave. Προσθέστε 8 slaves και κάντε κλικ στο κουμπί Add (Προσθήκη) όπως φαίνεται παρακάτω.
Βήμα #4 Προσθέστε τιμές στα coils
Κάντε κλικ στο εικονίδιο “eye” και θα εμφανιστεί ένα νέο παράθυρο. Εδώ μπορούμε να προσθέσουμε τιμές στους καταχωρητές και τα coils.
Κάντε κλικ στην καρτέλα coils και επιλέξτε 8 πηνία.
Τώρα, προχωρήστε και προσθέστε τις τιμές που βλέπετε παρακάτω στα οκτώ (8) coils. Για λόγους απλότητας, προσθέτουμε ένα “1” για κάθε περιττό coil και ένα μηδενικό “0” για κάθε ζυγό coil.
Τώρα, κάντε κλικ στο κουμπί Εκτέλεση στον Modbus slave.
Στη συνέχεια, ας προσθέσουμε 8 coils στο Master και ας ορίσουμε το Unit ID σε 8.
Τέλος, κάντε κλικ στο εικονίδιο Connect (Σύνδεση) στο αριστερό άκρο του επάνω μενού και στη συνέχεια στο εικονίδιο Read/Write (Ανάγνωση/Εγγραφή) δίπλα του. Θα πρέπει να δείτε τα δεδομένα να μετακινούνται από το slave στο master.
Βήμα #5 Αλλάξτε τα δεδομένα του coil
Τώρα, ας αλλάξουμε τα δεδομένα στα coils και ας τα διαβάσουμε στο Master. Ας βάλουμε μονάδες σε κάθε coil και στη συνέχεια πατάμε Read/Write.
Βήμα #6 Προσθήκη τιμών στους καταχωρητές
Σε αυτό το βήμα, θα προσθέσουμε τιμές στους καταχωρητές μνήμης. Κάντε κλικ στην καρτέλα Holding registers στο επάνω μέρος του παραθύρου slave data.
Σε αυτή την περίπτωση, θα προσθέσουμε μόνο τέσσερις (4) καταχωρητές.
Στη συνέχεια, εισαγάγετε τις τιμές για τους τέσσερις (4) καταχωρητές που θα κρατήσετε. Σε αυτή την περίπτωση, πρόσθεσα τις ακόλουθες τιμές,
Στο Master, επιλέξτε 4 για τον αριθμό των καταχωρητών και επιλέξτε “Read Holding Registers” ως Function Code.
Τέλος, κάντε κλικ στο εικονίδιο Read/Write. Τα δεδομένα στους καταχωρητές κράτησης θα πρέπει να μεταφερθούν στο Master και να εμφανιστούν στους καταχωρητές Master όπως φαίνεται παραπάνω.
Βήμα #7 Εγγραφή πολλαπλών καταχωρητών
Τώρα που δείξαμε πώς ένα Modbus Master μπορεί να διαβάσει τόσο τα coils όσο και τους καταχωρητές, ας προσπαθήσουμε να στείλουμε τα δεδομένα προς την άλλη κατεύθυνση. Εδώ θα χρησιμοποιήσουμε το Master για να στείλουμε δεδομένα στα coils. Με αυτόν τον τρόπο, ο διαχειριστής του συστήματος ή ο προγραμματιστής του PLC μπορεί να αλλάξει τις τιμές στους καταχωρητές και έτσι να αλλάξει τη λειτουργία του PLC.
Ας πάμε στο Master και ας επιλέξουμε τη λειτουργία “Write Multiple Registers” και στη συνέχεια επιλέξτε 4 καταχωρητές.
Στη συνέχεια, τοποθετήστε νέα δεδομένα στα πεδία μητρώου στο Master. Τέλος, πατήστε Read/Write και οι νέες τιμές θα πρέπει να εμφανιστούν στα πεδία δεδομένων του καταχωρητή Slave.
Συμπέρασμα
Ελπίζουμε ότι αυτός ο προσομοιωτής modbus σας έδειξε τα βασικά στοιχεία της επικοινωνίας μεταξύ του master και του slave modbus. Παρόλο που χρησιμοποιήσαμε μόνο μερικές λειτουργίες, ο προσομοιωτής είναι ικανός για όλες σχεδόν τις λειτουργίες του modbus. Ίσως αξίζει τον κόπο να “παίξετε” με μερικές από αυτές τις λειτουργίες.