O formato float usado no PROFIBUS está definifo de acordo com o padrão IEEE 754:
- byte_MSB(byte1) byte2 byte3 byte_LSB (byte4)
- byte_MSB(byte1) = exp
- byte2 = mantissa
- byte3 = mantissa
- byte_LSB(byte4) = mantissa
Exemplo: 41 F1 01 80 => 30.1257
01000001 11110001 00000001 10000000
float = (-1)^bitsignal*[2^(exp-127)*[1+mantissa]]
Onde: bit signal é o bit msb bit do byte_MSB(byte1). Se este bit é 0, o número é positivo e se for 1, é negativo.
No exemplo anterior, o número é positivo.
O valor de "exp" é a soma dos outros bits do byte_MSB(byte1) e do bit msb do byte2.
No exemplo:
Exp = 1*2^7+0*2^6+0*2^5+0*2^4+0*2^3+0*2^2+1*2^1+1*2^0 = 2^7+2^1+2^0 Exp = 131
Já o valor da mantissa segue a mesma regra do exp desde o byte2 até o byte_LSB(byte4), até o fator exponencial -23:
Mantissa: 1*2^(-1)+1*2^(-2)+1*2^(-3)+1*2^(-7)+1*2^(-15)+1*2^(-16) = 0,882858276367
Então, float = (1)*[2^(131-127)]*1,882858276367 = 30.1257
Bit Signal | Exp | Mantissa |
0 | 1000001 1 | 1110001 00000001 100000000 |
Figura 1 - Sistema PROFIBUS
Vimos neste breve artigo alguns detalhes do formato IEEE754 utilizado para tratar o float no Profibus.
Este artigo não substitui os padrões IEC 61158 e IEC 61784 e nem os perfis e guias técnicos do PROFIBUS. Em caso de discrepância ou dúvida, os padrões IEC 61158 e IEC 61784, perfis, guias técnicos e manuais de fabricantes prevalecem. Sempre que possível, consulte a EN50170 para as regulamentações físicas, assim como as práticas de segurança de cada área.
A SMAR possui um ampla equipe especializada em projetos, certificações de redes e instalações em Profibus. Para mais detalhes, acesse o canal direto de comunicação com os engenheiros especialistas em instalações e tecnologia PROFIBUS e AS-i da SMAR: http://www.smar.com/brasil2/especialistas_profibus.asp
Consulte a solução completa SMAR Profibus: http://www.smar.com/brasil2/profibus.asp
http://www.smar.com/brasil2/system302/
Nenhum comentário:
Postar um comentário