Guest User

Export Data

a guest
May 27th, 2024
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. FUNCTION_BLOCK Dados_torcao
  2. VAR_INPUT
  3. END_VAR
  4. VAR_OUTPUT
  5. END_VAR
  6. VAR
  7. Intervalo: TIME := T#1M;
  8. Guarda_valores : ARRAY[1..2] OF REAL;
  9. Tempo_Ciclo :INT;
  10. Indice: INT:=1;
  11. TON_TIME: TON;
  12. T_ON: BOOL;
  13. fbFileOpen : FB_FileOpen;
  14. fbFileWrite : FB_FileWrite;
  15. fbFileClose : FB_FileClose;
  16. sFileName : STRING(255) := 'D:\Teste.txt'; // Caminho do arquivo para USB
  17. nFileHandle : UINT; // Handle do arquivo
  18. bExecute : BOOL := FALSE; // Variável de controle de execução
  19. bBusy : BOOL; // Estado de ocupação
  20. bError : BOOL; // Estado de erro
  21. nErrorId : UDINT; // ID do erro
  22. sWriteData : STRING(255); // Dados a serem escritos
  23. nBytesWritten: UDINT; // Número de bytes escritos
  24. nStep : INT := 0; // Variável de controle de estado
  25. myArray: INT;
  26. i: INT;
  27. END_VAR
  28. CASE nStep OF
  29. 0: // Inicializar temporizador
  30. TON_TIME(IN := T_ON, PT := Intervalo);
  31. T_ON := TRUE;
  32. IF TON_TIME.Q THEN
  33. Tempo_Ciclo := Indice * 2;
  34. Guarda_valores[Indice] := Tempo_Ciclo;
  35. Indice := Indice + 1;
  36. Guarda_valores[Indice] := GVL.Torcao_graus;
  37. Indice := 0;
  38. T_ON := FALSE;
  39. nStep := 1; // Prosseguir para abrir o arquivo
  40. END_IF
  41.  
  42. 1: // Abrir o arquivo
  43. fbFileOpen(
  44. sNetId := '', // Sistema local
  45. sPathName := sFileName,
  46. nMode := FOPEN_MODEAPPEND,
  47. ePath := PATH_GENERIC,
  48. bExecute := TRUE,
  49. tTimeout := T#10S,
  50. bBusy => bBusy,
  51. bError => bError,
  52. nErrId => nErrorId,
  53. hFile => nFileHandle
  54. );
  55. IF NOT bBusy THEN
  56. IF NOT bError THEN
  57. nStep := 2; // Arquivo aberto com sucesso, prosseguir para escrita
  58. ELSE
  59. nStep := 99; // Ocorreu um erro
  60. END_IF
  61. END_IF
  62.  
  63. 2: // Escrever os valores guardados no arquivo
  64. sWriteData := ''; // Limpar dados de escrita
  65. FOR i := 1 TO 20 DO
  66. sWriteData := CONCAT(sWriteData, CONCAT(TO_STRING(Guarda_valores[i]), ','));
  67. END_FOR
  68. fbFileWrite(
  69. sNetId := '',
  70. hFile := nFileHandle,
  71. pWriteBuff := ADR(sWriteData),
  72. cbWriteLen := LEN(sWriteData),
  73. bExecute := TRUE,
  74. tTimeout := T#10S,
  75. bBusy => bBusy,
  76. bError => bError,
  77. nErrId => nErrorId,
  78. cbWrite => nBytesWritten
  79. );
  80. IF NOT bBusy THEN
  81. IF NOT bError THEN
  82. nStep := 3; // Todos os elementos escritos, prosseguir para fechar o arquivo
  83. ELSE
  84. nStep := 99; // Ocorreu um erro
  85. END_IF
  86. END_IF
  87.  
  88. 3: // Fechar o arquivo
  89. fbFileClose(
  90. sNetId := '',
  91. hFile := nFileHandle,
  92. bExecute := TRUE,
  93. tTimeout := T#10S,
  94. bBusy => bBusy,
  95. bError => bError,
  96. nErrId => nErrorId
  97. );
  98. IF NOT bBusy THEN
  99. IF NOT bError THEN
  100. nStep := 4; // Arquivo fechado com sucesso
  101. ELSE
  102. nStep := 99; // Ocorreu um erro
  103. END_IF
  104. END_IF
  105.  
  106. 4: // Sucesso, operações de arquivo concluídas
  107. // Resetar variáveis conforme necessário
  108. nStep := 0; // Resetar máquina de estado
  109.  
  110. 99://ERRO
  111.  
  112.  
  113. END_CASE
  114.  
  115. //When it enters the case 1 it just gives the eerrorid=1804 (ADSERR_DEVICE_NOTFOUND).
Add Comment
Please, Sign In to add comment