Modbus Grundlagen OCT, 23rd 2009, LAH Modbus Grundlagen Modbus: 1979 von Modicon entwickelt Application layer messaging protocol Kommunikation zwischen 1 Master und vielen Slaves Frames Slave Adresse, auszuführende Funktion, Daten, CRC Kann auf serielle Schnittstellen (RS232, RS485, RS422) in RTU/ASCII Modus oder auf Ethernet via TCP / UDP verwendet werden Modbus PCD3.Mxx0 2 Modbus Grundlagen Modbus TCP / UDP PCD3 M5540 Modbus Client/Server IP : 10.1.2.100 Station : 100 PC IP : 10.1.2.1 PG5 Software Schneider Software TwidoSuite Ethernet Schneider Controller Twido PLC Modbus Server IP : 10.1.2.103 Station : 103 Modbus PCD3.Mxx0 TCP / UDP PCD3 M5340 Modbus Server IP : 10.1.2.102 Station : 102 PCD3 M5540 Modbus Server IP : 10.1.2.101 Station : 101 3 Modbus Grundlagen Modbus seriell PCD3 M5540 Modbus Client Station : 100 PCD3.F110 Port 1 RS485 Port 2 RTU / ASCII RS485 RTU / ASCII Port 2 Schneider Controller Twido PLC Modbus Server Station : 103 Modbus PCD3.Mxx0 PCD3.F110 Port 1 PCD3 M5340 Modbus Server Station : 102 Port 2 PCD3.F110 Port 1 PCD3 M5540 Modbus Server Station : 101 4 Modbus Grundlagen – Das Protokoll Anfrage / Antwort Prozess Dienste festgelegt durch Funktionskode, Bestandteil der Anfrage / Antwort Es sind 127 Öffentliche und Benutzerdefinierte Funktionskodes verfügbar Datenzugriff (R/W), Diagnose, … Port 502 ist reserviert für Modbus (TCP/UDP); ein anderer Port kann definiert werden Modbus PCD3.Mxx0 5 Modbus Grundlagen – Das Protokoll Modbus Seriell: max 247 Slaves auf dem Bus, jeder Slave hat eine Eindeutige Adresse RTU (Remote Terminal Unit): Standard Modbus Protokoll Die Kommunikation ist Zeitgesteuert (inter-character time, inter-frame time) ASCII (American Standard Code for Information Interchange) Die Kommunikation wird gesteuert durch ein Start Zeichen und 2 End Zeichen 2 ASCII-Zeichen sind nötigt, um 1 Byte zu senden zweimal so viel wie bei RTU Modbus PCD3.Mxx0 6 Modbus Grundlagen - Requests Request structure: - Read Req: Data = Modbus addr. + nbr of elements to read Response: Data = nbr of data bytes + data - Write Req: Data = Modbus addr. + nbr of elements to write + data to write Response: Data = Request data - Error related to the Modbus function requested Exception response: Except. Function code = Req. Function code + 0x80, Data = Exception code - Additional address: used to identify server Modbus PCD3.Mxx0 7 Modbus Grundlagen - Modbus Message Structure Modbus PCD3.Mxx0 8 Modbus Grundlagen – Das Daten Modell Es gibt 4 Modbus Medien Typen: - Holding Registers (HR): 16 bits - read / write - Input Registers (IR): 16 bits - read only HR und IR können abgebildet werden auf: PCD Register, Timer, Counter und DBs - Coils: 1 bit - read / write - Discrete Inputs (DI): 1 bit - read only Coils und DI können abgebildet werden auf: PCD Flags, Inputs und Outputs Modbus PCD3.Mxx0 9 Modbus Grundlagen – Daten Modell (Server) Wie werden Modbus Daten auf Geräte Medien abgebildet? Jedes Gerät kann seine eigene Datenorganisation haben Sollte dem Anwender bekannt sein (Siehe Gerätehandbuch) Jeder Datenbereich bzw. die gleichen Daten sind über verschiedenen Modbus Funktionen ansprechbar Saia PCD Die Datenorganisation kann vom Anwender festgelegt werden Modbus PCD3.Mxx0 10 Modbus Grundlagen – Adressierungs Modell (Server) Wie werden Adressen zwischen Modbus frame und Gerätemedien abgebildet? Modbus frame: jeder Wert adressiert von 0 to 65535 Modbus data model: Jedes Element innerhalb eines Bereichs hat die Nummer 1 bis n Die Zuordnung zwischen dem Modbus data model und der Device Application ist Herstellerbezogen PCD IOs PCD Flags PCD Timers PCD Registers Modbus PCD3.Mxx0 11 Modbus Grundlagen - Device and Modbus Address Range Modbus PCD3.Mxx0 12 Modbus Grundlagen – Public Function Codes Modbus PCD3.Mxx0 13 Modbus Grundlagen – Function Codes Controllers Function Codes für Modicon Controller Name Code Program 484 Poll 484 Program Controller Report Slave ID Program 884/M84 Reset Comm. Link 09 10 13 17 18 19 Modbus PCD3.Mxx0 14 Saia Modbus Server – Server Instances Mehrere Server Instanzen sind möglich Server = {Port + Protocol} - Seriell: es sollte pro Schnittstelle nur ein Server verwendet werden (RTU auf Schnittstelle 1, ASCII auf Schnittstelle 2) - TCP/UDP: logische Schnittstelle mehrere Server auf dem gleichen Port / oder dem gleichen Protokoll (TCP auf Port 502, UDP auf Port 502, TCP auf Port 503, …) Server Zugang über Verbindungen - Seriell und UDP: eine Verbindung pro Server Instanz - TCP: eine Verbindung pro angeschlossenem Client Es können keine 2 identische Server Instanzen definiert werden. Modbus PCD3.Mxx0 15 Saia Modbus Client - Channels Channels werden für die Anfragen beim Server verwendet Channel = {Port - Protocol} Port = lokale Schnittstellenadresse (Seriell) oder Ziel-Server port (TCP/UDP) Beispiel: {RTU – Port 2} , {TCP – Port 502} Diagnose Timeouts: Close timeout Verbindungsabbruch (TCP/UDP) – 0 für sofortigen Verbindungsabbruch Response timeout Zeit in der eine Antwort erwartet wird Channel busy - vom senden einer Anforderung bis zum Eintreffen der Antwort (oder Response timeout) es kann keine weitere Anforderung gesendet werden Es können keine zwei identische Kanäle definiert werden. Modbus PCD3.Mxx0 16 Modbus Fragen? Vielen Dank! Modbus PCD3.Mxx0 17