, ERR=> , ERRID=> , TIMESTR=> ); IF NOT(fbGetSystemTime.BUSY) AND NOT(fbGetSystemTime.ERR) THEN (* iTemp := iTemp + 1; sFileName := USINT_TO_STRING(iTemp); sFileName := CONCAT (sFileName,'.dat'); *) sFileName := SYSTEMTIME_TO_STRING(fbGetSystemTime.TIMESTR); fbGetSystemTime(START:= FALSE); iSeq := iSeq + 1; ELSIF fbGetSystemTime.ERR THEN fbGetSystemTime(START:= FALSE); iExceptionSeq := iSeq; iSeq := 999; END_IF 2: (* fliter file name & creat further info *) FOR i := 1 TO len(sFileName) BY 1 DO IF F_ReplaceByString(sSource:= sFileName, sFindContent:= ':', sReplaceContent:='_' ) <> '' THEN (* Replace content to avoid involid file name *) sFileName := F_ReplaceByString(sSource:= sFileName, sFindContent:= ':', sReplaceContent:='_' ); ELSE EXIT; END_IF END_FOR sFileName := CONCAT (sFileName,'Node_'); sFileName := CONCAT (sFileName,INT_TO_STRING(MAIN.nAcuNodeId)); sFileName := CONCAT (sFileName,'.dat'); (* add bin file extension *) iSeq := iSeq + 1; 3: (* Creat file *) fbFileOpen.sPathName := CONCAT (sAccessPath, sFileName); fbFileOpen(sNetId:= sFileTargetNetId, (* Access target id *) sPathName:= , (* Access Path *) nMode:= FOPEN_MODEBINARY OR FOPEN_MODEWRITE, (* Binary Format & Write Mode & Overrite contents *) ePath:= PATH_GENERIC, bExecute:= TRUE, tTimeout:= DEFAULT_ADS_TIMEOUT, bBusy=> , bError=> , nErrId=> , hFile=> ); IF NOT(fbFileOpen.bBusy) AND NOT(fbFileOpen.bError) THEN fbFileOpen(bExecute:= FALSE); iSeq := iSeq + 1; ELSIF fbFileOpen.bError THEN fbFileOpen(bExecute:= FALSE); iExceptionSeq := iSeq; iSeq := 999; END_IF 4: (* Creat binary info header *) fbFileWrite(sNetId:= sFileTargetNetId, hFile:= fbFileOpen.hFile, pWriteBuff:= ADR(DatHeader), cbWriteLen:= SIZEOF(DatHeader), bExecute:= TRUE, tTimeout:= DEFAULT_ADS_TIMEOUT, bBusy=> , bError=> , nErrId=> , cbWrite=> ); IF NOT(fbFileWrite.bBusy) AND NOT(fbFileWrite.bError) THEN fbFileWrite(bExecute:= FALSE); iSeq := iSeq + 1; ELSIF fbFileWrite.bError THEN fbFileWrite(bExecute:= FALSE); iExceptionSeq := iSeq; iSeq := 999; END_IF 5: (* seek to cyclic record position *) fbFileSeek(sNetId:= sFileTargetNetId, hFile:= fbFileOpen.hFile, nSeekPos:= SIZEOF(DatHeader), (* Seek to record start position *) eOrigin:= SEEK_SET, bExecute:= , tTimeout:= DEFAULT_ADS_TIMEOUT, bBusy=> , bError=> , nErrId=> ); IF NOT(fbFileSeek.bBusy) AND NOT(fbFileSeek.bError) THEN fbFileSeek(bExecute:= FALSE); iSeq := 10; ELSIF fbFileSeek.bError THEN fbFileSeek(bExecute:= FALSE); iExceptionSeq := iSeq; iSeq := 999; END_IF 10: (* Check Data exist *) IF NOT(MAIN.fbBufferAccess.bFifoEmpty) THEN pRequestData^ := TRUE; (* request get data from buffer to DatAcqBlock *) iSeq := iSeq + 1; END_IF 11: fbFileWrite(sNetId:= sFileTargetNetId, hFile:= fbFileOpen.hFile, pWriteBuff:= ADR(DatAcqBlock), cbWriteLen:= SIZEOF(DatAcqBlock), bExecute:= TRUE, tTimeout:= DEFAULT_ADS_TIMEOUT, bBusy=> , bError=> , nErrId=> , cbWrite=> ); IF NOT(fbFileWrite.bBusy) AND NOT(fbFileWrite.bError) THEN fbFileWrite(bExecute:= FALSE); iSeq := iSeq + 1; ELSIF fbFileWrite.bError THEN fbFileWrite(bExecute:= FALSE); iExceptionSeq := iSeq; iSeq := 999; END_IF 12: (* Seek to next block *) fbFileSeek(sNetId:= sFileTargetNetId, hFile:= fbFileOpen.hFile, nSeekPos:= fbFileSeek.nSeekPos + SIZEOF(DatAcqBlock), (* Seek to record start position *) eOrigin:= SEEK_SET, bExecute:= , tTimeout:= DEFAULT_ADS_TIMEOUT, bBusy=> , bError=> , nErrId=> ); IF NOT(fbFileSeek.bBusy) AND NOT(fbFileSeek.bError) THEN fbFileSeek(bExecute:= FALSE); iSeq := iSeq + 1; ELSIF fbFileSeek.bError THEN fbFileSeek(bExecute:= FALSE); iExceptionSeq := iSeq; iSeq := 999; END_IF 13: (* Check if the record times & length reached *) nCurRecodeNo := nCurRecodeNo + 1; IF nCurRecodeNo >= nRecordAcqBlockPerFile THEN iSeq := 20; (* FileClose & creat New file *) ELSE iSeq := 10; (* GobBack do further content write *) END_IF 20: (* File Close *) fbFileClose(sNetId:= sFileTargetNetId, hFile:= fbFileOpen.hFile, bExecute:= TRUE, tTimeout:= DEFAULT_ADS_TIMEOUT, bBusy=> , bError=> , nErrId=> ); IF NOT(fbFileClose.bBusy) AND NOT(fbFileClose.bError) THEN fbFileClose(bExecute:= FALSE); iSeq := iSeq + 1; ELSIF fbFileSeek.bError THEN fbFileClose(bExecute:= FALSE); iExceptionSeq := iSeq; iSeq := 999; END_IF 21: (* Option call bin to txt file parser process *) pStartParser := ADR (PRG_Slow.fbTxtParser.bExecute); IF PRG_Slow.fbTxtParser.bBusy THEN (* Parser process to slower then cyclic acquisition *) nTxtParserLate := nTxtParserLate + 1; ELSE pPathPassThrough := ADR(PRG_Slow.fbTxtParser.sFilePathSource); pPathPassThrough^ := fbFileOpen.sPathName; pPathPassThrough := ADR(PRG_Slow.fbTxtParser.sFilePathDestination); pPathPassThrough^ := F_ReplaceByString(fbFileOpen.sPathName,'.dat' , '.csv'); pStartParser^ := TRUE; iSeq := 0; END_IF END_CASE ]]>