You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

  • Create a "Standard project" and select CODESYS Control Win V3 as the device.
  • Define the target system by means of the Network scan.




  • Open the Library Manager and add the following libraries:
    CmpCodeMeter
    SysTypes2 interfaces



  • Create a "Structure" named ST_CODEMETER_INFO_EX.
    Adapt the ST_CODEMETER_INFO_EX as follows:


    Declaration

    VAR CONSTANT
        cw_MaxInfos        : WORD := 3;
    END_VAR
    VAR
        xReadInfo        : BOOL;
        iecResult        : SysTypes.RTS_IEC_RESULT;
        iecHandle        : SysTypes.RTS_IEC_HANDLE;
        iecPrevHandle    : SysTypes.RTS_IEC_HANDLE;
        wIndex            : WORD;
        aInfo            : ARRAY [0..cw_MaxInfos] OF ST_CODEMETER_INFO_EX;
    END_VAR


  • Adapt the POU PLC_PRG as follows:


    Declaration

    VAR CONSTANT
        cw_MaxInfos        : WORD := 3;
    END_VAR
    VAR
        xReadInfo        : BOOL;
        iecResult        : SysTypes.RTS_IEC_RESULT;
        iecHandle        : SysTypes.RTS_IEC_HANDLE;
        iecPrevHandle    : SysTypes.RTS_IEC_HANDLE;
        wIndex           : WORD;
        aInfo            : ARRAY [0..cw_MaxInfos] OF ST_CODEMETER_INFO_EX;
    END_VAR

    Implementation

    IF xReadInfo THEN
        xReadInfo := FALSE;
        iecHandle := CmpCodeMeter.CodeMGetFirst(iecResult);    
        iecPrevHandle := SYSTYPES.RTS_INVALID_HANDLE;
        wIndex := 0;
        WHILE iecHandle <> SYSTYPES.RTS_INVALID_HANDLE DO
            IF wIndex = 0 THEN
                CmpCodeMeter.CodeMGetInfo(hCodeMeter := iecHandle, info := aInfo[wIndex].stRTS_CODEMETER_INFO);
                CmpCodeMeter.CodeMGetName(hCodeMeter := iecHandle, wstName := aInfo[wIndex].wsContainerName, nLenBytes := SIZEOF(aInfo[wIndex].wsContainerName));
            ELSE
                iecPrevHandle := iecHandle;
                iecHandle := CmpCodeMeter.CodeMGetNext(hPrevCodeMeter := iecPrevHandle, Result := iecResult);
                IF iecHandle <> RTS_INVALID_HANDLE THEN
                    CmpCodeMeter.CodeMGetInfo(hCodeMeter := iecHandle, info := aInfo[wIndex].stRTS_CODEMETER_INFO);
                    CmpCodeMeter.CodeMGetName(hCodeMeter := iecHandle, wstName := aInfo[wIndex].wsContainerName, nLenBytes := SIZEOF(aInfo[wIndex].wsContainerName));
                END_IF
            END_IF
            wIndex := wIndex + 1;
        END_WHILE
    END_IF


  • Start the project and set the xReadInfo variable to TRUE.





    The read container/dongle information is saved in the array.

    For comparing the information from the License Manager.


  • No labels