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

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

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

Mensagempor ffkammer » 19 Out 2007 13:11

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
Editado pela última vez por ffkammer em 19 Out 2007 14:48, em um total de 1 vez.
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor xultz » 19 Out 2007 14:09

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?
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor ffkammer » 19 Out 2007 14:16

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
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor Bakuri » 19 Out 2007 16:15

A segunda serial (pic 485), ela é somente pra transmissão ou é half duplex??
Bakuri
Bit
 
Mensagens: 24
Registrado em: 20 Mar 2007 21:07

Mensagempor TEC_AUTOMAÇÃO » 19 Out 2007 17:32

FAZ O PIC SO COM RS 485 MESTRE , UM BARRAMENTO 485 DOS DISPOSITIVOS E NO PC VC CONVERTE EM 485 P/ 232
TEC_AUTOMAÇÃO
Bit
 
Mensagens: 38
Registrado em: 21 Out 2006 11:24

Mensagempor ffkammer » 19 Out 2007 18:52

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.
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor xultz » 19 Out 2007 19:05

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.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor ffkammer » 19 Out 2007 19:31

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
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor ivan » 20 Out 2007 07:04

...
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
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor ffkammer » 20 Out 2007 15:23

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
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor LeandroPIC » 21 Out 2007 10:16

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.
Avatar do usuário
LeandroPIC
Byte
 
Mensagens: 163
Registrado em: 06 Jul 2007 12:19

Mensagempor ivan » 22 Out 2007 05:51

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.
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor ffkammer » 22 Out 2007 08:52

Bom dia LeandroPIC,

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

Grato,

Fabrício
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor ffkammer » 22 Out 2007 09:31

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
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor xultz » 22 Out 2007 10:35

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.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Próximo

Voltar para PIC

Quem está online

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

x