• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

sá

controle horario com s7 314ifm

12 mensagens neste tópico

boas pessoal

gostaria de fazer o controle do meu aquecimento e estores com um cpu da siemens 314

tenho tentado e não consigo

alguém me pode dar algumas dicas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Claro, mas tens que dizer algumas duvidas ou sugestões? como tas a pensar fazer o controlo? queres painel ou controlo remoto tipo infravermelho?

O básico, um cpu 314, uma carta DI 16x24V e outra DO 16x24V, penso que seja suficiente...

Depois é uma questão de optares por relógio horário no cpu ou sensor crepuscular.

Em relação ao aquecimento, podes usar termostato regulável e usar uma entrada digital no autómato, ou sempre podes comprar uma carta para ler sondas de temperatura, e por ai controlares bastante facilmente a temperatura...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu o material já tenho cpu e as cartas di do ai ao

eu não consigo é fazer o codigo para o controle horario

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É recomendável que acertes a hora e data do autómato, para isso no Simatic Managerm vais a PLC->Diagnostics & Settings->Set PLC Clock.

Depois, numa FC (ou FB) crias uma variável temporária tipo Date_And_Time, a seguir na mesma FC metes a função SFC1 (READ_CLK) e no CDT metes as variável temporária que criaste, no RET_VAL, podes meter qualquer coisa que é mais ou menos lixo (é um código de erro se existir erro). Neste momento já tens o valor da data e hora, mas ainda não podes usar, para isso, vais às Bibliotecas Livraries->stdlibs->iec e copias FC6 (DT to Date), FC7 (DT to DAY) e FC8 (DT to TOD) para o teu projecto, depois usa-as para retirar os dados que queres da variável temporária que crias-te.

Depois de introduzires a SFC1, podes selecciona-la e carregar em F1, tem lá um exemplo em STL.

Também podes escrever no relógio o SFC0.

Outra questão, que pode não ser importante para o que vais fazer, mas também pode, depois de retirares os valores da Data e Hora para as memórias M ou para uma DB, imagino que vais comparar, com o que queres, por exemplo:

se Hora = 20 então, ligar as luzes

se Hora = 7 e Minutos = 30 então desligar as luzes.

Em todas as comparações deves usar flancos (positivos), para só dar a ordem uma vez, se não usares os flancos, no 1º exemplo que dei acima, a ordem para ligar as luzes vai durar das 20:00:00.000 até às 20:59:59.999 ou seja a hora toda, se nessa hora quiseres apagar as luzes (ordem numa consola ou no computador) não vais conseguir (ou melhor consegues por breves milisegundos).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois não tou a conseguir colocar os endereços nos comparadores

que tipo de comparadores devo utilizar

desde já agradeço o vosso apoio

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a usar a memória ou uma DB?

Partindo do principio que estás a programar em Ladder (ou FBD) no explorador de instruções, tens Comparator->EQ_I ou EQ_D ou EQ_R (entre outros), se usas o I (é o que faz mais sentido) tens que meter o endereço de uma Word, porque um Inteiro usar 16 bits. Provavelmente estás a tentar meter endereço de 1 Byte.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com o EQ_D estás a fazer comparações com DoubleWords, para ele te aceitar o endereço tens que meter por exemplo MD0

As DoubleWords além de ser um número muito grande (não tens essa necessidade vai desde +2.147.483.647 até -2.147.483.648) e tem o problema de over-lapping, ou seja, na Siemens a stack de memória é de 8 bits (1 byte), uma doubleword usa 4 bytes, se endereçares a MD0, na realidade estás a usar a MB0+MB1+MB2+MB3, a próxima variável DW será MD4 (MB4+MB5+MB6+MB7), se não tiveres esse cuidado e meteres MD0, MD1, ... os valores vão-se destruir uns aos outros (MD0=MB0+MB1+MB2+MB3 e MD1=MB1+MB2+MB3+MB4 o bytes 1, 2 e 3 estão a ser usados pelos 2 números).

O mesmo problema (over-lapping) acontece com os números inteiros porque usam 2 bytes (1word) podes usar o MW0 (MW1=MB0+MB1) e o MW2 (MW2=MB2+MB3), se usares o MW0 e o MW1, está outra vez a destruir valores.

Para não teres esse problema de over-lapping, eu recomendava-te que criasses uma DB (tipo shared, é o default), e nessa DB criasses as diferentes variáreis (tipo int, preferencialmente), é muito fácil, é só criares uma tabela com o nome da variável (Ano, Mês, Dia, Hora, Minuto, Segundo, etc...) e o tipo de variável (podes acrescentar comentários se quiseres), depois gravas a DB (e podes editar o symbólico, por exemplo para DeT) e a partir da Função acedes à variaveis deste genero: DeT.Ano (ou DBx.DBW0) ou seja separas a DB e a variavel por um ponto (.)

Tens que ter 1 cuidado, quando crias uma função (ou DB) nova, as que estão abertas no editor não conhecem, tens que gravar tudo para começarem a conhecer, ou fechar as funções abertas e voltar a abrir, se não dá-te um erro estúpido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigada pela tua explicação, mas ainda não tive tempo para ver se consigo fazer isso

o + provavél é não consegir nada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

OK, com calma, a parte da DB e da conversão está explicado no suporte da Siemens:

Extrair e converter a Data e Hora do S7-300/400

Mas de qualquer maneira, por partes, fiz um pequeno exemplo:

Criei a DB1 com a estrutura da Data e Hora:

* Ano - Int

* Mes - Int

* Dia - Int

etc...

Criei a FC1 para Ler e Converter a Data e Hora para a DB1. Nesta FC uma parte está em STL, foi tirada do link que está a cima com as devidas correcções.

Criei a FC2 para comparar a Data e Hora com o que queres, é um pequeno exemplo, está em FBD para caber na imagem

Criei ainda uma DB2 para os flancos em vez de usar memórias do autómato, mas é igual

Como uma imagem vale mais que mil palavras, aqui tens:

Imagem com as DBs e FCs

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

as imagens estão muito bonitas mas a parte de stl não entendo

peço desculpa mas sou novato, mas gosto de aprender

obrigada mais uma vez pela vossa desponibilidade

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na imagem falta uma coisa, no teu deve aparecer eu é que reduzi a área, em cima tens uma área para declarar variáveis locais, abres a parte que diz Temp e crias uma variável DataHora tipo DT, a partir daí é só copiares o que escrevi em STL e deverá funcionar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora