Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumário
Memórias de uma CPU Step7 ....................................................................................................... 6
Registradores ............................................................................................................................ 6
Acumuladores ....................................................................................................................... 6
Registradores de Endereço ................................................................................................... 6
Registradores de Data Blocks ................................................................................................ 6
Status Word (Palavra de Status) ........................................................................................... 6
Áreas de Memórias ................................................................................................................... 7
Memória de Carga (Load Memory) ....................................................................................... 7
Memória de Trabalho (Work Memory)................................................................................. 7
Periferia de IO ....................................................................................................................... 7
Memórias Gerais ................................................................................................................... 7
Status Word (Palavra de Status) ................................................................................................... 8
20 – /FC – First Check............................................................................................................. 8
21 – RLO – Resultado de Operação Lógica ............................................................................ 9
22 – STA –Bit de Status ........................................................................................................ 10
23 – OR –Bit de Status.......................................................................................................... 10
24 – OS – Overflow Retentivo .............................................................................................. 10
25 – OV – Overflow .............................................................................................................. 10
26 – CC0 e 27 – CC1 – Bits de Resultado .............................................................................. 11
28 – BR – Resultado Binário ................................................................................................. 12
Funções de Salto ......................................................................................................................... 16
Orkan Automação Industrial Pág. 1 Step-7 / Nível 2
Salto Incondicional .................................................................................................................. 17
Saltos Condicionais.................................................................................................................. 17
JC/JCN .................................................................................................................................. 18
JCB/JNB................................................................................................................................ 18
JBI/JBNI ................................................................................................................................ 18
JO/JOS ................................................................................................................................. 19
JZ.......................................................................................................................................... 19
JN ......................................................................................................................................... 19
JP/JM ................................................................................................................................... 20
JPZ/JMZ ............................................................................................................................... 20
JUO ...................................................................................................................................... 20
Instruções de Fim de Bloco ..................................................................................................... 22
Instrução de Salto Distribuído ................................................................................................. 24
Instrução de Loop.................................................................................................................... 26
Funções com Acumuladores ....................................................................................................... 30
Operações Matemáticas Fundamentais (Soma, Subtração, Multiplicação e Divisão)........ 31
Operações Booleanas com Word/Dword ........................................................................... 32
TAK ...................................................................................................................................... 32
PUSH .................................................................................................................................... 33
POP ...................................................................................................................................... 33
ENT (Speed7 e S7400 – 4 Acumuladores) ........................................................................... 34
LEAVE (Speed7 e S7400 – 4 Acumuladores) ....................................................................... 34
CAW ..................................................................................................................................... 35
CAD ...................................................................................................................................... 35
INC ....................................................................................................................................... 35
DEC ...................................................................................................................................... 36
INVI / INVD .......................................................................................................................... 36
NEGI / NEGD ........................................................................................................................ 37
NEGR ................................................................................................................................... 37
RLDA / RRDA........................................................................................................................ 38
Números Reais – Ponto Flutuante .............................................................................................. 40
Operações Matemáticas com Números REAIS ....................................................................... 41
Funções Fundamentais ....................................................................................................... 41
Funções Estendidas ............................................................................................................. 41
Funções Trigonométricas .................................................................................................... 42
Endereçamentos com o Step-7 ................................................................................................... 44
Áreas de Memórias
Load Memory Work Memory Periferia de I/O Memórias Gerais
L LAR1 OPN DB A, O, FP
T TAR2 =, S, R
Registradores
Os registradores são memórias usadas pela CPU na execução de suas tarefas. Através de
instruções do tipo L(Load), T(Transfer), A(AND), O(OR), entre outras, são realizadas as trocas
de valores entre os registradores e as demais Áreas de Memórias:
Acumuladores
São registradores de 32 bits usados pela CPU para funções aritméticas, comparações,
movimentações de valores etc. As CPU´s S7-300 possuem dois acumuladores(ACCU1 e
ACCU2) enquanto as CPU´s S7-400 e as CPU´s Speed 7 da Vipa possuem 4, conforme
Figura 1.1.
Registradores de Endereço
Existem dois registradores de 32 bits utilizados pela CPU (AR1 e AR2) para
endereçamento indireto de memórias no programa.
Periferia de IO
Quando a CPU se comunica com os módulos do seu barramento, ela usa as Periferias
de Entrada e Saída para armazenar os valores dessa comunicação. Dessa forma,
quando se quer ler os dados um módulo de entradas digitais, por exemplo, lê-se a
Periferia de Entrada reservada para o mesmo. Por outro lado, para escrever um valor
em um módulo de saída analógica, basta transferir um valor para a Periferia de Saída
destinada ao mesmo. A periferia compreende tanto os módulos conectados ao
barramento da CPU, quanto os módulos conectados a uma remota Profibus-DP.
Memórias Gerais
As Imagens das Entradas (I0.0) e Saídas digitais(Q0.0), Bit Memory(MW200) , Variáveis
Locais(LB0), Temporizadores (T0) e Contadores(C0) são armazenadas na memória RAM
do Sistema e, por “natureza”, não retêm seus valores quando a CPU é desligada. Existe
nas propriedades da CPU uma opção de tornar uma parte dos Bits Memory,
Temporizadores e Contadores em memórias retentivas.
Os Bits da Status Word (Palavra de Status) são registradores que a CPU usa na execução de
suas lógicas binárias. Quando se trabalha com uma linguagem gráfica, como LADDER ou FBD,
não se percebe a existência desses Bits, pois eles estão representados de forma gráfica
(animações de linhas e contados). Todavia, quando se trabalha em STL o conhecimento desses
bits é fundamental.
Será visto que nem todos os Bits da Status Word possuem instruções que os acessem
diretamente, mas através das instruções “L STW” e “T STW”, esses bits podem ser movidos
para uma memória e vice-versa. Os Bits 9 a 15 da Status Word não são usados pela CPU.
STA – Status
do Bit I0.0
RLO – Resultado
das Operações
Lógicas
Atribui o RLO, naquele momento, ao
STA do Bit Q0.0
Se, na Figura 1.3, existisse na mesma Network, uma próxima instrução do tipo
condição (por exemplo, “A I0.2”), o Step7 iria entender essa instrução como a
primeira de uma nova lógica e o Bit /FC voltaria a ser Verdadeiro. Nesse caso, essa
Network não iria mais possuir representação gráfica, pois o LADDER e o FBD permitem
somente um conjunto de “Condição e Ação” por Network.
RLO – Resultado
STA – Status RLO – Resultado da das Operações
do Bit I0.0 primeira Operação Lógica Lógicas
Figura 1.4: Análise Gráfica dos Bits RLO, STA e /FC - LADDER
Existem instruções que manipulam o RLO diretamente. Através delas é possível forçar
um valor para o RLO que independe de uma condição. São elas:
SET – Força o valor do RLO para Verdadeiro. Seta o RLO e não possui
representação gráfica;
CLR – Força o valor do RLO para Falso. Limpa o RLO; e não possui
representação gráfica;
NOT – Inverte o valor do RLO e possui representação gráfica.
23 – OR –Bit de Status
O Bit OR é utilizado pela CPU na implementação de uma lógica booleana do tipo OU.
De acordo com a Figura 1.6, o Bit OR armazena a informação de que diante de várias
lógicas OU, uma delas já satisfez a condição sendo verdadeira.
Figura 1.6: Análise dos Bits OR, RLO, STA e /FC – STL e LADDER
24 – OS – Overflow Retentivo
Quando o Bit OV torna-se verdadeiro, indicando que ouve um overflow, o Bit OS
também é setado para "1". A diferença entre eles é que o Bit OV volta a ser Falso caso
a próxima operação aritmética não gere Overflow, enquanto que o Bit OS não se altera
guardando a informação de erro para posterior uso. Dessa forma, em uma seqüência
de contas, pode-se esperar para checar se houve algum tipo de erro ao final das
operações, não sendo preciso checar a cada uma. Esse Bit somente é resetado após as
seguintes instruções: JOS (salta se OS = 1); chamadas de blocos e instruções de fim de
Bloco (BE, BEC e BEU). Pode-se checar esse bit diretamente através da Instrução “A
OS”.
25 – OV – Overflow
Quando se efetua uma operação matemática ou de comparação de Números Reais, se
houver um erro como divisão por zero e/ou estouro de aérea de memória, entre
outros, o sexto Bit da Status Word, o OV, torna-se verdadeiro. Com isso, quando se
tem uma seqüência de operações matemáticas, pode-se ao final de cada uma checar
se essa gerou um estouro de contagem para que o restante das operações não seja
executado. Isso pode se feito checando o Bit OV como é mostrado na Figura 1.7.
Instrução
Verificação
(A, AN, O, ON, X, XN)
A ==0 ((CC 1 = 0) E (CC 0 = 0))
A <>0 (((CC 1 = 1) E (CC 0 = 0)) OU ((CC 1 = 0) E (CC 0 = 1)))
A >0 ((CC 1 = 1) E (CC 0 = 0))
A <0 ((CC 1 = 0) E (CC 0 = 1))
A >=0 (((CC 1 = 1) E (CC 0 = 0)) OU ((CC 1 = 0) E (CC 0 = 0)))
A <=0 (((CC 1 = 0) E (CC 0 = 1)) OU ((CC 1 = 0) AND (CC 0 = 0)))
A UO ((CC 1 = 1) E (CC 0 = 1))
Os códigos para as diferentes situações são:
28 – BR – Resultado Binário
O Bit BR é um registrador que pode ser usado para salvar um valor de RLO para uso
posterior antes que uma nova instrução o altere. Através da instrução SAVE, o valor do
Bit RLO é copiado para o Bit BR. outra forma de escrever um valor no Bit BR é através
dos saltos JCB e JNB que estão abordados no capítulo de Saltos
Além de poder salvar um Resultado Lógico intermediário, outro uso muito importante
desse Bit é na chamada em “cascata” de blocos/instruções em LADDER e FBD. Nesse
caso, o Bit BR corresponde à saída ENO. Na Figura 1.7, percebe-se que as
representações gráficas de algumas instruções usam o Bit BR automaticamente,
somente sendo possível enxergar a sua existência quando se visualiza a lógica em STL.
Já na Figura 1.9, verifica-se uma chamada de bloco desenvolvido pelo usuário. Nesse
caso tem-se que salvar um valor de RLO para o Bit BR dentro do Bloco chamado para
que ao final da Execução do mesmo a lógica continue ou não.
Figura 1.9: Uso do Bit BR para Chamada de Blocos de Função (FC, FB, SFC e SFB)
Salta se
RLO = 1
As funções de salto permitem que se interrompa a execução linear do programa, saltando para
outra posição identificada por um Label ou Marca.
Os saltos podem ser para frente ou para trás no programa contanto que seja para o mesmo
bloco.
Label ou Marca
Nota
Deve-se prestar atenção no caso de se saltar para trás no programa, para evitar que a
CPU entre em um loop infinito.
Saltos Condicionais
Existem 15 tipos diferentes de Saltos condicionais no Step7. Eles avaliam os bits da Palavra de
Status para realizar o salto para o Label especificado. Segue abaixo na Tabela 2.1 um resumo
com todos os saltos condicionais e depois o detalhamento de cada um deles.
Resumo
JC Label Salta de o bit "RLO" =1
JCN Label Salta se o bit "RLO" = 0
JCB Label Salta se o bit "RLO" = 1 e salva RLO no Bit BR
JNB Label Salta se o bit "RLO" = 0 e salva RLO no Bit BR
JBI Label Salta se o bit "BR" = 1
JBNI Label Salta se o bit "BR" = 0
JO Label Salta se o bit "OV" na palavra de status =1
JOS Label Salta se o bit "OS" na palavra de status =1
JZ Label Salta se resultado igual a zero
JN Label Salta se resultado diferente de zero
JP Label Salta se resultado maior que zero
JM Label Salta se resultado menor que zero
JPZ Label Salta se resultado maior ou igual a zero
JMZ Label Salta se resultado menor ou igual a zero
JUO Label Salta se: “desordem” - número real inválido ou divisão por zero
Tabela 2.1: Resumo dos Saltos Condicionais
JCB/JNB
Essas são funções também dependem do estado do RLO e funcionam de forma
semelhante às funções JC e JCN, inclusive com relação aos bits de Status. A única
diferença está em salvar o estado do RLO no bit BR. São utilizadas pelo editor do Step 7
quando se está trabalhando em LADDER ou FDB.
JBI/JBNI
Dependem do estado do bit BR da Palavra de Status. Podem ser usados para evitar o
uso de uma instrução “A BR”. Não afetam o estado do RLO nem do próprio BR, mas
setam o Bit STA e resetam os bits OR e FC da Palavra de Status.
JZ
Essa função salta se CC1=0 e CC0=0, o que dependendo da última instrução pode
informar resultados diferentes. A Figura 2.6 traz um exemplo do JZ após uma instrução
de deslocamento de Bits para a Direita ( SRW). Nesse caso, o salto será efetuado se o
último bit deslocado era igual a zero, ou seja, se a memória MW200 era um número
Par. O capítulo anterior detalha os significados das combinações dos Bits CC1 e CC0. O
Salto JZ não altera os bits da Palavra de Status.
JN
Essa função salta se CC1 é diferente de CC0, o que dependendo da última instrução
pode informar resultados diferentes. A Figura 2.7 traz um exemplo do JN após uma
instrução de “OU Word” (OW). O salto será efetuado se o resultado do OU foi
diferente de zero. O capítulo anterior detalha os significados das combinações dos Bits
CC1 e CC0. O Salto JN não altera os bits da Palavra de Status.
JPZ/JMZ
Funcionam de forma semelhante aos Saltos JP e JM, onde o JPZ salta se CC1=1/CC0=0
ou se CC1=0/CC0=0 e o JMZ salta se CC1=0/CC0=1 ou se CC1=0/CC0=0. A Figura 2.9
traz um exemplo do JMZ após uma operação matemática. O salto será efetuado se o
resultado for menor ou igual a zero, ou seja, se o ACUU1 <= 0. O capítulo anterior
detalha os significados das combinações dos Bits CC1 e CC0. Os Saltos JMZ e JPZ não
alteram os bits da Palavra de Status.
JUO
Essa função salta se CC1 e CC0 forem iguais a 1. Isso representa uma divisão por zero,
ou um número real desordenado. O capítulo anterior detalha os significados das
combinações dos Bits CC1 e CC0. O Salto JUO não altera os bits da Palavra de Status.
Existem instruções que permitem encerrar um Bloco antes do final do mesmo. Isso pode ser
feito condicionalmente ao RLO, ou incondicionalmente. Segue abaixo os 3 tipos de instruções
de fim de bloco:
BE – É a instrução que declara o final de um bloco. No Step5 tinha-se que declarar essa
instrução para informar à CPU que o bloco se encerra naquele ponto. No Step7 ela é
automaticamente criada pelo editor de blocos e não se percebe a sua existência. De
qualquer forma, pode-se usá-la para se encerrar um bloco assim como a Instrução BEU
descrita abaixo. Não possui representação Gráfica
BEU – No Step7 funciona da mesma forma que o BE. Essa instrução pode ser usada
repetidas vezes dentro de um mesmo bloco, lembrando-se sempre que as linhas de
códigos declaradas depois dessa instrução somente serão executadas se em algum
ponto existir um salto “pulando” o BEU. Não possui representação Gráfica
BEC – Essa instrução encerra o bloco da mesma forma que as citadas acima, porém ela
depende do valor do RLO. Se ao ser executada essa instrução, o RLO for
Verdadeiro(=1), ela encerra o bloco e o programa volta para a posição da chamada
desse bloco. Se o RLO for Falso o bloco não é encerrado, o RLO passa a ser verdadeiro
e o programa continua a sua execução linear. Essa instrução seta os Bits STA e RLO e
reseta os Bits OR e FC da Status Word. Existe uma representação gráfica para essa
instrução, conforme Figura 2.11, que seria a instrução RET. Ela combina um SAVE e um
BEC. Dessa forma ela ao mesmo tempo em que encerra o bloco, armazena o estado do
RLO no Bit BR para uso no ENO do Bloco.
Carrega Índice
do Salto
JL Label_Erro
JU Salto_0
JU Salto_1
JU Salto_2
Salta para Erro se
Índice > Qtd de
Saltos, ou seja, se Lógica de Erro
ACCU1 > Qtd de Label_Erro:
de Índice
JUs entre o JL e o Salta para o Label
“Label_Erro”. correspondente ao
Salto_0: Lógicas Salto_0 Índice. Se Índice =
1, então salta para
Salto_1.
Salto_1: Lógicas Salto_1
Fim do Salto
Label_Fim:
Distribuído
A lista de saltos inicia imediatamente após a instrução JL, podendo possuir um máximo de 255
entradas, e se estende até o Label da instrução JL, conforme figura 2.12. Não pode haver outra
instrução além dos Saltos JU dentro da lista.
Lista de Saltos
Notas
Os Labels declarados nos exemplos acima foram usados para facilitar o entendimento
da instrução JL, todavia podem ser usados quaisquer outros Labels que sigam as regras
especificadas anteriormente neste capitulo.
Anotações:
A instrução LOOP do Step7 é semelhante a um loop “FOR” que é muito utilizado em softwares
de programação como Pascal, Visual Basic, C++, etc. Ele é usado quando se deseja executar
uma mesma atividade repetidas vezes. A Figura 2.14 mostra a estrutura da instrução no Step7.
Carrega Qtd de
LOOPs no ACCU1
Transfere para
Label_Loop: Memória de
LOOPs
Código a ser
repetido
Carrega Memória
de Loops no
ACCU1
Não
Continua
execução linear
do programa
A instrução Loop subtrai 1 do ACCU1 e salta para o Label especificado se o valor do ACCU1
ainda for maior que zero após a subtração. No exemplo da Figura 2.15, utiliza-se uma memória
Local (Temp - #Qtd_Loop) de 16 bits(INT) para acumular o valor de contagem de Loops
efetuados. Como a instrução LOOP manipula o ACCU1, o valor da memória de contagem deve
ser carregado no ACCU1 antes da instrução “Loop” e devolvido à memória de contagem após a
sua execução. Se o valor do ACCU1, depois da subtração, for igual a zero, a CPU continua a
execução linear do programa, pois já foram efetuados todos os loops. A Figura 2.15 demonstra
como montar a estrutura de um loop.
Já nas figuras 2.16 e 2.17 se tem exemplos de usos de Loops que foram construídos com base
na estrutura da Figura 2.14. O primeiro traz um exemplo de uma função que eleva uma
memória a qualquer potencia. O código a ser repetido multiplica a memória por ela mesma e
dessa forma a quantidade de Loops a efetuar representa a potencia à qual a memória está
sendo elevada. Embora Existam várias forma de se fazer esse exemplo, foram usadas as
instruções vistas até esse ponto da apostila.
A figura 2.17 traz um exemplo de uma função para zerar uma seqüência de memórias através
do uso de ponteiros de área interna. Esse assunto será abordado no capítulo de
endereçamento indireto. Pode-se perceber que a estrutura usada é a mesma para diferentes
usos da instrução LOOP.
Nota
Por utilizar apenas 16 bits do ACCU1, o número máximo de loops que podem ser
efetuados é de 65535 vezes. Deve-se também tomar cuidado para não iniciar um loop
com “0”, pois isso fará com que o loop seja executado 65535 vezes.
Anotações:
O step7 trata lógicas de bits e manipulação de valores como duas coisas totalmente distintas, e
é por isso um Load é efetuado mesmo com o RLO sendo Falso. O único ponto em que uma
manipulação de valores cruza com lógicas de bits é quando se efetua uma comparação, onde o
resultado é escrito no RLO.
Quando se programa em LADDER ou FDB não se percebe a existência dos acumuladores, pois
esse é o objetivo das linguagens gráficas. Embora a princípio programar operações
matemáticas em STL possa parecer mais complicado, uma vez que se conheçam as instruções,
isso tornará o programa mais simples e enxuto e tomará menos processamento da CPU. Isso
porque se pode trabalhar diretamente com os acumuladores, recuperando o resultado da
última operação e usando-o para uma próxima instrução, o que em LADDER seria impossível.
As funções a serem descritas nesse capítulo visam a otimização da manipulação dos
acumuladores. Existem instruções que manipulam somente o ACCU1 e outras que precisam de
mais de um acumulador. Segue abaixo na Tabela 3.1 a lista dessas instruções:
Speed
100V/200V/
Funções que usam pelo menos dois Acumuladores 7/
300V/S7300
S7400
Operações matemáticas e lógicas Booleanas com Word/Dword X X
TAK Inverte o conteúdo do ACCU1 com o ACCU2 X X
PUSH “Empurra” os valores dos acumuladores para cima X X
POP “Puxa” os valores dos acumuladores para baixo X X
“Empurra” os valores dos acumuladores, a partir do
ENT X
ACCU2, para cima
“Puxa” os valores dos acumuladores para baixo, até
LEAVE X
o ACCU2
O que acontece com o ACCU2 depende da CPU que se está usando. Em uma CPU com
dois acumuladores (100V, 200V, 300V e o S7300) o ACCU2 mantém o seu valor
original, conforme Figura 3.1.
O ACCU2 não se
alterou!
ACCU2 30 30 ACCU2
antes depois
Figura 3.1: Acumuladores após operações matemáticas – 100V, 200V, 300V e S7300
Nas CPUs com 4 acumuladores (Speed7 e S7400) o ACCU2 recebe o valor do ACCU3 e
esse o valor do ACCU4, ou seja, a “pilha” desce, sendo colocado 0 no ACCU4. A Figura
3.2 ilustra essa movimentação.
O ACCU2 recebeu o
ACCU3 que era igual a
zero!
0
ACCU4 0 0 ACCU4
ACCU3 0 0 ACCU3
ACCU2 30 0 ACCU2
antes depois
O ACCU2 manteve o
seu valor
ACCU4 0 0 ACCU4
ACCU3 0 0 ACCU3
ACCU2 2 2 ACCU2
ACCU1 63 AW 2 ACCU1
antes depois
Figura 3.2: Acumuladores após operações Booleanas com WORD
TAK
Existem situações no programa em que se deseja inverter os conteúdos do ACCU1 pelo
ACCU2 e para isso existe a instrução TAK. Ela troca os valores dos dois primeiros
acumuladores e, em CPUs com quatro acumuladores, ela não altera o ACCU3 e o
ACCU4 (Figura 3.5). A Figura 3.4 traz um exemplo de uma operação matemática em
que se precisou inverter os ACCUs. Sem essa instrução seria necessário usar uma
memória para receber o valor intermediário do soma: MW200 + MW202. Essa
instrução não altera os bits da Status Word.
ACCU4 0 0 ACCU4
ACCU3 0 0 ACCU3
ACCU2 2 63 ACCU2
ACCU1 63 2 ACCU1
antes depois
PUSH
A instrução PUSH “empurra” o conteúdo dos acumuladores para cima, preservando o
valor do ACCU1. É uma forma de se duplicar o valor do ACCU1 sem perder os valores
do ACCU2 e do ACCU3, em CPUs com 4 acumuladores.
ACCU4 40 30 ACCU4
ACCU3 30 20 ACCU3
ACCU2 20 10 ACCU2
ACCU1 10 10 ACCU1
ACCU2 20 10 ACCU2
ACCU1 10 10 ACCU1
2 ACCUS
antes 100V, 200V, 300V e depois
S7300
Figura 3.6: Função PUSH
POP
É o inverso da instrução PUSH, mas nesse caso os valores dos acumuladores são
“puxados” para baixo, preservando o valor do ACCU4 (Speed7 e S7400) ou do ACCU2
(100V, 200V, 300V e S7300). Ela é normalmente usada depois de um Transfer, quando
o valor que estava no ACCU1 não será mais usado e se deseja continuar a execução
com os valores que estão nos demais acumuladores.
ACCU4 40 40 ACCU4
ACCU3 30 40 ACCU3
ACCU2 20 30 ACCU2
ACCU1 10 20 ACCU1
4 ACCUS
antes Speed7 e S7400 depois
ACCU2 20 20 ACCU2
ACCU1 10 20 ACCU1
2 ACCUS
antes 100V, 200V, 300V e depois
S7300
ACCU4 40 30 ACCU4
ACCU3 30 20 ACCU3
ACCU2 20 20 ACCU2
ACCU1 10 10 ACCU1
antes depois
Figura 3.8: Função ENT
ACCU4 40 40 ACCU4
ACCU3 30 40 ACCU3
ACCU2 20 30 ACCU2
ACCU1 10 10 ACCU1
antes depois
Figura 3.9: Função LEAVE
ACCU1
CAD
Essa instrução inverte os quatro bytes do ACCU1, conforme Figura 3.10.
ACCU1
INC
A instrução INC incrementa o conteúdo do primeiro byte do ACCU1 (ACCU1-LL) com
uma constante no formato inteiro de 8 bits (0 a 255). Ela não altera os demais bytes do
ACCU1(ACCU1-LH, ACCU1-HL e ACCU1-HH) nem os demais acumuladores (ACCU2,
ACCU3 e ACCU4). Porém, como ela considera o ACCU1 com sendo um número inteiro
de 8 bits, deve-se tomar cuidado ao incrementar um número inteiro ou duplo inteiro,
pois o resultado será imprevisível, conforme Figura 3.12.
Resultado inesperado,
Soma com sucesso, pois se somou um INT
pois se trabalhou com de 16 bits com um INT
inteiros de 8 bits de 8 bits
DEC
A instrução DEC decrementa o conteúdo do primeiro byte do ACCU1 (ACCU1-LL) com
uma constante no formato inteiro de 8 bits (0 a 255). Ela não altera os demais bytes do
ACCU1(ACCU1-LH, ACCU1-HL e ACCU1-HH) nem os demais acumuladores (ACCU2,
ACCU3 e ACCU4). Porém, como ela considera o ACCU1 com sendo um número inteiro
de 8 bits, deve-se tomar cuidado ao decrementar um número inteiro ou duplo inteiro,
pois o resultado será imprevisível. A Figura 3.12 demonstra através de uma instrução
INC a necessidade de se tomar esse cuidado e como as instruções são semelhantes o
exemplo serve para a DEC também.
INVI / INVD
Podem-se usar as instruções INVI e INVD quando se deseja inverter os valores dos bits
do ACCU1 (complemento de um). A INVI inverte todos os 16 bits dos dois primeiros
bytes do ACCU1 (ACCU1-LL e ACCU1-LH) enquanto a INVD inverte os valores dos bits
dos quatro bytes do ACCU1, conforme Figuras 3.13 e 3.14. Depois da execução dessas
instruções, o bit que tinha valor “1” vira “0” e o que tinha valor “0” passa a ter “1”.
Inverte Bits
INC 1
NEGR
Essa instrução inverte o sinal do ACCU1 considerando que ele continha um número
REAL. Diferentemente das funções NEG para números Inteiros (NEGI e NEGD) que
trabalham com complemento de dois, essa instrução apenas inverte o bit mais
significativo do ACCU1, de acordo com a Figura 3.15.
Inverte Bit
Expoente – 8bits Mantissa – 23bits
do sinal
Antes:
CC1=
ACCU1=
Depois:
CC1=
ACCU1=
Recebeu o valor
do CC1 antes do
RRDA
S = Sinal
0 = Positivo
1 = Negativo f = Mantissa = 23bits
e = Expoente = 8bits
Representação:
Limites:
0.0
O formato, conforme pode ser visto na Figura 4.1, consiste em três elementos principais:
1. S = Sinal
O sinal é representado pelo bit mais significativo, ou seja, o bit 31. Se ele for igual a
zero (Falso) o número REAL é positivo, e se for igual a um (Verdadeiro) o número é
negativo.
2. e = Expoente
Representa o expoente e possui 8 bits. Dessa forma pode variar de 0 a 255.
3. f = Mantissa (fração)
Constitui a parte fracionária do número e contém 23 bits
Isso poderá acontecer, por exemplo, ao se tentar achar a Raiz Quadrada do número REAL -2.0,
como pode-se observar na Figura 4.2. O Step7 não entra em “Stop” nem gera registro no
Número REAL
Inválido
Bits OV, OS, CC0 e
CC1 = 1
Figura 4.2: Número REAL Inválido
Funções Fundamentais
As operações aritméticas fundamentais com números Reais no step7 são semelhantes
as operações com números Inteiros e Duplo-Inteiros. Dessa forma precisa-se apenas
informar que a soma, por exemplo, será de números REAIS: +R.
a) Soma: +R
b) Subtração: -R
c) Divisão: /R
d) Multiplicação: *R
Funções Estendidas
As operações estendidas com números Reais manipulam somente o ACCU1 e usam os
bits OV, OS, CC0 e CC1 para informar algum erro na execução das mesmas. Com isso,
os acumuladores ACCU2, ACCU3 e ACCU4 não são alterados. As funções disponíveis
são:
Com relação ao Logaritmo na base Natural, o valor do ACCU1 deve ser um número
REAL positivo, senão a função irá retornar um erro, setando os bits OV, OS, CC0 e CC1
em “1”.
Segue na Figura 4.3 um exemplo do uso das funções EXP e LN para achar a solução da
equação: . Como o Step7 não possui uma instrução que calcule qualquer
potência de um número, será necessário utilizar as funções EXP e LN para chegar à
seguinte equação: .
Funções Trigonométricas
Também é possível trabalhar com as funções trigonométricas e suas funções inversas.
Todavia, o Step7 trabalha com a medida de ângulos em Radiano e dessa forma, para as
funções trigonométricas, faz-se necessário converter o ângulo de entrada para
Radiano e o inverso para as funções de Arco. Esse valor deverá estar no ACCU1 no
formato REAL e o resultado será devolvido também para o ACCU1. As funções
disponíveis são:
= 90°
180° = = 0°
270°
Figura 4.4: Dados para conversão Graus => Radianos
Opções de Endereçamento
Absoluto Simbólico
Endereçamento Direto
Todo acesso às áreas de memórias do CLP são realizados através da estrutura descrita na
Figura 5.1. Essa é composta pela Instrução + Área de memória + Endereço Inicial do Byte e Bit.
As formas representadas na Figura 5.1 mostram exemplos de Endereçamentos Diretos de
Bytes/Words/DWords e Bits.
L MW 100
Instrução T QW 124 Endereço
Inicial
Byte e Bit
Área de
Memória
A I 124.0
Instrução AN I 124.1 Endereço
Inicial
Byte e Bit
Área de
Memória
Quando são utilizados símbolos para memórias, se está realizando um Endereçamento Direto
Simbólico. O símbolo é uma “máscara” que o editor associa a um endereço absoluto de
memória e tem como principal finalidade facilitar a identificação dessa através de um nome
(Símbolo), Tipo(Bool, Bytes, Word, Dword, REAL etc) e descrição. Quando se efetua um
download do programa para a CPU, somente os endereços absolutos são enviados e dessa
forma esse tipo de endereçamento existe apenas no editor.
L “PEÇAS PRODUZIDAS”
T “DISPLAY”
Endereço
Instrução Simbólico
A Figura 5.3, traz dois exemplos de programas idênticos. A diferença é que no exemplo de cima
não foram atribuídos Símbolos e no exemplo de baixo sim. Alternar entre Endereçamento
Direto Simbólico e Absoluto é possível através do Menu “View/Display With” do Editor de
Blocos, uma vez que isso é apenas uma mudança de visualização.
A CPU possui dois registradores de Data Blocks, onde ficam armazenados os números
dos blocos que estão sendo utilizados no momento. O primeiro registrador (DB
Orkan Automação Industrial Pág. 45 Step-7 / Nível 2
Register) é de uso exclusivo de um Data Block (DB). Já o segundo registrador (DI
Register) é de uso exclusivo de um Data Block Instance (DI).
Existem duas opções para se abrir um DB ou DI no Step-7. As Figuras 5.5 e 5.6 trazem
exemplos da forma direta, onde são utilizadas as instruções OPN DB e OPN DI. Já a
Figura 5.7 ilustra um exemplo de uma instrução combinada: L DB10.DBW0. Ela é
“combinada” porque realiza duas instruções: abre o DB10 e ainda carrega no ACCU1 o
valor do DBW0 desse DB. Se por um lado ela executa duas instruções onde às vezes
poderia ser usada apenas uma, por outro lado ela permite o uso de símbolos, o que
facilita a leitura do programa.
DBNO / DINO
Os comandos DBNO e DBNI retornam o número do DB que está aberto no momento.
A informação é retirada dos registradores (DB register / DI register), respectivamente.
Os comandos podem ser utilizados individualmente. O resultado fica armazenado no
ACCU1. A Figura 5.9 demonstra o uso da instrução e pode-se observar que o valor do
ACCU1 (standard) é 5, ou seja, o DB que está em uso é o DB 5.
DBLG / DILG
Os comandos DBLG e DILG retornam o tamanho do DB em bytes que estão abertos no
momento, sendo que a instrução DBLG é para Data Blocks e o DILG é para os Data
Blocks Instance. O resultado fica armazenado no ACCU1.
CDB
O comando CDB faz com que o DB e o DI que estão abertos e guardados nos
registradores sejam trocados de posição. Desta forma o número atual do DB será
movido para o registrador DI e o número do DI será movido para o registrador de DB.
A instrução CDB não altera o valor do ACCU1 e nem influência nos bits de status.
Anotações:
Tipos de Ponteiros
Ponteiros de 16 bits
Utilizado para endereçamento indireto de memória de Temporizadores, Contadores,
abertura de Data Blocks, FCs e FBs.
Ponteiros de 32 bits
Utilizado para endereçamento indireto as Áreas de Memórias. Pode ser usado como
Ponteiro de Área Interna (área de memória predeterminada pela instrução) e Ponteiro
de Área Cruzada (área de memória variável). Os Registradores de Endereços (AR1 e
AR2) são Ponteiros de 32 Bits.
Ponteiros de 48 bits
Utilizado para passagem de parâmetros para blocos (FB´s e FC´s). Contém área cruzada
e declaração do número do DB. Esse formato de dado é chamado de POINTER.
Ponteiros de 80 bits
Utilizado para passagem de parâmetros para blocos (FB´s e FC´s). Contém área
cruzada, declaração do número do DB, tipo de dado e fator de repetição. Esse formato
de dado é chamado de ANY.
Nota
Sempre que o valor da memória for igual a “0” e o programa mandar abrir um DB ou
um DI de forma indireta, será alocado o número “0” no registrador de DB. Porém a CPU
não interpretará como uma falha, com isso a mesma continuará seu funcionamento
normal.
A I [MD200] = A I 124.6
Instrução
Área de
Memória
Ponteiro de 32 Bits
Endereço Inicial
(Byte + Bit)
MD200
31 19 18 3 2 0
Quando se deseja realizar um acesso indireto a memórias (Bit, Byte, Word e Dword)
dentro de uma mesma Área de Memória (M, I, Q, L, PI/PQ), precisa-se de um ponteiro
com no mínimo 32 Bits. Esse tipo de endereçamento Indireto é chamado de Área
Interna porque se aponta para diferentes Bytes/Bits iniciais dentro de uma mesma
Área de memória, que precisa ser declarada na instrução, EX: L DBW[MD200].
Nesse caso, para acessar indiretamente um Bit de Entrada Digital não bastará que o
PONTEIRO contenha apenas uma informação, um número, como é o caso do
PONTEIRO de 16 Bits. Será necessário um PONTEIRO com no mínimo duas
informações, uma que indique o número do Byte de Entradas Digitais e outra que
indique o número do Bit dentro deste Byte. Essa estrutura está exemplificada na Figura
5.15. Nela, os Bits menos significativos ( Bits 0,1 e 2) indicam o número do Bit que será
acessado enquanto que os 16 Bits seguintes ( Bits 3 a 18 ) Indicam o número do Byte
que será acessado. Os demais Bits não são processados pela instrução. Nota-se que a
Área de Memória, (Imagem de Entradas = “I”) foi indicada na instrução e por isso o
ponteiro estará sempre variando dentro das Entradas Digitais.
Nota
Sempre que forem utilizadas as instruções Load (L) ou Transfer (T), basta indicar qual o
número do byte a ser endereçado indiretamente, ou seja, o endereço do bit deve ser
sempre passado como 0. Caso isso não aconteça e o endereço do Bit seja diferente de
zero a CPU identificará um erro de “Alinhamento de Memória” e entrará em modo
Stop.
L P#10.0 Endereço
Área Interna
T MD 200 Byte = 10
Instrução
L DBW [MD200} Bit = 0
Formato de
Ponteiro 32 Bits
Figura 5.18: Exemplo de uma Instrução de Loop com Ponteiro de Área Interna - Zera uma seqüência de Memórias
Nota
AR1
31 19 18 3 2 0
Existem duas formas para carregar nos registradores uma constante no formato
ponteiro. A Figura 5.20 demonstra essas opções, onde na primeira o endereço é
carregado primeiramente no ACCU1 através da instrução Load. Depois o conteúdo do
ACCU1 é transferido para o AR1 pela Instrução LAR1. Isso normalmente é feito quando
se deseja manipular um endereço antes de carregá-lo no AR1. A outra forma elimina a
necessidade de se manipular o ACCU1 e carrega o endereço diretamente no AR1
através de uma instrução Combinada.
L P#10.0
Carrega o Endereço
P#10.0 no ACCU1 LAR1 Transfere o
Conteúdo do
ACCU1 para o
AR1
LAR1 P#10.0
Carrega o Endereço
P#10.0 diretamente
no AR1
Nota
Não se pode usar o AR2 quando se trabalha em um FB, pois esse já utiliza o AR2 para
acesso aos parâmetros contidos no Bloco de Dados DI. Quando se trabalha com
múltiplas instâncias pode-se utilizar o TAR2 para carregar no ACCU1 o endereço inicial
dos Dados do FB em questão dentro do DI.
AR1
31 26 25 24 19 18 3 2 1 0
Existem duas formas para carregar nos registradores uma constante no formato
ponteiro de Área Cruzada. A Figura 5.23 demonstra essas opções, onde na primeira o
endereço é carregado primeiramente no ACCU1 através da instrução Load. Depois o
conteúdo do ACCU1 é transferido para o AR1 pela Instrução LAR1. Isso normalmente é
Orkan Automação Industrial Pág. 60 Step-7 / Nível 2
feito quando se deseja manipular um endereço antes de carregá-lo no AR1. A outra
forma elimina a necessidade de se manipular o ACCU1 e carrega o endereço
diretamente no AR1 através de uma instrução Combinada.
L P# M10.0
Carrega o Endereço
P#M10.0 no ACCU1 LAR1 Transfere o
Conteúdo do
ACCU1 para o
AR1
LAR1 P#M10.0
Carrega o Endereço
P#M10.0 diretamente
no AR1
Figura 5.23: Carregando uma Constante no Formato Ponteiro de Área Cruzada para o AR1
Nota
As instruções mais utilizadas e que já foram vistas anteriormente são o LAR1 e o LAR2,
onde se carrega o valor atual do ACCU1 para o registrador solicitado: AR1 ou AR2.
TAR1 / TAR2
CAR
+AR1 / +AR2
Anotações:
7 0
Número do DB Byte N:
INT - 16 Bits sem sinal
(0 a 65535) Byte N+1:
Quando se precisa passar para um bloco o endereço inicial de uma memória, usa-se
um parâmetro do tipo POINTER. Ele possui 48 bits, ou 6 bytes, e pode ser utilizado em
FC´s e FB´s como parâmetros IN, INOUT e OUT.
7 0
Figura 5.31: Figura 5.34: Declarando Variáveis #Temp para Receber dados do ANY
Como um parâmetro ANY ocupa 80 bits de memória (10 Bytes), não se pode carregar
no ACCU1 (32 Bits) todas as suas informações ao mesmo tempo. Dessa forma faz-se
necessário desmembrar o ANY, assim como se faz com o POINTER. O exemplo da
Figura 5.31 traz a declaração de memórias temporárias para receber essas
informações que foram separadas, enquanto a Figura 5.32 demonstra a declaração e o
desmembramento das informações de um Dado ANY.
7 0
Figura 5.33: Parâmetro de interface de Blocos – ANY – FBs, FCs, DBs, SDBs, T e C
O parâmetro ANY também pode ser usado para passagem de FBs, FCs, DBs, SDBs, T e
C. Nesses casos as informações contidas diferenciam-se de uma declaração de Áreas
de Memórias, pois não se tem Fator de repetição nem Ponteiro de 32 Bits.; A Figura
5.33 demonstra a estrutura de um Dado ANY para esse caso.
Como um parâmetro ANY ocupa 80 bits de memória (10 Bytes), não se pode carregar
no ACCU1 (32 Bits) todas as suas informações ao mesmo tempo. Dessa forma faz-se
necessário desmembrar o ANY, assim como se faz com o POINTER. O exemplo da
Figura 5.34 traz a declaração de memórias temporárias para receber essas
informações que foram separadas, enquanto a Figura 5.35 demonstra a declaração e o
desmembramento das informações de um Dado ANY.
Anotações:
Anotações:
Byte
7 0
Ano: Byte N:
Mês: Byte N+1:
Dia: Byte N+2:
Hora: Byte N+3:
DATE_AND_TIME
Minuto: Byte N+4:
64 Bits - 8 Bytes
Segundos: Byte N+5:
Ela poderá ser usada como parâmetro de blocos FCs e FBs, assim como em DBs e UDTs, mas
não se pode declarar uma constante no formato DT#. Quando se quer usar esse tipo de
variável tem-se que montar o valor byte a byte, conforme Figura 6.3. Outra forma de fazer isso
é usando o FC 3 "D_TOD_DT" ou as demais Funções de DT# da Biblioteca: FC 1, FC 3, FC 6, FC 7,
FC 8, FC 33, FC 34, FC 35, FC 40.
A Figura 6.3 demonstra o uso de variáveis DATE_AND_TIME para Ajuste do Relógio da CPU.
Nesse caso o valor dos Milissegundos é ignorado, considerando-se Zero, e o Dia da Semana é
calculado automaticamente.
Um Array, também conhecido como “Vetor”, representa uma série de elementos de dados,
geralmente do mesmo tamanho e tipo. Cada elemento individual pode ser acessado por seu
Índice ou posição no Array. Eles podem ser unidimensionais ou multidimensionais (no máximo
6 dimensões) e poderão ocupar no até 8kb para o System 100V, 200V, 300V e S7300 e 64kb
para o Speed7 e S7400.
Um Array pode ser declarado em DBs, UDTs ou como parâmetro em um FC, FB e OB (#Temp).
O Figura 6.4 demonstra o uso de Arrays em DBs enquanto a Figura 6.5 mostra como declarar
Arrays como Parâmetro de Blocos. Nela também segue um exemplo do uso de Arrays do tipo
BOOL (#Conexão[1,1]).
Figura 6.5: Exemplo de declaração e uso de um Array como um Parâmetro de Bloco de Função FC
Como um Array pode ocupar bem mais do que 32bits (limite dos ACCUs da CPU), para
se acessar todo o seu conteúdo tem-se que usar um parâmetro de bloco do tipo ANY.
Nesse caso deverá ser declarado na chamada do bloco o símbolo do Array, conforme
Figura 6.6. Nesse caso não será possível escrever o endereço absoluto, mas sim apenas
o simbólico.
Figura 6.5: Exemplo de declaração e uso de um Array como um Parâmetro de Bloco de Função FC
Anotações:
Figura 7.3:
Visão geral
Acesso de STRUCTs
• L "Turn_6".Axis[3].Position[7].Cutoffpoint_back
• S "Turn_6".Axis[2].START, etc.
Inicialização de STRUCTs
Figura 7.3:
Visão geral
Uma estrutura pode ser inserida como uma variável completa em um bloco de
parâmetro que é do mesmo tipo de dado ou é do tipo dado apontador ou ANY.
Depois que o Editor STL/LAD/FBD checou (checando tipo) a compatibilidade dos tipos
de dados dos parâmetros atuais com aqueles dos parâmetros de blocos durante a
inserção de parâmetros no FC, somente a inserção de um apontador, isto é, o
endereço inicial do parâmetro atual do FC chamado permanece.
Figura 7.4:
Visão geral
Armazenamento De Variáveis
Uma variável STRUCT sempre inicia pela palavra limite, isto é, em um byte com
endereço par. Subseqüentemente, componentes individuais são colocados na
seqüência conforme declaração na memória. Uma variável STRUCT ocupa a memória
até a próxima palavra limite.
Orkan Automação Industrial Pág. 78 Step-7 / Nível 2
Componentes com tipo de dados BOOL inicia no bit mais significativo, componentes
com tipo de dados BYTE e CHAR iniciam no endereço do byte par. Componentes com
outros tipos de dados sempre iniciam na próxima palavra.
Anotações:
Figura 7.5:
Visão geral
O tipo de dado STRING é usado para armazenar caracteres string ( por exemplo:
mensagens de texto). Deste modo uma simples “(mensagem) sistema de
processamento de palavra” pode ser implementada em uma CPU S7. O tipo de dado
STRING representa um caracter string de até 254 caracteres.
Os caracteres individuais de uma variável STRING podem ser acessados com a ajuda
das instruções STL elementares, tais como:
Inicialização
• §T, §t tabulator
Figura 7.6:
Visão geral
A variável do tipo de dado STRING possui no máximo 256 bytes, dos quais até 254 "net
data", isto é, caracteres podem ser aceitos.
Armazenamento De Variáveis
Uma variável STRUCT sempre inicia pela palavra limite, isto é, em um byte com
endereço par. No setup da variável, seu máximo comprimento é introduzido no
primeiro byte da variável de acordo com a declaração de variáveis. Do mesmo modo,
na pré-escolha ou no processamento, o comprimento corrente utilizado, que é o
comprimento do caracter STRING salvo é introduzido no segundo byte com a ajuda das
Orkan Automação Industrial Pág. 81 Step-7 / Nível 2
funções da biblioteca IEC. Ambas as informações são requeridas pelas funções da
biblioteca IEC no processamento das variáveis STRING.
Figura 7.6:
Visão geral
Nota
A descrição detalhada das funções individuais podem ser encontradas na ajuda online
da biblioteca IEC.
Visão geral
Através do uso do tipo de dado relacionados na aplicação, a tarefa executada pode ser
programada com mais eficiência. Usuários como fabricantes podem projetar e isntalar
tipos de dados adaptados ao seu problema.
Geração de UDTs
UDTs são gerados com o editor incremental ou com o editor de texto e então serem
armazenados no bloco recipiente como blocos únicos (UDT1 ... UDT65535).
Um nome simbólico pode então ser escolhido para este UDT ou estrutura de dados
relacionados através de um nome na tabela de símbolo global.
Um template geral válido é gerado através da UDT, que pode então ser usado tão
freqüente quanto desejado na declaração de novas variáveis ou para gerar DB’s
compartilhados.
Visão geral
Tipos de dados definidos pelo usuário são pré-escolhidos e usados como estrutura. A
estrutura da UDT é igual àquela para a STRUCT. A declaração de variáveis, que pode
ser processada pelo programa do usuário, não tem entretanto resultado com a
geração de uma UDT.
A UDT representa de preferência um tamplate, que pode ser usado tão frequente
quanto desejado para a declaração de novas variáveis. Exatamente como a estrutura o
usuário também tem a possibilidade de estabelecer valores iniciais no UDT. Se a UDT é
então usada para a declaração de variáveis, o conteúdo destas variáveis são
inicializados como os valores iniciais da UDT (não parâmetros em Fc’s, para parâmetros
de Entrada e saída de FB’s ou variáveis temporárias).
Geração de DBs
Uma UDT pode também ser usada como padrão para a geração ( Dialog: New Data
Block) de blocos de dados compartilhados. Neste caso um DB é setado com a mesma
estrutura e com os valores iniciais das respectivas UDT’s.
Introdução
Configuração
Quando você inseri um novo programa S7, as pastas “Block”, “Sources” e “Symbols”
são criadas automaticamente.
Usando as Bibliotecas
Você criando a sua biblioteca ou utilizando uma standard estará disponível para uso
sempre, podendo ainda ser copiada para um outro Simatic Manager.
Figura 7.9:
Introdução
Duas bibliotecas são automaticamente instaladas no seu hard disk com a instalação
software STEP7.
Você pode copiar destas duas bibliotecas os blocos para dentro do seu projeto quando
precisar usá-los.
Abrindo Biblioteca
Para abrir a biblioteca, utilize o comando: File -> Open ou utilize o ícone associado na
Orkan Automação Industrial Pág. 87 Step-7 / Nível 2
barra de ferramentas.
Será perguntado pelo software se você quer abrir uma biblioteca ou um projeto.
Biblioteca Standard
• IEC Converting Blocks: contém blocos para funções IEC ex. para
manipulação de dados em formatos DATE_AND_TIME e STRING.
Anotações:
Introdução
SFCs e SFBs são blocos armazenados no sistema operacional das CPU’s em vez de
utilizar memória do usuário. Com isto, estes blocos jamais poderão serem apagados e
estarão sempre disponível para o usuário.
Não é possível alterar os blocos de sistema SFC e SFB. Estes blocos estão protegidos
onde o usuário somente pode utiliza-los conforme conta nos manuais.
Manual
A descrição extensiva dos system functions podem ser encontrados nos manuais:
Ajuda On-line
A maioria dos blocos são parametrizáveis, ou seja, para utilização dos mesmos é
necessário configura-los para um perfeito funcionamento. Para isto estão disponíveis
manuais para configuração de todos os blocos SFC e SFB.
Figura 8.1:
Programa Controle
Relógio
Contador de Horas
A CPU tem um número especifico de contadores de horas no qual você pode gravar a
duração da operação do equipamento.
Figura 8.2:
Tempo Interrupções
Estes blocos são usados para controle de processo através de data e hora (OB 10 to
17). Você pode determinar o ponto de início destes blocos através do STEP7 ou
utilizando o bloco de system functions.
Retardo Interrupções
Erros Sincronismo
Figura 8.3:
Sistema de Diagnósticos
• SFC 79/ 80 são usados para setar e resetar os bits dos campos da área
de I/O em conjunto com a função Master Control Relay function
Endereçando os Módulos
I/O Distribuído
As áreas de dados global são transferidas ciclicamente sem utilizar o SFC. Com a ajuda
dos SFC 60 e 61 blocos de sistemas, enviam e recebem pacotes de dados pelo
programa do usuário sempre que necessário.
Figura 8.4:
Os SFBs são usados para trocar dados e para administrar os programas via conexões
configuradas. SFBs existe somente para o sistema operacional S7-400.
• SFB 12 envia dados (até 64 KByte) para a estação remota com reconhecimento.
Figura 8.5:
Tecnologia Avançada
Para as CPU 614 (S7-300), blocos individuais podem ser criados em linguagem “C” . O
SFC 63 system function é usado para chamar esses blocks.
Funções Integradas
Figura 9.2:
Introdução
Porque o conversor somente transmite a chamada do bloco FC 81, você deve copiar o
bloco chamado da biblioteca dentro do seu programa em S7.
Conteúdo da Biblioteca
Manual
Ajuda Online
No Editor de Programa, você chama ajuda --> Help topics --> References --> Additional
reference aids --> Help with S5/S7 functions.
Assim flags de rascunho também são usados por estes blocos como é típico no
SIMATIC S5.
Orkan Automação Industrial Pág. 99 Step-7 / Nível 2
A biblioteca : TI - S7 Convertendo blocos (Parte 1)
Figura 9.3:
FC 80
A função FC80 inicia o tempo com o latch delay aceso (TONR). O FC80 acumula o valor
do tempo até que o valor corrente de tempo do tempo de run time (ET) seja o mesmo
que o valor de tempo preset (PV) ou o tenha excedido.
FC 81
Com a função indireta de transferência da faixa de dados (IBLKMOV), você pode
transferir uma faixa de dados consistindo de bytes, words, inteiros (16 bits), double
words, ou inteiros (32 bits) de uma fonte para o destino.
FC 82/83
Seta o estado do sinal dos bits em um área especificada como “1” (FC 83) ou como
"0"(FC 82), se o bit MCR é “1.” Se o bit MCR é ”0,” o estado do sinal dos bits na área
não é alterado.
FC 84-FC92
Lidar com funções de tabela para implementar funções FIFO, por exemplo.Os valores
são inseridos no formato word e o comprimento é ajustável.
FC 93-FC 99
Este grupo faz várias conversões de funções avaliadas.
Figura 9.4:
FC 100-FC 101
A função (RSETI) reseta o estado do sinal dos bits em uma faixa específica de bytes
para ”0” ou para "1" no FC 101, se o bit MCR é ”1.” Se o bit MCR é ”0,” o estado do
sinal dos bytes na faixa não são alterados.
FC 102
A função desvio padrão (DEV) calcula o desvio padrão do grupo de valroes
armazenados na tabela TBL). O resultado é armazenado na saída OUT. O desvio
padrão é calculado de acordo com a seguinte fórmula:
Desvio padrão =
FC 103
As funções das tabelas de dados correlacionadas (CDT) comparam um valor de entrada
(IN) com com valores de entrada de uma tabela já existente (IN_TBL) e olha para o
primeiro valor que é maior ou igual ao valor de entrada.
FC 105-FC 106
São usados para escalonar valores analógicos para escala de engenharia e serve a uma
Entrada Analógica (FC105) ou a uma Saída Analógica (FC106).
FB 80- FB 86
Refere ao manual eletrônico.
Anotações:
No Step7 o usuário pode programar a CPU para reagir aos diferentes tipos de erros que podem
acontecer, sendo possível existir um procedimento para tipo de erro que acontece com a CPU.
Algumas falhas permitem que a CPU continue em execução enquanto outras possibilitam
apenas que a CPU registre o erro antes de entrar em modo “STOP”.
Toda vez que um Bloco de erro é chamado, ele recebe em suas Variáveis #Temp as
informações sobre a falha que acabara de acontecer. É através da análise dessas variáveis
Locais que o programa trata a falha. Por exemplo, quando ocorre uma falha na alimentação
24Vdc da CPU ela pode, antes de ser desligada, setar um bit de alarme para que o
supervisório/IHM registre aquela falha.
Existem dois tipos básicos de erros: Síncronos e Assíncronos, os quais serão abordados nesse
capítulo.
Anotações:
OB Descrição
OB80 Erros de Tempo - Tempo Máximo de Ciclo Excedido
OB81 Erro de Alimentação – Falha na Bateria, Falha na Alimentação etc
Interrupção para Diagnóstico – Quebra de fio em um módulo com
OB82
capacidade de diagnóstico
Interrupção para Remover/inserir módulo – “Troca a Quente”
OB83
Obs.: Somente para o S7400
Erro de Harware na CPU – Ausência de Sinal na Interface MPI
OB84
Obs.: Somente para o S7400
Erro de Seqüência de Programa – Erro na troca da imagem do processo
OB85
Obs.: Somente para o S7400
OB86 Erro nos Racks – Erros na Rack central, Profibus e Profinet
Erro de Comunicação – Erro n e comunicação com FB’s ou “Global
OB87
Data”
Para outros diferentes tipos de erro a CPU, sem erros de OB, permanece em RUN e o
led vermelho de erro acende na CPU.
OB Descrição
OB121 Erros de Programação
OB122 Erros de Acesso a I/O
Um OB de erro síncrono tem a mesma prioridade que o bloco no qual ocorreu o erro.
Por esta razão os registradores dos blocos interrompidos podem ser acessados no OB
de erro síncrono. Isso permite ao programa no OB de erro síncrono retornar os
registradores (com conteúdo alterado) para o bloco interrompido.
OB121_SW_FLT
O OB122 é chamado quando a CPU não consegue acessar uma memória de Periferia,
ou seja, um módulo. Esse falha Também acontece quando um FC tenta acessar uma
parâmetro de entrada o qual não foi fornecido na chamada do Bloco.
OB122_SW_FLT
OB122_MEM_AREA
Anotações: