Ponteiro AR1 Acesso Dados DB (Ponteiro/Index) Linguagem STL - PLC CLP Siemens
Ponteiro AR1 e Linguagem STL: Como Aceder a Dados em DBs no TIA Portal
Para programadores de PLC Siemens que precisam de lidar com grandes volumes de dados ou estruturas dinâmicas, o uso de ponteiros é uma técnica indispensável. Embora a linguagem STL (Statement List) seja considerada mais complexa, ela oferece um controlo de baixo nível sobre a memória que é extremamente poderoso.
Neste artigo, vamos explorar como utilizar o registo de endereço AR1 para criar uma lógica de busca (indexação) dentro de um Array numa Data Block (DB). [
1. Estrutura de Dados e o Objetivo
Imagine que tem uma DB com um Array de 11 posições. Cada posição contém uma estrutura (UDT) com um ID (inteiro), um Nome e um E-mail. O nosso objetivo é:
Inserir um ID de procura numa variável.
Percorrer a DB automaticamente até encontrar o ID correspondente. [
]00:27 Retornar o Nome, o E-mail e a posição exata (em bytes) onde a informação foi encontrada. [
]01:00
2. Carregando o Ponteiro AR1
Para iniciar a busca, precisamos de "apontar" para o início da DB:
Usamos a instrução
L P#0.0para carregar o endereço inicial. [ ]01:46 Com
LAR1, transferimos esse valor para o registo AR1.O comando
SLD 3(Shift Left Double) é crucial aqui para converter o valor em formato de ponteiro de bits antes de carregar no AR1. [ ]01:59
3. Criando um Loop de Busca (Lógica STL)
A busca funciona através de uma estrutura de loop baseada em labels: [
Comparação: O PLC lê o valor no endereço apontado pelo AR1 e compara com o ID procurado (
==I). [ ]02:40 Salto Condicional (
JC): Se os valores forem iguais, o programa salta para uma label chamadaAchou_Info. [ ]03:21 Incremento: Se não encontrar, somamos o tamanho da nossa estrutura (ex: 50 bytes) ao ponteiro e voltamos ao início do loop. [
]04:35 Limite de Segurança: É vital verificar se o ponteiro ultrapassou o tamanho da DB (ex: 500 bytes) para evitar que o PLC entre em erro (Stop) por acesso a endereço inválido. [
]06:24
4. Extração de Dados: O Bloco BLKMOV
Uma vez encontrada a informação, precisamos de a copiar para as variáveis de saída.
Utilizamos o valor atual do AR1 para calcular a posição inicial. [
]07:43 A função BLKMOV (Block Move) é usada para transferir as Strings (Nome e E-mail) da DB de origem para a DB de destino de forma eficiente. [
]08:09
5. Monitorização Online em STL
Diferente do Ladder, a monitorização em STL mostra os valores nos registos ACCU 1 e ACCU 2 e o estado do bit de status (RLO). [
Ao ficar online, podes ver o ponteiro AR1 a incrementar em tempo real durante o ciclo de varrimento até encontrar o ID correto. [
]14:26
Conclusão
Dominar o ponteiro AR1 e a indexação em STL permite criar programas muito mais flexíveis e otimizados. Esta técnica é especialmente útil em sistemas de rastreabilidade e gestão de receitas onde os dados estão organizados em grandes tabelas.
Ainda usas STL para este tipo de lógica ou preferes o Texto Estruturado (SCL)? Deixa a tua opinião nos comentários!
Criar um Loop de procura através de Labels e Jumper em STL para varrer as Array[] na DB para acessar o dado procurado.
Faz a verificação / comparação do valor e carrega os valores em Inteiro (INT) e STRING.
Software TIA Portal V14.
Pode ser utilizado nos PLC´s S7-300 / S7-400 / S7-1500.
Tutorial de como Procurar Dados em DB com ARRAY[], via linguagem STL utilizando recurso de Ponteiro / Indexação com AR1 Registrador.
Criar um Loop de procura através de Labels e Jumper em STL para varrer as Array[] na DB para acessar o dado procurado.
Faz a verificação / comparação do valor e carrega os valores em Inteiro (INT) e STRING.
Software TIA Portal V14.
Pode ser utilizado nos PLC´s S7-300 / S7-400 / S7-1500.
Download do Projeto Criado no Video:
https://goo.gl/ip8ouz
Se Increva em Nosso Canal Youtube:
https://goo.gl/1P1oBS


0 comentários
COMENTÁRIOS AGORA