PLCcom für S7

professioneller Zugriff auf S7-Steuerungen für .NET und Java Entwickler

Die Library PLCcom für S7 ist eine speziell für Java / .NET-Softwareentwickler bereitgestellte hoch optimierte Komponente, um Softwareentwicklern Zugriff auf eine S7-SPS zur Verfügung zu stellen, z.B. um Daten auszulesen oder zu schreiben.

PLCcom ist kompatibel zu S7-Steuerungen (200er, 300er, 400er, 1200er, 1500er Baureihe, SoftSPS WinAC RTX sowie Logo! 0BA7, 0BA8 und 0BA0) und CPUs weiterer Hersteller (z. B. VIPA 100V/200V/300V/300S, etc.).

Innovativ und schnell einsetzbar

Bei den Librarys handelt es sich je nach Version um 100% Java oder .Net-Dateien. Die Komponente kann direkt als Verweis eingebunden werden, API-Aufrufe sind nicht notwendig. Es ist problemlos möglich, die Komponente in 32-oder 64 Bit-Umgebungen sowie plattformübergreifend einzusetzen.
Die internen Routinen sind auf High-Performance-Zugriffe optimiert.

Mit im Lieferumfang enthalten sind umfangreiche Code-Beispiele, die die kinderleichte Anbindung der SPS-Steuerung an Ihre Applikation verdeutlichen und auch in Ihren Projekten genutzt werden können.

Nachfolgend einige einfache Code-Beispiele (weitere Beispiele):

PLCcomDevice Device = new TCP_ISO_Device("192.168.1.100", //IP address
                0, //Rack
                2, //Slot
                ePLCType.S7_300_400_compatibel); //Type of Device

Dim Device As PLCcomDevice = New TCP_ISO_Device("192.168.1.100", _ 'IP address
                0, _ 'Rack
                2, _ 'Slot
                ePLCType.S7_300_400_compatibel  'type of device

PLCcomDevice Device = new TCP_ISO_Device("192.168.1.100", //IP address
                0, //Rack
                2, //Slot
                ePLCType.S7_300_400_compatibel); //type of device

Beispiel: Erstellen eines TCP-IP Kommunikationsobjektes

PLCcomDevice Device = new MPI_Device("COM1",        //local serial interface
                0,                                  //local MPI bus address
                2,                                  //PLC MPI bus Address
                eBaudrate.b38400,                   //serial baudrate
                eSpeed.Speed187k,                   //MPI speed
                ePLCType.S7_300_400_compatibel);    //type of device

Dim Device As PLCcomDevice = New MPI_Device("COM1", 'local serial interface
                    0,                              'local MPI bus address
                    2,                              'PLC bus address
                    eBaudrate.b38400,               'serial speed
                    eSpeed.Speed187k,               'MPI bus speed
                    ePLCType.S7_300_400_compatibel) 'type of device

PLCcomDevice Device = new MPI_Device("COM1",        //local serial interface
                0,                                  //local MPI bus address
                2,                                  //PLC MPI bus Address
                eBaudrate.b38400,                   //serial baudrate
                eSpeed.Speed187k,                   //MPI speed
                ePLCType.S7_300_400_compatibel);    //type of device

Beispiel: Erstellen eines MPI Kommunikationsobjektes

PLCcomDevice Device = new MPI_Device("COM1",        //local serial interface
                0,                                  //local MPI bus address
                2,                                  //PLC MPI bus Address
                eBaudrate.b38400,                   //serial baudrate
                ePLCType.S7_300_400_compatibel);    //type of device

Dim Device As PLCcomDevice = New MPI_Device("COM1", 'local serial interface
                    0,                              'local MPI bus address
                    2,                              'PLC bus address
                    eBaudrate.b38400,               'serial speed
                    ePLCType.S7_300_400_compatibel) 'type of device

PLCcomDevice Device = new MPI_Device("COM1",        //local serial interface
                0,                                  //local MPI bus address
                2,                                  //PLC MPI bus Address
                eBaudrate.b38400,                   //serial baudrate
                ePLCType.S7_300_400_compatibel);    //type of device

Beispiel: Erstellen eines PPI Kommunikationsobjektes

PLCcomDevice Device = new TCP_ISO_Device("192.168.1.100", 0, 2, 
ePLCType.S7_300_400_compatibel);
 
//read 10 Bytes from DB1
ReadDataRequest myReadDataRequest = new ReadDataRequest(eRegion.DataBlock,  //Region                1,             //DB only for datablock operations otherwise 0
                0,                  //read start adress
                eDataType.BYTE,     //desired datatype
                10);                //Quantity of reading values
 
//read
ReadDataResult res = Device.ReadData(myReadDataRequest);
 
//get the results
if (res.Quality == OperationResult.eQuality.GOOD)
{
   foreach (Object item in res.GetValues())
    {
        Console.WriteLine("read " + item.ToString());
    }
}
else
{
    Console.WriteLine("error " + res.ToString());

Dim Device As PLCcomDevice = New TCP_ISO_Device("192.168.1.100", 0, 2, ePLCType.S7_300_400_compatibel
 
'read 10 Bytes from DB1
Dim myReadDataRequest As ReadDataRequest = new ReadDataRequest(eRegion.DataBlock,                           1,                                                                                  0,                                                                                  eDataType.BYTE,                                                                     10);                
'read
Dim res As ReadDataResult = Device.ReadData(myReadDataRequest)
 
'get the results
If res.Quality = OperationResult.eQuality.GOOD Then
   For Each item As ReadValue In res.FetchValues()
        Console.WriteLine("read " + item.ToString())
   Next
Else
    Console.WriteLine("error " + res.ToString())
End If

PLCcomDevice Device = new TCP_ISO_Device("192.168.1.100", 0, 2, ePLCType.S7_300_400_compatibel);
 
//read 10 Bytes from DB1
ReadDataRequest myReadDataRequest = new ReadDataRequest(eRegion.DataBlock,  //Region
                1, //DB only for datablock operations otherwise 0
                0, //read start adress
                eDataType.BYTE,  //desired datatype
                10); //Quantity of reading values
 
ReadDataResult res = Device.readData(myReadDataRequest);
 
//evaluate results
if (res.getQuality() == OperationResult.eQuality.GOOD) {
   int Position = 0;
   for (Object item : res.getValues()) {
     System.out.println("read " + item.toString());
   }
}
else
{
    System.out.println("error " + res.toString());
}

Beispiel: einfaches Lesen von Werten

PLCcomDevice Device = new TCP_ISO_Device("192.168.1.100", 0, 2, 
ePLCType.S7_300_400_compatibel);
 
//declare a WriteRequest object and
//set the request parameters
WriteDataRequest myWriteRequest = new WriteDataRequest(eRegion.DataBlock, //Region
                100,               //DB
                0);                //startaddress
                 
//add writable Data here
//in  this case => write 4 bytes in DB100
myWriteRequest.addByte(new byte[] { 11, 12, 13, 14 });
 
 
//write
WriteDataResult res = Device.WriteData(myWriteRequest);
 
//evaluate results
Console.WriteLine("Write successfull! Message: " + res.Message);

Dim Device As PLCcomDevice = New TCP_ISO_Device("192.168.1.100", 0, 2, ePLCType.S7_300_400_compatibel
 
'declare a WriteRequest object and
'set the request parameters
Dim myWriteRequest As New WriteDataRequest(eRegion.DataBlock, _
                                           100, _
                                           0)
 
'add writable Data here
'in  this case => write 4 bytes in DB100 at addres 0
myWriteRequest.addByte(New Byte() {11, 12, 13, 14})
 
 
'write
Dim res As WriteDataResult = Device.WriteData(myWriteRequest)
 
'evaluate results
Console.WriteLine("Write successfull! Message: " + res.Message)

PLCcomDevice Device = new TCP_ISO_Device("192.168.1.100", 0, 2, ePLCType.S7_300_400_compatibel);
 
//declare a WriteRequest object and
//set the request parameters
WriteDataRequest myWriteRequest = new WriteDataRequest(eRegion.DataBlock,  //Region
                100,           //DB
                0);                 //write start address
             
//add writable Data here
//in  this case => write 4 bytes in DB100
myWriteRequest.addByte(new byte[]{11, 12, 13, 14});
 
//write
System.out.println("begin write...");
WriteDataResult res = Device.writeData(myWriteRequest);
 
//evaluate results
 System.out.println("Write successfull! Message: " + res.getMessage());

Beispiel: einfaches Schreiben von Werten

PLCcom für S7 wird in zwei Versionen zur Verfügung gestellt:

  1. .Net-Version
    Die .Net-Version unterstützt die klassische .Net Framework-Programmierung.
    Des Weiteren enthält das Auslieferungspaket eine Version für .Net-Standard Version 2.1 und eine Version für .Net 5.0.
    Diese Komponente kann zur Entwicklung von .Net-Core– , Xamarin– , UWP– oder Unity-Applikationen eingesetzt werden.
    Zusätzlich wird über nuget.org ein nuget-Paket zur Verfügung gestellt.
  2. Java-Version
    Die Java-Version bietet Entwicklern eine Java-Komponente zur Java-Applikationsentwicklung z.B. mit Eclipse- oder Netbeans.
    Seit Version 9 wird zusätzlich auch die Entwicklung von Android-Apps unterstützt.

Effektive Optimierungsmöglichkeiten

PLCcom für S7 wurde mit diversen internen Optimierungs-Möglichkeiten ausgestattet.
Der Entwickler kann festlegen in welcher Art und Weise Lese- oder Schreiboptimierungen intern durchgeführt werden können.
So ist es z.B. möglich beim Lesen gleiche Datenbereiche in gemeinsamen Lesezugriffen zusammenzufassen (COMBINE_AREAS) oder unterschiedliche Datenbereiche in einem gemeinsamen Zugriff Lesen oder zu Beschreiben (Mix-Zugriff CROSS_AREAS).

Zusätzlich bietet die Expert-Edition das zusätzliche Feature die beste Optimierungsmethode intern zu ermitteln (AUTO) und automatisch anzuwenden.
Aufgrund dieser implementierten Optimierungs-Algorithmen werden nur die minimal notwendigen Zugriffe auf die SPS durchgeführt. Hierdurch kann eine fühl- und messbare Verarbeitungsbeschleunigung erreicht werden.

Editionen und Funktionen

Feature Professional Expert

Für gewerbliche oder kommerzielle Nutzung

Top Level Support

Verbindung zu S7-Steuerungen
200er, 300er, 400er, 1200er, 1500er Baureihe, SoftSPS WinAC RTX und CPUs weiterer Hersteller

Verbindung zu S7-Steuerungen Logo!
0BA7 und 0BA8

Lesen und Schreiben von Daten

High Performance-Zugriff

TCP/IP Zugriff

MPI/PPI Zugriff

Mehrfache Schreibe-und Lesezugriffe in einem gemeinsamen Funktionsaufruf

Gleichzeitiges Lesen oder Schreiben von mehreren Werten in verschiedene Bereiche

Bereitstellung mehrerer effektiver Optimierungsmethoden zum effektiven gleichzeitigen Lesen und Schreiben von Werten

Automatische Erkennung der besten Optimierungsmethode

Starten und Stoppen der CPU

Lesen und Setzen der SPS-Systemzeit

Lesen von Infos wie Model, Bestellnummer, Firmware etc.

Abfragen von Betriebsart und aktuellem Status wie Schalterstellung, etc.

Abfrage des Zustandes der LEDs (an, aus, blinken)

Lesen der Systemzustandsliste

Abfrage der Diagnosedaten

Freischalten einer passwortgeschützten Verbindung mittels Passwortübertragung

Abfragen einer Liste aller installierten Blöcke

Lesen der Blocklänge einzelner Objekte

Auslesen einzelner Blöcke im MC7-Format zur weiteren Speicherung (Backup)

Abfragen bestimmter Blockeigenschaften wie z.B. (Version, Author, Erstellungssprache und vieles mehr)

Zurückschreiben von gespeicherten MC7-Dateien in die SPS (Restore)

Restore in abweichende Blocknummer

Löschen von Blöcken

Datenserver für eventgesteuerte Variablen-Überwachung auf der SPS

Fortlaufendes Logging von SPS-Daten in das Filesystem oder in SQL-Datenbanken

Fortlaufendes Logging von SPS-Daten in SQL-Datenbanken

Schreiben eines aktuellen Abbildes der SPS-Daten in das Filesystem

Schreiben eines aktuellen Abbildes der SPS-Daten in SQL-Datenbanken

Verschlüsselte Ablage der Daten im Filesystem

Freie Datenbankwahl durch den Entwickler

Feature
S7-300
S7-400
S7-200
S7-1200
S7-1500
WinAC RTX (ab Version 2010) Logo (ab Version 0BA7)

Lesen von Werten

Schreiben von Werten

Lesen mehrerer nicht zusammenhängender Werte innerhalb eines Zugriffs

Mehrfache Schreibe-und Lesezugriffe in einem gemeinsamen Funktionsaufruf

Gleichzeitiges Lesen oder Schreiben von mehreren Werten in verschiedene Bereiche

Starten und Stoppen der CPU

Lesen und Setzen der SPS-Systemzeit

Lesen von Infos wie Model, Bestellnummer, Firmware, etc.

Abfragen von Betriebsart
und aktuellem Status wie
Schalterstellung, etc.

Abfrage des Zustandes
der LEDs (an, aus, blinken)

Lesen der Systemzustandsliste
(wenn beim SPS-Typ vorhanden)

Abfragen der Diagnosedaten

Freischalten einer
passwortgeschützten Verbindung
mittels Passwortübertragung

Abfragen einer Liste
aller installierten Blöcke
(Alle oder nur einzelne
Blocktypen z.B. nur OBs)

Lesen der Blocklänge
einzelner Objekte

Auslesen einzelner Blöcke
im MC7-Format zur weiteren Speicherung
(Backup)

Abfragen bestimmter
Blockeigenschaften wie z.B.
(Version, Autor,
Erstellungssprache und vieles mehr)

Zurückschreiben von gespeicherten
MC7-Dateien in die SPS
(Restore)

Restore in
abweichende Blöcke

Löschen von Blöcken

Einfaches Lizenzmodell, Top-Level-Support

PLCcom wird zur Erstellung von Individualsoftware pro Entwickler lizenziert, spätere Runtime-Lizenzen fallen nicht an. Probieren Sie PLCcom mit einer 30-tägigen Testversion in Ruhe aus, bevor Sie PLCcom lizenzieren.

Wir möchten, dass Sie mit unserem Produkt zufrieden sind, auch nach dem Kauf lassen wir Sie nicht alleine!
Sollten wider Erwarten Probleme oder Fragen im Zusammenhang mit unserem Produkt auftreten, stehen wir Ihnen unbürokratisch und zeitnah zur Verfügung und unterstützen Sie bei einer Problemlösung.