CPU-ID oderMAc-Adresse aus Raspi in Codesys auslesen

JüKo

Level-2
Beiträge
94
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an Euch,
ich möchte in Codesys die CPU-ID (oder MAC-Adressse) meiner Pixtend-Steuerung lesen und in eine Stringvariable schreiben.
Diese möchte ich dann mit einer Stringvariablen in meinem Programm vergleichen. Wenn diese beiden Strings nicht gleich sind dann kann das Programm nicht benützt werden. Gibt es da eine Möglichkeit?
Der Grund dafür ist, sofern das Programm kopiert wird, es dann nicht verwendet werden kann. Oder gibt es da auch andere Möglichkeiten?
Danke und Grüße,
Jürgen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Onkel,
das habe ich im Link gefunden >> DeviceNet MAD ID. Das sieht schonmal gut aus, aber mit welchem Befehl kann ich nun die Mac-Id in Codesys erfragen? Ich benötige eine Stringvariable zum vergleichen.
Zu den Stückzahlen kann ich noch nichts sagen, werden aber nicht so hoch sein.
Danke und Grüße,
Jürgen
 
Probiere es mal hiermit, die MAC Adresse kann durchaus geändert werden, die CPU ID sollte recht sicher sein.


Code:
PROGRAM PLC_PRG
VAR
    fbGetDeviceInfo : CAA.DeviceDiagnosis.DeviceGetInfo;
    stDeviceInfo : CAA.DeviceDiagnosis.ST_DeviceInfo;
    xDone : BOOL;
    xError : BOOL;
    uiState : UINT := 0;
    myDeviceID : STRING(100);
    expectedID : STRING(100) := 'ABC123XYZ'; // Deine Ziel-ID
END_VAR

CASE uiState OF
    0:
        fbGetDeviceInfo(
            pDeviceInfo := ADR(stDeviceInfo),
            xExecute := TRUE
        );
        uiState := 1;

    1:
        IF fbGetDeviceInfo.xDone THEN
            xDone := TRUE;
            myDeviceID := stDeviceInfo.sDeviceId;   // oder sSerialNumber prüfen
            fbGetDeviceInfo.xExecute := FALSE;
            uiState := 2;
        ELSIF fbGetDeviceInfo.xError THEN
            xError := TRUE;
            fbGetDeviceInfo.xExecute := FALSE;
            uiState := 100;
        END_IF

    2:
        IF myDeviceID <> expectedID THEN
            // Zugriff verweigern
        ELSE
            // Zugriff gewähren
        END_IF

    100:
        // Fehlerbehandlung

END_CASE
 
Hallo Onkel,

super, vielen Dank für deine Mühe, den Programmcode hab ich reinkopiert.
Dann einige Fehlermeldungen
1753041395278.png
Bin nun draufgekommen, dass ich noch eine Bibliothek brauche.
Kannst Du mir sagen welche das ist? Ich hätte ansonsten einfach die oberste Zeile genommen :unsure:
Ich merk schon, dass ich ein bisschen programmieren kann, aber ansonsten noch große Lücken hab.
1753041338079.png
Danke nochmals für die tolle Arbeit, das hätte ich so nie hinbekommen.

Grüße,
Jürgen
 
Zurück
Oben