= nFifoSize THEN iPutIndex := 0; END_IF pPutIndex := iPutIndex * nDataLen; MEMCPY(pFifoMemory + pPutIndex, pPutData, nDataLen); iPutIndex := iPutIndex + 1; iFifoSizeLeft := iFifoSizeLeft - 1; END_IF END_IF; IF NOT(bFifoEmpty) THEN IF bGetData THEN bIs1Sec := iGetIndex >= nFifoSize; IF bIs1Sec THEN iGetIndex := 0; END_IF pGetIndex := iGetIndex * nDataLen; MEMCPY(pGetData, pFifoMemory + pGetIndex , nDataLen); iGetIndex := iGetIndex + 1; iFifoSizeLeft := iFifoSizeLeft + 1; END_IF END_IF; (* _TaskInfo[GETCURTASKINDEX()].FirstCycle; SystemTaskInfoArr[SystemInfo.RuntimeNo].firstCycle *) fbGetTaskId(); IF _TaskInfo[fbGetTaskId.index].FirstCycle THEN iFifoSizeLeft := nFifoSize; END_IF IF iFifoSizeLeft = 0 THEN bFifoFull := TRUE; ELSE bFifoFull := FALSE; END_IF IF iFifoSizeLeft >= nFifoSize THEN bFifoEmpty := TRUE; ELSE bFifoEmpty := FALSE; END_IF ]]>