1 THEN ADSLOGSTR( msgCtrlMask := ADSLOG_MSGTYPE_WARN OR ADSLOG_MSGTYPE_MSGBOX, msgFmtStr := 'SYNC0 not correct %s', strArg := INT_TO_STRING(diffSync0) ); END_IF END_IF //END_IF diffSync0 := currSync0Count - lastSync0Count; lastSync0Count := currSync0Count; CASE iSeq OF 0: IF bSamplingStart THEN iSeq := iSeq + 1; END_IF 1: (* reserve for init process *) fbBufferAccess.bClearFifo := TRUE; IF fbBufferAccess.bFifoEmpty THEN (* Makesure no data in buffer in inital phase *) fbBufferAccess.bClearFifo := FALSE; iSeq := 10; END_IF 10: (* Cyclic Acquisition *) nIncCtr := nIncCtr + 1; (* Generate a dummy data *) AcquisitionData[nAcuNodeId].ECAT_IRQ_Counter := nIncCtr; AcquisitionData[nAcuNodeId].nDcTimeStamp := UInt64Add64( F_GetCurDcTickTime(), EC_DCTIME_DELTA_OFFSET); (* Shift time from GMT+0 to Current time Zone *) AcquisitionBlock[nAcuNodeId].DataBlock[nFirstAcuIndex] := AcquisitionData[nAcuNodeId]; nFirstAcuIndex := nFirstAcuIndex + 1; IF nFirstAcuIndex > nAcquisitionBlock THEN nFirstAcuIndex := 0 ; (* Block collect finish , put into buffer *) fbBufferAccess.bPutData := TRUE; IF i01Sec < 10 THEN i01Sec := i01Sec + 1; ELSE i01Sec := 0; //fbBufferAccess.bFifoFull := FALSE; END_IF IF NOT(bSamplingStart) THEN iSeq := 20; (* Stop Acquisition *) END_IF END_IF 20: (* Should call close file process *) iSeq := 0; END_CASE fbBufferAccess(bPutData:= , bGetData:= , bClearFifo:= , pPutData:= ADR(AcquisitionBlock[nAcuNodeId]), pGetData:= ADR(PRG_DatFileCreat.DatAcqBlock), nDataLen:= SIZEOF(AcquisitionBlock[nAcuNodeId]), pFifoMemory:= ADR(AcquisitionBlockBuffer), nFifoSize:= nFifoSize, bFifoEmpty=> , bFifoFull=> , iFifoSizeLeft=> ); IF fbBufferAccess.bPutData THEN fbBufferAccess.bPutData := FALSE; END_IF; IF fbBufferAccess.bGetData THEN fbBufferAccess.bGetData := FALSE; END_IF PRG_DatFileCreat(); ]]>