任务配置:读取周期时间等信息
- 创建标准项目并选择 CODESYS Control Win V3 作为设备。
- 通过网络扫描连接目标系统。

- 打开库管理器并添加以下库: CompErrors CmpIecTask SysTypes2 Interfaces

- 创建一个名为 SecTask 的新 POU 和一个名为 MySecTask 的新任务。 将 SecTask 分配给任务 MySecTask,并将任务周期设置为 50 毫秒。

- 修改 SecTask 如下
声明
VAR
iIndex : INT;
sIndex : STRING;
END_VAR
实现
FOR iIndex := 0 TO 1000 DO
//Do something to raise the cycle time
sIndex := INT_TO_STRING(iIndex);
END_FOR
- 修改 PLC_PRG 如下:
声明
VAR
dwCycleTimeMainTask, dwCycleTimeSecTask : DWORD;
dwIntervalMainTask, dwIntervalSecTask : DWORD;
sNameMainTask, sNameSecTask : STRING;
hFirstTask, hSecTask : RTS_IEC_HANDLE;
iecResult : RTS_IEC_RESULT;
sAppName : STRING := 'Application';
pIecInfo : POINTER TO CmpIecTask.Task_Info2;
END_VAR
实现
hFirstTask := CmpIecTask.IecTaskGetFirst(pszAppName := ADR(sAppName), pResult := ADR(iecResult));
IF ((hFirstTask <> RTS_INVALID_HANDLE) AND (iecResult = CmpErrors.Errors.ERR_OK)) THEN
pIecInfo := CmpIecTask.IecTaskGetInfo3(hIecTask := hFirstTask, pResult := ADR(iecResult));
dwIntervalMainTask := pIecInfo^.dwInterval;
dwCycleTimeMainTask := pIecInfo^.dwCycleTime;
sNameMainTask := pIecInfo^.pszName^;
hSecTask := IecTaskGetNext(pszAppName := ADR(sAppName), hPrevIecTask := hFirstTask, pResult := ADR(iecResult));
IF ((hSecTask <> RTS_INVALID_HANDLE) AND (iecResult = CmpErrors.Errors.ERR_OK)) THEN
pIecInfo := CmpIecTask.IecTaskGetInfo3(hIecTask := hSecTask, pResult := ADR(iecResult));
dwIntervalSecTask := pIecInfo^.dwInterval;
dwCycleTimeSecTask := pIecInfo^.dwCycleTime;
sNameSecTask := pIecInfo^.pszName^;
END_IF
END_IF
- 下载到控制器上并启动项目后,您可以比较任务配置和 IEC 代码之间的值。

