SLC-5/04 Julian Date Generator Implementation Guide — figure 1

Guia de implementação do gerador de data juliana do SLC-5/04

Implemente um gerador de data juliana no SLC-5/04 para saída ASCII em impressoras de etiquetas. Lógica ladder passo a passo com instruções Compute.

A família SLC-5/04, incluindo processadores como o 1747-L542, não fornece uma instrução integrada para o número do dia juliano (JDN). Embalagens, codificação de lotes e impressoras de etiquetas frequentemente exigem um valor de dia do ano ou uma string compacta YYYYDDD, portanto, a lógica precisa ser construída com operações matemáticas comuns e operações de tabela de dados. Este guia apresenta uma abordagem de fácil manutenção usando expressões CPT, uma tabela cumulativa de dias dos meses, tratamento de anos bissextos e conversão para ASCII para os dados enviados à impressora, destacando também os limites da matemática de dezesseis bits que causam problemas em muitas primeiras implementações.

Guia de implementação do gerador de data juliana do SLC-5/04 — figura 1 Os processadores SLC-5/04 calculam o dia do ano e códigos no estilo juliano em lógica ladder usando CPT, arquivos de inteiros e valores de RTC obtidos de fontes verificadas.

Às vezes, o material de referência aponta para palavras do arquivo de status na região S:50–S:52 para ano, mês e dia, enquanto outra documentação enfatiza a área mais ampla do relógio de tempo real ao redor de S:37, dependendo do processador e do contexto do firmware. Trate as palavras de origem do RTC com cuidado: verifique o mapa exato do arquivo de status para o catálogo e a série instalados antes de definir os aliases das tags. Depois que os campos do calendário forem validados, o algoritmo em si será portátil entre projetos SLC-5/04.

Layout da tabela de dados

Um layout organizado de inteiros mantém a rotina legível para o próximo técnico. Um padrão comum usa os registros N7 da seguinte forma: N7:0 ano, N7:1 mês, N7:2 dia do mês, N7:3 resultado do dia do ano, N7:4 sinalizador de ano bissexto e N7:5 como área de armazenamento temporário para resultados intermediários de CPT. Armazene os deslocamentos cumulativos dos dias dos meses em uma tabela fixa de inteiros — por exemplo, N10:1 a N10:12 contendo 0, 31, 59, 90, 120, 151, 151, 181, 212, 243, 273, 304 para uma base não bissexta até novembro, aplicando o tratamento de fevereiro por meio do sinalizador de ano bissexto em vez de editar a tabela durante a execução. Ajuste a tabela exata de acordo com a indexação baseada em zero de sua preferência, mas documente isso próximo aos rungs.

Exemplo de abordagem para DOY (conceitual)
Bissexto = (Y divisível por 4), com as regras de século conforme necessário
DOY = Dia + Cumulativo[Mês] + (Bissexto E Mês>2)
String YYYYDDD via ASC / formatação no estilo AIF para impressoras

Para muitas fábricas, o dia do ano (DOY) no formato YYYYDDD é suficiente e evita a complexidade completa do JDN astronômico. Números de dias julianos completos que abrangem séculos exigem mais cuidado com inteiros; as operações CPT do SLC com inteiros de 16 bits sofrem overflow se os produtos intermediários não forem armazenados em etapas. Prefira calcular o DOY no espaço de 16 bits e, em seguida, concatenar o ano e o DOY preenchido com zeros em um arquivo ASCII para a impressora, em vez de forçar tudo em um único inteiro grande demais.

Ano bissexto e estrutura CPT

A lógica de ano bissexto deve seguir as regras do calendário civil usadas pelo seu sistema de qualidade. No mínimo, anos divisíveis por quatro são bissextos; se o ciclo de vida do seu produto incluir mudanças de século, aplique as exceções completas do calendário gregoriano (anos de século só são bissextos se forem divisíveis por 400). Defina N7:4 como um quando o ano for bissexto. Ao adicionar o deslocamento cumulativo do mês, acrescente um dia somente se o sinalizador de ano bissexto estiver definido e o mês for posterior a fevereiro. Faça essa adição em uma CPT dedicada, em vez de ocultar condições aninhadas dentro de uma expressão difícil de ler.

Copie o ano, o mês e o dia das palavras de origem do RTC verificadas para os registros de trabalho N7 em uma tarefa periódica lenta ou durante a primeira varredura, além de uma transição diária. Não leia as palavras do RTC em todos os rungs de execução contínua se a formatação ASC posterior for dispendiosa; uma atualização uma vez por minuto geralmente é suficiente para a codificação de datas.

Guia de implementação do gerador de data juliana do SLC-5/04 — figura 2 Strings DOY preenchidas com zeros à esquerda alimentam as impressoras de etiquetas com mais confiabilidade do que inteiros brutos quando o comprimento do código de barras precisa permanecer fixo.

Formatação ASCII para impressoras de etiquetas

A maioria das impressoras industriais espera uma string de largura fixa. Depois que o DOY for calculado em N7:3, use instruções de arquivo ASCII para criar uma string como YYYYDDD, com zeros à esquerda no campo do dia. Valide o comprimento antes de acionar o handshake de impressão. Se o protocolo da impressora exigir separadores ou prefixos específicos da fábrica, crie-os no mesmo buffer de string em vez de depender da impressora para preencher os campos.

  1. Confirme o mapeamento das palavras do RTC para o firmware específico do 1747-L542 (ou do SLC-5/04 instalado).
  2. Crie as tags de trabalho N7 e a tabela cumulativa dos meses em um arquivo de inteiros.
  3. Escreva a lógica CPT do ano bissexto e uma CPT de DOY que some dia + cumulativo + ajuste de ano bissexto.
  4. Formate YYYYDDD por meio de ASC e teste com datas conhecidas do calendário, incluindo 28 de fevereiro e 1º de março em anos bissextos e não bissextos.
  5. Proteja-se contra overflow de 16 bits se alguma rotina tentar calcular produtos de JDN completos que abranjam vários séculos; divida os cálculos em etapas ou transfira esse cálculo para fora do SLC.

Verificações de ano bissexto e preenchimento com zeros na impressora

As datas de verificação devem incluir 2024-02-29, 2024-03-01, 2025-02-28 e as transições de fim de ano em 12-31. Compare o DOY do PLC com um calendário independente. Os problemas comuns incluem confiar nos endereços errados do arquivo de status, esquecer o ajuste de ano bissexto de fevereiro, imprimir valores DOY sem preenchimento de zeros, deslocando os campos do código de barras, e causar overflow em valores intermediários de CPT quando alguém amplia posteriormente a rotina para um JDN completo. Mantenha na lógica ladder comentários que indiquem as palavras de origem do RTC realmente usadas naquela máquina.

Quando o código de data fizer parte de uma célula de embalagem mais ampla, armazene o gerador como um arquivo reutilizável e padronize os layouts de inteiros entre as linhas. Processadores sobressalentes e a documentação desses sistemas PLC SLC-500 devem incluir a rotina de codificação de datas, para que uma substituição de processador não reverta silenciosamente para uma implementação de calendário antiga e incorreta.

Sobre o autor

Mark Townsend | Engenheiro sênior de automação – sistemas Allen-Bradley

Mark Townsend é engenheiro sênior de automação, com mais de 18 anos de experiência em plataformas Allen-Bradley, abrangendo ControlLogix, CompactLogix e o SLC-500 legado. Seu trabalho diário envolve lógica no RSLogix / Studio 5000 e a entrada em operação de IHMs FactoryTalk View em frotas antigas e mistas.

Guia de implementação do gerador de data juliana do SLC-5/04

Implemente um gerador de data juliana no SLC-5/04 para saída ASCII em impressoras de etiquetas. Lógica ladder passo a passo com instruções Compute.

A família SLC-5/04, incluindo processadores como o 1747-L542, não fornece uma instrução integrada para o número do dia juliano (JDN). Embalagens, codificação de lotes e impressoras de etiquetas frequentemente exigem um valor de dia do ano ou uma string compacta YYYYDDD, portanto, a lógica precisa ser construída com operações matemáticas comuns e operações de tabela de dados. Este guia apresenta uma abordagem de fácil manutenção usando expressões CPT, uma tabela cumulativa de dias dos meses, tratamento de anos bissextos e conversão para ASCII para os dados enviados à impressora, destacando também os limites da matemática de dezesseis bits que causam problemas em muitas primeiras implementações.

Guia de implementação do gerador de data juliana do SLC-5/04 — figura 1 Os processadores SLC-5/04 calculam o dia do ano e códigos no estilo juliano em lógica ladder usando CPT, arquivos de inteiros e valores de RTC obtidos de fontes verificadas.

Às vezes, o material de referência aponta para palavras do arquivo de status na região S:50–S:52 para ano, mês e dia, enquanto outra documentação enfatiza a área mais ampla do relógio de tempo real ao redor de S:37, dependendo do processador e do contexto do firmware. Trate as palavras de origem do RTC com cuidado: verifique o mapa exato do arquivo de status para o catálogo e a série instalados antes de definir os aliases das tags. Depois que os campos do calendário forem validados, o algoritmo em si será portátil entre projetos SLC-5/04.

Layout da tabela de dados

Um layout organizado de inteiros mantém a rotina legível para o próximo técnico. Um padrão comum usa os registros N7 da seguinte forma: N7:0 ano, N7:1 mês, N7:2 dia do mês, N7:3 resultado do dia do ano, N7:4 sinalizador de ano bissexto e N7:5 como área de armazenamento temporário para resultados intermediários de CPT. Armazene os deslocamentos cumulativos dos dias dos meses em uma tabela fixa de inteiros — por exemplo, N10:1 a N10:12 contendo 0, 31, 59, 90, 120, 151, 151, 181, 212, 243, 273, 304 para uma base não bissexta até novembro, aplicando o tratamento de fevereiro por meio do sinalizador de ano bissexto em vez de editar a tabela durante a execução. Ajuste a tabela exata de acordo com a indexação baseada em zero de sua preferência, mas documente isso próximo aos rungs.

Exemplo de abordagem para DOY (conceitual)
Bissexto = (Y divisível por 4), com as regras de século conforme necessário
DOY = Dia + Cumulativo[Mês] + (Bissexto E Mês>2)
String YYYYDDD via ASC / formatação no estilo AIF para impressoras

Para muitas fábricas, o dia do ano (DOY) no formato YYYYDDD é suficiente e evita a complexidade completa do JDN astronômico. Números de dias julianos completos que abrangem séculos exigem mais cuidado com inteiros; as operações CPT do SLC com inteiros de 16 bits sofrem overflow se os produtos intermediários não forem armazenados em etapas. Prefira calcular o DOY no espaço de 16 bits e, em seguida, concatenar o ano e o DOY preenchido com zeros em um arquivo ASCII para a impressora, em vez de forçar tudo em um único inteiro grande demais.

Ano bissexto e estrutura CPT

A lógica de ano bissexto deve seguir as regras do calendário civil usadas pelo seu sistema de qualidade. No mínimo, anos divisíveis por quatro são bissextos; se o ciclo de vida do seu produto incluir mudanças de século, aplique as exceções completas do calendário gregoriano (anos de século só são bissextos se forem divisíveis por 400). Defina N7:4 como um quando o ano for bissexto. Ao adicionar o deslocamento cumulativo do mês, acrescente um dia somente se o sinalizador de ano bissexto estiver definido e o mês for posterior a fevereiro. Faça essa adição em uma CPT dedicada, em vez de ocultar condições aninhadas dentro de uma expressão difícil de ler.

Copie o ano, o mês e o dia das palavras de origem do RTC verificadas para os registros de trabalho N7 em uma tarefa periódica lenta ou durante a primeira varredura, além de uma transição diária. Não leia as palavras do RTC em todos os rungs de execução contínua se a formatação ASC posterior for dispendiosa; uma atualização uma vez por minuto geralmente é suficiente para a codificação de datas.

Guia de implementação do gerador de data juliana do SLC-5/04 — figura 2 Strings DOY preenchidas com zeros à esquerda alimentam as impressoras de etiquetas com mais confiabilidade do que inteiros brutos quando o comprimento do código de barras precisa permanecer fixo.

Formatação ASCII para impressoras de etiquetas

A maioria das impressoras industriais espera uma string de largura fixa. Depois que o DOY for calculado em N7:3, use instruções de arquivo ASCII para criar uma string como YYYYDDD, com zeros à esquerda no campo do dia. Valide o comprimento antes de acionar o handshake de impressão. Se o protocolo da impressora exigir separadores ou prefixos específicos da fábrica, crie-os no mesmo buffer de string em vez de depender da impressora para preencher os campos.

  1. Confirme o mapeamento das palavras do RTC para o firmware específico do 1747-L542 (ou do SLC-5/04 instalado).
  2. Crie as tags de trabalho N7 e a tabela cumulativa dos meses em um arquivo de inteiros.
  3. Escreva a lógica CPT do ano bissexto e uma CPT de DOY que some dia + cumulativo + ajuste de ano bissexto.
  4. Formate YYYYDDD por meio de ASC e teste com datas conhecidas do calendário, incluindo 28 de fevereiro e 1º de março em anos bissextos e não bissextos.
  5. Proteja-se contra overflow de 16 bits se alguma rotina tentar calcular produtos de JDN completos que abranjam vários séculos; divida os cálculos em etapas ou transfira esse cálculo para fora do SLC.

Verificações de ano bissexto e preenchimento com zeros na impressora

As datas de verificação devem incluir 2024-02-29, 2024-03-01, 2025-02-28 e as transições de fim de ano em 12-31. Compare o DOY do PLC com um calendário independente. Os problemas comuns incluem confiar nos endereços errados do arquivo de status, esquecer o ajuste de ano bissexto de fevereiro, imprimir valores DOY sem preenchimento de zeros, deslocando os campos do código de barras, e causar overflow em valores intermediários de CPT quando alguém amplia posteriormente a rotina para um JDN completo. Mantenha na lógica ladder comentários que indiquem as palavras de origem do RTC realmente usadas naquela máquina.

Quando o código de data fizer parte de uma célula de embalagem mais ampla, armazene o gerador como um arquivo reutilizável e padronize os layouts de inteiros entre as linhas. Processadores sobressalentes e a documentação desses sistemas PLC SLC-500 devem incluir a rotina de codificação de datas, para que uma substituição de processador não reverta silenciosamente para uma implementação de calendário antiga e incorreta.

Sobre o autor

Mark Townsend | Engenheiro sênior de automação – sistemas Allen-Bradley

Mark Townsend é engenheiro sênior de automação, com mais de 18 anos de experiência em plataformas Allen-Bradley, abrangendo ControlLogix, CompactLogix e o SLC-500 legado. Seu trabalho diário envolve lógica no RSLogix / Studio 5000 e a entrada em operação de IHMs FactoryTalk View em frotas antigas e mistas.

Deixe um comentário

Por favor, note que os comentários precisam ser aprovados antes de serem publicados.