Página 1 de 1

Rede com PIC 18F452

MensagemEnviado: 12 Fev 2012 07:48
por rodrigoadachi
Ola pessoal,

Comprei 3 plaquinhas com 6 relés + 8 entradas fotoacopladas e um conector DB9(RS232) + LCD Serial, subistituir o PIC de 16F877 para 18F452 http://www.smartradio.com.br/loja-pic/?id=24.

Bom o negocio é o seguinte, estou em uma missão de comunicar 3 destas plaquinas a um PC utilizando Linux, no linux fiz em C ele recebe da serial e escreve no MySQL e Ler o MySQL e escreve na serial, RS232 ta facil comunicar uma para as 3 já pensei RS485, ModBus, Ethernet, ZigBee, bom, o que está pegando para mim é o protocolo, a redundância como por exemplo:

se estas plaquinas estão falando com o PC dai o pc envia um sinal para um relé ativar e eu deconecto o cabo de comunicação desta plaquina o relé tem que desativar;

outro exemplo:

se a plaquinha estiver desconectada e o PC enviar um sinal para ativar um relé e sei lá o sinal falhou, como o pc saber que a plaquinha recebeu este sinal.

Ja tentei varias coisas aqui:

Endereceu as plaquinas (slave) e o PC seria o master, fiz uma varredura no pc para envio de status para todos os nós, mas as vezes a plaquinha recebe o sinal as vezes não.

:?

Alguem já fez algo do tipo?[/url]

Re: Rede com PIC 18F452

MensagemEnviado: 12 Fev 2012 12:02
por andre_luis
rodrigoadachi escreveu:...se estas plaquinas estão falando com o PC dai o pc envia um sinal para um relé ativar e eu deconecto o cabo de comunicação desta plaquina o relé tem que desativar...


Como essa decisão tem de ser implementada do lado do microcontrolador, pode prever no protocolo, enviar regularmente de um frame de lifecheck, no qual o PIC sabe se o link com o PC continua estabelecido.

rodrigoadachi escreveu:...se a plaquinha estiver desconectada e o PC enviar um sinal para ativar um relé e sei lá o sinal falhou, como o pc saber que a plaquinha recebeu este sinal...


Realizando o "eco" dos comandos recebidos.
Também é prudente anexar bytes verificadores de erro.


+++

MensagemEnviado: 12 Fev 2012 13:45
por rodrigoadachi
Ok, havia pensado em algo do tipo, só não conhecia os termos..

Bom dai fiz o seguinte:

Em RS232 115200baud 8N1:

Criei um frame de comunicação $IH01O11111111*

$IH Cabeçalho
01 Endereço do slave
O O (saida) ou I (Entrada)
11111111 6 ou 8 bits referente as entradas ou saidas
* Fim de frame

Dai como falei anteriormente o PC varre enviando status para todos os nós no campo endereço de 00 a 99 quando o slave correspondente recebe seu frame ele responde cm a mesma coisa confirmando o recebimento e envia o status de entrada em seguida.

Mas ficou intermitente, diminuir o tempo de scan e nada...

MensagemEnviado: 12 Fev 2012 15:23
por andre_luis
Rodrigo,


Voce intuitivamente, implementou uma estrutura meio que padrão nos protocolos de comunicação mais comumente usados :
Imagem
Só acho que 1 ou 2 bytes verificadores de erro poderiam ser necessários, dependendo da precariedade do meio físico de comunicação.
Também a implementação de um eco, permitiria voce contabilizar a quantidade de pacotes perdidos.
Voce pode també usar um LED no PIC para informar esse recebimento.

Aparentemente, pelo que voce descreveu, o PC não está recebendo retorno do PIC, ou seja, não está perguntando se já pode enviar o próximo frame. Assim, a implementação de um protocolo de mão-dupla, pode resolver algum problema de overflow.



+++

MensagemEnviado: 12 Fev 2012 19:12
por rodrigoadachi
Bom numca trabalhei cm RS485, ja li muita coisa e fiz alguns testes aqui, aproveitando... poderia utilizar o mesmo modelo de frame?

MensagemEnviado: 12 Fev 2012 19:32
por andre_luis
Rodrigo,



Sem problemas.

O RS-484 não é um protocolo de comunicação, mas apenas um padrão de especificação elétrica.
Uma coisa é a camada físico e outra é a camada lógica de comunicação.

Voce tem de raciocinar dessa maneira na programação do firmware, para quando implementar o programa, realizar o acesso apenas de uma camada para outra, tendo funções separadas para cada uma.

Por exemplo, uma função para a manipulação dos bytes, outra para a formatação do frame, e outra para o protocolo de negociação dos frames.

No seu caso, a padronização RS-484 é feita fora da programação, mas por um circuito driver conversor de nível elétrico.

A manipulação dos bytes, voce não precisa se preocupar, pois o PIC possui UART, a formatação do frame e a negociação, aí sim, voce teria de primeiro desenhar o fluxo que deseja, e apenas depois partir pra programação.


+++

MensagemEnviado: 12 Fev 2012 20:29
por RobL
Poderia implementar Modbus sobre RS485.

MensagemEnviado: 09 Set 2012 09:02
por rodrigoadachi
Encontrei uma lib modBUS em uC mas ainda ñ terminei, a lib ñ compila, tem muito bug, achei estranho pois estava acompanhando um forum onde todos estavão compilando.

lib
http://www.libstock.com/projects/view/355/modbus-slave

forum
http://www.mikroe.com/forum/viewtopic.php?f=88&t=49111&sid=4e85a8cf259bf5a2f27fd97cf0f9e7db

MensagemEnviado: 09 Set 2012 15:07
por _blackmore_
rodrigoadachi

talvez o pessoal do fórum tenha alguma biblioteca que esteja faltando para vc, ou alguma configuração.
Passei por isso algumas vezes com o CCS.

MensagemEnviado: 09 Set 2012 16:58
por rodrigoadachi
Abandonei o CSS, o fabin me recomendou o MikroC dai utilizo ele já a uns dois anos o MikroC Pro for PIC.

Vou quebrar a cabeça um pouco aqui e volto a postar... Valew...

MensagemEnviado: 14 Set 2012 21:43
por turuna
Olha rodrigo, esse embrólio seu pode ser resolvido com rádios zigbee, se vc querer adiantar seu projeto tenho umas plaquinhas já com os rádio+pilhas+protocolo de comunicação, ai é só mandar o que precisar para o endereço xxxx e pronto. Tenho também uma para ligar no PC já com conversor USB integrado. Me mande um e-mail turuna_2@hotmail.com

turuna