O documento descreve a representação de números reais no SIMATIC S7, incluindo instruções básicas e funções matemáticas com números reais. É apresentado o formato binário de 32 bits usado para representar números reais e exemplos de como realizar operações como adição, subtração, multiplicação e divisão. Funções trigonométricas e outras conversões e operações com números reais também são explicadas.
1. Instruções com números REAIS
?
?
y=LN(x)
sin?
cos?
tan?
SIMATIC S7
Siemens AG 1999. All rights reserved.
...?
Date:
File:
09.03.14
PRO2_3P.1
Conhecimento em Automação
Training Center
2. Representação de números REAIS no SIMATIC S7
Formato da representação de um número REAL (IEEE FP formato binário 32 bits):
31
30
29
28
27 26
25
24
23
22
21
20 19
18
17
16 15
14
13
12
11 10
9
8
7
6
5
4
3
2
1
0
0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
S
2-23
2-1
Expoente: e (8 Bits)
Mantissa: f (23 Bits)
Representação de um número REAL normalizado:
S x (1.f) x 2 (e-127)
S = Bit de sinal (0 corresponde a “+“, 1 corresponde a “-“)
f = 23 bits da Mantissa com MSB = 2-1 e LSB =2-23
e = expoente binário inteiro (0 < e < 255)
Exemplo:
S =0
e = 1000 0101 = 133
f = 1010 0000... = 0.5 + 0.125
R = +1.625 x 2(133-127) = 1.625 x 64 = 104.0
Faixa de valores dos números REAIS normalizados:
- 3.402 823 x 10+38 ... -1.175 494 x 10-38, 0, 1.175 494 x 10-38 ... 3.402 823 x 10+38
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.14
PRO2_3P.2
Conhecimento em Automação
Training Center
3. Instruções Básicas com números REAIS
Adição em REAL:
L
L
+R
T
MD10
MD20
MD30
// Carrega o primeiro número REAL
// Carrega o segundo número REAL
// Soma os números REAIS (MD10 + MD20)
// Transfere o resultado para o MD30
Subtração em REAL:
L
L
-R
T
MD10
MD20
MD30
// Carrega o primeiro número REAL
// Carrega o segundo número REAL
// Subtrai os números REAIS (MD10 - MD20)
// Transfere o resultado para o MD30
Multiplicação em REAL:
L
L
*R
T
MD10
MD20
MD30
// Carrega o primeiro número REAL
// Carrega o segundo número REAL
// Multiplica os números REAIS (MD10 * MD20)
// Transfere o resultado para o MD30
Divisão em REAL:
L
L
/R
T
SIMATIC S7
Siemens AG 1999. All rights reserved.
MD10
MD20
MD30
// Carrega o primeiro número REAL
// Carrega o segundo número REAL
// Divide os números REAIS (MD10 / MD20)
// Transfere o resultado para o MD30
Date:
File:
09.03.14
PRO2_3P.3
Conhecimento em Automação
Training Center
4. Funções Matemáticas Adicionais
Funções Matemáticas:
SQR
SQRT
Forma o quadrado de um número
Calcula a raiz quadrada
EXP
Função exponencial na base “e“
LN
Logarítmo natural
(e=2.718282)
Exemplo:
L
SQR
T
MD10
MD30
EN
MD10
SIMATIC S7
Siemens AG 1999. All rights reserved.
IN
SQR
// Carrega um número REAL
// Calcula o quadrado
// Transfere o resultado para MD30
ENO
OUT
(STL)
(LAD)
MD30
Date:
File:
09.03.14
PRO2_3P.4
Conhecimento em Automação
Training Center
5. Funções Trigonométricas e suas Funções Inversas
Funções Trigonométricas:
SIN
COS
TAN
Seno
Coseno
Tangente
Ângulo
Funções Arco:
ASIN
ACOS
ATAN
Arco seno
Arco coseno
Arco tangente
Exemplo:
L
SIN
T
MD10
MD30
EN
MD22
SIMATIC S7
Siemens AG 1999. All rights reserved.
IN
SIN
// Carrega um número REAL
// Calcula o seno
// Transfere o resultado para MD30
(STL)
ENO
OUT
(LAD)
MD30
Date:
File:
09.03.14
PRO2_3P.5
Conhecimento em Automação
Training Center
6. Outras Instruções com números REAIS
Instruções de conversão de REAL para DINT:
RND+
RNDRND
TRUNC
arredonda para o próximo número DINT acima
arredonda para o próximo número DINT abaixo
arredonda para o inteiro mais próximo
trunca o número, mantendo somente a parte inteira
Instruções de conversão de DINT para REAL:
DTR
converte com arredondamento
Outras instruções de REAL para REAL:
ABS
NEGR
retorna o valor absoluto ou módulo
nega um número REAL
Exemplo:
L
RND+
T
MD10
MD30
EN
MD22
SIMATIC S7
Siemens AG 1999. All rights reserved.
IN
// Carrega um número REAL
// Converte para o próximo número DINT acima
(STL)
// Transfere o resultado para MD30
RND+
ENO
OUT
(LAD)
MD30
Date:
File:
09.03.14
PRO2_3P.6
Conhecimento em Automação
Training Center
7. Exercício 3.1: Calculando Distância
Exemplo: Calculando a distância D entre dois pontos em
um sistema de coordenadas retangulares
Y
Y2
P2
D
Y1
P1
X1
Função: FC 31 com D =
SIMATIC S7
Siemens AG 1999. All rights reserved.
X
X2
(X2 - X1)2 + (Y2 - Y1)2
Date:
File:
09.03.14
PRO2_3P.7
Conhecimento em Automação
Training Center
Notas do Editor
ConteúdoPág.
Representação de números REAIS no SIMATIC S7 .………..............................................................2
Instruções Básicas com números REAIS ...........................................................................................3
Funções Matemáticas Adicionais ….......….........................................................................................4
Funções Trigonométricas e suas Funções Inversas ..........................................................................5
Outras Instruções com números REAIS .............................................................................................6
Exercício 3.1: Calculando Distância …................................................................................................7
Número REALOs números REAIS (ponto flutuante) habilitam a implementação de complexos cálculos matemáticos para controle de processos e controle de processos em malha fechada.
Uma variável tipo dado REAL consiste internamente de três componentes: o sinal, o expoente 8 bits em base 2 e a mantissa 23 bits.
O sinal pode assumir os valores &quot;0&quot; (positivo) ou &quot;1&quot; (negativo). O expoente é incrementado por uma constante (Bias,+127) e armazenado, então este terá uma faixa de valores de 0 a 255.
A mantissa representta a parte fracionária. A parte inteira da mantissa não é armazenada, uma vez que esta será sempre 1 (para ponto flutuante normalizado) ou 0 (para ponto flutuante não normalizado).
Limites de faixaDesignação Valor eMantissa fValor CC1 CC0 OV OSNo.não pt.flut.255&lt;&gt;0[qNaN]11 1 1Estouro2550&gt;(2-2-23) 2127 10 1 1&lt;(-2+ 2-23) 2127 01 1 1No. normalizado1.. 254qualquer(1.f) 2e-12710 0 -(-1.f) 2e-12701 0 - No.não normaliz.0&lt;&gt;0(0.f) 2-12600 1 1(- 0.f) 2-126 00 1 1Zero00+000 0 -
NotaAs CPUs calculam com inteira exatidão os números em ponto flutuante. O display na PG pode deviar-se da exata representação, devido ao erro de arredondamento para cima na conversão. Números REAIS são arredondados para cima a partir da sexta casa decimal.
Vista GeralAs funções +R, -R, *R, /R interpretam os valores encontrados no ACCU1 e ACCU2 como números tipo dados REAIS. Eles executam a operação lógica programada (+R, -R, *R and /R) e salvam o resultado no ACCU1.
Após os cálculos serem executados, os bits de status CC0 e CC1 indicam, se o resultado é negativo (CC1=0, CC0=1), zero (CC1=0; CC0=0) ou positivo (CC1=1, CC0=0).
Os bits de status OV e OS sinalizam se as operações não excederam a faixa de números permitidos.
Números REAISCom um cálculo não autorizado, isto é, quando um dos dois valores inseridos
não autorizadosé um número REAL inválido, então o resultado no ACCU1 é também um número REAL inválido.
Números REAIS inválidos são também armazenados como um resultado no ACCU1, se você tentar processar valores não autorizados com as seguintes instruções:
Adição: Soma de + infinito e - infinito.
Subtração: Subtração de + infinito e + infinito
ou - infinitoe - infinito.
Multiplicação:Multiplicação de 0 por infinito.
Divisão: Divisão de infinito por infinito ou 0 por 0.
O resultado da divisão de números REAIS válidos por 0 é, dependendo do sinal do número, + infinito ou - infinito.
NotaO número hexadecimal D#16#FFFF FFFF representa, por exemplo, um número REAL inválido.
Vista GeralAs funções matemáticas pegam o número no ACCU1 como o valor de entrada da função a ser executada e armazena o resultado no ACCU1.
Funções matemáticas somente mudam o conteúdo do ACCU1. O conteúdo do ACCU2, ou ACCU3 e ACCU4 para S7-400, permanecem inalterados.
Dependendo do resultado da função, a função matemática seta os bits de status CC0, CC1, OV e OS.
Se existe um número REAL inválido no ACCU1 antes da função ser executada, então a função matemática retorna um número REAL inválido e seta os bits de status correspondentemente.
SQRA função SQR eleva ao quadrado o conteúdo do ACCU1.
SQRTA função SQRT calcula a raiz quadrada do valor no ACCU1. Se existe um valor menor do que zero no ACCU1, SQRT seta os bits de status CC0, CC1, OV e OS para &quot;1&quot; e retorna um número REAL inválido.
Se -0 (menos zero) está no ACCU1, -0 também é retornado.
EXPA função EXP calcula a potência na base “e” (e=2.71828) e o valor (eACCU1) encontrado no ACCU1.
LNA função LN calcula o logarítmo natural para base “e” do número encontrado no ACCU1. Se existe um valor menor que ou igual a zero no ACCU1, LN seta os bits de status CC0, CC1, OV e OS para &quot;1&quot; e retorna um número REAL inválido.
O logarítmo natural é a função inversa da função exponencial:
Se: y= exentão: x = ln y
Funções As funções trigonométricas esperam por um ângulo em radianos medido como
Trigonométricas número REAL no ACCU1. Para o ângulo inserido ( 00 ... 3600), você deve, se necessário, realizar uma conversão para graus medidos (0 ... 2 pi, com pi=3.141593).
Durante a execução da função, para valores menores que 0 ou maiores que 2pi, um múltiplo de 2pi é automaticamente somado ou subtraído até que o valor se encontre entre 0 e 2pi (módulo automático de cálculo 2pi).
Funções Arco As funções arco são o inverso de suas respectivas funções trigonométricas. Elas esperam um número REAL em uma faixa específica de valores no ACCU1 e retornam um ângulo medido em radianos:
FunçãoFaixa permitida definidaFaixa de valores
ASIN-1 a +1- pi/2 a + pi/2ACOS-1 a +1 0 a piATANfaixa inserida- pi/2 a + pi/2
Com uma sobrefaixa da faixa permitida definida, as funções arco retornam um número REAL inválido e setam os bits de status CC0, CC1, OV e OS para &quot;1&quot;.
Vista GeralAs funções de conversão convertem os tipos de dados dos valores encontrados no ACCU1 em outro tipo de dado e armazena o resultado no ACCU1. O conteúdo dos outros acumuladores permanecem inalterados.
Se, em uma das instruções (RND+, RND-, RND ou TRUNC), o valor encontrado no ACCU1 é maior ou menor do que a faixa de formatos permissíveis de DINT ou este não corresponde ao número em formato REAL, a instrução seta os bits de status OV e OS para &quot;1&quot;. Uma conversão então não tem lugar.
RND+A instrução RND+ converte o conteúdo do ACCU1 como número REAL em um inteiro (DINT), o qual é maior ou igual ao número a ser convertido.
RND-A instrução RND- converte o conteúdo do ACCU1 como número REAL em um inteiro (DINT), o qual é menor ou igual ao número a ser convertido.
RNDA instrução RND converte o conteúdo do ACCU1 como número REAL no próximo inteiro possível (DINT). Se o resultado estiver exatamente entre um número par e um número ímpar, o número par é retornado.
TRUNCA instrução TRUNC retorna o componente inteiro do número a ser convertido; a parte fracionária é jogada fora.
DTRA instrução DTR converte um número de formato DINT para o formato de número REAL. Uma vez que um número em formato DINT é mais exato do que um número em formato REAL, é possível que durante a conversão um arredondamento tenha lugar para o próximo número representável.
ABSA instrução ABS forma o valor absoluto do número REAL encontrado no ACCU1, isto é, o sinal (bit 31) é fixado em “0” (par para um número REAL inválido).
NEGRA instrução NEGR nega o número REAL no ACCU1, isto é, o sinal (bit 31) é invertido (par para um número REAL inválido). As instruções DTR, ABS e NEGR não afetam os bits de status.
ObjetivoA aplicação de funções matemáticas para cálculo de distância entre dois pontos.
TarefaCriar um FC31 com a seguinte fucionalidade:
•FC31 espera as coordenadas (X1, Y1) ou (X2, Y2) de dois pontos P1 e P2 nos parâmetros de entrada.
•FC31 retorna a distância entre os dois pontos no parâmetro de saída RET_VAL.
•FC31 deverá ser instalável no sistema S7-300 bem como no sistema S7-400 Este não deverá utilizar endereços globais de CPU para qualquer possível salvamento dos resultados imediatos.
O que fazer1.Criar um FC31 com a seguinte fucionalidade.
2.Chamar FC31 no OB1 e conectar os parâmetros de entradas e saídas como a seguir:
X1 = MD0, Y1 = MD4
X2 = MD8, Y2 = MD12
RET_VAL = MD16
3.Transferir o programa para a CPU S7.
4.Testar FC31 com ajuda da &quot;Monitor/Modify Variable&quot;.
Additional TaskCriar uma versão run-time otimizada do FC31 para S7-400, que possa operar sem o uso de variáveis temporárias.