PLCcom für S7
Symbolischer S7-Zugriff für .net und java Entwickler
Die Library PLCcom für S7 ist eine speziell für java- sowie .net- Softwareentwickler bereitgestellte, hoch optimierte Komponente welche zu 100% unter .net oder java erstellt worden sind. Die Komponente ermöglicht Entwicklern unter den Programmierplattformen .net oder java einen komfortablen und programmgesteuerten Zugriff auf S7-SPS Daten.
Der Zugriff erfolgt je nach Steuerung über
- Put/Get oder
- symbolisch mittels dem Legacy-Zugriff auf ältere Steuerungen
- oder dem symbolischen Zugriffs über Secure Communication (TLS verschlüsselt) auf Geräte der neueren Generation.
PLCcom für S7 ist sowohl kompatibel zu S7-Steuerungen (200er, 300er, 400er, 1200er, 1500er Baureihe, ET200SP, SoftSPS WinAC RTX als auch Logo! 0BA7, 0BA8 0BA0, 0BA1, 0BA2 sowie CPUs weiterer Hersteller (z. B. VIPA 100V/200V/300V/300S, etc.).
Die Libraries unterstützen die Protokolle Profinet, MPI und PPI (siehe Datenblatt)
Die Komponente ist nach den Vorgaben der Cyberresilienz-Verordnung (EU 2024/2847) – kurz CRA – zertifiziert.
Die zugehörigen Zertifikate finden Sie auf der Downloadseite.
PLCcom für S7 wird für zwei Programmierumgebungen zur Verfügung gestellt:
-
- .net-Version
Die .net-Version unterstützt sowohl die klassische .net Framework-Programmierung ab Framework Version 4.7.2 als auch modernere Frameworks bis hin zu .net 10.0.
Das Auslieferungspaket enthält Libraries für das klassische .net Framework Versionen 4.7.2 und 4.8. Des weiteren gibt es Versionen für .net-Standard Version 2.1 sowie Versionen für .net 5.0, .net 6.0, .net 7.0, .net 8.0, .net 9.0 , .net 10.0 im Auslieferungspaket.
PLCcom für S7 (.net Version) wird über ein Nuget-Paket zur Verfügung gestellt. - java-Version
Die java-Version stellt Entwicklern eine Library zur Verfügung, die sich nahtlos in java-basierte Anwendungen integrieren lässt und mit gängigen Entwicklungsumgebungen wie Eclipse oder NetBeans kompatibel ist. Sie unterstützt java JRE / OpenJRE ab Version 11.23 und wurde bis Version 25 getestet.
PLCcom für S7 (java Version) wird über Maven Central Repository zur Verfügung gestellt.
- .net-Version
PLCcom für S7 ist performant
SPS-Kommunikation ist nie „kostenlos“: Egal welches Protokoll Sie benutzen, jeder Zugriff erzeugt in der SPS Kommunikations- und Verarbeitungsaufwand und kann bei hoher Abfragefrequenz die Zykluszeiten beeinflussen.
Bei der Entwicklung wurde durchgängig darauf geachtet, dass alle Komponenten und Algorithmen möglichst performant ausgeführt werden.
Smarte Optimierungen in der Library reduzieren den Kommunikationsaufwand – dadurch sinkt die SPS-Last und die Zykluszeiten bleiben stabil.
- Zugriffe werden effizient gebündelt, statt einzeln übertragen.
- Minimierte Telegramm-Anzahl bei häufigen Abfragen.
- Optional parallelisierbar, wenn maximale Datenrate benötigt wird.
Das Ergebnis: maximale Datenrate bei minimaler SPS-Belastung – ideal für HMI/SCADA-Systeme, Datenlogging und Anwendungen mit vielen Variablen in kurzen Zyklen.
Für den schnellen Einstieg finden Sie lauffähige Beispielprojekte für .NET und Java in unseren GitHub-Repositories.
Nachfolgend zur Veranschaulichung zwei einfache Code-Beispiele:
// Create a device instance
Tls13Device tlsDevice = new Tls13Device("192.168.1.100");
//connect
ConnectResult connectResult = tlsDevice.Connect();
// Which variables do you want to read?
ReadSymbolicRequest readRequest = new ReadSymbolicRequest();
readRequest.AddFullVariableName("DataBlock_1.ByteValue");
readRequest.AddFullVariableName("DataBlock_1.RealValue");
// Read from device
var readResult = tlsDevice.ReadData(readRequest);
// Evaluate results
if (readResult.Quality == OperationResult.eQuality.GOOD)
{
foreach (PlcCoreVariable variable in readResult.Variables)
{
Console.WriteLine($"{variable.VariableDetails.FullVariableName} Value: {variable.Value}");
}
}
else
{
Console.WriteLine($"Read not successfull! Message: {readResult.Message}");
}
' Create a device instance
Dim tlsDevice As New Tls13Device("192.168.1.100")
' connect
Dim connectResult As ConnectResult = tlsDevice.Connect()
' Which variables do you want to read?
Dim readRequest As New ReadSymbolicRequest()
readRequest.AddFullVariableName("DataBlock_1.ByteValue")
readRequest.AddFullVariableName("DataBlock_1.RealValue")
' Read from device
Dim readResult = tlsDevice.ReadData(readRequest)
' Evaluate results
If readResult.Quality = OperationResult.eQuality.GOOD Then
For Each variable As PlcCoreVariable In readResult.Variables
Console.WriteLine($"{variable.VariableDetails.FullVariableName} Value: {variable.Value}")
Next
Else
Console.WriteLine($"Read not successfull! Message: {readResult.Message}")
End If
//create a device instance
Tls13Device tlsDevice = new Tls13Device("192.168.1.10");
// connect
ConnectResult connectResult = tlsDevice.connect();
//which variables do you want to read?
ReadSymbolicRequest readRequest = new ReadSymbolicRequest();
readRequest.addFullVariableName("Datenbaustein_1.ByteValue");
readRequest.addFullVariableName("Datenbaustein_1.RealValue");
// read from device
var readResult = tlsDevice.readData(readRequest);
// evaluate results
if (readResult.getQuality() == OperationResult.eQuality.GOOD) {
for (PlcCoreVariable variable : readResult.getVariables()) {
System.out.println(variable.getVariableDetails().getFullVariableName() + " Value: " + variable.getValue());
}
} else {
System.out.println("read not successfull! Message: " + readResult.getMessage());
}
Beispiel: einfaches Lesen mit symbolischem Zugriff
// Create a device instance
Tls13Device tlsDevice = new Tls13Device("192.168.1.100");
// connect
ConnectResult connectResult = tlsDevice.Connect();
// Create a list of variable to write
List writeVariables = new List();
/*
* IMPORTANT TODO FOR YOU!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* Before you can write, you need the imported variable. Either you have
* determined it by a read operation or you have PLCCom output the empty
* variable (without values)
*/
var variableBody = tlsDevice.GetEmptyVariableBody("DataBlock_1.ByteValue");
// Set the value and add the variable to the write list
variableBody.Value = 1;
writeVariables.Add(variableBody);
variableBody = tlsDevice.GetEmptyVariableBody("DataBlock_1.RealValue");
// Set the value and add the variable to the write list
variableBody.Value = 123.456f;
writeVariables.Add(variableBody);
// create a write request
WriteSymbolicRequest writeRequest = new WriteSymbolicRequest(writeVariables);
// write to device
var writeResult = tlsDevice.WriteData(writeRequest);
// evaluate results
if (writeResult.Quality == OperationResult.eQuality.GOOD)
Console.WriteLine("write successfull!");
else
Console.WriteLine("write not successfull! Message: " + writeResult.Message);
' Create a device instance
Dim tlsDevice As New Tls13Device("192.168.1.100")
' Connect
Dim connectResult As ConnectResult = tlsDevice.Connect()
Dim writeVariables As New List(Of PlcCoreVariable)()
' IMPORTANT TODO FOR YOU!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
' Before you can write, you need the imported variable. Either you have
' determined it by a read operation or you have PLCCom output the empty
' variable (without values)
Dim variableBody = tlsDevice.GetEmptyVariableBody("DataBlock_1.ByteValue")
' Set the value and add the variable to the write list
variableBody.Value = 1
writeVariables.Add(variableBody)
variableBody = tlsDevice.GetEmptyVariableBody("DataBlock_1.RealValue")
variableBody.Value = 123.456F
writeVariables.Add(variableBody)
' create a write request
Dim writeRequest As New WriteSymbolicRequest(writeVariables)
' write to device
Console.WriteLine("begin write...")
Dim writeResult = tlsDevice.WriteData(writeRequest)
' evaluate results
If writeResult.Quality = OperationResult.eQuality.GOOD Then
Console.WriteLine("write successfull!")
Else
Console.WriteLine("write not successfull! Message: " & writeResult.Message)
End If
//create a new device instance
Tls13Device tlsDevice = new Tls13Device("192.168.1.100");
// connect
ConnectResult connectResult = tlsDevice.connect();
// create a list of variables for writing
List writeVariables = new ArrayList();
/*
* Before you can write, you need the imported variable. Either you have
* determined it by a read operation or you have PLCCom output the empty
* variable (without values)
*/
var variableBody = tlsDevice.getEmptyVariableBody("Datenbaustein_1.ByteValue");
// Set the value and add the variable to the write list
variableBody.setValue(1);
writeVariables.add(variableBody);
variableBody = tlsDevice.getEmptyVariableBody("Datenbaustein_1.RealValue");
// Set the value and add the variable to the write list
variableBody.setValue(123.456f);
writeVariables.add(variableBody);
// create a write request
WriteSymbolicRequest writeRequest = new WriteSymbolicRequest(writeVariables);
// write to device
var writeResult = tlsDevice.writeData(writeRequest);
// evaluate results
if (writeResult.getQuality() == OperationResult.eQuality.GOOD)
System.out.println("write successfull!");
else
System.out.println("write not successfull! Message: " + writeResult.getMessage());
Beispiel: einfaches Scheiben mit symbolischem Zugriff
Weitere umfangreiche Codebeispiele finden Sie im Downloadpaket oder hier auf der Beispielseite:
Garantierter schneller Support – Weil Ihre Zeit kostbar ist
Industriekunden wissen: Jede Ausfallzeit bedeutet Produktionsverluste und enorme Kosten. Mit PLCcom für S7 sichern Sie sich nicht nur eine leistungsstarke Kommunikationsschnittstelle, sondern auch ein Rundum-sorglos-Paket:
- 1 Jahr Top-Level-Support: Bei uns erhalten Sie ein Jahr lang exklusiven Support. Sollte es einmal unerwartet zu Problemen kommen, steht Ihnen unser erfahrenes Support-Team sofort zur Seite, um Ausfallzeiten auf ein Minimum zu reduzieren.
- 1 Jahr Maintenance-Plan: Während dieses Zeitraums garantieren wir Ihnen regelmäßige Updates, Upgrades und kontinuierliche Verbesserungen. So bleibt Ihre Software immer auf dem neuesten Stand.
Der Zeitraum kann auf Wunsch verlängert werden. Eine automatische Verlängerung findet nicht statt.
Test-App für „PLCcom für S7“ zum Download verfügbar (Freeware)
Ab sofort steht die Test-App für PLCcom für S7 zum Download bereit. .net und java Entwickler können damit den absoluten oder symbolischen S7-Zugriff auf S7-Steuerungen vorab testen.
Der Quellcode der App ist auch im Downloadpaket der Library enthalten.
Bitte besuchen Sie unsere Download-Sektion, um die App herunterzuladen.
Bereit, PLCcom auszuprobieren?
Der beste und schnellste Weg, unsere Komponente PLCcom kennenzulernen, besteht darin, die kostenlose Testversion herunterzuladen und die Funktionen in Ruhe sowohl kennenzulernen als auch auszuprobieren.
Sie erhalten vollen Zugriff auf alle Funktionen und können in kürzester Zeit mit der Erstellung Ihrer Software beginnen.
Support Information
EU-Konformität (CRA)
Cyber Resilience Act (EU 2024/2847)
Changelog PLCcom für S7
Version 16.5.1
- Bugfix: Fehler beim Lesen remanenter Daten in mehrfach verschachtelten Strukturen behoben.
- Bugfix: Verbesserte Stabilität beim symbolischen Lesen großer Variablenmengen.
- Bugfix: Korrigiertes Verhalten beim wiederholten Lesen bereits bekannter symbolischer Variablen.
- Neu: Symbolische Schreibanforderungen können nun auch schrittweise aufgebaut werden.
- Neu: Variablen können symbolischen Schreibanforderungen nun auch nachträglich hinzugefügt werden.
- Verbesserung: Symbolische Schreibanforderungen werden nun umfassender validiert.
- Verbesserung: Ungültige, leere oder doppelte Einträge in symbolischen Schreibanforderungen werden frühzeitig erkannt.
Version 16.4.7
- Bugfix: Rack/Slot-Kombination 0/0 für LOGO!-Steuerungen wurde wieder als gültige Verbindungseinstellung erkannt.
Version 16.4.6
- Bugfix: Eventuell auftretendes Problem beim Lesen ganzer unoptimierter DBs als Struct. Wenn UDTs mit Bool-Werten oder Bool-Arrays in dem DB vorhanden sind, konnten teilweise falsche Längeninformationen angewandt werden.
- Interne Anpassungen und Verbesserungen.
Version 16.4.4 (nur .net Version)
- Bugfix: Kommunikationsproblem beim optimierten Lesen von String-Arrays oder WString-Arrays
- Bugfix: Verbindungsabbrüche konnten teilweise erst um wenige Sekunden verzögert erkannt werden
- interne Anpassungen und Verbesserungen
Version 16.4.3
- Bugfix: Verbindungsfehler während der Aushandlung einer Put-Get-Verbindung werden jetzt korrekt an den Aufrufer zurückgemeldet. Bisher konnte es vorkommen, dass Connect() trotz fehlgeschlagener PDU-Negotiation kein eindeutiges Fehlerergebnis lieferte.
- Bugfix: Schreiboperationen einer Put-Get-Verbindung konnten eine fehlerhafte Rückmeldung ausgeben, wenn die Verbindung zu einem ungünstigen Zeitpunkt während der Operation abbricht.
Version 16.4.1
- Neu: Von der SPS zyklisch (eine Stunde) eingeleitete Legacy-Verbindungsabläufe werden nun vorzeitig durch einen internen Schwenk der Verbindung abgefangen, nach Außen bleibt die Verbindung immer offen.
- Bugfix: Systemstruct können bei durchgeführter Optimirung bei bestimmten Konstellationen nicht gelesen werden (Result =>Variable not in Inventory)
- Bugfix: Umbrüche in den ToString Funktionen der Variableninstanzen entfernt
- Bugfix: eventuell fehlerhaft serialisierte Timestamps bei Variablenänderungen der Subscriptions konnten möglicherweise zu fehlerhaften Werten der gemeldeten Items führen.
- Update: Upgrade der PackageReferences Microsoft.Extensions.Configuration.Json Version 10.0.7 und System.IO.Ports Version 10.0.7
Version 16.3.4
- Bugfix: Es konnte weiterhin das Problem auftreten, dass Dtl-Datentypen bei durchgeführter Optimierung nicht korrekt serialisiert werden konnten
- interne Anpassungen und Verbesserungen
Version 16.3.2
- Neu: Zur Ausführung ist nun immer die Eingabe des (Test-)Lizenz- Serialkeys notwendig. Das ist leider eine Notwendigkeit aufgrund von gesetzlichen Export-Beschränkungen. Der freie 10-Minuten-Testzeitraum wurde deaktiviert. Ein Trial-Key kann über unsere Download-Seite angefordert werden.
- Bugfix: Es konnte das Problem auftreten, dass Dtl-Datentypen bei durchgeführter Optimierung nicht korrekt serialisiert werden konnten
- Bugfix: Das Hinzufügen von sehr vielen Put/Get- ReadRequests zu einem ReadWriteRequestSet konnte ungewöhnlich lange dauern
Version 16.3.1
- Bugfix: Systemstructs wie Dtl, CRef, etc. und deren Member wurden in einigen Optimierungssituationen falsch mit einer BAD Quality zurückgegeben
- Bugfix: Arrays von Strukturen die nicht 0-basiert waren und indirekt mit GetVariableByFullVariableName abgefragt wurden, wurden falsch als 0-basiert ausgegeben
- Bugfix: Bei optimierten Auslesen von mehrdimensionalen Bool-Arrays konnte abhängig von der Firmwareversion der Steuerung eine Bad-Quality zurückgegeben werden
- Umfangreiche interne Anpassungen und Verbesserungen der Performance
Version 16.2.2 (nur Java Version)
- Bugfix: Stabilität der Notification-Verarbeitung verbessert, Alarm-Events konnten in seltenen Fällen nicht zugestellt werden.
Version 16.2.1
- Neu (Expert): Neue Optimierung ‚Deep Lookup‘ im ReadSymbolicResultSet – Untervariablen können jetzt direkt per FullVariableName über GetVariableByFullVariableName(…) und TryGetVariableByFullVariableName(…) aus dem Read-Ergebnis abgerufen werden, auch wenn beim Lesen nur ein übergeordneter Knoten (z. B. DB, Struct oder Array) angefordert wurde
- Bugfix: Bei sehr schnell aufeinanderfolgenden Connect-/Disconnect-Vorgängen konnte in seltenen Fällen eine Unhandled Exception auftreten – dieses Verhalten wurde behoben
- Bugfix: Korrekte JSON-Ausgabe für Arrays innerhalb von Structs (konsistente und korrekt formatierte Serialisierung)
- Anpassung: Typ-Mapping für eInternalDataType (CLR-Typen / Java-Typen) ist nun in der Library-Dokumentation aufgeführt
- Anpassung: Aktualisierung der Abhängigkeiten (.NET und Java) auf den aktuellen Stand
Version 16.1.3
- Bugfix: Beim symbolischen optimierten Lesen konnte es vorkommen, dass ermittelte Werte den Variablen nicht korrekt zugeordnet werden konnten
- Bugfix: Korrekte Übernahme von cryptoFormat im Decryptor sowie Null-/Empty-Check beim EncryptionPassword im FileSystemConnector (nur java Version)
- Interne Anpassungen
Version 16.1.1
- Neu: Unterstützung für S7-Steuerungen mit Firmware 4.1 (TIA V21)
- Neu: Libraries gegen Controller mit Firmware 4.1 (TIA V21) validiert
- Neu: Unterstützung von S7-1200 G2 Steuerungen
- Neu: Unterstützung für .net 10.0 (nur .net Version)
- Neu: Unterstützung für java 25 (nur java Version)
- Neu: Einschränkung der Ausführung unter java Version 12 ist entfallen (nur java Version)
- Neu: Lesen von Strukturen
- Neu: Lesen kompletter Datenbausteine als Struktur
- Neu: TLS, Server-Zertifikat kundenseitig verifizierbar
- Neu: TLS, Übergabe von Trusted Server-Zertifikaten möglich
- Neu: Umfangreiche Optimierungsfunktionen zum performanten symbolischen Lesen (Expert Edition)
- Neu: Übergabe der gewünschten Optimierung an das ReadSymbolicRequest-Objekt (NONE, OBJECT_BASED, CROSS_OBJECT, SMART, SMART nur bei TLS-Verbindungen verfügbar, Expert Edition)
- Neu: Speicherung der gewünschten Optimierungs- und Ausführungspläne im ReadSymbolicRequest-Objekt (Expert Edition)
- Neu: Direkter Zugriff auf gelesene Variablen innerhalb eines ReadSymbolicResultSet, Funktionen integriert:
- .net-Funktionen: GetVariableByFullVariableName, TryGetVariableByFullVariableName
- java-Funktionen: getVariableByFullVariableName, tryGetVariableByFullVariableName
- Bugfix: Problembehebung bei Variablen oder Datenbausteinen, deren Namen Punkte enthalten
- Bugfix: Falsch zugewiesener Datentyp im S7-Typ „Array of Byte“, sbyte[] wurde durch byte[] ersetzt
- Bugfix: Bei bestimmten Firmwareständen werden Alarm-Timestamps nun korrekt angezeigt
- Neu: PLCcom für S7 ist CRA (Regulation (EU) 2024/2847, Cyber Resilience Act) zertifiziert
- Neu: Modernes Verschlüsselungsformat für den PLCcomDataServer AesCbcHmacSha256_V2 (Default) inkl. eCryptoFormat zur Auswahl zwischen V2 und RijndaelCrypt_Legacy (deprecated).
- Hinweis: Verbindungen über Serial-Port (MPI/PPI) sind nur unter Windows verfügbar
- Allgemein: Update der java Abhängigkeit Bouncy Castle von -jdk15to18 auf -jdk18on (nur java Version)
- Allgemein: Umfangreiche Performanceoptimierungen im symbolischen Bereich
- Allgemein: Umfangreiche interne Anpassungen und Stabilitätsverbesserungen
Version 15.7.3
- Bugfix: Rückgabewerte der Tostring() Funktion der PLcErrorVariable sind nun lesbar
- Bugfix: Formatkorrektur beim Lesen und Schreiben von boolean-Arrays auf 1200er Steuerungen
- interne Stabilitätsverbesserungen
Version 15.7.2
- Bugfix: Lange SPS-Responses können fälschlicherweise zu Timeout Quality führen
Version 15.7.1
- Bugfix: TODArray wurde nicht korrekt aufgelöst
- BugFix: Im CRef json Converter kam es zu einem Fehler
- Bugfix: fehlende Genauigkeit beim LReal-Datentyp
- Bugfix: Problem beim Konvertieren des Wertes aus json bei unterschiedlichen Spracheinstellungen Real / LReal-Datentyp
- Bugfix: Obwohl eine Variable als nicht lesbar/schreibbar gekennzeichnet ist, wurde trotzdem ein Schreib/Leseversuch unternommen
- Bugfix: Benachrichtigung über erfolgten Connect wurde im LegacySymbolicDevice zu früh ausgelöst (nur Java Version)
- Neu: Flag in Variabledetails „IsStructMember“
- Neu: Innerhalb der wurde für eine verbesserte Vergleichbarkeit Datentypen wurde die Compare/IEquatable Schnittstelle implementiert
- Neu: Überarbeitetes Handling von IEC_Timer und IEC_LTimer Typen
- Neu: In den Konstruktoren der Klasse TCP_ISO_Device kann nun auch direkt ein Remote Tsap anstatt der Rack / Slot Kombination übergeben werden
- Neu: Verbesserung der Erkennung eines Verbindungsabbruches
- Weitere interne Anpassungen und Verbesserungen
Version 15.6.5
- Es sind nun SBOM-Files für die .net und java -Versionen im jeweiligen Auslieferungspaket verfügbar
- Bugfix: Problem beim Handling von Bool-Arrays auf 1200er-Steuerungen, welches bei einigen Firmwareständen auftreten konnte, wurde behoben
- Bugfix: Problem beim Handling mehrdimensionaler Bool-Arrays, welches bei einigen Firmwareständen auftreten konnte, wurde behoben
- Bugfix Timeout beim Lesen von Wstring-Arrays und Wstring, welches auf neueren 1500er-Steuerungen auftreten konnte, wurde behoben
- Weitere interne Anpassungen und Verbesserungen
Version 15.6.3
- Beim symbolischen Zugriff werden nun Programmänderungen auf der CPU erkannt. Die Library reagiert auf eine Softwareänderung mit einem Disconnect.
- Eine symbolische Verbindung kann nun zur Performancesteigerung im Dual-Channel-Mode aufgebaut werden. Die Datenanfragen werden dann auf zwei parallele Verbindungen aufgeteilt.
Aktivierung über Property: Device.SetDualChannelModeIsActive(true);
Hinweis: Dieser Modus ist aktuell als experimentell eingestuft, vor dem Einsatz bitte ausführlich mit Ihrer CPU/Firmware-Kombination testen. - Bugfix: Beim Lesen von DTL-Arrays konnte je nach CPU/Firmwareversion ein Fehler auftreten.
Version 15.5.5
- Performanceverbesserung bei Benutzung der Optimierungsart COMBINE_AREAS unter Put/Get
- Weitere interne Anpassungen und Verbesserungen
Version 15.5.4 (nur .net Version)
- Fehlerbehebung beim Optimieren von zusammen gelesenen Bereichen unter Put/Get
Version 15.5.3
- Anpassung, lesen mehrerer längerer Strings aus fehlersicheren (F-) Steuerungen
Version 15.5.2 (nur .net Version)
- Überarbeitung der Fehlerbehebung aus Version 15.4.7 eventuell auftretende Timeouts beim Lesen von größeren Datenmengen von S7-300/400 Steuerungen
Version 15.5.1
- Bugfix: Mögliches Auftreten von Problemen beim gemischten Lesen von Bits in Kombination mit anderen Datentypen unter Put/Get und der Optimierung „COMBINE_AREAS“
- Einführung des Flags IsSubscribable innerhalb der VariableDetails bei symbolischem Zugriff
- Überarbeitung des Handlings von Strukturen innerhalb des symbolischen Zugriffs.
- Weitere interne Anpassungen und Verbesserungen
Version 15.4.7
- Fix eventuell auftretende Timeouts beim Lesen von größeren Datenmengen von S7-300/400 Steuerungen
Version 15.4.6
- Bugfix problematisches Verhalten bei Auftreten von Timeouts innerhalb des TLS-Handshakes auf sehr ausgelasteten Rechnern
Version 15.4.4 (nur Java Version)
- Bugfix mögliches Auftreten von Timeouts beim Schreiben einer größeren Anzahl Variablen
Version 15.4.3
- Bugfix Fehler während Reconnect bei symbolischem Zugriff
- Bugfix: Problem beim Aufbauen einer TLS-Verbindung unter einigen älteren Windows 10 Versionen
- wesentliche Verbesserung der Performance bei symbolischem Zugriff
- Aktualisierung der direkten und transitiven Abhängigkeiten (thirdparty, nur java version)
- Umfangreiche weitere interne Anpassungen und Verbesserungen
Version 15.3.6
- Bugfix bei symbolischem Legacy Zugriff wenn die Telegrammlänge 1024 Bytes überschritten hatte
- Bugfix: Es konnte zu Problemen kommen wenn die einbindende Applikation bestimmte TLS Provider benutzt.
- Bugfix bei Übergabe von Anmeldeinformationen bei Targetframework 4.7.2 und 4.8
- teilweise Verbesserung der Performance bei symbolischem Zugriff
- Aktualisierung der direkten und transitiven Abhängigkeiten (thirdparty)
- Weitere interne Anpassungen und Verbesserungen
Version 15.3.3
- Bugfix bei Übergabe von Autoconnect-Timeouts bei symbolischem Zugriff
- Weitere interne Anpassungen und Verbesserungen
Version 15.3.1
- Anpassung an neuere Logo!-Steuerungen
- Bugfix: Fehler beim Schreiben von S7Strings und Date-Werten
- Weitere interne Anpassungen und Verbesserungen
Version 15.2.8
- Performance-Verbesserungen bei Zugriff über Put/Get
- Diverse interne Anpassungen, Bugfixes und Verbesserungen
Version 15.2.2
- Unterstützung von Steuerungen, welche mit TIA20 konfiguriert wurden
- Symbolischer Legacy-Zugriff für S7-1200 und S7-1500 Steuerungen, welche eine Firmwareversion kleiner als 2.9 (S7-1500 ) oder 4.5 (S7-1200) besitzen, oder mit TIA Version kleiner V17 programmiert worden sind
- Symbolischer Zugriff mittels TLS auf Steuerungen unter Anmeldung mit User+Passwort möglich
- Zugriff auf das Alarmsystem mit 1200er und 1500er Steuerungen
- Quittierung von Alarmen mit 1200er und 1500er Steuerungen
- Starke Performance-Verbesserungen bei Zugriff über Put/Get
- Diverse interne Anpassungen, Bugfixes und Verbesserungen
- Die bestehenden Editionen wurden zur Vereinfachung zu einer einzigen gemeinsamen Edition zusammen geführt
Version 14.1.14
- Bugfix: Fehlerhaftes Lesen und Schreiben von DTL-Werten beim absolut adressiertem Zugriff
Version 14.1.12 (nur .net Version)
- Bugfix: fehlerhaft zusammen gesetztes Nuget-package
Version 14.1.11
- Bugfix: Verbesserung der Verbindungsqualität bei Verbindung mit dem TIA-Simulator
- Neu: Unterstützung des symbolischen Zugriffs auf ET200SP-Steuerungen
Version 14.1.10 (nur java Version)
- Bugfix: in einigen Fällen konnte ein Fehler durch fehlerhaftes Zertifikat in der Library auftreten
Version 14.1.9
- Neu: Freigabe Passwortübergabe zur Freischaltung der Verbindung bei symbolischem Zugriff
- Bugfix: Fehler beim Lesen und Schreiben von WString Werten
- Bugfix: Fehler beim Lesen und Schreiben von Date_and_Time, LDate_and_Time, Time_of_Day und LTime_of_Day Variablen
Version 14.1.7
- Neu: Symbolisches Lesen, Schreiben und Abbonieren von Daten von S7-1200er/1500er-Steuerungen
- Unterstützung von Logo Steuerungen 0BA01 und 0BA02
- Unterstützung des .Net 8.0 Frameworks (.Net Version)
- Unterstützung / Test Jdk/Openjdk ab Version 11.23 bis Version 21 (Java Version)
(Bitte beachten Sie: Java Version 12 wird aufgrund von tls 1.3 Problemen nicht unterstützt)
- Freigabe der folgenden Datentypen für alle Framework-Versionen (.Net Version):
- LTime*
- LDate_And_Time*
- LTime_of_Day*
- DTL*
- Anpassung und Test mit geänderten SPS- Firmware Versionen
- diverse Anpassungen von Bezeichnern um Benennungskonventionen der jeweiligen Programmierumgebung einzuhalten zu können. Bitte beachten Sie das Dokument:
https://www.indi-an.com/help_s7/Important_notes_for_migrating_from_version_12_or_older_german.pdf - Bugfix: Fehlerhafte Adressierung beim Schreiben von Bits bei write mode Cross_Area
- Diverse interne Anpassungen und Verbesserungen
Version 12.1.5
- Unterstützung des .Net 7.0 Frameworks (.Net Version)
- Unterstützung / Test Jdk/Openjdk bis Version 19 (java Version)
- Implementierung neuer Datentypen:
- Lint
- LWord
- LReal
- S7WString
- LTime*
- LDate_And_Time*
- LTime_of_Day*
- DTL*
- Anpassung und Test mit geänderten SPS- Firmware Versionen
- Bugfix: Beim Schreiben von S7String-Werten wurde die Längenangabe nicht korrekt gesetzt
- Diverse interne Anpassungen und Verbesserungen
*) Verfügbar in der java Version und innerhalb der .Net Version ab .Net 7
Version 11.2.1 (nur .Net Version)
- Bugfix: Problem beim Einbinden der Library in ein net5.0 Projekt
- Bugfix: Nach Neustart des PLCcomDataServers wird die Quallity falsch als undefiniert ausgegeben
- Beispielprojekte im Auslieferungspaket nun auch für die Zielplattform net5.0 vorhanden
- Verweisupgrade System.Io.Ports auf Version 5
- Unterstützung des .Net 5.0 Frameworks
- Nuget Package verfügbar
- .Net Framework version mindestes 3.5
- Anpassungen für neue SPS Typen und Firmeware-Stände
- Bugfix: Auftretender Fehler -125 beim Schreiben von Werten mit dem S7STRING-Datentyp
- Bugfix: Auftretender Fehler “Ressourcendatei nicht gefunden” beseitigt
- Bugfix: Fehlende Library “winmm.dll” bei Ausführung in Linux Betriebssystemen
- interne Optimierungen
- Geschwindigkeitsoptimierung bei Leseoption ‘Auto’
- Unterstützung neuer Firmwarestände
- Problem zur Abwärtskompabilität beseitigt
- Funktion PLCcomDatServer.AddReadDataRequest(ReadDataRequest value, String ItemKey) wieder eingeführt
- interne Optimierungen
- Unterstützung von Logo! 0BA0 Steuerungen
- Bereitstellung als .Net Standard 2.1, .Net3.5 und .Net 4.6.1 Library (.net Library)
- verbesserte Anpassungen bei Benutzung von openJRE/openJDK System-Libraries (Java Library)
- Ausführung unter Android ab Api 21 (Java Library)
- neue Möglichkeit zur Parametrierung der Balance zwischen CPU-Nutzung und Geschwindigkeit der Datenbereitstellung (neues enum ePerformance)
- verbesserte Unterstützung neuer Firmwareständer von 1200er- und 1500er-Steuerungen
- interne Bugfixes und Verbesserungen
- Bugfix: Beim Abfragen langer Datenströme aus der SPS konnte es zu einer Endlosschleife kommen, wenn der Optimierungsmode AUTO eingestellt wurde
- interne Optimierungen
- Komponente steht nun auch für .net-Standard, .Net-Core, Xamarin, UWP und Android zur Verfügung
- neue Funktion ReadWriteData zum optimierten Lesen und Schreiben von Daten
- gleichzeitiges Lesen oder Schreiben von Daten in einem Funktionsaufruf in unterschiedlichen Bereichen
- neue Optimierungsmethoden, CROSS_AREA (Mix-Mode) und COMBINE_AREAS (Bereiche zusammenfassen)
- automatische Ermittlung des besten Optimierungs-Mode (Nur in Expert-Edition)
- div. interne Verbesserungen der Algorithmen
Im Zuge der Bereinigung wurden diverse Methoden und Funktionen entfernt.
Diese Funktionalitäten waren bereits innerhalb der Vorversionen als deprecated markiert und sollten dementsprechend schon längere Zeit nicht mehr benutzt werden.
Folgende Funktionen wurden entfernt:
| Version | Type | Entfernte Funktion | Stattdessen zu benutzende Funktionalität |
|---|---|---|---|
| Alle | enum | ePLCType.Logo_compatibel | ePLCType.Logo0BA7_compatibel oder ePLCType.Logo0BA8_compatibel |
| Alle | enum | eDataType.UNICODECHAR | eDataType.STRING oder eDataType.S7_STRING |
| Alle | enum | eDataType.BCD | eDataType.BCD16 |
| Alle | object | ReadItemRequest | ReadDataRequest |
| Alle | object | ReadItemRequestCollection | ReadWriteRequestSet |
| Alle | object | ReadRequest | ReadDataRequest |
| Alle | object | WriteRequest | WriteDataRequest |
| Alle | object | ReadItemResult | ReadDataResult |
| Alle | object | ReadItemResultCollection | ReadWriteResultSet |
| Alle | object | ReadResult | ReadDataResult |
| Alle | object | WriteResult | WriteDataResult |
| .Net | method | PLCcomDevice.SetPLCTime(DateTime) | PLCcomDevice.SetPLCClockTime (DateTime) |
| Java | method | PLCcomDevice.setPLCTime(Calendar) | PLCcomDevice.setPLCClockTime (Calendar) |
| .Net | function | PLCcomDevice.GetPLCTime() | PLCcomDevice.GetPLCClockTime() |
| Java | function | PLCcomDevice.getPLCTime() | PLCcomDevice.getPLCClockTime() |
| .Net | function | PLCComDataServer.AddReadDataRequest (ReadDataRequest value, String ItemKey) |
PLCComDataServer.AddReadDataRequest (ReadDataRequest value) |
| Java | function | PLCComDataServer.addReadDataRequest (ReadDataRequest value, String ItemKey) |
PLCComDataServer.addReadDataRequest (ReadDataRequest value) |
| .Net | function | PLCcomDevice.GetLocal_MPI() | PLCcomDevice.GetBUS_ADRESS_LOCAL() |
| Java | function | PLCcomDevice.getLocal_MPI() | PLCcomDevice.getBUS_ADRESS_LOCAL() |
| .Net | method | PLCcomDevice.SetLocal_MPI(int) | PLCcomDevice.SetBUS_ADRESS_LOCAL(int) |
| Java | method | PLCcomDevice.setLocal_MPI(int) | PLCcomDevice.setBUS_ADRESS_LOCAL(int) |
| .Net | function | PLCcomDevice.GetPLC_MPI() | PLCcomDevice.GetBUS_ADRESS_PLC() |
| Java | function | PLCcomDevice.getPLC_MPI() | PLCcomDevice.getBUS_ADRESS_PLC() |
| .Net | method | PLCcomDevice.SetPLC_MPI int) | PLCcomDevice.SetBUS_ADRESS_PLC(int) |
| Java | method | PLCcomDevice.setPLC_MPI(int) | PLCcomDevice.setBUS_ADRESS_PLC(int) |
| .Net | function | PLCcomDevice.GetLocal_PPI () | PLCcomDevice.GetBUS_ADRESS_LOCAL() |
| Java | function | PLCcomDevice.getLocal_PPI () | PLCcomDevice.getBUS_ADRESS_LOCAL() |
| .Net | method | PLCcomDevice.SetLocal_PPI(int) | PLCcomDevice.SetBUS_ADRESS_LOCAL(int) |
| Java | method | PLCcomDevice.setLocal_PPI(int) | PLCcomDevice.setBUS_ADRESS_LOCAL(int) |
| .Net | function | PLCcomDevice.GetPLC_PPI() | PLCcomDevice.GetBUS_ADRESS_PLC() |
| Java | function | PLCcomDevice.getPLC_PPI() | PLCcomDevice.getBUS_ADRESS_PLC() |
| .Net | function | ConnectResult.HasConnected | OperationResult.getQuality |
| Java | function | ConnectResult.hasConnected() | OperationResult.getQuality() |
| .Net | function | ConnectResult.HasWorked | OperationResult.getQuality |
| Java | function | ConnectResult.HasWorked () | OperationResult.Quality() |
| .Net | function | BasicInfoResult.Ordernummer | BasicInfoResult.Ordernumber |
| Java | function | BasicInfoResult.Ordernummer() | BasicInfoResult.Ordernumber() |
Innerhalb der neuen Version wurden folgende Funktionalitäten als deprecated markiert:
| Version | Type | Deprecated | Stattdessen zu benutzende Funktionalität |
|---|---|---|---|
| .Net | function | ReadData(ReadDataRequestCollection) | ReadWriteData(ReadWriteRequestSet) |
| Java | function | readData(ReadDataRequestCollection) | readWriteData(ReadWriteRequestSet) |
| Java | function | DeviceInfo() | getDeviceInfo() |
| Java | function | DisConnect() | disConnect() |
| Java | function | BeginConnect() | beginConnect() |
| Java | function | StartPLC() | startPLC() |
| Java | function | GetPLCClockTime() | getPLCClockTime() |
| Java | function | SetPLCClockTime(Calendar) | setPLCClockTime(Calendar) |
| Java | function | GetLEDInfo() | getLEDInfo() |
| Java | function | GetBasicInfo() | getBasicInfo() |
| Java | function | GetCPUMode() | getCPUMode() |
| Java | function | GetBlockList() | getBlockList() |
| Java | function | GetBlockLenght(eBlockType, int) | getBlockLenght(eBlockType, int) |
| Java | function | ReadPLCBlock_MC7(eBlockType, int) | readPLCBlock_MC7(eBlockType, int) |
| Java | function | WritePLCBlock_MC7(WritePLCBlockRequest) | writePLCBlock_MC7(WritePLCBlockRequest) |
| Java | function | DeleteBlock(eBlockType, int) | deleteBlock(eBlockType, int) |
| Java | function | GetDiagnosticInfo() | getDiagnosticInfo() |
| Java | function | GetSystemStatusList(int, int) | getSystemStatusList(int, int) |
| Java | function | BasicInfoResult.Ordernumber() | BasicInfoResult.getOrdernumber() |
| Java | function | BasicInfoResult.ModuleVersion () | BasicInfoResult.getModuleVersion () |
| Java | function | BasicInfoResult.FirmwareVersion () | BasicInfoResult.getFirmwareVersion() |
| Java | function | BasicInfoResult.Name () | BasicInfoResult.getName() |
| Java | function | CPUModeInfoResult.CPUModeInfo() | CPUModeInfoResult.getCPUModeInfo() |
| Java | function | CPUModeInfoResult.CPUStateInfo() | CPUModeInfoResult.getCPUStateInfo() |
| Java | function | LEDInfoResult.LEDInfo() | LEDInfoResult.getLEDInfo() |
| Java | function | OperationResult.InnerException() | OperationResult.getInnerException() |
| Java | function | OperationResult.Message() | OperationResult.getMessage() |
| Java | function | OperationResult.Quality () | OperationResult.getQuality() |
- (nur Java Version) Bugfix für Fehler beim Verbinden zu WinAC RTX -Steuerungen
- eventuell auftretender Fehler beim Lesen und Schreiben langer Datenwerte beseitigt
- Assemblies sind nun mit Code Signing Zertifikat signiert
- Bugfix: Falscher Monat beim Lesen von DATR_AND_TIME-Werten
- Fehlerbehebung eines eventuell auftretenden Timeouts bei Ausführung der “IsConnected”-Funktion aus zweitem paralellem Thread
- Beseitigung von Komptabilitätsproblemen bei Kommunikation mit 1500er-Steuerung mit älterer Firmware
- Anpassung des Verhaltens des Telegrammverkehrs mit 1500er-Steuerung bei auftretenden Netzwerkproblemen
Version 8.1.3 (nur für die .Net Versionen)
- überflüssige Debug-Ausgaben wurden entfernt
- bessere Unterstützung neuerer Firmware-Stände
- Optimierung der Kommunikations-Abläufe
- Bugfix: Eventuell auftretende 0-Werte bei Kommunikation mit WinAC RTX-Steuerungen
- kleinere weitere Fehlerkorrekturen
- Bugfix: Evtl. auftretender Fehler beim Schreiben von Werten behoben
- Bugfix: 0 Reference error / DataImage logging
- verbessertes Stabilitätsverhalten
- erweiterte und schnellere Erkennung von TCP-Verbindungsabbrüchen
- Bugfix beim Verbindungsaufbau zu bereits anderweitig verbundenen Logo!0BA8- Steuerungen
- Bugfix: Schreiben von Merkern bei Angabe von DB
- neue unterstützte Datentypen: Time of Day, Time, Date, BCD8, BCD16, BCD32, BCD64
- bestehendes Format BCD wird abgelöst von BCD16
- Bugfix: Fehlerbehandlung nullbasierter Strings
Version 7.3.0 (nur für die .Net und WinCE Versionen)
- Signaturprobleme behoben
Version 7.2.0
- Bugfix beim Schreiben von mehr als 485 Bytes in einer S7 1500er Steuerung
-
Vereinheitlichung des Klassenmodels bei Lesen, Schreiben und Zugriff auf die ReadCollection
-
detaillierte Diagnose-Ausgaben für jeden einzelnen Request zur effizienten Fehlersuche
-
vollständige Unterstützung der Siemens Logo! 0BA8
-
Datenserver für eventgesteuerte Variablen-Überwachung auf der SPS (nur Expert-Version)
-
Bereitstellung von Logging-Konnektoren für (nur Expert-Version)
- fortlaufendes Logging von SPS-Daten in das Filesystem oder in SQL-Datenbanken
- Schreiben eines aktuellen Abbildes der SPS-Daten in das Filesystem oder in SQL-Datenbanken zur weiteren Verwendung
- verschlüsselte Ablage der Daten im Filesystem
- durch Definition und Übergabe von Datenbankverbindungen durch den Entwickler keine Einschränkungen bei dem Datenbank-Typ (eine Liste der getesteten SQL-Datenbänke findet sich im Unterverzeichnis /docs)
-
Performance-Optimierungen
-
kleinere Bugfixes
-
komplette Überarbeitung der Beispiel- und Testprogramme
Version 6.14.0
-
Bugfix: Fehler beim Lesen von S7-Strings beseitigt, wenn aktuelle Länge der maximalen Länge entsprach
-
Bugfix beim Lesen von Merkern (Version 6.10.0)
Version 6.10.0
-
interne Verbesserungen
-
weitere Problembehebung wenn Bausteine mehr als 113 Ojekte
-
Fehlerbeseitigung wenn DB-Nummer > 9999
Version 6.9.0
-
interne Verbesserungen
-
Problembehebung wenn Bausteine gleich mehr als 113 Ojekte
-
Problemlösung bei evtl. auftretenden timeouts bei MPI-Verbindungen
-
Bugfix beim Auslesen von vielen Datenblöcken (GetBlocklist)
-
bei der Deaktivierung der Optimierung beim Lesen von ReadCollections konnte ein Fehler auftreten, dieser wurde behoben
-
Methode setOptmize durch setOptimize ersetzt
-
SetLength als deprecated markiert
-
Fehlerbeseitigung beim Schreiben und Lesen von S7Strings länger als 127 Bytes
- Möglichkeit zum Lesen vorzeichenloser Bytes hinzugefügt
-
Problem behoben >> Fehler beim nachfolgenden schreiben von mehreren Blöcken, wenn die SPS wenig freien Speicher hat
-
Problem behoben >> Wenn beim Lesen eine ReadItemRequestCollection und das Device nicht verbunden ist, wird beim zweiten Lese-Versuch eine NullReferenzException auftreten
-
Datentyp S5 Time hinzugefügt
-
Property Speed in der PLCcomDevice-Basisklasse implementiert (nur .Net, und WinCE-Version)
-
getSpeed und SetSpeed in der PLCcomDevice-Basisklasse implementiert (nur Java-Version)
-
Bugfix >> Fehler beim Hinzufügen eines Items zu einer ReadCollection mit aktivierter Optimierung
-
Einführung einer Version für Windows CE 5.0 und 6.0 (z.B. für ARM-Prozessoren)
- Unterstützung der Siemens LOGO!-SPS (Version 0BA7)
- Starten und Stoppen von S7-1200er SPSsen
- Abfrage angelegter Bausteine
- Abfrage Bausteinlänge
- Backup vorhandener Bausteine
- Restore vorhandener Bausteine
- Restore unter geänderter Blocknummer
- Ausgabe von Blockdetails wie z.B. Erstellungssprache (AWL, KOP, etc.), Autor, Version, Rohdaten, Header, Footer uvm.
- Abfrage Diagnosebuffer und Rückgabe der Meldungen in Klartext
- Löschen von Bausteinen
- Implementierung einer Möglichkeit zur Übergabe eines Passwortes bei Zugriff auf SPSsen mit Kennwortschutz
- Unterstützung von PLCSIM (ab Version 5.4 > installiertes Netzwerkgateway z.B. NetToPlcSim vorausgesetzt)
- Einführung einer zentralen abstrakten Basisklasse zur Ableitung der Device-Klassen (TCP_ISO_DEVICE, MPI_DEVICE, PPI_DEVICE)
- Einführung von Methoden zum direkten Schreiben von Strings und S7Strings unter Berücksichtigung der Codepage oder einer angegebenen CultureInfo
- Auslesen der Basisinformationen beim Verbinden des Devices, Bereitstellung der Informationen als BasicInfoResult über das Property DeviceInfo
- Einführung von “Service-Verbindungen” zum erweiterten Ansteuern von Logo!-SPSsen
- Übergabemöglichkeit des SPS- Kommunikationsports bei TCP-IP-Verbindungen
- Übergabemöglichkeit des lokalen Kommunikationsports bei TCP-IP-Verbindungen (wichtig für Firewalleinstellungen)
- Bereitstellung einer von Verbindungsinformationen als ConnectionState
- Event On_ConnectionStateChange bei Änderung des ConnectionState implementiert
- Möglichkeit zur nutzung eines asynchronen Verbindungsaufbaus implementiert
- AutoConnect mit einstellbarer max. Ruhezeit bis automatischem Disconnect
- Internationalisierung sämtlicher Meldungen, momentan in Englisch (default) und Deutsch
- Abfrage der Systemzustandslisten
- zusätzliche Abfrage von CPU-State zu CPU-Mode (z.B. Betriebszustand, Schalterstellung etc.)
- komplette Überarbeitung der Beispielanwendungen
- Umorganisation interner Abläufe zur weiteren Performancesteigerung
- Es kommt nicht mehr zu einem Timeout mit Verbindungstrennung, wenn die Systemzeit umgestellt wird, z.B. Sommer/Winterzeit
- Problem beim Lesen mit einer optimierten ReadItemResultCollection wenn ein DB größer 2206 ist, wurde beseitigt
- Methoden zum Lesen und Schreiben von UniCode werden von Methoden zum direkten Schreiben von Strings und S7Strings ersetzt und wurden als “deprecated” markiert
- innerhalb der Result-Klassen wird die Quality des Vorgangs als Enum zurückgegeben, sodass das Fehlertext nicht mehr geparst werden muss
- Umbenennung des Rückgabewertes der Klasse BasicInfoResult von Ordernummer in OrderNumber. Der Member Ordernummer wurde als “deprecated” markiert
- Ablösung der Propertys Local_MPI, Local_PPI, PLC_MPI, PLC_PPI durch die Propertys BUS_ADRESS_LOCAL und BUS_ADRESS_PLC innerhalb der Device-Klassen. Local_MPI, Local_PPI, PLC_MPI, PLC_PPI wurden als “deprecated” markiert.
- Ablösung der Funktionen GetPLCTime und SetPLCTime durch die Funktionen GetPLCClockTime und SetPLCClockTime sowie Rückgabe eines PLCClockTimeResult-Objektes. GetPLCTime und SetPLCTime wurden als “deprecated” markiert.
- interne Fixes…
-
kompatibel zu Siemens SoftSPS WinAC RTX 2010
- kompatibel zu Siemens SPS der 1500er-Serie
- unterstützt das .Net-Framework 4.5
- Bugfix GetPLCTime
- Performanceoptimierungen beim Zugriff mit TCP-IP
- Bugfix beim Adressieren von Rack + Slot
-
Bugfix GetPLCTime
- Bugfix Result-Ausgabe beim Schreiben
-
Mit dem neuen Upgrade erzielt die PLCcomS7-Library eine deutliche Performance-Steigerung für zyklisch wiederkehrende Lesezugriffe.
Eine wesentliche Neuerung ist die Einführung neuer “ReadItemCollection-Objekte”, zu denen die einzelnen zu lesenden Variablen (z. B. einzelne DINT-Werte) hinzugefügt werden.
Beim Lesen werden diese Variablen zu optimalen Lesezugriffen auf die jeweilige SPS zusammengefasst. So werden die notwendigen Lesezugriffe zur SPS auf ein Minimum reduziert, was eine stark verbesserte Performance im Gegensatz zu einzeln abgefragten Variablen bedeutet.
Auch entfällt die Zusammenfassung von Variablen zu einem Stream durch den Softwareentwickler – so wird die Entwicklungszeit spürbar verkürzt und das Handling stark vereinfacht.
Interne Ablaufänderungen sorgen darüber hinaus für eine verbesserte Performance und Stabilität.
-
Bugfix write Int
-
eventuell auftretende Probleme mit VIPA-CPUs behoben
-
Unterstützung der S7 1200er Baureihe
-
.NET Framework 4 kompatibel
-
Bugfix read Byte
-
Bugfix write Dword
-
Bugfix bei “ADDWORD”
-
Bugfix beim event. „Fehler schreiben von Bits“
-
BugFix SetPlcTime
-
Starten und Stoppen der CPU
- Auslesen von Seriennummer und Firmwareversion
- Auslesen der Schlüsselschalterstellung
- Auslesen von LED-Infos
- Lesen und Schreiben von Date_and_Time Werten
-
Unterstützt die Kommunikation mittels PPI Protokoll
-
Unterstützt die Kommunikation für SPS S7-200 mittels CP-243 (TCP/IP)
- lauffähig und getestet unter Linux mit dem Mono Framework 2.4
- div. Performanceverbesserungen
Dokumentation PLCcom für S7
Anhang A – PUT/GET Guide .NET
Anhang B – Symbolic Guide .NET
Anhang C – Security Guide .NET
Anhang D – LOGO! Guide .NET
Anhang E – External Logging Guide .NET
Anhang F – Migration Guide .NET
Anhang A – PUT/GET Guide Java
Anhang B – Symbolic Guide Java
Anhang C – Security Guide Java
Anhang D – LOGO! Guide Java
Anhang E – External Logging Guide Java
Anhang F – Migration Guide Java
Cyber Resilience Act (CRA) – EU-Konformitätsdokumente (EU 2024/2847)
PLCcom for S7 .NET
PLCcom for S7 Java


