Roberto, bom dia!
O bloco de controle padrão de código 32 é o Acesso Randômico à Data Flash, sendo que o primeiro dos parâmetros de P2 (M[x+0], pressione CTRL + H no componente para abrir o manual) é o sub-código que define a função a ser executada (leitura, escrita, flush). Veja a figura a seguir, no EPE00041, a memória que define qual função será executada é a M310. Ou seja, se M310 = 1 é leitura, se M310=2, escrita e assim por diante.
Olhando a documentação com mais critério, vi que o código da função está igual a 31 nos itens escrita, Flush, Erase, Status. O correto é Função do bloco SCB de acesso à “DATAFLASH”. Deve ser uma constante inteira, cujo o valor deve ser 32. Já corrigi, será alterado na próxima versão do SPDSW!
A subrotina T200 contém apenas o bloco SCB de Acesso Randômico à Data Flash, mas os parâmetros deste bloco SCB que definem as funções são inicializados em pontos diferentes do ladder. Esta estratégia faz com que exista no ladder apenas um bloco SCB cujos parâmetros são configurados em determinados pontos da aplicação, garantindo maior controle e clareza no código. Ou seja, se você apenas colar essa subrotina em seu programa, é provável que não funcione.
A subrotina T300 é a subrotina de interface com o coletor de dados. Veja que não há bloco SCB de acesso à dataflash em seu interior, ela apenas efetua comandos para apresentação de telas do programa da IHM (este programa foi originalmente desenvolvido para um ZAP900, CLP com IHM integrada de firmware geração GII).
Ou seja, para você inserir partes do programa de exemplo em sua aplicação, você terá que estudar onde e quando as funções de acesso à dataflash estão sendo configuradas, com foco na rotina T20.
Recomendo fortemente você fazer o log e coleta de dados primeiramente com o programa de exemplo, pois o mesmo é o minimal que você precisa e o sequenciamento está funcionando. Após o EPE funcionar, você tenta inserir seu código.
Ah, como você perguntou de string de parâmetros, automaticamente assumi que você está utilizando um CLP GII. E se não fosse, você iria notar que o código de retorno do bloco SCB, memória M322, está igual a 7 (Comando não disponivel ou nao implementado).
Apenas para informar outros que estiverem consultando este tópico, se a geração for G3 ou G3S, ZAP91X, P7C e NEON, o log de dados é feito no sistema de arquivos do controlador e o programa de exemplo aplicável é o EPE.00062, disponível neste link. A nota de aplicação associada é a ENA.0076, disponível neste link.
Boa sorte e estou à disposição!
Sato-sam
[SPDSW] String de Parâmetros no Setup de Programas / Log na dataflash
Re: [SPDSW] String de Parâmetros no Setup de Programas / Log na dataflash
Olá Sato,
Obrigado pelas observações.
Estou usando o P7C, a ideia de utilizar apenas um bloco SCB para a leitura, escrita e flush é muito boa mas eu acabei optando por utilizar 3 blocos SCB (Abrir arquivo, Salvar Registro, Flush de Memória) em momentos em que eu sei que o último bloco já foi finalizado (o bloco de salvar só funciona quando o de abrir foi completado e o de flush quando o de salvar foi finalizado) e as memórias de cada bloco SCB foram inicializadas.
Pelo que percebi eu posso usar o bloco SCB com código 32 para salvar os registros da FIFO sem ter que abrir o arquivo da Data Flash já que estes já foram definidos pela string de parâmetros.
Ainda não compreendi como utilizar a memória definida na string de parâmetros (M300 no exemplo 41).
Caso eu salve os registros com os blocos SCB do modo que eu descrevi, eu consigo coletar os dados pelo Extractor e formatar com o Viewer?
Se eu não puder coletar os dados com o Extractor eu ainda consigo formatá-los com o Viewer?
OBS: Acabei de perceber que os processos passados são para o firmware GII e eu possuo o P7C que está GIII. Eu estava com o erro 215 quando tentava escrever um registro na DataFlash, com certeza é porque não inicializei a variável de parâmetros com o nome do arquivo.
Ainda assim, para mim não ficou claro como devo proceder para a aquisição dos dados pelo Extractor. Preciso preparar o meu programa para que o Extractor colete os dados?
Att,
Roberto
Obrigado pelas observações.
Estou usando o P7C, a ideia de utilizar apenas um bloco SCB para a leitura, escrita e flush é muito boa mas eu acabei optando por utilizar 3 blocos SCB (Abrir arquivo, Salvar Registro, Flush de Memória) em momentos em que eu sei que o último bloco já foi finalizado (o bloco de salvar só funciona quando o de abrir foi completado e o de flush quando o de salvar foi finalizado) e as memórias de cada bloco SCB foram inicializadas.
Pelo que percebi eu posso usar o bloco SCB com código 32 para salvar os registros da FIFO sem ter que abrir o arquivo da Data Flash já que estes já foram definidos pela string de parâmetros.
Ainda não compreendi como utilizar a memória definida na string de parâmetros (M300 no exemplo 41).
Caso eu salve os registros com os blocos SCB do modo que eu descrevi, eu consigo coletar os dados pelo Extractor e formatar com o Viewer?
Se eu não puder coletar os dados com o Extractor eu ainda consigo formatá-los com o Viewer?
OBS: Acabei de perceber que os processos passados são para o firmware GII e eu possuo o P7C que está GIII. Eu estava com o erro 215 quando tentava escrever um registro na DataFlash, com certeza é porque não inicializei a variável de parâmetros com o nome do arquivo.
Ainda assim, para mim não ficou claro como devo proceder para a aquisição dos dados pelo Extractor. Preciso preparar o meu programa para que o Extractor colete os dados?
Att,
Roberto
Re: [SPDSW] String de Parâmetros no Setup de Programas / Log na dataflash
Prezado!
Você então tem duas opções:
- Se necessário o coletor de dados (D2W ou SCD912)
Utilizar o EPE.00062. Ele é salva um arquivo no sistema de arquivos do controlador, de extensão .dat e que pode ser coletado via coletor, sendo compatível com firmware G3/G3S. O EPE.00062 pode ser acessado neste link. Utilize como guia a Nota de Aplicação ENA.0076, disponível neste link.
- Se o coletor não é necessário, você pode salvar o arquivo em formato .csv.
Utilize o programa de exemplo EPE.00060 - Exemplo de arquivo de dados histórico baseado em arquivos texto compativel com formato CSV, disponível neste link.
Este programa é mais simples, consiste na concatenação de strings.
Por exemplo, vamos supor que você necessite logar dados de temperatura conectados na entrada E0, uma entrada de instrumentação de 4 a 20mA. A leitura da E0 será em unidade de conversor, ou seja, valores de 0 a 4096. Você utilizará a variável do tipo D0(real) para atualizar os valores de temperatura, após converter o valor de unidade de conversor para unidade de engenharia.
Esta variável deve ser movida para uma variável do tipo X (string/texto) e concatenada com uma string "ºC;"(o ponto-e-vírgula é o caracter delimitador de dados do arquivo csv). A concatenação é realizada via bloco SCB Variáveis Tipo Texto, de código 245 e subcomando 3. Veja que isto ocorre na linha 169 do programa de exemplo.
A gerência de concatenação de strings é realizado na subrotina T1000 do EPE.00060. O controle do intervalo de tempo no qual são logados os dados também é realizado nesta subrotina. Note que se for necessário salvar mais um dado, você necessitará concatenar mais strings, conforme está sendo feito na linha 181 do EPE. Por fim, é necessário concatenar o CR LF
Qual string seu arquivo irá salvar? No EPE.0060 a string inicial a ser logada é a X7, configuração esta feita na linha 92, dentro da subrotina T20. No exemplo 3 strings são logadas:
X7: Valor de D0 concatenado com "ºC;", linha 169
X8: Valor de D1 concatenado com "psi;", linha 178
X9: CR + LF (0D0A), linha 187
Boa sorte e estou à disposição,
Sato-sam.
Você então tem duas opções:
- Se necessário o coletor de dados (D2W ou SCD912)
Utilizar o EPE.00062. Ele é salva um arquivo no sistema de arquivos do controlador, de extensão .dat e que pode ser coletado via coletor, sendo compatível com firmware G3/G3S. O EPE.00062 pode ser acessado neste link. Utilize como guia a Nota de Aplicação ENA.0076, disponível neste link.
- Se o coletor não é necessário, você pode salvar o arquivo em formato .csv.
Utilize o programa de exemplo EPE.00060 - Exemplo de arquivo de dados histórico baseado em arquivos texto compativel com formato CSV, disponível neste link.
Este programa é mais simples, consiste na concatenação de strings.
Por exemplo, vamos supor que você necessite logar dados de temperatura conectados na entrada E0, uma entrada de instrumentação de 4 a 20mA. A leitura da E0 será em unidade de conversor, ou seja, valores de 0 a 4096. Você utilizará a variável do tipo D0(real) para atualizar os valores de temperatura, após converter o valor de unidade de conversor para unidade de engenharia.
Esta variável deve ser movida para uma variável do tipo X (string/texto) e concatenada com uma string "ºC;"(o ponto-e-vírgula é o caracter delimitador de dados do arquivo csv). A concatenação é realizada via bloco SCB Variáveis Tipo Texto, de código 245 e subcomando 3. Veja que isto ocorre na linha 169 do programa de exemplo.
A gerência de concatenação de strings é realizado na subrotina T1000 do EPE.00060. O controle do intervalo de tempo no qual são logados os dados também é realizado nesta subrotina. Note que se for necessário salvar mais um dado, você necessitará concatenar mais strings, conforme está sendo feito na linha 181 do EPE. Por fim, é necessário concatenar o CR LF
Qual string seu arquivo irá salvar? No EPE.0060 a string inicial a ser logada é a X7, configuração esta feita na linha 92, dentro da subrotina T20. No exemplo 3 strings são logadas:
X7: Valor de D0 concatenado com "ºC;", linha 169
X8: Valor de D1 concatenado com "psi;", linha 178
X9: CR + LF (0D0A), linha 187
Boa sorte e estou à disposição,
Sato-sam.