许可:查询容器信息
- 创建一个标准项目并选择 CODESYS Control Win V3 作为设备。
- 通过网络扫描连接目标系统

- 打开库管理器并添加以下库: CmpCodeMeter SysTypes2 interfaces

- 创建一个名为 ST_CODEMETER_INFO_EX 的结构体。 按如下修改 ST_CODEMETER_INFO_EX:
声明
TYPE ST_CODEMETER_INFO_EX :
STRUCT
stRTS_CODEMETER_INFO : CmpCodeMeter.RTS_CODEMETER_INFO;
wsContainerName : WSTRING;
END_STRUCT
END_TYPE
- 按如下修改 PLC_PRG:
声明
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
实现
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
- 启动项目并将 xReadInfo 变量设置为 TRUE。 读取的容器/加密狗信息保存在数组中。

与来自许可证管理器的信息进行比较
