Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FUNCTION_BLOCK Dados_torcao
- VAR_INPUT
- END_VAR
- VAR_OUTPUT
- END_VAR
- VAR
- Intervalo: TIME := T#1M;
- Guarda_valores : ARRAY[1..2] OF REAL;
- Tempo_Ciclo :INT;
- Indice: INT:=1;
- TON_TIME: TON;
- T_ON: BOOL;
- fbFileOpen : FB_FileOpen;
- fbFileWrite : FB_FileWrite;
- fbFileClose : FB_FileClose;
- sFileName : STRING(255) := 'D:\Teste.txt'; // Caminho do arquivo para USB
- nFileHandle : UINT; // Handle do arquivo
- bExecute : BOOL := FALSE; // Variável de controle de execução
- bBusy : BOOL; // Estado de ocupação
- bError : BOOL; // Estado de erro
- nErrorId : UDINT; // ID do erro
- sWriteData : STRING(255); // Dados a serem escritos
- nBytesWritten: UDINT; // Número de bytes escritos
- nStep : INT := 0; // Variável de controle de estado
- myArray: INT;
- i: INT;
- END_VAR
- CASE nStep OF
- 0: // Inicializar temporizador
- TON_TIME(IN := T_ON, PT := Intervalo);
- T_ON := TRUE;
- IF TON_TIME.Q THEN
- Tempo_Ciclo := Indice * 2;
- Guarda_valores[Indice] := Tempo_Ciclo;
- Indice := Indice + 1;
- Guarda_valores[Indice] := GVL.Torcao_graus;
- Indice := 0;
- T_ON := FALSE;
- nStep := 1; // Prosseguir para abrir o arquivo
- END_IF
- 1: // Abrir o arquivo
- fbFileOpen(
- sNetId := '', // Sistema local
- sPathName := sFileName,
- nMode := FOPEN_MODEAPPEND,
- ePath := PATH_GENERIC,
- bExecute := TRUE,
- tTimeout := T#10S,
- bBusy => bBusy,
- bError => bError,
- nErrId => nErrorId,
- hFile => nFileHandle
- );
- IF NOT bBusy THEN
- IF NOT bError THEN
- nStep := 2; // Arquivo aberto com sucesso, prosseguir para escrita
- ELSE
- nStep := 99; // Ocorreu um erro
- END_IF
- END_IF
- 2: // Escrever os valores guardados no arquivo
- sWriteData := ''; // Limpar dados de escrita
- FOR i := 1 TO 20 DO
- sWriteData := CONCAT(sWriteData, CONCAT(TO_STRING(Guarda_valores[i]), ','));
- END_FOR
- fbFileWrite(
- sNetId := '',
- hFile := nFileHandle,
- pWriteBuff := ADR(sWriteData),
- cbWriteLen := LEN(sWriteData),
- bExecute := TRUE,
- tTimeout := T#10S,
- bBusy => bBusy,
- bError => bError,
- nErrId => nErrorId,
- cbWrite => nBytesWritten
- );
- IF NOT bBusy THEN
- IF NOT bError THEN
- nStep := 3; // Todos os elementos escritos, prosseguir para fechar o arquivo
- ELSE
- nStep := 99; // Ocorreu um erro
- END_IF
- END_IF
- 3: // Fechar o arquivo
- fbFileClose(
- sNetId := '',
- hFile := nFileHandle,
- bExecute := TRUE,
- tTimeout := T#10S,
- bBusy => bBusy,
- bError => bError,
- nErrId => nErrorId
- );
- IF NOT bBusy THEN
- IF NOT bError THEN
- nStep := 4; // Arquivo fechado com sucesso
- ELSE
- nStep := 99; // Ocorreu um erro
- END_IF
- END_IF
- 4: // Sucesso, operações de arquivo concluídas
- // Resetar variáveis conforme necessário
- nStep := 0; // Resetar máquina de estado
- 99://ERRO
- END_CASE
- //When it enters the case 1 it just gives the eerrorid=1804 (ADSERR_DEVICE_NOTFOUND).
Add Comment
Please, Sign In to add comment