Академический Документы
Профессиональный Документы
Культура Документы
Logix5000™
Procedimentos
Comuns
1756-Lx, 1769-Lx, 1789-Lx,
1794-Lx
Manual de Programação
Informações Importantes Por causa da diversidade de usos dos produtos descritos nesta
publicação, os responsáveis pela aplicação e uso deste equipamento
ao Usuário de controle devem certificar-se de que todas as etapas necessárias
foram seguidas para garantir que cada aplicação e uso cumpram todos
os requisitos de desempenho e segurança, incluindo todas as leis,
regulamentações, códigos e padrões aplicáveis.
!
As instruções de atenção ajudam você a:
Allen-Bradley, ControlLogix, DH+, Logix5000, PLC-5, RSLogix 5000, RSLinx, RSNetWorx e SLC são marcas da Rockwell
Automation.
Notas:
Propósito deste Manual Este manual orienta o desenvolvimento de projetos para controladores
Logix5000. Ele fornece procedimentos passo-a-passo sobre como
realizar as seguintes tarefas, que são comuns a todos os controladores
Logix5000:
• Controladores CompactLogix™
• Controladores ControlLogix™
• Controladores FlexLogix™
• Controladores SoftLogix™
Quem Deve Usar Este Este manual deve ser usado pelas pessoas responsáveis pela
programação de aplicações que usam os controladores Logix5000,
Manual como:
• engenheiros de software
• engenheiros de controle
• engenheiros de aplicação
• técnicos de instrumentação
Quando Usar Este Manual Use este manual quando realizar estas ações:
Como Usar Este Manual Este manual é dividido em tarefas básicas que você realiza na
programação de um controlador Logix5000.
Ao usar este manual, você verá alguns termos que estão formatados
de forma diferente do restante do texto:
Capítulo 1
Gerenciamento dos Arquivos Criação de um Arquivo de Projeto . . . . . . . . . . . . . . . . . . . 1-1
de Projeto Armazenamento das Mudanças. . . . . . . . . . . . . . . . . . . . . 1-3
Capítulo 2
Organização das Tarefas Quando Usar este Procedimento . . . . . . . . . . . . . . . . . . . . 2-1
Como Usar este Procedimento . . . . . . . . . . . . . . . . . . . . . . 2-1
Identificação das Linguagens de Programação Disponíveis . 2-1
Organização da Lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2
Verificação do Controlador . . . . . . . . . . . . . . . . . . . . . . . . 2-5
Capítulo 3
Organização de Tags Planejamento de Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1
Crie um Tipo de Dados Definidos Pelo Usuário . . . . . . . . . 3-7
Notas: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8
Criação de um Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9
Criação de Tags Usando o Microsoft® Excel® . . . . . . . . . . . . . 3-10
Capítulo 4
Rotinas de Programas Quando Usar este Procedimento . . . . . . . . . . . . . . . . . . . . 4-1
Como Usar este Procedimento . . . . . . . . . . . . . . . . . . . . . . 4-1
Abertura da Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1
Inserção das Instruções Ladder . . . . . . . . . . . . . . . . . . . . . 4-3
Inserção das Instruções de Bloco de Função . . . . . . . . . . . 4-4
Atribuição de Operandos. . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
Verificação da Rotina . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
Capítulo 5
Acesso aos Valores do Monitoração dos Flags de Status . . . . . . . . . . . . . . . . . . . . 5-1
Sistema Obtenção e Definição dos Dados de Sistema . . . . . . . . . . 5-2
Capítulo 6
Atribuição de Aliases/ Tags com Aliases/Símbolos . . . . . . . . . . . . . . . . . . . . . . . . 6-1
Símbolos Exibição das Informações de Alias/Símbolo . . . . . . . . . . . . 6-2
Atribuição de um Alias/Símbolo . . . . . . . . . . . . . . . . . . . . 6-3
Capítulo 7
Atribuição de um Endereço Quando Atribuir um Endereço Indireto . . . . . . . . . . . . . . . 7-1
Indireto Expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3
Capítulo 8
Buffer de E/S Quando Usar o Buffer de E/S . . . . . . . . . . . . . . . . . . . . . . 8-1
Buffer de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1
Capítulo 9
Teste de um Projeto Teste de um Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1
Configuração de um Driver de Comunicação . . . . . . . . . . . 9-1
Descarregamento de um Projeto para o Controlador. . . . . . 9-2
Seleção de um Modo para o Controlador . . . . . . . . . . . . . . 9-3
Correção de uma Falha Graves . . . . . . . . . . . . . . . . . . . . . 9-4
Armazenamento das Mudanças Online. . . . . . . . . . . . . . . . 9-4
Capítulo 10
Comunicação com Outro Quando Usar este Procedimento . . . . . . . . . . . . . . . . . . . . 10-1
Controlador Como Usar Este Procedimento. . . . . . . . . . . . . . . . . . . . . . 10-1
Produção e Consumo de um Tag. . . . . . . . . . . . . . . . . . . . 10-1
O Que Você Precisa Fazer . . . . . . . . . . . . . . . . . . . . . . 10-3
Organização de Tags para Dados Compartilhados . . . . . 10-3
Produção de um Tag . . . . . . . . . . . . . . . . . . . . . . . . . . 10-4
Consumo de um Tag Produzido . . . . . . . . . . . . . . . . . . 10-5
Compartilhamento de Dados com um Controlador CLP-5C . 10-6
Produção de Inteiros para um Controlador CLP-5C . . . . 10-6
Produção de REALs para um Controlador CLP-5C . . . . . 10-7
Consumo de Inteiros a partir de um Controlador CLP-5C
ControlNet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-9
Ajuste para os Limites de Tamanho . . . . . . . . . . . . . . . . . 10-10
Envio de Mensagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11
Capítulo 11
Produção de uma Matriz Quando Usar Este Procedimento . . . . . . . . . . . . . . . . . . . . 11-1
Grande Produção de uma Matriz Grande . . . . . . . . . . . . . . . . . . . . 11-2
Capítulo 12
Comunicação com um Quando Usar Este Procedimento . . . . . . . . . . . . . . . . . . . . 12-1
Dispositivo ASCII Como Usar Este Procedimento. . . . . . . . . . . . . . . . . . . . . . 12-1
Conexão do Dispositivo ASCII . . . . . . . . . . . . . . . . . . . . . . 12-2
Configuração da Porta Serial . . . . . . . . . . . . . . . . . . . . . . . 12-3
Configuração do Protocolo do Usuário. . . . . . . . . . . . . . . . 12-5
Criação de Tipos de Dados do String . . . . . . . . . . . . . . . . . 12-8
Leitura de Caracteres do Dispositivo . . . . . . . . . . . . . . . . . 12-9
Envio de Caracteres para o Dispositivo . . . . . . . . . . . . . . 12-14
Inserção dos Caracteres ASCII . . . . . . . . . . . . . . . . . . . . . 12-20
Capítulo 13
Caracteres do Processo ASCII Quando Usar Este Procedimento . . . . . . . . . . . . . . . . . . . . 13-1
Como Usar Este Procedimento. . . . . . . . . . . . . . . . . . . . . . 13-1
Separação de um Código de Barras . . . . . . . . . . . . . . . . . . 13-2
Verificação de Caracteres do Código de Barras. . . . . . . . . . 13-4
Conversão de um Valor. . . . . . . . . . . . . . . . . . . . . . . . . . . 13-6
Decodificação de uma Mensagem ASCII . . . . . . . . . . . . . . 13-8
Construção de um String . . . . . . . . . . . . . . . . . . . . . . . . . 13-12
Capítulo 14
Force Valores Quando Forçar um Valor. . . . . . . . . . . . . . . . . . . . . . . . . . 14-1
Inserção de Force . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-2
Inserção de Forces a Partir da Janela Tags. . . . . . . . . . . 14-2
Inserção de Forces a Partir da Lógica Ladder. . . . . . . . . 14-4
Habilitação de Forces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-5
Desabilitação de Forces. . . . . . . . . . . . . . . . . . . . . . . . . . . 14-6
Remoção de Forces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-6
Monitoração de Forces . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-7
Capítulo 15
Desenvolvimento de uma Quando Usar Este Procedimento . . . . . . . . . . . . . . . . . . . 15-1
Rotina de Falha Desenvolvimento de uma Rotina de Falha . . . . . . . . . . . . . 15-1
Teste de uma Rotina de Falha . . . . . . . . . . . . . . . . . . . . . . 15-4
Capítulo 16
Criação de uma Falha Grave Quando Usar este Procedimento . . . . . . . . . . . . . . . . . . . . 16-1
Definida Pelo Usuário Criação de uma Falha Grave Definida pelo Usuário . . . . . . 16-1
Capítulo 17
Monitoração de Falhas de Quando Usar Este Procedimento . . . . . . . . . . . . . . . . . . . 17-1
Advertência Monitoração de Falhas de Advertência . . . . . . . . . . . . . . . 17-1
Capítulo 18
Desenvolvimento de uma Quando Usar Este Procedimento . . . . . . . . . . . . . . . . . . . . 18-1
Rotina de Energização Desenvolvimento de uma Rotina de Energização . . . . . . . . 18-1
Capítulo 19
Armazenamento e Quando Usar Este Procedimento . . . . . . . . . . . . . . . . . . . . 19-1
Carregamento de um Projeto Como Usar Este Procedimento. . . . . . . . . . . . . . . . . . . . . . 19-2
Usando Memória Não Volátil Armazenamento de um Projeto . . . . . . . . . . . . . . . . . . . . . 19-3
Carregamento de um Projeto . . . . . . . . . . . . . . . . . . . . . . . 19-6
Verificação do Carregamento . . . . . . . . . . . . . . . . . . . . . . . 19-9
Apagamento da Memória Não Volátil . . . . . . . . . . . . . . . . 19-10
Apêndice A
Códigos de Falha Quando Usar Este Apêndice . . . . . . . . . . . . . . . . . . . . . . . A-1
Códigos de Falha Grave . . . . . . . . . . . . . . . . . . . . . . . . . . A-1
Códigos de Falha de Advertência. . . . . . . . . . . . . . . . . . . . A-3
Apêndice B
Conformidade IEC61131-3 Use este Apêndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1
Sistema Operacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2
Definições dos Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2
Linguagens de Programação . . . . . . . . . . . . . . . . . . . . . . . B-3
Conjunto de Instruções . . . . . . . . . . . . . . . . . . . . . . . . . . . B-4
Portabilidade do Programa IEC61131-3 . . . . . . . . . . . . . . . B-4
Tabelas de Conformidade com IEC . . . . . . . . . . . . . . . . . . B-5
Glossário
Criação de um Arquivo Antes de você programar um controlador Logix5000, você deve criar
um arquivo de projeto:
de Projeto
1. Inicie o software RSLogix 5000™.
3.
4.
5.
6.
7.
8.
42194
9. Clique em OK.
nome do controlador
organizador do
controlador
42371
Armazenamento das Assim que você criar a lógica e fizer as mudanças de configuração,
salve o projeto.
Mudanças
Para: Faça isto:
salvar suas mudanças No menu File, selecione Save.
fazer uma cópia do projeto A. No menu File, selecione Save As .
aberto, mas mantendo o nome B. Digite um nome para o arquivo do projeto. Use
do controlador existente sublinhas [ _ ] no lugar dos espaços.
C. Clique em Save.
fazer uma cópia do projeto e A. No menu File, selecione Save As .
atribuir um nome diferente para B. Digite um nome para o arquivo do projeto. Use
o controlador sublinhas [ _ ] no lugar dos espaços.
C. Clique em Save.
D. No organizador do controlador, clique com o
botão direito sobre a pasta
name_of_controller e selecione
Properties.
E. Digite um novo nome para o controlador.
F. Clique em OK.
Notas:
Quando Usar este Após criar um arquivo de projeto, organize seu projeto em tarefas.
Procedimento
Como Usar este Para organizar o projeto em tarefas, execute as etapas a seguir:
Procedimento • Identificação das Linguagens de Programação Disponíveis
• Organização da Lógica
• Verificação do Controlador
Notas:
Organização da Lógica Para executar a sua lógica, utilize uma(s) tarefa(s). Há dois tipos de
tarefas:
42195
EXEMPLO Seqüência de execução de uma tarefa para um projeto com duas tarefas periódicas e
uma tarefa contínua
Legenda:
A tarefa é executada
Tarefa 1
Tarefa 2
Tarefa 3
5 10 15 20 25 30 35 40 45 50
tempo transcorrido (ms)
Notas:
Verificação do Controlador Assim que você programar seu projeto, verifique periodicamente a
sua tarefa:
Notas:
Organização de Tags
Propriedade: Descrição:
escopo define quais rotinas podem acessar os dados
nome identifica os dados (Tags com diferentes usos podem
ter o mesmo nome)
tipo de dados define a organização dos dados, bem como um bit,
números inteiros, ou números de ponto flutuante
Para: Selecione:
dispositivo analógico em modo de ponto flutuante REAL
dispositivo analógico em modo de número inteiro (para amostras INT
de taxas muito rápidas)
Caracteres ASCII grupo
bit BOOL
Counter COUNTER
ponto de E/S digital BOOL
número de ponto flutuante REAL
inteiro (número total) DINT
sequenciador CONTROL
temporizador TIMER
dispositivo de E/S
analógica
valor inteiro
bit de armazenamento
Contador
temporizador
dispositivo de E/S
digital
42364
42367
42367
A dimensão mais à direita incrementa em
seu valor máximo e recomeça.
EXEMPLO Tipo de dados definidos pelo usuário que armazena uma receita
Em um sistema de vários tanques, cada tanque pode executar uma variedade de receitas.
Como a receita precisa de uma mistura de tipos de dados (REAL, DINT, BOOL, etc.) um
tipo de dados definido pelo usuário é usado.
matriz de receitas
membros da receita
42368
EXEMPLO Um tipo de dados definido pelo usuário que armazene os dados que são necessários
para executar uma máquina
Como diversas estações de perfuração requisitam a seguinte combinação de dados, um
tipo de dados definido pelo usuário é criado.
42583
Crie um Tipo de Dados Para criar um tipo de dados definido pelo usuário:
Definidos Pelo Usuário
42195
2.
3.
42196
4. 5. 6. 7.
data_type[x]
onde:
8. Clique em Apply.
9. Mais membros?
Se: Então:
Sim Repita as etapas 4. a 8.
Não Clique em OK.
Notas:
BOOL BOOL
BOOL DINT
BOOL BOOL
DINT DINT
DINT BOOL
2.
42350
3. 4. 5.
onde:
Criação de Tags Usando o Você também pode usar um software de planilha eletrônica como o
Microsoft Excel para criar e editar tags. Isto permite que você
Microsoft® Excel® aproveite os recursos de edição no software de planilha eletrônica.
Os tags são
armazenados nesta
pasta.
4.
5.
42361
6. Clique em Export.
8. 9. 10. 11.
8. Insira TAG
Para: Utilize
enviar dados pela placa de fundo do chassi e pela rede tag produzido
ControlNet a um intervalo específico
receber dados de outro controlador pela placa de fundo tag consumido
do chassi ou pela rede ControlNet a um intervalo
específico
Rotinas de Programas
Quando Usar este Após organizar seu projeto em um conjunto inicial de rotina e tags,
use este procedimento para desenvolver a lógica que cada rotina
Procedimento executará.
Como Usar este Para programar uma rotina, execute as etapas a seguir:
Procedimento • Abertura da Rotina
• Inserção das Instruções Ladder
• Inserção das Instruções do Bloco de Função
• Atribuição de Operandos
• Verificação da Rotina
Abertura da Rotina
Para fechar uma pasta e esconder seu conteúdo (comprimir), execute uma
das seguintes opções:
• Clique duas vezes na pasta.
• Selecione a pasta e pressione a tecla ←.
• Clique no sinal de –.
Para abrir uma pasta e exibir seu conteúdo (expandir), execute uma das
seguintes opções:
• Clique duas vezes na pasta.
• Selecione a pasta e pressione a tecla →. 42581
• Clique no sinal de +.
Se o ícone: Então:
não estiver acinzentado Clique duas vezes na rotina.
estiver acinzentado Você não pode abrir, programar ou editar a rotina. Para determinar o motivo:
1. Clique duas vezes na rotina.
2. Na parte inferior da janela RSLogix 5000, qual é a mensagem exibida na linha de status?
Se: Então:
“Failed to open the routine - O editor de bloco de função não está instalado. Para instalá-lo,
editor not installed” (falha ao solicite o seguinte código de catálogo do software RSLogix
abrir a rotina - editor não 5000:
instalado) • 9324-RLD700
“Source not available” (fonte A fonte da rotina não está disponível.
não disponível) Você pode:
• executar a rotina
• exibir as propriedades da rotina
• identificar as referências cruzadas para a lógica na rotina
Você não pode:
• abrir (exibir) a rotina
• editar a rotina
• alterar as propriedades da rotina
• pesquisar a rotina
• ir para as referências cruzadas dentro da rotina
• imprimir a rotina
• exportar a rotina
Inserção das Instruções de Uma rotina de bloco de função contém os seguintes elementos:
Bloco de Função
Elemento: Propósito:
bloco de função Executa uma operação em valores de entrada e gera valores de saída
• Pinos à esquerda do bloco são pinos de entrada.
• Pinos à direita do bloco são pinos de saída.
referência de entrada (IREF) Fornece um valor de um dispositivo de entrada ou tag em outra rotina ou outro
controlador
referência de saída (OREF) Fornece um valor para um dispositivo de saída ou tag em outra rotina ou outro
controlador
conector de fio de saída (OCON) Conecta blocos de função que estejam distantes ou em folhas diferentes
• Cada OCON requer um nome exclusivo.
conector de fio de entrada (ICON) • Para cada OCON, é necessário pelo menos um ICON correspondente
(ou seja, um ICON com o mesmo nome do OCON).
• Vários ICONs podem fazer referência a um mesmo OCON. Isso permite
distribuir os dados para vários pontos na rotina.
1. 2. 3.
42587
42584
C
4. 5.
6.
42586
• nome de tag
• valor
• nome de uma rotina, rótulo, conector de fio, etc.
onde:
42357
C. Clique em ▼
D. Selecione um nome:
Se: Então:
Sim Vá para o próximo operando.
Não Crie o tag:
A. Clique com o botão direito do mouse no tag e selecione New “nome_do_tag”. (Em versões
anteriores do software, a opção do menu é Create “nome_do_tag”.)
B. Na caixa Description, digite uma descrição para o tag (opcional).
C. Na caixa Data Type, digite o tipo de dados para o tag:
Se o tag: Digite:
não for uma matriz (arquivo) data_type
for uma matriz de uma dimensão data_type[x]
for uma matriz de duas dimensões data_type[x,y]
for uma matriz de três dimensões data_type[x,y,z]
onde:
data_type é o tipo de dados armazenados pelo tag ou pela matriz. Consulte a Tabela 3.B na
página 3-1.
x é o número de elementos na primeira dimensão.
y é o número de elementos na segunda dimensão.
z é o número de elementos na terceira dimensão.
D. Na lista Scope, selecione o escopo do tag:
E. Escolha OK.
Verificação da Rotina Assim que programar sua(s) rotina(s), verifique periodicamente seu
trabalho:
Monitoração dos Flags de O controlador suporta as palavras-chaves de status que você pode
usar na sua lógica para monitorar eventos específicos:
Status • As palavras-chaves de status não são sensíveis ao contexto.
• Como os flags de status podem mudar muito rapidamente, o
software RSLogix 5000 não mostra o status dos mesmos. (Ou
seja, mesmo quando um flag de status é ajustado, a instrução
que se refere ao flag não é destacada.)
• Você não pode definir um alias de tag para uma palavra-chave.
Importante: Cada vez que S:V passa de zerado para energizado, gera
uma falha de advertência (tipo 4, código 4)
o valor do destino da instrução for 0. S:Z
o valor do destino da instrução for negativo. S:N
uma operação aritmética resulta em um transporte ou empréstimo que S:C
tenta utilizar bits fora do tipo de dados.
Por exemplo:
• a soma de 3 + 9 resulta em um transporte de 1
• a subtração de 25 – 18 resulta em um empréstimo de 10
esta é a primeira varredura normal das rotinas no programa atual S:FS
pelo menos uma das falhas de advertência foi gerada: S:MINOR
• O controlador energiza este bit quando uma falha de advertência
ocorre, devido à execução do programa.
• O controlador não energiza esse bit para falhas de advertência que
não estão relacionadas à execução do programa, como bateria
fraca.
!
Para obter ou definir um valor no sistema:
42370
Atribuição de Aliases/Símbolos
Tags com Aliases/Símbolos Um tag com alias/símbolo permite que você crie um tag que
representa outro tag.
drill_1_depth_limit é um alias/símbolo
para Local:2:I.Data.3 (um ponto de
entrada digital). Quando a entrada é
energizada, o tag com alias/símbolo
também se energiza.
drill_1_on é um alias/símbolo
para Local:0:O.Data.2 (um ponto
de saída digital). Quando o tag
com alias/símbolo é energizado,
o tag de saída também energiza.
north_tank é um alias/símbolo
para tanks [0,1].
42360
drill_1_on
machine_on <Local:0:O.Data.2> drill_1.part_advance
42351
Exibição das Informações Para mostrar (em sua lógica) o tag para o qual um alias/símbolo
aponta:
de Alias/Símbolo
1. A partir do menu Tools, selecione Options.
4. Clique em OK.
Atribuição de um Alias/ Para atribuir um tag com alias/símbolo para outro tag:
Símbolo 1. A partir do menu Logic, selecione Edit.
2.
42360
3.
A célula mostra um ▼
4. Clique no ▼
Notas:
Quando Atribuir um Ser você quiser que uma instrução acesse diferentes elementos em
uma tabela, use um tag no subscrito da matriz (um endereço indireto).
Endereço Indireto Ao mudar o valor do tag, você muda o elemento da matriz à qual sua
lógica se refere.
MOV
Move
Source timer_presets[north_tank.step]
60000
Dest north_tank.step_time.PRE
60000
north_tank.step_time.DN TON
/ Timer On Delay EN
Timer north_tank.step_time DN
Preset 60000
Accum 0
north_tank.step_time.DN ADD
Add
Source A 1
Source B north_tank.step
0
Dest north_tank.step
0
Quando o north_tank.step excede o tamanho da matriz, a linha reseta o tag para começar no
primeiro elemento da matriz. (A matriz contém elementos de 0 a 3.)
EQU MOV
Equal Move
Source A north_tank.step Source 0
0
Source B 4 Dest north_tank.step
0
42358
Expressões Você também pode usar uma expressão para especificar o subscrito
de uma matriz.
• Uma expressão usa operadores, como + ou –, para calcular um
valor.
• O controlador calcula o resultado da expressão e usa-o como o
subscrito da matriz.
Notas:
Buffer de E/S
Quando Usar o Buffer O buffer de E/S é uma técnica na qual a lógica não faz referência nem
manipula diretamente os tags dos dispositivos de E/S reais. Ao invés
de E/S disso, a lógica usa uma cópia dos dados de E/S. O buffer de E/S é
usado nas seguintes situações:
A rotina map_inputs copia os valores dos dispositivos de entrada para seus tags correspondentes,
que são usados na rotina drill.
_1791_8AC:I.Data[0].0 drill[1].depth_limit
_1791_8AC:I.Data[0].4 drill[1].home_limit
A rotina map_outputs copia os valores dos dispositivos de saída na rotina drill para seus dispositivos
de saída correspondentes.
drill[1].forward _1791_8AC:O.Data[0].0
drill[1].retract _1791_8AC:O.Data[0].1
42369
CPS
Synchronous Copy File
Source Local:0:I.Data[0]
Dest input_buffer[0]
Length 20
42578
Notas:
Teste de um Projeto
ControlNet™ 1784-KTC(X)
6. Escolha OK.
7. Configure o driver:
Se: Então:
Sim 1. Escolha Add New.
2. Vá para a etapa A.
Não Vá para a próxima etapa.
3. Clique em OK.
4. Clique em Close.
42371
Correção de uma Falha Se o controlador inserir o modo de falha, uma falha grave ocorreu e
o controlador parou de executar a lógica.
Graves
42371
Armazenamento das Se você fez mudanças no projeto enquanto estava online, armazene
o projeto, de forma que o arquivo de projeto offline corresponda ao
Mudanças Online arquivo de projeto online:
Quando Usar este Use este procedimento para transferir dados entre controladores
(enviar ou receber dados) usando um destes métodos:
Procedimento
• Produção e Consumo de um Tag
• Envio de Mensagens
Produção e Consumo Um tag produzido envia seus dados para um ou mais tag
consumidos (consumidores) sem usar a lógica ladder.
de um Tag
Rede ControlNet
e/ou
controller_1 Placa de fundo do chassi controller_2
ControlLogix
tag produzido tag consumido
controller_3
tag consumido
controller_4
tag consumido
Produção de um Tag
Dependendo de seu sistema, você também pode ter que realizar estas
ações:
Por exemplo, você pode criar um tag para dados que são
críticos e outro tag para dados que não são críticos.
Produção de um Tag
1. Abra o projeto RSLogix 5000 que contém o tag que você quer
produzir.
42352
5. 6.
7. Clique em OK.
6.
7.
8. 42353
9.
10.
Se estiver Então:
produzindo:
Apenas um valor REAL Crie um tag produzido e selecione o tipo de dados REAL.
Mais de um valor REAL A. Crie um tipo de dados definidos pelo usuário que
contenha a matriz de REALs.
B. Crie um tag produzido e selecione um tipo de
dados definidos pelo usuário a partir da Etapa A.
As duas instruções MOV revertem a ordem dos inteiros, conforme os inteiros se movem para um novo
local. Como o destino de uma instrução COP é um endereço de ponto flutuante, ele leva dois inteiros
consecutivos para um total de 32 bits e os converte em um único valor de ponto flutuante.
42354
Ajuste para os Limites Você pode criar um tag produzido ou consumido de até 500 bytes.
Quando você compartilhar um tag em uma rede ControlNet, o tag
de Tamanho também deve se adequar à largura de banda da rede:
Envio de Mensagens Para organizar os dados para uma mensagem, siga estas orientações:
Digite: MESSAGE
Uso: Controlador
42188
Mova continuamente os valores em dint_array para int_buffer. Isto converte os valores para inteiros de 16 bits (INTs). Então, a instrução
de mensagem envia int_buffer para um controlador CLP-5.
message.EN fal_control FAL MSG
/ RES File Arith/Logical EN Type - Unconfigured EN
Control fal_control Message Control message ... DN
Length ? DN ER
Position 0
Mode all ER
Dest int_buffer[fal_control.pos]
??
Expression dint_array[fal_control.pos]
42192
Leia continuamente valores inteiros de 16 bits (INTs) de um controlador CLP-5 e armazene-os em int_buffer. A instrução FAL move os
valores para dint_array. Isto converte os valores para inteiros de 32 bits (DINTs), para o uso por outras instruções no projeto.
message.EN MSG
/ Type - Unconfigured EN
Message Control message ... DN
ER
42192
Quando Usar Este O controlador Logix5550 pode enviar até 500 bytes de dados em uma
única conexão programada. Isto corresponde a 125 elementos DINT
Procedimento ou REAL de uma matriz. Para transferir uma matriz de mais de
125 DINTs ou REALs, use um tag produzido/consumido de
125 elementos para criar um pacote de dados. Você pode, então, usar
o pacote para enviar a matriz por partes para outro controlador.
Produtor Consumidor
matriz matriz
pacote pacote
0
Produção de uma Matriz 1. Abra o projeto RSLogix 5000 que produzirá a matriz.
Grande 2. Na pasta Controller Tags, crie os seguintes tags:
onde:
Para: Especifique:
Controlador nome do controlador que está recebendo o pacote
Nome do Tag Remoto array_ack
onde:
Quando o valor do offset em array_ack[0] não for igual ao valor do offset atual, mas array_ack[1] for
igual a –999, o consumidor começa a receber o novo pacote, então a linha move –999 para o último
elemento do pacote. O consumidor espera até que ele receba o valor –999 antes de copiar o pacote para
a matriz. Isto garante que o consumidor tenha novos dados.
NEQ EQU MOV
Not Equal Equal Move
Source A array_ack[0] Source A array_ack[1] Source -999
0 0
Source B array_packet[123] Source B -999 Dest array_packet[124]
0 0
Quando o valor do offset em array_ack[0] for igual ao valor do offset atual, o consumidor copiou o
pacote para a matriz; então, a linha verifica a existência de mais dados para transferir. Se o valor do
offset, mais 123, for menor do que o tamanho da matriz, há mais dados para transferir, então a linha
aumenta o offset em 123. Caso contrário, não há mais dados para transferir, portanto a linha reseta o
valor do offset, registra o tempo de transferência e reseta o temporizador. Em ambos os casos, a linha
usa o novo valor de offset para criar um novo pacote de dados, anexa o novo valor de offset ao pacote
e remove o elemento de reconhecimento do pacote (packet[124]).
EQU
Equal
Source A array_ack[0]
0
Source B array_packet[123]
0
CMP ADD
Compare Add
Expression (array_ack[0] + 123) < array_size Source A array_packet[123]
0
Source B 123
Dest array_offset
0
CMP CLR
Compare Clear
Expression (array_ack[0] + 123) >= array_size Dest array_offset
0
MOV
Move
Source array_transfer_timer.ACC
0
Dest array_transfer_time
0
array_transfer_timer
RES
Se o tempo de transferência atual for maior do que o tempo máximo de transferência, atualize o tempo
máximo de transferência. Isto mantém um registro do maior tempo para a transferência de dados.
GRT MOV
Greater Than (A>B) Move
Source A array_transfer_time Source array_transfer_time
0 0
Source B array_transfer_time_max Dest array_transfer_time_max
0 0
42355
onde:
Para: Especifique:
Controlador nome do controlador que está enviando o pacote
Nome do Tag Remoto array_packet
onde:
12. Crie ou abra uma rotina para a lógica que moverá os dados dos
pacotes para a matriz destino.
Se o último elemento do pacote for igual a –999, o controlador recebe um pacote inteiro de novos dados
e começa a operação de cópia:
Se o último elemento do pacote não for igual a –999, a transferência do pacote para o controlador pode
não estar completa; então –999 move-se para array_ack[1]. Isto sinaliza o produtor para retornar o valor
de –999 no último elemento do pacote para verificar a transmissão do pacote.
NEQ
Not Equal
Source A array_packet[123]
0
Source B array_ack[0]
0
EQU MOV
Equal Move
Source A array_packet[124] Source array_packet[123]
0 0
Source B -999 Dest array_offset
0
COP
Copy File
Source array_packet[0]
Dest array[array_offset]
Length 123
MOV
Move
Source array_packet[123]
0
Dest array_ack[0]
0
CLR
Clear
Dest array_ack[1]
0
NEQ MOV
Not Equal Move
Source A array_packet[124] Source -999
0
Source B -999 Dest array_ack[1]
0
42356
Notas:
Quando Usar Este Use este procedimento para trocar dados ASCII com um dispositivo
através da porta serial do controlador. Por exemplo, você pode usar a
Procedimento porta serial para:
42237
Como Usar Este Para completar este procedimento, execute as seguintes tarefas:
Procedimento • Conexão do Dispositivo ASCII
• Configuração da Porta Serial
• Configuração do Protocolo do Usuário
• Criação de Tipos de Dados do String
• Leitura de Caracteres do Dispositivo
• Envio de Caracteres para o Dispositivo
1 CD 1 CD
2 RDX 2 RDX
3 TXD 3 TXD
4 DTR 4 DTR
COMMON COMMON
6 DSR 6 DSR
7 RTS 7 RTS
8 CTS 8 CTS
9 9 42231
sem handshake
Dispositivo ASCII Controlador
1 CD 1 CD
2 RDX 2 RDX
3 TXD 3 TXD
4 DTR 4 DTR
COMMON COMMON
6 DSR 6 DSR
7 RTS 7 RTS
8 CTS 8 CTS
9 9 42232
42627
5.
6.
42251
5. Selecione User.
7.
8.
9.
42251
2.
3.
42252
4.
5.
6.
7.
42252
8. Clique em OK.
Criação de Tipos de Dados Você armazena caracteres ASCII nos tags que usam um tipo de dado
grupo.
do String
42811
42812
Você pode usar o tipo de dados STRING ou Você pode criar um novo tipo de dados string para
padrão. Ele armazena até 82 caracteres. armazenar o número de caracteres que você define.
Se você: Então:
crie um tipo de dados de • Os dados estão truncados.
string menor • O LEN não é trocado.
crie um tipo de dados de Os dados e LEN são resetados para
string maior. zero.
Se: Então:
não Vá para Leitura de Caracteres do Dispositivo na página 12-9.
3.
sim Vá para a etapa 2.
5. Selecione OK.
42233
4.
Leitura de Caracteres do Como regra geral, antes de ler o buffer, use uma instrução ACB ou
ABL para verificar qual buffer contém os caracteres requisitados:
Dispositivo
• Uma instrução ARD ou ARL continua a ler o buffer, até que a
instrução leia os caracteres requisitados.
• Enquanto uma instrução ARD ou ARL estiver lendo o buffer,
nenhuma outra instrução da porta serial ASCII, exceto a
instrução ACL, pode ser executada.
• A verificação de que o buffer contém os caracteres requisitados
evita que a instrução ARD ou ARL impeça a execução de outras
instruções da porta serial ASCII, enquanto o dispositivo de
entrada envia seus dados.
4. 3.
5.
42235a
3. Insira 0.
10. 9.
7. 8. 11. 12.
42235a
9. Insira 0.
EXEMPLO Um leitor de código de barras envia códigos de barras para a porta serial (canal 0) do
controlador. Cada código de barra contém 24 caracteres. Para determinar quando o
controlador recebe um código de barra, a instrução ACB conta continuamente os
caracteres no buffer.
bar_code_count.EN ACB
/ ASCII Chars in Buffer EN
Channel 0 DN
SerialPort Control bar_code_count ER
Character Count 0
GEQ ARD
Grtr Than or Eql (A>=B) ASCII Read EN
Source A bar_code_count.pos Channel 0
0 Destination bag_bar_code DN
Source B 24 ''
SerialPort Control bar_code_read ER
String Length 24
Characters Read 0
42227
Se: Então:
sim Vá para Envio de Caracteres para o Dispositivo na página 12-14.
não Parada. Você está pronto para este dispositivo. Para usar os dados, vá
para “Caracteres do Processo ASCII” na página 13-1.
16. 15.
17.
42235
15. Insira 0.
21. 20.
19.
22. 23.
42235
20. Insira 0.
MV_line.EN ABL
/ ASCII Test For Buffer Line EN
Channel 0 DN
SerialPort Control MV_line ER
Character Count 0
MV_line.FD ARL
ASCII Read Line EN
Channel 0
Destination MV_msg DN
''
SerialPort Control MV_read ER
String Length 12
Characters Read 0
42226
Se: Então:
sim Vá para na página Envio de Caracteres para o Dispositivo 12-14.
não Parada. Este procedimento está finalizado. Para usar os dados, vá para
“Caracteres do Processo ASCII” na página 13-1.
5. 4.
3.
6. 7.
42236a
4. Insira 0.
EXEMPLO Quando a temperatura excede o limite alto (temp_high está on (ligado), a instrução AWA
envia cinco caracteres do tag string[1] para um terminal MessageView.
• A $14 conta como um caracter. Ele é o código hex para o caracter Ctrl-T.
• A instrução também envia (acrescenta) os caracteres definidos no protocolo do
usuário do controlador. Neste exemplo, a instrução AWA envia um retorno de carro
($OD), que marca o fim da mensagem.
temp_high AWA
ASCII Write Append EN
Channel 0
Source string[1] DN
'$1425\1'
SerialPort Control temp_high_write ER
String Length 5
Characters Sent 6
42229
12. 11.
10.
13. 14.
42236b
11. Insira 0.
EXEMPLO Quando a temperatura alcançar o limite baixo (temp_lowh está on (ligado), a instrução
AWT envia cinco caracteres do tag string[2] para um terminal MessageView. (A $14 conta
como um caracter. Ele é o código hex para o caracter Ctrl-T.)
temp_low AWT
ASCII Write EN
Channel 0
Source string[2] DN
'$142224\01$r'
SerialPort Control temp_low_write ER
String Length 9
Characters Sent 9
42229
19. 18.
17.
18. Insira 0.
EXEMPLO Quando o alarme está ligado, a instrução AWA envia os caracteres em alarm_msg e
anexa um caracter de extremidade.
• Por causa do número de caracteres em alarm_msg varia, a primeira linha muda o
comprimento do alarm_msg (alarm_msg.LEN) para o comprimento da instrução
AWA (alarm_write.LEN).
• Em alarm_msg, o $14 conta como um caracter. Ele é o código hex para o caracter
Ctrl-T.
27. 26.
25.
26. Insira 0.
EXEMPLO Quando MV_update estiver ligado, a instrução AWT envia os caracteres em MV_msg.
• Por causa do número de caracteres em MV_msg varia, a primeira linha muda o
comprimento do MV_msg (MV_msg.LEN) para o comprimento da instrução AWA
(MV_write.LEN).
• Em MV_msg, o $16 conta como um caracter. Ele é o código hex para o caracter
Ctrl-V.
1.
42616
2.
alimentação da linha
($0A)
linha nova ($0D$0A)
42615
O número de caracteres que você visualiza O número máximo de caracteres que o tag
na janela. Esta é a mesma janela do membro do string pode segurar.
LEN do tag do string.
3. Selecione OK.
Separação de um Código de Use as etapas a seguir para separar um código de barras para que
você possa realizar a ação com base nesse valor.
Barras
Por exemplo, um código de barras pode conter informações sobre
uma bagagem em uma esteira transportadora em um aeroporto. Para
verificar o número do vôo e destino da bagagem, você separa os
caracteres entre 10 – 18.
5 0 5 8 A M S
9 caracteres
Etapas:
2.
42808
5. 6.
42808
Verificação de Caracteres Nesta tarefa, você usa uma instrução de comparação (EQU, GEQ,
GRT, LEQ, LES, NEQ) para verificar os caracteres específicos.
do Código de Barras
• Os valores hexadecimais dos caracteres determinam se um string
é menor ou maior que outro string.
• Quando dois strings estão classificados em uma lista telefônica,
a ordem dos strings determina qual deles é o maior.
Etapas:
2. 3. 6.
4. 42808
42615
6. Insira a saída requerida.
EXEMPLO Quando bag_flt_and_dest for igual a gate[1], xfer{1] acende. Dessa forma, a bagagem é
encaminhada para o portão correto.
42808
Se: Então:
sim Vá para Separação de um Código de Barras na página 13-2.
não Pare. Você terminou este procedimento.
Etapas:
Se: Então:
ponto flutuante Vá para a etapa 2.
inteiro Vá para a etapa 7.
3.
42810
EXEMPLO Após ler o peso na escala (weight_read.EM está energizado) a instrução STOR converte
os caracteres numéricos em weight_ascii para um valor REAL e armazena o resultado em
weight.
42810
9. 10.
8.
42810
42620
11. Este string possui um outro valor que você queira usar?
Se: Então:
sim Vá para Decodificação de uma Mensagem ASCII na página 13-8.
não Pare. Você terminou este procedimento.
Decodificação de uma Use as etapas a seguir para extrair e converter um valor de uma
mensagem ASCII que contenha múltiplos valores.
Mensagem ASCII
Por exemplo, uma mensagem pode ser semelhante a:
Se o: E: Então:
string possuir mais que um valor Este é o primeiro valor. Vá para Conversão de um Valor na página 13-6.
Este não é o valor. Vá para a etapa 2.
string possuir somente um valor Vá para Conversão de um Valor na página 13-6.
Se for: Então:
ponto flutuante Insira Linha A: Encontre e Converta um Valor de Ponto
Flutuante
inteiro Insira Linha B: Encontre e Converta um Valor Inteiro
Linha A: Encontre e
Converta um Valor de
Ponto Flutuante
42810
Linha B: Encontre e
Converta um Valor
Inteiro
42810
4. 5. 6.
3.
42810
8. 9.
42615
10. 11.
42810
12. 13.
13. Insira o nome do tag para armazenar este valor. Defina o tipo de
dados como um string.
Se: Então:
STOR Vá para a etapa 15.
STOD Vá para a etapa 18.
15. 16.
42809
18. 19.
42809
20. Este string possui um outro valor que você queira usar?
Se: Então:
sim A. Adicione 1 ao Resultado da instrução Find.
(O tag da etapa 9.)
B. Repita as etapas 2 a 19
não Pare. Você terminou este procedimento.
Construção de um String Use as etapas a seguir para construir um string a partir das variáveis
na aplicação. Você pode enviar o string para um dispositivo de
disparo ASCII, como um terminal MessageView.
Etapas:
2. 3. 4.
42813
5. 6. 8.
42813
9. 10.
42615
9. Insira 2.
42813
15.
11. Insira o tag DINT que contém o segundo valor para o string.
EXEMPLO Para disparar uma mensagem no terminal MessageView, o controlador envia ao terminal
uma mensagem no seguinte formato: [Ctrl-T] message # \ address [CR]
Quando send_msg estiver energizado, a linha faz o seguinte:
• A primeira instrução DTOS converte o número de mensagem para os caracteres
ASCII.
• A instrução INSERT insere o número de mensagens (em ASCII) depois do caractere
de controle [Ctrl-T]. (O código hex para Ctrl-T is $14.)
• A segunda instrução DTOS converte o número de nós do terminal para os caracteres
ASCII.
• A instrução CONCAT coloca o número de nós (em ASCII) depois da barra invertida
[ \ ] e armazena o string final na msg.
Para enviar a mensagem, uma instrução AWA envia o tag msg e anexa o CR [CR].
42813
Notas:
Force Valores
Quando Forçar um Valor Use um force para suprimir um valor de entrada ou saída:
Se o valor dos dados for SINT, INT ou DINT, você pode forçar o valor
inteiro ou você pode forçar bits individuais dentro do valor. Os bits
individuais podem ter um status de force de:
• nenhum force
• force energizado
• force desenergizado
Inserção de Force Use a guia Monitor Tags da janela Tags ou use a janela Ladder para
inserir forces.
A partir da janela Tags, guia Monitor Tags, você pode forçar um valor
de duas maneiras. Você pode:
Para valores SINT, INT, DINT e REAL, você pode forçar todos os
bits como uma entidade (o valor inteiro)
Habilitação de Forces Para que um force tenha efeito, habilte os forces. Você pode habilitar
e desabilitar forces apenas no controlador. Você não pode habilitar ou
desabilitar forces para um módulo específico, grupo de tags ou
elemento de tag.
Desabilitação de Forces Você pode desabilitar os forces sem remover os forces de valores
individuais ou do controlador. Desabilitando os forces, o projeto pode
ser executado como programado. Os forces ainda estão inseridos, mas
não são executados.
Remoção de Forces Você pode remover os forces sem remover os forces de valores
individuais ou do controlador inteiro.
Monitoração de Forces Você pode monitorar o status de force das seguintes maneiras:
• software RSLogix5000
• lógica da aplicação
• LED FORCE. (Controladores Logix5550 não têm LED indicativo
de status de force.)
Notas:
Quando Usar Este Se uma condição de falha ocorrer, que seja severa o suficiente para
que o controlador desligue, o controlador gera uma falha grave e
Procedimento pára a execução da lógica.
EQU EQU
Equal Equal
Source A major_fault_record.Type Source A major_fault_record.Code
0 0
Source B fault_type Source B fault_code
MOV MOV
Move Move
Source 0 Source 0
Dest major_fault_record.Type Dest major_fault_record.Code
0 0
Quando MAJORFAULTRECORD for energizado para os novos valores que estão contidos no tag
major_fault_record, a falha é removida e o controlador reinicia a execução.
SSV
Set system value
CIP Object class PROGRAM
CIP Object name THIS
Attribute name MAJORFAULTRECORD
Source major_fault_record.Time_Low
0
42372
onde: é o:
major_fault_record tag da etapa 2.
fault_type valor para o tipo de falha que você quer remover
fault_code valor para o código da falha que você quer remover
Teste de uma Rotina Você pode usar uma instrução JSR para testar a rotina de falha de um
programa sem criar um erro (ou seja, simulação de uma falha):
de Falha
1. Crie um tag BOOL que você usará para iniciar a falha.
onde: é o:
aaa tag que você usará para iniciar a falha (Etapa 1.)
bbb rotina de falha do programa
42373
onde: é:
name_of_fault_routine rotina da etapa 1.
x valor para o código da falha
Quando input_value for maior ou igual a 80, a execução salta para name_of_fault_routine. Uma
falha grave ocorre e o controlador insere o modo com fallha. As saídas vão para o estado com falha.
A janela Controller Properties, guia Major Faults, mostra o código 999.
GEQ JSR
Grtr Than or Eql (A>=B) Jump to Subroutine
Source A input_value Routine name name_of_fault_routine
0 Input par 999
Source B 80
42373
Quando Usar Este Se uma condição de falha ocorrer, que não seja severa o suficiente
para que o controlador desligue, o controlador gera uma falha de
Procedimento advertência.
Monitoração de Falhas de Para usar a lógica ladder para obter informações sobre uma falha de
advertência:
Advertência
Para verificar: Faça isto:
Sobreposição de tarefas 1. Insira uma instrução GSV, que obtém o objeto FAULTLOG, atributo MinorFaultBits.
periódicas 2. Monitore o bit 6.
carregue a memória não 1. Insira uma instrução GSV, que obtém o objeto FAULTLOG, atributo MinorFaultBits.
volátil 2. Monitore o bit 7.
um problema com a porta 1. Insira uma instrução GSV, que obtém o objeto FAULTLOG, atributo MinorFaultBits.
serial 2. Monitore o bit 9.
uma bateria fraca 1. Insira uma instrução GSV, que obtém o objeto FAULTLOG, atributo MinorFaultBits.
2. Monitore o bit 10.
um problema com uma 1. Crie um tipo de dado definido pelo usuário que armazene as informações de falhas. Dê um nome
instrução ao tipo de dado, FaultRecord, e atribua os seguintes membros:
Nome: Tipo de Dados: Estilo:
TimeLow DINT Decimal
TimeHigh DINT Decimal
Tipo INT Decimal
Code INT Decimal
Info DINT[8] Hexadecimal
2. Crie um tag que armazenará os valores do atributo MinorFaultRecord. Selecione o tipo de dado a
partir da etapa 1.
3. Monitore S:MINOR.
4. Se S:MINOR estiver energizado, use uma instrução GSV para obter os valores do atributo
MinorFaultRecord.
5. Se você quiser detectar uma falha de advertância que foi causada por outra instrução, resete
S:MINOR. (S:MINOR permanece energizado até o final da varredura).
Minor_fault_check realiza uma contagem de tempo durante 1 minuto (60.000 ms) e, então, recomeça
automaticamente.
A cada minuto, minor_fault_check.DN é energizado para uma varredura. Quando isto ocorre, a
instrução GSV obtém o valor do objeto FAULTLOG, atributo MinorFaultBits e armazena-o no tag
minor_fault_bits. Como a instrução GSV é executada apenas uma vez a cada minuto, o tempo de
varredura da maioria das varreduras é reduzido.
42373
EXEMPLO Verifique uma falha de advertência que é causada por uma instrução
Multiplique value_a por 1000000 e verifique a existência de uma falha de advertência, como um
overflow matemático:
• Para garantir que uma instrução anterior não produziu a falha, a linha remove S:MINOR primeiro.
• A linha, então, executa a instrução de multiplicação.
• Se a instrução produzir uma falha de advertência, o controlador energiza S:MINOR.
• Se S:MINOR estiver energizado, a instrução GSV obtém as informações sobre a falha e reseta
S:MINOR.
42373
Notas:
Quando Usar Este A rotina de power-up é uma tarefa adicional que é executada quando
o controlador é energizado no modo de Operação.
Procedimento
42195
Obtém as informações de falha e armazena-as no tag major_fault (estrutura definida pelo usuário)
GSV
Get system value
CIP Object class PROGRAM
CIP Object name THIS
Attribute name MAJORFAULTRECORD
Dest major_fault.TimeLow
0
Configura o tipo e o código da falha no tag major_fault para zero e configura MAJORFAULTRECORD
para os novos valores, que removem a falha.
MOV MOV SSV
Move Move Set system value
Source 0 Source 0 CIP Object class PROGRAM
CIP Object name THIS
Dest major_fault.Type Dest major_fault.Code Attribute name MAJORFAULTRECORD
0 0 Source major_fault.TimeLow
0
42375
onde:
Notas:
Armazenamento e Carregamento de um
Projeto Usando Memória Não Volátil
Etapas:
3.
42627
5.
42865
5. Selecione Load/Store.
Projeto que atualmente está na memória não volátil Projeto que atualmente está na memória do usuário
do controlador (se houver um projeto). (RAM) do controlador.
6.
7.
8.
42866
9.
Se: Então:
On Power Up Selecione o modo que você quer que o controlador
fique depois de um carregamento:
On Corrupt Memory
• programa remoto
• operação remota
Para ir para este modo depois de um carregamento,
vire a chave seletora de modo do controlador para a
posição REM.
User Initiated Vá para etapa 8.
Carregamento de um Nesta tarefa, você usa o software RSLogix 5000 para fazer o
carregamento do projeto na memória não volátil.
Projeto
Durante um carregamento, todos os eixos servo
ATENÇÃO
ativos estão desligados. Antes de carregar um
projeto, certifique-se de que isto não causará
Etapas:
42873
Se: Então:
Não Vá para etapa 3
Sim Vá para etapa 5
4.
42627
6.
42865
6. Selecione Load/Store.
Projeto que atualmente está na memória não volátil Projeto que atualmente está na memória do usuário
do controlador (se houver um projeto). (RAM) do controlador.
42866
7.
vermelho ⇒ verde
Na primeira varredura do projeto (S:FS está energizado), a instrução GSV obtém o objeto
FAULTLOG, atributo MinorFaultBits e armazena o valor em minor_fault_bits. Se o bit 7
estiver energizado, o controlador carregou o projeto de sua memória não volátil.
42867
Onde: É:
minor_fault_bits O tag que armazena o objeto FAULTLOG, atributo
MinorFaultBits. O tipo de dados é DINT.
NVM_load O tag que indica que o controlador carregou o projeto de
sua memória não volátil.
Apagamento da Memória Geralmente, você não precisa apagar a memória não volátil do
controlador. Ao armazenar um projeto, você substitui todos os
Não Volátil conteúdos da memória não volátil.
2.
42627
4.
42865
Se: Então:
Não Vá para etapa 5
Sim Vá para etapa 11
5. Selecione Load/Store.
9. Selecione OK.
16.
42865
42874
17.
Códigos de Falha
Códigos de Falha Grave Use a seguinte tabela para determinar a causa e a ação corretiva para
uma falha grave. O tipo e o código correspondem ao tipo e ao código
mostrados nestes locais:
Códigos de Falha de Use a seguinte tabela para determinar a causa e a ação corretiva para
uma falha de advertência. O tipo e o código correspondem ao tipo e
Advertência ao código mostrados nestes locais:
Conformidade IEC61131-3
Definições dos Dados A especificação IEC61131-3 fornece acesso para memória através da
criação de variáveis nomeadas. Os nomes IEC61131-3 para variáveis
consistem de, no mínimo, seis caracteres (o software de programação
RSLogix5000 permite um mínimo de 1 caracter) iniciando com um
sublinhado “_” ou um caracter alfa (A-Z), seguido por um ou mais
caracteres consistindo de um sublinhado “_”, caracter alfa (A-Z) ou
um número (0-9). Opcionalmente, os caracteres alfa minúsculos (a-z)
podem ser suportados, já que não são sensíveis ao contexto (A = a,
B = b, C = c …). Os controladores Logix5000 fornecem total
conformidade com esta definição, oferecem suporte para a opção de
minúscula e estendem o nome em até 40 caracteres.
Portabilidade do Programa Uma das metas de criação de programas pelos usuários finais em um
ambiente de conformidade com a IEC61131-3 é o movimento ou
IEC61131-3 portabilidade de programas entre controladores desenvolvidos por
diferentes fornecedores. Esta área é um ponto fraco da IEC61131-3
porque nenhum formato de troca de arquivo é definido pela
especificação. Isto significa que qualquer programa criado em um
ambiente do fornecedor requisitará a manipulação para mudá-lo para
outro sistema de fornecedor.
Notas:
A alias tag
aplicação
armazene
arquivo de projeto
Consulte aplicação.
ASCII
assíncrono
B binário
bit
BOOL
• 0 é igual a desenergizado
• 1 é igual a energizado
byte
C caminho
carga
carregamento
• comentários da linha
Consulte descarregamento.
CIP
conexão
conexão bidirecional
conexão cache
conexão unidirecional
correspondência exata
COUNTER
D decimal
Valores inteiros mostrados e inseridos com base 10. Sem prefixo. Não
adaptados ao comprimento do inteiro. Consulte binário, hexadecimal,
octal.
desabilitação da revisão
descrição
Texto opcional que você pode usar para documentar sua aplicação.
dimensão
DINT
direta
download
E elemento
Consulte matriz.
escopo
Define onde você pode acessar uma série específica de tags. Quando
você cria um tag, você o atribui tanto como um tag de uso geral do
controlador como um tag de programa para um programa específico,
conforme demonstração abaixo.
42195
escopo do controlador
escopo do programa
estilo
estrutura
Estrutura COUNTER
(Contador)
Para fechar a estrutura e Estrutura TIMER
esconder seus membros, (Temporizador)
clique no sinal – .
42365
estrutura pré-definida
exponencial
F falha de advertência
falha grave
A falha que não foi removida e até duas falhas adicionais que não
foram removidas são registradas no histórico de falhas do controlador.
o controlador
sim registra a falha grave existe rotina sim executa a rotina
falha de
para o PROGRAM de falha de de falha
instrução?
MajorFaultRecord programa? do programa atual
atual.
não não
sim
falha removida?
não
continua a execução
da lógica
o controlador determina a
falha grave para a rotina
de manipulação de falhas
PROGRAM
MajorFaultRecord.
não a rotina de
manipulação de
falhas existe
sim
a rotina de
manipulação
de falhas
sim
falha removida?
não
continua a execução
da lógica
entre com o modo
de falha registre o
FAULTLOG
desligue
Legenda:
A tarefa é executada.
1 ms 1 ms
atraso do sistema
9 ms 9 ms
tarefa contínua
5 10 15 20 25
tempo transcorrido (ms)
1 ms 1 ms 1 ms 1 ms
tarefa periódica
1 ms 1 ms
atraso do sistema
9 ms de tempo da tarefa 9 ms de tempo da tarefa contínua
contínua
tarefa contínua
5 10 15 20 25
tempo transcorrido (ms)
1 ms 1 ms 1 ms 1 ms 1 ms
atraso do sistema
4 ms 4 ms 4 ms 4 ms 4 ms
tarefa contínua
5 10 15 20 25
tempo transcorrido (ms)
1 ms
atraso do sistema
1 ms
tarefa contínua
5 10 15 20 25
tempo transcorrido (ms)
tarefa periódica
atraso do sistema
5 10 15 20 25
tempo transcorrido (ms)
5. Clique em OK.
formato de comunicação
flutuante
G gaveta otimizada
grupo
42811
42812
Você pode usar o padrão tipo de dados ou Você pode criar um novo grupo de tipo de dados para
STRING. Ele armazena até 82 caracteres. armazenar o número de caracteres que você definir.
Se você: Então:
faça um grupo de tipo de • Os dados são truncados.
dados menor • O LEN não é alterado.
faça um grupo de tipo de Os dados e o LEN são zerados.
dados maior
H hexadecimal
I índice
instrução
42362
INT
Por exemplo, se o NUT for de 5 ms, digite uma taxa de 5, 10, 20,
40 ms, etc.
M matriz
Uma matriz permite que você agrupe dados (do mesmo tipo de
dados), sob um nome comum.
42367
42367
one_d_array DINT[7] 7 -- --
número total de elementos = 7
two_d_array DINT[4,5] 4 5 --
three_d_array DINT[2,3,4] 2 3 4
membro
Por exemplo:
input_load.height
Por exemplo:
input_location.load_info.membro
height
ou
array_tag[position].substructure_name.member
_name
Por exemplo:
Consulte estrutura.
memória
mestre (CST)
modo de falha
módulo compatível
multicast
N nome
42195
O programa Rotina de
Energização é executado.
O controlador insere o
modo de falha.
objeto
octal
offline
online
P pós-varredura
pré-varredura
prioridade
programa
R ramificação
REAL
revisão eletrônica
revisão principal
revisão secundária
rotina
rotina principal
S SINT
Uma condição que ocorre quando uma tarefa está sendo executada e
a mesma tarefa é acionada novamente. O tempo de execução da
tarefa é maior do que a taxa periódica configurada para a tarefa.
Consulte tarefa periódica.
T tag
Alocação de Bits
memória
31 1 0
alocação não usados start
Alocação de Bits
memória:
31 0
alocação station_status
Alocação de Bits
memória
31 24 23 16 15 8 7 0
alocação 1 mixer.pressure
alocação 2 mixer.temp
alocação 3 mixer.agitate_time
alocação 4 não usado não usado não usado bit 0 mixer.inlet
bit 1 mixer.drain
bit 2 mixer.agitate
Alocação de Bits
memória:
31 16 0
alocação 1 temp_buffer[1] temp_buffer[0]
alocação 2 temp_buffer[3] temp_buffer[2]
tag base
tag consumido
Um tag que recebe os dados que são enviados por um tag produzido
em uma rede ControlNet ou em uma placa de fundo do chassi
ControlLogix. Um tag consumido deve:
tag produzido
tarefa
tarefa contínua
tarefa periódica
taxa
tempo de execução
tempo de varredura
tempo transcorrido
tipo de dados
BOOL BOOL
BOOL DINT
BOOL BOOL
DINT DINT
DINT BOOL
Consulte estrutura.
• Se você misturar tipos de dados e usar tags que não são tipos de
dados otimizados, o controlador converte os dados de acordo
com estas regras
Conversão: Resultado:
de inteiro maior para inteiro menor O controlador trunca a porção superior do inteiro maior e gera um overflow.
Por exemplo:
Decimal Binário
DINT 65,665 0000_0000_0000_0001_0000_0000_1000_0001
INT 129 0000_0000_1000_0001
SINT -127 1000_0001
de SINT ou INT para REAL Nenhuma precisão de dados é perdida
de DINT para REAL A precisão dos dados pode ser perdida. Ambos os tipos de dados armazenam dados em 32 bits,
mas o tipo REAL usa alguns destes 32 bits para armazenar o valor do expoente. Se a precisão for
perdida, o controlador a seleciona da porção menos significante do DINT.
de REAL para inteiro O controlador arredonda a parte fracional e trunca a porção superior da parte não-fracional. Se os
dados forem perdidos, o controlador energiza o flag de status de overflow.
Por exemplo:
REAL (fonte) DINT
(resultado)
-2,5 -2
-1,6 -2
-1,5 -2
-1,4 -1
1.4 1
1.5 2
1.6 2
2.5 2
V valor imediato
W watchdog
5. Clique em OK.
A IEC 1131-3
abertura linguagem de programação B-3
rotina 4-1 conformidade IEC 1131-3
alias conjunto de instruções B-4
criação 6-3 definições dos dados B-2
uso 6-1 introdução B-1
armazenamento de um projeto 19-1 portabilidade do programa B-4
arquivo de projeto conjunto de instruções B-4
criação 1-1 consumo
ASCII tag 10-1
comparação de caracteres 13-4 controlador
conexão de dispositivo 12-2 descarregamento 9-2
configuração da porta serial 12-3 desligamento 16-1
configuração do protocolo do usuário 12-5 modo 9-3
construção de string 13-12 mudança de propriedades 1-3
conversão de caracteres 13-6 suspensão 16-1
decodificação de mensagem 13-8 verificação 2-5
escrita de caracteres 12-14 conversão
extração de caracteres 13-2 caracteres ASCII 13-6
inserção de caracteres 12-20 criação
leitura de caracteres 12-9 alias 6-3
manipulação de caracteres 13-1 arquivo de projeto 1-1
organização de dados 12-8 driver 9-1
rotina 2-3
string 13-12
B subrotina 2-3
bloco de função tag 4-7
controladores que suportam blocos de função 2-1 tag com uso do Excel 3-10
inserção 4-4 tipo de dados do string 12-8
buffer criar
E/S 8-1 estrutura 3-7
matriz 3-9
C tag 3-9
tipo de dados definidos pelo usuário 3-7
carregamento 9-4
carregamento de um projeto 19-1
CLP-5C D
compartilhamento de dados 10-6 dados
código de barras ASCII 12-8
caracteres de teste 13-4 definições B-2
extração de caracteres 13-2 force 14-1, 14-2
códigos inserção dos caracteres ASCII 12-20
falha de advertência A-3 dados do sistema
falha grave A-1 acesso 5-2
comparação descarregamento 9-2
caracteres ASCII 13-4 desligamento do controlador 16-1
comunicação driver
outros controladores 10-1 configuração 9-1
configuração
carregamento a partir de memória não volátil 19-1
driver 9-1 E
porta serial para ASCII 12-3 E/S
protocolo di usuários para ASCII 12-5 buffer 8-1
conformidade sincronização com a lógica 8-1
F
M
falha
códigos de falha de advertência A-3 manipulação de string 13-1
códigos de falha grave A-1 matriz
criação definida pelo usuário 16-1 ao longo do índice 7-1
desenvolvimento de rotina para remover uma falha 15-1, criar 3-9
18-1 organizar 3-1
monitoração de advertência 17-1 produção de uma matriz grande 11-1
remoção 9-4, 15-1 memória não volátil 19-1
teste de uma rotina de falha 15-4 mensagem
falha de advertência decodificação de string 13-8
códigos A-3 organização de tags 10-11
lógica 17-1 modo
remoção 17-1 controlador 9-3
falha grave modo de operação 9-3
códigos A-1 modo de programa 9-3
criação definida pelo usuário 16-1 modo de teste 9-3
desenvolvimento de rotina de falha 15-1, 18-1 monitoração de forces 14-7
force
desabilitação 14-6 N
habilitação 14-5 número de ranhura 1-3
inserção 14-2
monitoração 14-7
remoção 14-6 O
tag 14-1 OCON 4-4
OREF 4-4
organização
I strings 12-8
ICON 4-4 tarefas 2-2
IEC 1131-3 organizar
conformidade B-2 estrutura 3-1
IEC 1131-3 conformidade matriz 3-1
tabelas B-5 tag 3-1
inserção
caracteres ASCIIs 12-20
endereço 4-7 P
instrução do bloco de função 4-4 peso
instrução ladder 4-3 conversão 13-6
instrução produção
matriz grande 11-1
R T
ramificação tabela de dados 3-1
inserção 4-3 tabelas de conformidade B-5
remoção tag
falha de advertência 17-1 atribuição 4-7
falha grave 9-4, 15-1 compartilhamento com CLP-5C 10-6
rotina criação 4-7
abertura 4-1 criação com uso do Excel 3-10
criação 2-3 criação de alias 6-3
inserção das instruções do bloco de função 4-4 criar 3-9
inserção das instruções ladder 4-3 force 14-1
linguagens 2-1 inserção 4-7
verificação 4-10 organização para mensagens 10-11
RSLinx organizar 3-1
configuração 9-1 produção de uma matriz grande 11-1
produção e consumo 10-1
string 12-8
S
tamanho do chassi 1-3
salvar 1-3 tarefa
salvar como 1-3 organização 2-2
serial teste de uma rotina de falha 15-4
conexão do dispositivo ASCII 12-2 tipo de dados definido pelo usuário
configuração da porta para ASCII 12-3 criar 3-7
fiação do cabo 12-2 tipo de dados do string
símbolo criação 12-8
criação 6-1
sistema operacional B-2
status V
monitoração 5-1, 5-2 verificação
string controlador 2-5
comparação de caracteres 13-4 rotina 4-10
conversão de caracteres 13-6
Caractere Deci- Hexa- Caractere Deci- Hexa- Caractere Deci- Hexa- Caractere Deci- Hexa-
mal deci- mal deci- mal deci- mal deci-
mal mal mal mal
[ctrl-@] NUL 0 $00 SPACE 32 $20 @ 64 $40 ‘ 96 $60
[ctrl-A] SOH 1 $01 ! 33 $21 A 65 $41 A 97 $61
[ctrl-B] STX 2 $02 “ 34 $22 B 66 $42 B 98 $62
[ctrl-C] ETX 3 $03 # 35 $23 C 67 $43 C 99 $63
[ctrl-D] EOT 4 $04 $ 36 $24 D 68 $44 D 100 $64
[ctrl-E] ENQ 5 $05 % 37 $25 E 69 $45 E 101 $65
[ctrl-F] ACK 6 $06 & 38 $26 F 70 $46 F 102 $66
[ctrl-G] BEL 7 $07 ‘ 39 $27 G 71 $47 G 103 $67
[ctrl-H] BS 8 $08 ( 40 $28 H 72 $48 H 104 $68
[ctrl-I] HT 9 $09 ) 41 $29 I 73 $49 I 105 $69
[ctrl-J] LF 10 $l * 42 $2A J 74 $4A J 106 $6A
[ctrl-K] VT 11 $0B + 43 $2B K 75 $4B K 107 $6B
[ctrl-L] FF 12 $0C , 44 $2C L 76 $4C L 108 $6C
[ctrl-M] CR 13 $r – 45 $2D M 77 $4D M 109 $6D
[ctrl-N] SO 14 $0E . 46 $2E N 78 $4E N 110 $6E
[ctrl-O] SI 15 $0F / 47 $2F O 79 $4F O 111 $6F
[ctrl-P] DLE 16 $10 0 48 $30 P 80 $50 P 112 $70
[ctrl-Q] DC1 17 $11 1 49 $31 Q 81 $51 Q 113 $71
[ctrl-R] DC2 18 $12 2 50 $32 R 82 $52 R 114 $72
[ctrl-S] DC3 19 $13 3 51 $33 S 83 $53 S 115 $73
[ctrl-T] DC4 20 $14 4 52 $34 T 84 $54 T 116 $74
[ctrl-U] NAK 21 $15 5 53 $35 U 85 $55 U 117 $75
[ctrl-V] SYN 22 $16 6 54 $36 V 86 $56 V 118 $76
[ctrl-W] ETB 23 $17 7 55 $37 W 87 $57 W 119 $77
[ctrl-X] CAN 24 $18 8 56 $38 X 88 $58 X 120 $78
[ctrl-Y] EM 25 $19 9 57 $39 Y 89 $59 Y 121 $79
[ctrl-Z] SUB 26 $1A : 58 $3A Z 90 $5A Z 122 $7A
ctrl-[ ESC 27 $1B ; 59 $3B [ 91 $5B { 123 $7B
[ctrl-\] FS 28 $1C < 60 $3C \ 92 $5C | 124 $7C
ctrl-] GS 29 $1D = 61 $3D ] 93 $5D } 125 $7D
[ctrl-^] RS 30 $1E > 62 $3E ^ 94 $5E ~ 126 $7E
[ctrl-_] US 31 $1F ? 63 $3F _ 95 $5F DEL 127 $7F
Quarta Capa