Instruções Dependentes do Estado Lógico Binário
Registradores e Áreas de Memória em uma CPU S7
Acumuladores
Somente
S7-400
ACCU4
32 Bit
ACCU3
32 Bit
ACCU2
32 Bit
ACCU1
32 Bit
Memória de Carga
AR1
32 Bit
AR2
32 Bit
Registrador de Bloco de Dados
Tamanho DB
DI aberto
Tamanho DI
16 Bit
16 Bit
Palavra de Status
Status Bits
Blocos Lógicos
Blocos de Dados
Memória de Trabalho
L, A, O,...
Registradores de Endereços
DB aberto
-
-
Blocos Lógicos
Blocos de Dados
Área de I/O
T, S, =,...
Memória de Sistema
-
Imagem de processo de entrada
Imagem de processo de saída
Bit de memória
Temporizadores
Contadores
-
Pilha de Dados Locais
Pilha de Interrupção
Pilha de Blocos
16 Bit
Registradores na CPU S7
Áreas de Memórias na CPU S7
Estrutura da Palavra de Status
Significado dos bits na palavra de status
Bit
Tarefa
Grandeza
Significado
0
/FC
20
Primeiro Cheque
1
RLO
21
Resultado Lógico da Operação
2
STA
22
Status
3
OR
23
Or (ou)
4
OS
24
Estouro Armazenado
5
OV
25
Estouro
6
CC0
26
Bit de Resultado
7
CC1
27
Bit de Resultado
8
BR
28
Resultado Binário
9...15
sem
função
29 ..210
Checando os Bits de Status

Cheque em STL
A OV
Verifica o estouro de capacidade
A OS
Verifica o estouro de capacidade memorizado
A BR
Verifica o bit de memória BR

Cheque do Resultado Binário (CC0, CC1)
A ==0
Resultado igual a 0
A >0
Resultado maior que 0
A <>0
Resultado não igual a 0
A =<0
Resultado menor que ou igual a 0
etc.
A UO
Operação não permitida

Cheque em LAD e em FBD
OV
M 4.0
S
>0
M 4.0
S
Instruções com Bits de Status
Instrução
Significado
Exemplo
SET
Fixa o RLO em "1"
SET
//RLO-1-bit de memória
= M 0.1
CLR
Fixa RLO em "0"
CLR
NOT
Inverte o RLO
O Manual
O Automático
NOT;
= modo de operação
= M0.0
//RLO-0-bit de memória
I 1.0
SAVE
Salva o RLO no resultado binário
Verifica o resultado binário
I 1.2
SAVE
BR
A BR
I 1.1
Q 4.2
Q 5.0
Bit BR e ENO em uma Chamada de Bloco ou Função Complexa
LAD
STL
Network 1: Programa Cíclico
FC23
I0.0
ENO
( )
Step_
Step_bit
_memory display
QW12
EN
MW12
M10.0
Network 2: ???
ADD_I
M10.1
EN
ENO
( )
345
IN1
OUT
MW100
987
IN2
Network 1: Programa Cíclico
A
I
0.0
JNB _001
CALL FC 23
Step_bit_memory
:=MW12
Step_display
:=QW12
_001: A
BR
=
M
10.0
Network 2: ???
L
345
L
987
+I
T
MW 100
AN
OV
SAVE
CLR
A
BR
=
M
10.1
Funções de salto (Jump) dependentes dos Bits de Status
JU Label1)
Salto Incondicional
JC Label1)
salta se o bit "RLO" =1
JCN Label1)
salto se o bit "RLO" = 0
JCB Label1)
salto se o bit "RLO" = 1 e salva RLO
JNB Label1)
salto se o bit "RLO" = 0 e salva RLO
JBI Label1)
salto se o bit "BR" = 1
JBNI Label1)
salto se o bit "BR" = 0
JO Label1)
salto se o bit "OV" na palavra de status =1
JOS Label1)
salto se o bit "OS" na palavra de status =1
1)
Rótulo (Label) pode ser constituído de até 4 dígitos
alfanuméricos
Funções de Salto dependentes dos Códigos de Condição
JZ Label1)
Salta se na palavra de status o bit "CC1"=0 e "CC0"=0
(Resultado = 0)
JN Label1)
Salta se na palavra de status o bit "CC1" não for igual a "CC0"
(Resultado <> 0)
JP Label1)
Salta se na palavra de status o bit "CC1"=1 e "CC0"=0
(Resultado > 0)
JM Label1)
Salta se na palavra de status o bit "CC1"=0 e "CC0"=1
(Resultado < 0)
JPZ Label1)
Combina os saltos JZ e JP
(Resultado >= 0)
JMZ Label1)
Combina os saltos JM e JZ
(Resultado <= 0)
JUO Label1)
Salta se: número real inválido “desordenado” ou divisão por zero
1)
Rótulo (Label) pode ser constituído de até 4 dígitos
alfanuméricos
Programação do Distribuidor de Saltos
Modo de Operação
Carrega o
número do salto
Over:
Label_1:
Exemplo: Distribuidor de saltos com 3 entradas
L Recipe no // Carrega o número da receita
JL Over
JL OVER
// Distribuidor de saltos com 3 entradas
JU Label_1
JU Rec0
// Salta para receita No. 0 (ACCU1 = 0)
..
.
JU Rec1
// Salta para receita No. 1 (ACCU1 = 1)
JU Label_n
JU Rec2
// Salta para receita No. 2 (ACCU1 = 2)
Instruções para
ACCU1 > n
OVER:JU ERROR // Salta se ACCU1 > 2
Instruções para
ACCU1 = 0
Rec0: L DBW4
...
...
..
.
Rec1: L DBW6
...
Label_n:
Instruções para
ACCU1 = n
Rec2: L DBW8
...
ERROR: CLR
...
Programação de Instruções de Loop (voltas)
Modo de Operação
Inicializa o
contador de voltas
Transfere para o
contador de voltas
NEXT:
Sim
Exemplo: Instruções de Loop (voltas)
com 4 varreduras
L +4
NEXT: T MW10
// Carrega o contador de voltas
// Início do loop
Sessão de códigos
a serem executados
diversas vezes
.
// Código
.
// Código
Carrega o contador de
voltas no ACCU1.
.
// Código
L MW10
// Carrega o contador de voltas
LOOP NEXT
// novamente
(Decrementa ACCU1
ACCU1<>0?)
LOOP NEXT
Não
Continuar
// Contador de voltas -1 e
// salta para o rótulo NEXT
// se Accu 1> 0
Instruções de Fim de Bloco

BE
Fim de Bloco

BEU
Fim de Bloco Incondicional (dentro de um bloco)

BEC
Fim de Bloco Condicional (dependente do RLO)
(RET)
mostrado em LAD
RET
mostrado em FBD
Exercício 1.1: Salto após uma Subtração
Chaves de teste no simulador
Chave rotativa
1
2
3
4
0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0
215
converte p/
DINT
27
BTD
BTD
converte p/
DINT
-D
Resultado positivo (>=0)
Resultado negativo
[JM Label]
Deleta o display
Chave rotativa:
Chaves de teste:
Display:
IW4 (IW2, mod. 32 bit)
IW0 (IW0, mod. 32 bit)
QW12 (QW6, mod. 32 bit)
Escreve o valor de IW 4
no display
20
Exercício 1.2: Salto após uma Multiplicação
Chaves de teste no simulador
Chave rotativa
1
2
3
4
0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0
215
converte p/
DINT
27
BTD
BTD
20
converte p/
DINT
*I
Sem estouro
Estouro
[JO Label]
Apaga o display
Chave rotativa:
Chaves de teste:
Display:
IW4 (IW2, mod. 32 bit)
IW0 (IW0, mod. 32 bit)
QW12 (QW6, mod. 32 bit)
DTB
Converte o resultado
para BCD
Escreve o resultado
no display
Exercício 1.3: Programando um Distribuidor de Saltos
Função:
Chave rotativa
1
[JL Label]
1
2
3
4
5
Motor_girar para direita
Motor_girar para esquerda
Desligar motor
Ligar buzina
Desligar buzina
Label: Saltar via salto para lista
Endereços:
S7-300 (16-Bit)
I0.0
Q8.0
Motor_direita:
Q20.5
Motor_esquerda:
Q20.6
Buzina:
Q20.7
S7-300 (32-Bit)
I0.0
Q4.0
Q8.5
Q8.6
Q8.7
www.apostilastecnicas.com
Download

Instruções Dependentes do Estado Lógico Binário