OEM-Applikationslizenz in einer SPS-Applikation abfragen

OEM-Applikationslizenz in einer SPS-Applikation abfragen 1:

Nutzung von OEM-Lizenzen = Bootprojekt verschlüsseln!

Denken Sie daran, dass die per FB_CheckLicense abgefragte License-ID im Binärcode mit einem Hex-Editor leicht gefunden und (mit einem gewissen Aufwand) manipuliert werden kann. Arbeiten Sie daher unbedingt mit einer Verschlüsselung des Bootprojektes (am sichersten), oder verschleiern Sie zumindest die abgefragte License-ID im Quellcode bestmöglich.

Die Lizenzüberprüfung im Aufstartprozess der TwinCAT Runtime erfolgt in zwei Schritten:

1. TwinCAT 3 liest zunächst die im System (auf der Festplatte) gespeicherten Lizenzdateien ein, überprüft deren Inhalt und erstellt eine interne Liste der gefundenen Lizenzen.
2. Die finale Überprüfung der Lizenzen erfolgt nach der Inbetriebnahme des EtherCAT-Busses, da erst dann alle erforderlichen Informationen zur Verfügung stehen. (Vorher kann z. B. das Vorhandensein einer EL6070 Lizenzklemme nicht verifiziert werden.)

Das Ergebnis können Sie nach dem abgeschlossenen Aufstart mit dem Funktionsbaustein FB_CheckLicense abrufen.

Im laufenden Betrieb (nach dem Aufstart und der finalen Lizenzprüfung) wird der Status der Lizenzen von der TwinCAT Runtime ca. alle zwei Minuten erneut überprüft. Das sollte im PLC-Programm entsprechend berücksichtigt werden (also FB_CheckLicense z. B. nur alle 10 Sekunden aufrufen).

Hinweise:

FB_CheckLicense

OEM-Applikationslizenz in einer SPS-Applikation abfragen 2:

Der Funktionsbaustein ermittelt den TwinCAT-3-Lizenzstatus für eine gegebene Lizenz-ID.

VAR_INPUT

VAR_INPUT
    bExecute    : BOOL;
    tTimeout    : TIME;
    sNetId      : T_AmsNetId;
    stLicenseId : GUID;
END_VAR

bExecute: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

tTimeout: Timeout-Zeit, die bei Ausführung des Befehls nicht überschritten werden darf.

sNetId: AmsNetId (AMS-Netzwerkkennung) des TwinCAT-Rechners, dessen Lizenzstatus ausgelesen werden soll (Typ: T_AmsNetId). Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

stLicenseId: Lizenz-ID (Typ: GUID)

VAR_OUTPUT

VAR_OUTPUT
    bBusy          : BOOL;
    bError         : BOOL;
    nErrorId       : UDINT;
    stCheckLicense : ST_CheckLicense
END_VAR
 

bBusy: TRUE, solange der Baustein aktiv ist.

bError: TRUE, wenn bei der Ausführung des Kommandos ein Fehler auftritt.

nErrorId: Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer.

stCheckLicense: Struktur mit Lizenzdaten (Typ: ST_CheckLicense)

STRUCT ST_CheckLicense

TYPE ST_CheckLicense :
STRUCT
    stLicenseId     : GUID;
    tExpirationTime : TIMESTRUCT;
    sExpirationTime : STRING(80);
    eResult         : E_LicenseHResult;
    nCount          : UDINT;
END_STRUCT
END_TYPE

Name

Beschreibung

stLicenseId

Lizenz-ID

tExpirationTime

Verfallsdatum

sExpirationTime

Verfallsdatum

eResult

Lizenzstatus (siehe E_LicenseHResult)

nCount

Anzahl der Instanzen für diese Lizenz (0=unbegrenzt)

ENUM E_LicenseHResult

TYPE E_LicenseHResult :
(
    //success
    E_LHR_LicenseOK                : DINT := 0,
    E_LHR_LicenseOK_Pending        : DINT := 16#203,
    E_LHR_LicenseOK_Demo           : DINT := 16#254,
    E_LHR_LicenseOK_OEM            : DINT := 16#255,
    //error
    E_LHR_LicenseNoFound           : DINT := DWORD_TO_DINT(16#98110700+16#24),
    E_LHR_LicenseExpired           : DINT := DWORD_TO_DINT(16#98110700+16#25),
    E_LHR_LicenseExceeded          : DINT := DWORD_TO_DINT(16#98110700+16#26),
    E_LHR_LicenseInvalid           : DINT := DWORD_TO_DINT(16#98110700+16#27),
    E_LHR_LicenseSystemIdInvalid   : DINT := DWORD_TO_DINT(16#98110700+16#28),
    E_LHR_LicenseNoTimeLimit       : DINT := DWORD_TO_DINT(16#98110700+16#29),
    E_LHR_LicenseTimeInFuture      : DINT := DWORD_TO_DINT(16#98110700+16#2A),
    E_LHR_LicenseTimePeriodToLong  : DINT := DWORD_TO_DINT(16#98110700+16#2B),
    E_LHR_DeviceException          : DINT := DWORD_TO_DINT(16#98110700+16#2C),
    E_LHR_LicenseDuplicated        : DINT := DWORD_TO_DINT(16#98110700+16#2D),
    E_LHR_SignatureInvalid         : DINT := DWORD_TO_DINT(16#98110700+16#2E),
    E_LHR_CertificateInvalid       : DINT := DWORD_TO_DINT(16#98110700+16#2F),
    E_LHR_LicenseOemNotFound       : DINT := DWORD_TO_DINT(16#98110700+16#30),
    E_LHR_LicenseRestricted        : DINT := DWORD_TO_DINT(16#98110700+16#31),
    E_LHR_LicenseDemoDenied        : DINT := DWORD_TO_DINT(16#98110700+16#32),
    E_LHR_LicensePlatformLevelInv  : DINT := DWORD_TO_DINT(16#98110700+16#33)
)DINT;
END_TYPE

Wert

Bedeutung

E_LHR_LicenseOK

Lizenz ist gültig

E_LHR_LicenseOK_Pending

Validierung des Lizenzierungsgeräts (z. B. Lizenzklemme) notwendig

E_LHR_LicenseOK_Demo

Testlizenz ist gültig

E_LHR_LicenseOK_OEM

OEM-Lizenz ist gültig

E_LHR_LicenseNoFound

Fehlende Lizenz

E_LHR_LicenseExpired

Lizenz abgelaufen

E_LHR_LicenseExceeded

Lizenz hat zu wenig Instanzen

E_LHR_LicenseInvalid

Lizenz ist ungültig

E_LHR_LicenseSystemIdInvalid

Falsche System-ID für die Lizenz

E_LHR_LicenseNoTimeLimit

Lizenz nicht zeitlich begrenzt

E_LHR_LicenseTimeInFuture

Lizenzproblem: Ausstellungszeitpunkt in der Zukunft

E_LHR_LicenseTimePeriodToLong

Lizenz-Zeitraum zu lang

E_LHR_DeviceException

Exception beim Systemstart

E_LHR_LicenseDuplicated

Lizenzdaten mehrfach gelesen

E_LHR_SignatureInvalid

Ungültige Signatur

E_LHR_CertificateInvalid

Ungültiges Zertifikat

E_LHR_LicenseOemNotFound

OEM-Lizenz für unbekannten OEM

E_LHR_LicenseRestricted

Lizenz für das System ungültig

E_LHR_LicenseDemoDenied

Testlizenz nicht erlaubt

E_LHR_LicensePlatformLevelInv

Ungültiger Plattform-Level für die Lizenz

License ID der OEM-Lizenz ermitteln

Die License ID der OEM-Lizenz können Sie der zugehörigen Lizenzbeschreibungsdatei oder dem Lizenzmanager entnehmen.

Lizenzbeschreibungsdatei:

OEM-Applikationslizenz in einer SPS-Applikation abfragen 3:

Registerkarte "Manage Licenses" des Lizenzmanagers:

OEM-Applikationslizenz in einer SPS-Applikation abfragen 4:

Mit einem Doppelklick auf die Zeile der Lizenz öffnet sich ein Fenster mit den Eigenschaften der Lizenz, u. a. der License ID:

OEM-Applikationslizenz in einer SPS-Applikation abfragen 5:

Der OEM kann in seiner SPS-Applikation festlegen, wie auf das Vorhandensein bzw. Fehlen der OEM‑Applikationslizenz reagiert werden soll. Möglich sind ein Programmabbruch oder auch das Freischalten eines Zusatzfeatures.

Systemvoraussetzungen

Betriebssystem:

TC3 PLC Lib Tc2_Utiltities:

TwinCAT-Version:

OEM-Applikationslizenz in einer SPS-Applikation abfragen 6:

Sicherer Schutz nur bei Verwendung der neuesten TwinCAT-3-Version

Verwenden Sie für einen sicheren Schutz (z. B. eine sichere Verschlüsselung) immer die neueste TwinCAT-3-Version. Diese bietet die höchste Sicherheit.

Verwenden Sie mindestens TwinCAT 3.1 Build 4024.x.
Verwenden Sie aus Sicherheitsgründen keine ältere Version!

Siehe auch: Dokumentation zur PLC-Bibliothek Tc2_Utilities , Abschnitt Lizenzierungsfunktionen