modbus com hitech

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

modbus com hitech

Mensagempor eagle_good » 18 Nov 2006 16:30

pessoal......to fazendo um projeto com modbus RTU mas me deparei
no seguinte problema.......o frame inicia e terminas com 3,5 *time-bytes..
na net encontrei isto que aparentemente e a rotina que cuida disso, mas num entendi nada....

if(Comm1.Baud==3)
{ set_uart_speed(19200,COMM_1);
if(((16.5*Xtal_Freq)/19200)<65536)
{ Comm1.Three_Half_Byte_Periods=65536-((18*Xtal_Freq)/19200);
}
else
{ Comm1.Three_Half_Byte_Periods=0;
}
}
alguem podia nos esclarecer :: :cry:
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP

Mensagempor eletroinf » 18 Nov 2006 16:57

Bueno, parece que esse código calcula o tempo correspondente a 3.5 x o tempo de transmissão (ou recepção) de um byte, mas tá meio sombrio pra mim...
Sobre Modbus RTU eu fiz um projeto baseado numa rede RS485, com Zilog e o SN75176, funciona bem e é fácil de implementar. A dica que eu posso te dar é a seguinte: Te baseia no manual dos inversores da Weg, por exemplo no manual do CFW 08, na versão 4.1x, lá na página 183 em diante tem a descrição do protocolo pro inversor, de forma bem explicativa.
Link pro manual do CFW08:

http://catalogo.weg.com.br/FILES/Artigos/1-577.pdf
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Mensagempor eagle_good » 18 Nov 2006 17:29

tenho o arquivo modbus.c para pic ....mas nao encontrei nele nada que fizesse este 3,5 time byte......que diz a especificacao do modus
O modbus e protocolo aberto portanto se alguem souber como executa-lo em rtu ...tenho varrios exemplos mas quero compreender e ter um exemplo de como realizar este time na hora de enviar e aguardar por este time qdo receber........

manual...manual......ja havia visto este da weg assim como outros.....de nada serve se nao tiver exemplo deste timer loco......
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP

Mensagempor eletroinf » 18 Nov 2006 18:11

Esse tempo é a sinalização de início/fim das mensagens, está bem explicado no manual da Weg. Cada mensagem é composta por uma sequência de bytes e a separação entre elas é através de temporização. Ex: Para receber dados, crie um contador e resete-o a cada byte recebido. Se após a recepção do último byte o contador ultrapassar o tempo de transmissão de um byte x 3.5 sem que tu receba nada, é a indicação de fim da mensagem. Olhe na página 187 do manual que está no link que postei, tem até um gráfico explicando isso.
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Mensagempor eagle_good » 18 Nov 2006 19:31

.....a duvida e o seguinte......
Qdo saber o inicio do frame ( 3.5 bits),.... ja que qdo a interrupcao ocorre ja e tarde porque chegou um byte inclusive os (3,5 bits) concatenado.....
apartir do momento que se imagina no meio do frame , o timer Ok, mas no inicio....num entendo...posta o exemplo em c de sua ideia para debatermos....
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP

Mensagempor eletroinf » 18 Nov 2006 19:52

Bueno, parece que tu não leu mesmo os manuais...
Não existe 3.5 bits concatenado.
Quando tu receber um byte (use interrupção), comece a contar o tempo até receber o próximo byte. Se o tempo superar o tempo de transmissão de um byte multiplicado por 3.5, indica que este byte recebido é o último de uma mensagem (ou Telegrama). Aí tu verifica a integridade da mensagem pelo CRC. Por exemplo, com a serial a 19200 bps, um byte demora 573us para ser transmitido. Multiplicando isso por 3.5 dá 2.005ms. Se tu receber um byte e por um período de 2.005 ms não receber nada, este byte era o último de um telegrama. Daí é só tratá-lo.
Não posso postar o código que desenvolvi porquê é parte de um produto comercial. Além do mais, tu não vai conseguir adaptar um código se não entender como o sistema funciona.
Não adianta, tem que estudar e entender os manuais. E nem é tão ruim, documentação sobre Modbus além de farta, tem até em português.
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x