Página 1 de 3

PIC falando RS232 (com o PC) e RS485 (demais eqptos)

MensagemEnviado: 19 Out 2007 13:11
por ffkammer
Boa tarde à todos,

Estou desenvolvendo 1 projeto onde precisarei que um computador comunique via RS232 com um PIC (isto sem problemas, já tá funcionando OK). Este PIC fará alguns controles de sensores que também já está funcionando OK.

Agora começa meu problema:
Alguns comandos enviados pelo computador ao PIC deverão ser encaminhados para outros equipamentos, que estarão interligados entre sí e com o PIC que está ligado ao computador através de uma rede RS485.

Já consegui colocar em prática a rede RS485. Se eu conecto o conversor que fiz diretamente à porta serial de meu computador consigo transmitir os comandos aos equipamentos, sem problema algum. Só que eu preciso que o computador converse com o PIC que estará em meu equipamento central e este PIC envie os comandos através da rede RS485.

Minha dificuldade é que o MAX485 tem que falar em RS232 com o PIC e já estou usando a porta uart para a conexão com o computador. Pensei na possibilidade de utilizar uma segunda conexão RS232 via software, mas não faço a mínima idéia de como implementá-la.

PIC utilizado: 16F628a
Linguagem de programação: Assembly

Agradeço desde já a atenção de todos

Grande abraço

Fabrício F. Kammer

MensagemEnviado: 19 Out 2007 14:09
por xultz
Cara, me desculpe, mas é sexta-feira de tarde, metade de meus neurônios já estão em stand by, e eu não pesquei exatamente o que você quer fazer.
O que eu entendi (que ficou esquisito é):
computador, 1. serial fala via RS232 com o PIC
2. serial fala em RS485 com outros dispositivos, e com o PIC também
isso ficou bem estranho...
se possível, faz um desenho de blocos da tua rede, fica mais fácil opinar, ok?

MensagemEnviado: 19 Out 2007 14:16
por ffkammer
Boa tarde xultz,

Primeiramente obrigado.

Agora deixa eu tentar explicar melhor. O que preciso é o seguinte

Computador fala com o PIC via RS232 e o PCI fala com a rede RS485. Conforme abaixo:
PC---PIC---Rede RS485

O meu maior problema é que o MAX485 precisa receber as informações em RS232 para transmiti-las pela rede RS485 e o PIC 16F628A só tem uma interface serial que está sendo usada para a comunicação com o PC

Espero ter conseguido esclarecer suas dúvidas

Abraços

Fabrício

MensagemEnviado: 19 Out 2007 16:15
por Bakuri
A segunda serial (pic 485), ela é somente pra transmissão ou é half duplex??

MensagemEnviado: 19 Out 2007 17:32
por TEC_AUTOMAÇÃO
FAZ O PIC SO COM RS 485 MESTRE , UM BARRAMENTO 485 DOS DISPOSITIVOS E NO PC VC CONVERTE EM 485 P/ 232

MensagemEnviado: 19 Out 2007 18:52
por ffkammer
Bakuri,

A transmissão do PIC será unidirecional, ou seja, ele apenas transmitirá alguns comandos para os equipamentos da rede RS485. Tem alguma sugestão de como fazer isto??? Pensei em criar uma segunda serial via software, mas não sei como fazê-lo em assembly.

Caro TEC_AUTOMAÇÃO, esta sugestão é inviável, pois, em primeiro lugar minha rede RS485 é unidirecional e eu preciso que a comunicação PIC/PC seja bidrecional, ou seja, o PIC manda para o PC e vice versa. Em segundo lugar porque eu preciso que o PIC confira alguns status de sensores e chaves antes de encaminhar os comandos para os equipamentos ligados na rede RS485.

Grato à todos e aguardo uma ajuda para resolver meu problema.

MensagemEnviado: 19 Out 2007 19:05
por xultz
Cara, eu defendo fortemente a solução de usar uma única rede 485 para todos os dispositivos, você vai ter que criar um protocolozinho bem simples para endereçar as informações para os respectivos destinatários, isso é bem simples, você vai usar uma única serial no PIC.
Quando você diz que a rede é unidirecional, não impede em nada esta solução apresentada.

MensagemEnviado: 19 Out 2007 19:31
por ffkammer
Boa tarde xultz,

O problema é que o PIC deverá enviar algumas ifnormações para meu computador e este computador também enviar informações pela rede RS485. Sairá dele os comandos que o PIC interpretará, agregará mais algums informações de sensores e encaminhará para os demais equipamentos. Com isto não vejo como fazer tudo na rede RS485, pois a comunicação PC-PIC deverá ser biderecional.

Abraços

MensagemEnviado: 20 Out 2007 07:04
por ivan
...
Com isto não vejo como fazer tudo na rede RS485, pois a comunicação PC-PIC deverá ser biderecional.
...


A implementação da comunicação bidirecional é uma questão do protocolo de rede a ser usado/codificado, uma vêz q a RS485 é só o meio físico. Um único barramento RS485 atende plenamente as suas necessidades.A propagação da msg no barramento é feita por difusão, todos ouvem, o único eqpto endereçável a responder as msgs será o PC. O resto fica no "fala que eu te escuto"!

|-- RS232/485 -----|------------------------------ RS485 ---------------------------------|
PC <=========> PIC ==> Eqpto1 ==> Eqpto 2==> Eqpto3==> ... ===> Eqpto 30

MensagemEnviado: 20 Out 2007 15:23
por ffkammer
Boa tarde Ivan,

Grato pela sua resposta.

Não tenho experiência nenhuma com RS485, é meu primeiro projeto. O problema que vi é que o MAX485 que estamos utilizando para converter a comunicação RS232 para RS485 precisa ter o status de um de seus pinos alterado para trasmitir/receber. Com isto poderia haver choque de informação na rede, ocasionando perda de pacotes na mesma.

Você teria uma idéia de como posso fazer para evitar isto?

Como disse nas mensagens anteriores, o que eu realmente preciso é que o computador transmita algumas informações ao PIC (entre elas qual o equipamento que será comandado). O PIC fará alguns testes em sensores e transmitirá o comando necessário ao equipamento através da rede RS485. O PIC também comunicará com o computador informando o status dos sensores e qual comando foi encaminhado à rede RS485. Dessa forma preciso que apenas o computador e o PIC tenha comunicação biderecional, os demais equipamentos apenas receberão os comandos que o PIC enviará, nunca retornarão nada.

Cheigue a pensar em ligar o PIC e o MAX485 em paralelo, o que funcionou parcialmente, pois o computador conversou normalmente com o PIC e a rede RS485. O PIC foi capaz de enviar informações para o computador, porém o PIC não é capaz de enviar informações pela rede RS485.

A principal utlidade do PIC neste projeto é substituir o computador e comandar a rede RS485 na ausência do computador, pois estes equipamentos não poderão ficar fora do ar em caso de pane do computador.

Reforçando, como não tenho experiência em RS485 não sei como fazer a comunicação biderecional sem o choque de informações na rede.

Abraços

MensagemEnviado: 21 Out 2007 10:16
por LeandroPIC
ffkammer escreveu:Boa tarde Ivan,


Não tenho experiência nenhuma com RS485, é meu primeiro projeto. O problema que vi é que o MAX485 que estamos utilizando para converter a comunicação RS232 para RS485 precisa ter o status de um de seus pinos alterado para trasmitir/receber. Com isto poderia haver choque de informação na rede, ocasionando perda de pacotes na mesma.

Você teria uma idéia de como posso fazer para evitar isto?



Abraços


Use um conversor rs232/rs485 full duplex.

MensagemEnviado: 22 Out 2007 05:51
por ivan
Bom dia ffkammer.

Vc precisa estabelecer um padrão de compartilhamaneto do meio físico.
Digamos q vc crie um token. O token é como se fosse um bastão em corrida de bastões na Olimpíada. O uPU que estiver com o token pode transmitir, o q estiver sem o token só escuta. O token deve ser trocado entre o PC e o PIC de tempos em tempos, vc estabelece a politica de troca. E deve ter um prazo de validade(tempo de expiração), caso ele não seja trocado no período de tempo especificado, ele expira e forçosamente é enviado para o outro uPU da rede.
Como vai ser implementado? Vc decide.

MensagemEnviado: 22 Out 2007 08:52
por ffkammer
Bom dia LeandroPIC,

Você saberia onde posso encontrar o diagrama de um circuito de um conversor RS232-RS384 full duplex?

Grato,

Fabrício

MensagemEnviado: 22 Out 2007 09:31
por ffkammer
ivan escreveu:Bom dia ffkammer.

Vc precisa estabelecer um padrão de compartilhamaneto do meio físico.
Digamos q vc crie um token. O token é como se fosse um bastão em corrida de bastões na Olimpíada. O uPU que estiver com o token pode transmitir, o q estiver sem o token só escuta. O token deve ser trocado entre o PC e o PIC de tempos em tempos, vc estabelece a politica de troca. E deve ter um prazo de validade(tempo de expiração), caso ele não seja trocado no período de tempo especificado, ele expira e forçosamente é enviado para o outro uPU da rede.
Como vai ser implementado? Vc decide.


Bom dia Ivan,

Obrigado novamente pela sua resposta. Entendi sua idéia, estou começando a trabalhar com comunicação serial, então não tenho grandes conhecimentos ainda. Segundo o circuito que estou utilizando para fazer a conversão de RS232 para RS485 (http://aquaticus.info/rs485_to_rs232) eu necessito mudar o status de um dos pinos no MAX485 para que ele transmita ou receba informações. Isto é feito de forma automática qdo o pino RTS da porta serial de meu computador é conectado à este pino? Saberia me dizer?

Muito obrigado pela sua ajuda Ivan.

Abraços

Fabrício

MensagemEnviado: 22 Out 2007 10:35
por xultz
Eu já me meti a fazer conversores 232 <> 485 e todos funcionaram quase bem, eu só fiquei plenamente satisfeito quando comprei um conversor industrial da LRI. Eles não são exatamente baratos, mas funcionam de forma transparente para tua aplicação (o circuito do conversor entende quando você está mandando informações e sozinho domina a rede 485 e quando termina ele libera) e para tua aplicação no PC vai ficar exatamente igual transmitir via RS232 como 485, não vai precisar manipular o RTS nem nada.
Eu recomendo fortemente você pensar em usar uma solução deste tipo.