Voraussetzung
-
Die TIA Portal Openness-Anwendung ist mit dem TIA Portal verbunden.
Siehe Verbindung zum TIA Portal aufbauen -
Ein Projekt ist geöffnet.
Siehe Projekt öffnen -
Die PLC ist nicht online.
Verwendung
Mit TIA Portal Openness können Sie über die Klasse PlcBlockProtectionProvider und den Dienst PlcBlockProtectionProvider einen Baustein mit einem Passwort schützen und den Passwortschutz wieder aufheben. Der Dienst PlcBlockProtectionProvider ist bei Bausteinen verfügbar, die folgende Voraussetzungen erfüllen:
-
Der Baustein kann einen Know-how-Schutz erhalten
-
Der Baustein ist ein Code-Baustein oder eine globale DB
-
Der Baustein muss übersetzt werden
-
Der Baustein ist im aktuellen PLC unterstützt oder editierbar
-
Der Baustein befindet sich nicht in einem schreibgeschützten Kontext
-
Der Baustein ist nicht Know-how-geschützt
-
Der Baustein ist nicht online
-
Der Baustein ist keine CPU-DB
-
Der Baustein nutzt keine klassische Verschlüsselungssprache, ProDiag oder ProDiag-OB
-
Der Baustein ist kein verschlüsselter importierter klassischer Baustein
Falls der Baustein nicht alle Bedingungen erfüllt, wird von der Methode GetService() eine Nullreferenz ausgegeben.
Einen Baustein schützen
Legen Sie mit der Methode Protect() ein Passwort fest, um den Programmierbaustein zu schützen.
In folgenden Fällen tritt ein Fehler auf:
-
Wenn Sie einen bereits geschützten Baustein zu schützen versuchen: Eine EngineeringTargetInvocationException wird mit einer Meldung ausgelöst, die besagt, dass Sie kein bereits geschütztes Objekt schützen können.
-
Wenn Sie einen Baustein mit einem leeren String als Passwort zu schützen versuchen: Eine EngineeringTargetInvocationException wird mit einer Meldung ausgelöst, die besagt, dass kein Passwort angegeben wurde.
-
Wenn Sie einen fehlersicheren Baustein zu schützen versuchen, während das Failsafe-Programm passwortgeschützt ist: Eine EngineeringTargetInvocationException wird ausgelöst.
-
Wenn Sie einen fehlersicheren Baustein zu schützen versuchen, während dieser Baustein nicht aufgerufen ist: Eine EngineeringTargetInvocationException wird ausgelöst.
Ungeschützter Baustein
Entfernen Sie das Passwort, mit dem der Programmierbaustein geschützt ist, mit Hilfe der Methode Unprotect().
In folgenden Fällen tritt ein Fehler auf:
-
Wenn Sie den Schutz eines bereits ungeschützten Bausteins aufzuheben versuchen: Eine EngineeringTargetInvocationException wird mit einer Meldung ausgelöst, die besagt, dass Sie nicht den Schutz eines ungeschützten Objekts aufheben können.
-
Wenn Sie den Schutz eines Bausteins mit dem falschen Passwort aufzuheben versuchen: Eine EngineeringTargetInvocationException wird mit einer Meldung ausgelöst, die besagt, dass das Passwort nicht akzeptiert wurde.
-
Wenn Sie einen Baustein mit einem leeren String als Passwort zu schützen versuchen: Eine EngineeringTargetInvocationException wird mit einer Meldung ausgelöst, die besagt, dass kein Passwort angegeben wurde.
Programmcode
|
PlcBlock block = ...; PlcBlockProtectionProvider protectionProvider = block.GetService<PlcBlockProtectionProvider>(); if (protectionProvider != null) { // ... // perform know-how protection related operations here } |
Nach ungültigen Zeichen suchen
Sie können einen Baustein unter Verwendung der Protect()-Methode mit beliebigen Zeichen schützen, einschließlich Rückschritt, Tab usw. Bei dem Passwort, das zum Schutz eines Bausteins angegeben wird, handelt es sich um einen SecureString. Sie können mit GetInvalidPasswordCharacters() prüfen, ob das angegebene Passwort ungültige Zeichen enthält.
|
SecureString CreatePasswordString(ProtectionProvider protectionProvider, IEnumerable<char> contentCharacters) { IList<char> invalidCharacters = protectionProvider.GetInvalidPasswordCharacters(); SecureString password = new SecureString(); foreach(char ch in contentCharacters) { if (!invalidCharacters.Contains(ch)) { password.AppendChar(ch); } else { // at least one of the content characters is not valid // signal an error - e.g. throw an exception ... } } return password; } |
In folgenden Fällen tritt ein Fehler auf:
-
Wenn Sie den Schutz eines bereits ungeschützten Bausteins aufzuheben versuchen: Eine EngineeringTargetInvocationException wird mit einer Meldung ausgelöst, die besagt, dass Sie nicht den Schutz eines ungeschützten Objekts aufheben können.
-
Wenn Sie den Schutz eines Bausteins mit dem falschen Passwort aufzuheben versuchen: Eine EngineeringTargetInvocationException wird mit einer Meldung ausgelöst, die besagt, dass das Passwort nicht akzeptiert wurde.
-
Wenn Sie einen Baustein mit einem leeren String als Passwort zu schützen versuchen: Eine EngineeringTargetInvocationException wird mit einer Meldung ausgelöst, die besagt, dass kein Passwort angegeben wurde.