Integração PIC x CLP

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Integração PIC x CLP

Mensagempor ivan » 14 Abr 2009 18:41

Boa tarde,

Preciso enviar 14 bits para um CLP Mitsubishi.
Só tenho uma entrada disponível. Então gostaria de outras opiniões para a solução do prob.

Fiz o seguinte:

No pic, envio os bits atraves de sinais alto(1) e baixo(0) em pulsos com a largura de 1msec aprox. Para iniciar a transmissão, recebo do CLP um pulso em uma entrada do PIC e na borda de descida desse pulso dou um delay de +- 0.8 msec e começo o envio dos bits.

No CLP, criei uma rotina de interrupção por tempo a cada 1msec e vou armazenando a leitura de X7 em memórias contiguas.
É a maneira mais fácil de fazer, com menos possibilidade de erro ou vcs conhecem uma forma melhor?

Obrigado,
Ivan
Editado pela última vez por ivan em 15 Abr 2009 23:00, em um total de 1 vez.
"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

Re: Integração PIC x CLP

Mensagempor Renie » 14 Abr 2009 23:05

Olá Ivan,

Não rola usar I2C?

Pode ser implementado por soft (nota: não conheço o esquema do CLP!)!

[]'s
Renie
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor MOR_AL » 15 Abr 2009 08:28

Olá Ivan.
Como o Renie, eu também não conheço o esquema do CLP.
Uma vez tive que ler uns bits através de um canal (serial) e resolvi usando um código simples e que não precisa de precisão no tempo. Como sua taxa de transmissão parece bem baixa, acredito ser esta uma opção bem simples.

É o seguinte.

1 - Mantenha a saída do PIC em nível lógico "1".
2 - Gere no PIC um sinal com um período T de sua escolha. Este sinal possui um período Toff e outro Ton, nessa ordem. Logo T = Toff + Ton.
2 - Quando o bit a ser transmitido for "1", o período Toff = 10% de T, e quando bit a ser transmitido for "0" , o período Toff = 90% de T.

-------_____________________________-------------- (bit "0")
........0......................0,5T........................0,9T...T


-------____------------------------------------------------- (bit "1")
........0...0,1T.............0,5T.................................T


3 - Faça o CPL trigar na transição negativa do sinal e lê-lo após um período de 0,5 T.
4 - Durante a transmissão sempre haverá uma transição negativa a cada período T (esta é que fornece o instante do sincronismo)
5 - O final da transmissão poderá ser considerado quando não houver transição negativa durante um período de 2T (ou quando faltar uma transição negativa). Você pode aumentar este período, para evitar erro devido a ruído.
6 - Fim.

Se houver problema de ruído, você poderá criar redundâncias. Ou repita o valor do byte n vezes e escolha o byte que teve maior repetições, ou leia o bit em 0,2T, 0,3T, 0,4T, ..., 0,7T e 0,8T. O bit escolhido será o que apresentou maior repetibilidade.

Simples?

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor ivan » 15 Abr 2009 11:46

Fála Renie,

E o novo churras? Qdo? Onde eu sei!

Bem, I2C leva em conta um protocolo - nunca usei mas penso q sim, se estiver errado, me corrijam! - do lado do CLP é meio complicado fazer lógica complexa com a porcaria do Ladder(linguagem). Tô apanhando a rôdo pra depurá-lo!
Êsse CLP tem entradas digitais a transistor, se não me engano - tenho q ver no manual -, e saídas digitais a relé. Tem comunicação RS232 e RS422 tb.
Para simplificar estou usando uma entrada digital pra receber o trem de 16 pulsos, como descrevi lá em cima. SW simples no PIC e no CLP(Argh!) tb.

Estive falando com um amigo q sugeriu usar um MAX232 na saída do PIC e fazer um comunicação a 3 fios. Simples, mas tenho q aumentar HW do PIC. Vou analisar...
Nessa conversa identifiquei q estou usando a entrada errada, tenho q mudar a entrada X7 para a X0(oito entradas digitais) que é a entrada apropriada para a frequência em questão(1Khz).

MOR_AL,

Tudo bem?
Essa opção q vc sugeriu, vou colocá-la como o próx teste a ser feito caso continue com o prob de comunicação. Não tem prob de ruído pq é um protótipo didático a ser usado na Faculdade de Automação Industrial.


Vou fazer a modificação da entrada no SW hoje e testarei a partir de amanhã. Posto os resultados depois.

Link do Manual do Hardware JY992D93101-F 3.14MB PDF:
http://www.meau.com/functions/dms/getfi ... 0207600000

Página com os Manuais de toda a série
http://www.meau.com/eprise/main/sites/p ... anualType=

Obrigado!
"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 rodrigoadachi » 15 Abr 2009 16:18

Ola Ivan,

O PLC que vc usa não tem uma RS232(serial)?

O PIC tem uma por hadware que poderia se comunicar cm o PLC.
rodrigoadachi
Nibble
 
Mensagens: 70
Registrado em: 15 Out 2007 12:19
Localização: Bahia - Brazil

Mensagempor ivan » 15 Abr 2009 23:00

Oi Rodrigo,

Infelizmente o PIC16F628 já está com todos os pinos utilizados, pois são lidos os estados de 14 sensores, + o VDD, o VSS, o pino INT0(entrada de sinal vindo da CLP - start da comunicação) e a saída para o CLP. Não pretendo mais mexer no hardware, a menos q seja estritamente necessário.
A partir do start proveniente da CLP o PIC envia os estados dos 14 sensores para a CLP.

Obrigado.
"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 guest2003 » 15 Abr 2009 23:34

Usa o pino de reset como input (MCLR pode ser configurado para interno)

Ai faz a coisa sincrona... o MCLR passa a ser o seu CLK in e conforme o CLP bimba o PIC ele devolve os dados no pino de INT... tranquilo...

[]'s
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP

Mensagempor ivan » 18 Abr 2009 09:00

Guest,

A principio fiz o vc q sugere, porém no INT0(in) x RB1(out 14 bits).

Estou verificando a forma de onda da sáida RB1 no osciloscópio para então interligar os PIC x CLP.

Valews.
"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


Voltar para PIC

Quem está online

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

x