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

nokPT

Funcionamento de um PID num S7-300

9 mensagens neste tópico

Tenho uma aplicação em que o CPU queimou, era um Siemens S7-315 que já não se fabrica, trocamos por um Siemens S7-314 dos novos.

Passados alguns dias, detectou-se que 2 saídas analógicas controladas por PID estavam sempre a zero.

Após análise do programa verificou-se que a rotina de PID só estava a ser chamada de 2 em 2 segundos com um timer, quando era chamada a saída variava, mas no ciclo seguinte voltava a zero, a ideia original que me foi traduzida, era manter a saída constante sendo actualizada a cada 2 segundos, só que agora em vez de manter o valor durante os 2 segundos vai a zero.

Sei que houve actualizações de firmware de autómatos do género que correram mal, não entravam em Run com PowerUp, as entradas oscilavam mais do que deviam, etc...

Já aconteceu a alguém?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá, isso não tem haver com o firmware, tem mesmo a ver com o programa em si..

o programa ta em STL ou FBD?

faz copy paste de uma parte, eu ainda nao tive problemas com isso, tambem nao uso timer para essas situações, uso o OB35 e configuro-o para ser lido como interrpt em cada 500ms, é mais pratico e nao precisa de mais nada..

Em relação á saida analogica ir a zeros, pode ser que depois do bloco PID tenhas outra função que é executada entre os 2 seg que a põe a zero..

cmps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O programa não é meu, é de um Inglês e o cliente diz que estava a a funcionar com o CPU antigo

Programa está assim (resumidamente):

FC10

Network 1

      AN    M    105.0

      L    S5T#2S

      SD    T    100

      NOP  0

      NOP  0

      NOP  0

      A    T    100

      =    M    105.0

Network 2

      A    M    105.0

      JC    M001                        // Alterei de JCN M001 para JC M001 em 23-04-2009 14H07 - RT

      CALL  "S7 PID loop (FB42)" , "Burner 1 PID"

      COM_RST :=FALSE

      CAS_ON  :=

      CYCLE  :=

      SP_INT  :=

      SP_EXT  :=

      PV_IN  :=

      PV_PER  :=

      DISV    :=

      CAS    :=

      MAN    :=

      DB_NBR  :=

      SPFC_NBR:=

      PVFC_NBR:=

      LMNFCNBR:=

      LMN    :=

      LMN_PER :=

      PV      :=

      QCAS    :=

M001: NOP  0

Há efectivamente uma network que põe a saída a Zero, é um bit geral, se estiver activo (máquina desligada) saída a zero, se não tiver activo não faz nada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

em relação a esse reset geral, em vez de ser um and , faz tipo um jmp, de maneira e essa network nao seja lida.

e é muito estranho, mas os endereços do FB nao tem nada? ou é tudo usado no DB?

é que o meu FB42 tem muito mais endereços que esse, se calhar é esse o problema, tens que recarregar o FB no cpu ou no programa, porque deve tar ai um problema..

e se é temperatura, é melhor um FB59?

cmps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando chegue ao cliente para ver a avaria, comecei por fazer cross-reference à saída analógica e só aparecia a parte de por a saída a zero, pensei inclusive que a cópia que o cliente tinha não estava completa.

Depois de alguma análise, encontrei um FC em que fazia moves para a DB.

O FC que está no PLC é o mesmo que está no meu PC, porque o PLC e a MMC são novos, virgem a sair da caixa.

O programa foi desenvolvido por um Inglês assim e eu não queria mexer muito, ele deve lá deve ter os seus motivos para usar esta FB.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hmm sim, mas anda nao está resolvido né?

se quiseres poe o programa no easy-share para eu ver melhor, ate pode ser que encontre alguma coisa..

Porque só assim nao estou a ver nada de especial..

cmps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fórum P@P 1 - 0 Suporte Técnico Alemão

Coloquei esta questão ao Suporte Técnico Alemão da Siemens 24 horas antes de o colocar aqui no fórum. O Dotinho a apontou o caminho certo 4 horas antes da mesma resposta alem.

Efectivamente, os PIDs têm que ser chamados a partir de rotinas de interrupt cíclicas OB30..OB40, caso contrário o seu funcionamento não é o correcto.

Efectivamente depois de analisar o programa com calma e pensar no problema sempre pressões, com a tua ajuda a apontar o caminho, tudo fica mais claro.

Já falei com o cliente vou ter que corrigir este programa e provavelmente verificar noutras máquinas equivalentes se também têm este bug.

Mas só na 4ª feira porque até lá está a produzir 24h/dia.

Dotinho obrigado pela ajuda...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

na boa, temos que nos ajudar para evoluir-mos juntos lool

sempra na boa :cheesygrin: se precisares de alguma coisa, é so dizer..

P.S. as vezes tambem vou ao forum da siemens, mas em ingles, e tabem costumam lá dar boas ideias..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Problema resolvido, depois de por o PID a ser chamado direitinho de uma OB cíclica, o sistema ficou a funcionar direitinho.

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