ConteúdoPágina
Objetivos da aprendizagem....................................................................................................................2
Blocos de organização: Visão geral.....………........................................................................................3
Blocos de organização: Propriedades......…………...............................................................................4
Eventos que ativam um OB.................…………....................................................................................5
Interrupção de programas cíclicos....………………...............................................................................6
Blocos de organização cíclicos:......…………….....................................................................................7
Blocos de organização de partida (startup):……...................................................................................8
Interrupções atraso de tempo..................…..........................................................................................9
Interrupções cíclicas..............................................................................................................................10
Desvio de fase em interrupções cíclicas….............................................................................................11
Interrupções de hardware......................................................................................................................12
Habilitação da interrupção de hardware................................................................................................13
Interrupção de hardware - Programa.....................................................................................................14
Anexar / desanexar interrupções de hardware......................................................................................15
Habilita diagnóstico de interrupção…....................................................................................................16
Identificador de hardware...……............................................................................................................17
Diagnósticos do OB82...........................................................................................................................18
Estouro de tempo – OB 80:...................................................................................................................19
Eventos que não ativam um OB:..….....................................................................................................20
Exercício 9-1: Ajuste a monitoração do tempo de ciclo da CPU para 1000 ms....................................21
Exercício 9-2: Insira o bloco "FC_RemainProg" (FC66) no programa do usuário................................22
Exercício 9-3: Adicione "OB_HW-Interrupt" (OB240).......……….........................................................23
Exercício 9-4: Habilite e atribua um OB de interrupção de hardware.....…..........................................24
Exercício 9-5: Programe um OB de interrupção de hardware..............................................................25
Exercício 9-6: Adicione o "OB_Cyclic-Interrupt" (OB235).....................................................................26
Exercício 9-7: Programe o "OB_Cyclic-Interrupt" (OB235)...................................................................27
Exercício 9-8: Retorno da esteira para peças rejeitadas....…...............................................................28
Atribuição Atribuição de eventos aos OBs.
Com exceção do programa cíclico e do programa de partida (start-up), um evento somente pode ser atribuído à um OB. Em diversas classes de eventos, tais como interrupções de hardware, um e o mesmo OB pode, contudo, ser atribuído à mais de um evento.
Eventos são atribuídos aos OBs quando o hardware é configurado. Você pode alterar uma atribuição durante a execução do programa utilizando instruções ATTACH e DETACH.
Startup OBs (OBs de partida) são processados somente uma vez quando o modo de operação da CPU muda de STOP para RUN. Quando o OB de partida tiver seu processamento encerrado é que iniciará o processamento do OB cíclico.
Cyclic OBs (OBs cíclicos) são processados ciclicamente. Os OBs cíclicos são blocos de códigos de alto nível no programa nos quais pode-se chamar outros blocos.
Time delay interrupt OBs (OBs de interrupção atraso de tempo) interrompem a execução do programa cíclico após um tempo pré-definido ter decorrido. O atraso de tempo é especificado como um parâmetro de entrada da instrução ampliada "SRT_DINT".
Cyclic interrupt OBs (OBs de interrupção cíclica) interrompem ciclicamente o processamento do programa em intervalos de tempo pré-definidos. Você pode especificar estes intervalos neste diálogo ou nas propriedades do OB.
Hardware interrupt OBs (OBs de interrupção de hardware) interrompem o processamento do programa cíclico com base em um evento de hardware. Você define o evento nas propriedades de hardware.
Time error interrupt OBs(OBs de interrupção estouro de tempo) interrompe a execução do programa cíclico quando o valor máximo de tempo de ciclo for excedido. Você define o tempo máximo de ciclo nas propriedades da CPU.
Diagnostic error interrupt OBs (OBs de interrupção de diagnóstico de erro) interrompe a execução do programa cíclico quando o módulo com capacidade de diagnóstico, para o qual a interrupção de diagnóstico foi habilitada, detectou um erro.
Eventos O sistema operacional das CPUs do S7-1200 é baseado em eventos. Existem dois tipos diferentes de eventos:
• Eventos que podem ativar um OB.
• Eventos que não podem ativar um OB.
Um evento que pode ativar um OB provoca as seguintes respostas quando ele ocorrer:
• Se você tiver atribuído um OB para este evento, este OB será chamado. Se não for possível chamar este OB neste momento, o evento será colocado em uma fila conforme sua prioridade.
• Se você não tiver atribuído um OB para este evento, a resposta pré-definida do sistema será executada.
Um evento, o qual não pode ativar um OB, provoca uma resposta pré-definida do sistema conforme a classe de evento associado.
A execução do programa do usuário será por esta razão baseada em eventos e da atribuição de OBs para os eventos, e nos códigos que os OBs contêm ou que foram chamados pelos OBs.
A tabela acima oferece uma visão geral destes eventos que podem ativar um OB completando com a classe de evento associada e OBs. Isto será arranjado de acordo com a prioridade dos OBs. Prioridade 1 corresponde à prioridade de mais baixo nível.
OB priority(prioridade dos OBs) As CPUs S7-1200 suportam da prioridade 1 (menor prioridade) até a prioridade 27 (maior prioridade). A um OB é atribuída a prioridade de seu evento de ativação.
Queue(fila) Se outro evento ocorrer enquanto um OB de interrupção estiver sendo processado, este evento será colocado em uma fila por ordem de prioridade. Os eventos de ativação em uma fila são processados posteriormente na ordem as quais elas ocorreram.
Levels(níveis) Existem três diferentes níveis de processamento de programa na CPU:
• O nível do bloco de organização cíclico (p.ex. OB 1).
• O nível dos blocos de organização os quais são chamados por eventos tais como interrupção de hardware (OBs de interrupção).
• O nível dos blocos de organização de estouro de tempo (OB de interrupção de estouro de tempo).
Os OBs cíclicos são interrompidos pelos OBs de interrupção.
OBs de interrupção somente podem ser interrompidos por OBs de interrupção de estouro de tempo.
CicloUm ciclo de execução de programa realiza os seguintes passos:
• O sistema operacional ativa a monitoração do tempo de ciclo.
• O sistema operacional escreve os valores da imagem de processo de saída para os módulos de saída.
• O sistema operacional lê os estados das entradas dos módulos de entrada e atualiza a imagem de processo de entrada.
• O sistema operacional executa o programa do usuário e realiza as operações definidas no programa.
• No final de um ciclo, o sistema operacional pode realizar outras tarefas que estejam pendentes, por exemplo, transferir blocos, deletar blocos ou chamar outros OBs cíclicos.
• A CPU então retorna para o início do ciclo e reinicia a monitoração do tempo de ciclo ou varredura.
Descrição Você pode determinar as condições limites para o comportamento de partida de sua CPU, p.ex. os valores iniciais para "RUN". Você irá escrever um programa de partida para isto. O programa de partida inclui um ou mais OBs de partida (OB número 100 ou >= 200).
O programa de partida será executado uma vez na transição do modo de operação "STOP" para "RUN". Os valores atuais da imagem de processo de entrada não estão disponíveis no programa de partida. Quando o processamento do OB de partida tiver sido concluído:
• A imagem de processo de entrada será atualizada.
• O controle sobre os I/O estarão habilitados.
• E o programa cíclico será iniciado.
Não existe limite de tempo para execução do programa de partida. Por esta razão, a monitoração de tempo de ciclo não estará ativada. Blocos de organização dirigidos por tempo ou dirigidos por interrupção não podem ser utilizados.
Descrição Através da SRT_DINT você inicia uma interrupção atraso de tempo a qual irá chamar um OB de interrupção de atraso de tempo quando o tempo especificado pelo parâmetro DTIME tiver decorrido. O atraso de tempo inicia quando uma borda de descida é detectada na entrada de habilitação EN.
Se o atraso de tempo for interrompido antes de decorrer seu atraso, o bloco de organização especificado no parâmetro OB_NR não será executado.
ExatidãoO tempo entre a chamada da instrução "SRT_DINT" e o início do OB de interrupção de atraso de tempo é de no máximo um milisegundo a menos do que o tempo de atraso parametrizado provendo que nenhum evento de interrupção atrase a chamada.
Descrição OBs de interrupção cíclica são utilizados para iniciar programas periodicamente de modo independente do processamento do programa cíclico (OB1).
O tempo de ciclo define o intervalo no qual o OB de interrupção cíclica será chamado é um múltiplo inteiro do ciclo básico do clock de 1 ms. O desvio de fase (phase offset) é o tempo pelo qual o tempo de partida tenha sido deslocado fora do ciclo básico do clock. Quando você estiver utilizando diversos OBs de interrupção cíclica, você pode usar este deslocamento para evitar inícios simultâneos se o tempo de ciclo dos OBs de interrupção cíclica tiverem os mesmo múltiplos. Você pode especificar um perído entre 1 ms e 60000 ms como o ciclo de varredura.
Nota O tempo de execução de cada OB de interrupção cíclica deve ser significantemente menor do que seu ciclo de varredura. Se um OB de interrupção cíclica não tiver sido completamente executado antes que ele seja chamado novamente porque o intervalo expirou, o OB de estouro de tempo será chamado. A interrupção cíclica que causou o erro será executada posteriormente ou rejeitada.
ExemploVocê inseriu dois OBs de interrupção cíclica em seu programa:
• Interrupção cíclica OB202.
• Interrupção cíclica OB204.
Para a interrupção cíclica OB202, você ajustou um tempo de ciclo (scan time) de 20 ms e para a interrupção cíclica OB204 você ajustou um tempo de ciclo de 100 ms. Quando o tempo de ciclo de 100 ms decorrer, a interrupção cíclica OB202 alcança seu tempo de início pela quinta vez e o OB204 alcança seu tempo de início pela primeira vez. Para assegurar que os tempos de início dos OBs de interrupção cíclica não sejam simultâneos, insira um desvio de fase para um dos dois OBs de interrupção cíclica.
Phase shift(desvio de fase) Para OBs de interrupção cíclica, você pode iniciar os programas periodicamente. Por esta razão, você deve inserir um tempo de varredura (scan time) e um desvio de fase (phase shift) para cada OB de interrupção cíclica utilizado.
Nota Se você parametrizar diversos OBs de interrupção cíclica, você deve atribuir um tempo de varredura diferente ou um desvio de fase para cada OB de interrupção cíclica para evitar execuções simultâneas ou uma fila. Quando um OB de interrupção cíclica é criado, um tempo de varredura de 100ms e um desvio de fase de 0ms é inserido como valor inicial padrão.
ProcedimentoPara inserir tempos de varredura e desvios de fase para OBs de interrupção cíclica, proceda conforme segue:
• Abra a pasta "Program blocks" na árvore de projeto.
• Clique com o botão direito do mouse no OB de interrupção cíclica existente.
• Selecione o comando "Properties" no contexto do menu.
• O diálogo "<nome do OB de interrupção cíclica>" será aberto.
• Clique no grupo "Cyclic interrupt" na área de navegação.
• O campo de entrada para tempo de varredura e desvio de fase serão mostrados.
• Insira o tempo de varredura e o desvio de fase.
• Clique "OK" para confirmar suas entradas.
DescriçãoVocê pode utilizar OBs de interrupção de hardware para responder à eventos específicos. Neste caso, você somente pode atribuir um OB de interrupção de hardware a um evento que dispara uma interrupção. Diversos eventos podem contudo serem atribuídos a um OB de interrupção de hardware.
Interrupções de hardware podem ser disparadas por contadores de alta velocidade e canais de entrada. Para cada contador de alta velocidade e canal de entrada que devem disparar uma interrupção de hardware, as seguintes propriedades devem ser parametrizadas:
• O evento de hardware que deve gatilhar a interrupção de hardware (p.ex. mudança da direção de contagem do contador de alta velocidade).
• O número de OBs de interrupção de hardware que estão atribuídos para este evento de processo.
Você pode usar até 50 OBs mutuamente independentes de interrupção de hardware em seu programa. Números dos OBs >= 200.
Hardware interruptA interrupção de hardware pode ser disparada por contadores de alta velocidade ou por canais de entrada integrados do PLC.
Channel 0(canal 0) Inicialmente os canais de entrada integrados do PLC devem ser habilitados para interrupção de hardware:
• Habilita a detecção de borda de subida (rising edge).
•Habilita a detecção de borda de descida (falling edge).
Event name(nome do evento) Um nome simbólico então terá de ser declarado para o evento.
Hardware interruptTem que ser especificado qual OB de interrupção de hardware deve ser atribuído para qual evento.
Hardware interruptSe o evento borda de subida ou borda de descida ocorrer na entrada I0.0, o processamento cíclico do OB1 será interrompido e o correspondente OB de interrupção de hardware será chamado.
•Borda de subida (rising edge) (Hardware interrupt_FP [OB200] )
•Borda de descida (falling edge) (Hardware interrupt_FN [OB201] )
OB200/OB201OB200 ou OB201 será executado uma vez, então o processamento do programa cíclico será retomado no ponto em que foi interrompido.
ATTACH(anexar) Com ATTACH você atribui um bloco de organização (OB) à um evento. No parâmetro OB_NR, você insere a designação simbólica ou numérica ao bloco de organização que será atribuído ao evento especificado pelo parâmetro EVENT.
Quando o evento no parâmetro EVENT ocorrer após a execução livre de erros da instrução ATTACH, o bloco de organização do parâmetro OB_NR será chamado e seu programa será executado.
Com o parâmetro ADD, você pode especificar se atribuições prévias do bloco de organização para outros eventos devem ser liberadas ou retidas. Se o valor "0" for aplicado ao parâmetro ADD, as atribuições existentes serão trocadas pela atribuição atual.
DETACH(desanexar) Com DETACH você limpa a atribuição existente de um bloco de organização para um ou mais eventos, durante a execução do programa.
Quando você selecionar um evento individual, a atribuição do OB para este evento será eliminada. Todas as outras atribuições atuais existentes serão mantidas.
Se você não tiver selecionado um evento, todas as atribuições existentes atuais de evento para os blocos de organização serão eliminadas.
No parâmetro OB_NR, você insere a designação simbólica ou numérica do bloco de organização cujas atribuições aos eventos especificados pelo parâmetro EVENT devem ser eliminada.
DescriçãoPara módulos com capacidade de diagnóstico, você pode habilitar a interrupção de diagnóstico desde que o módulo possa detectar mudanças nos estados das I/O. Neste caso, o módulo irá gatilhar uma interrupção sob as seguintes condições:
• Uma falha ativa (evento de ativação).
• Uma falha não mais ativa (evento de desativação).
Se nenhum outro OB de interrupção estiver ativo, o OB de interrupção de diagnóstico será chamado. Se um outro OB de interrupção estiver em execução, a interrupção de diagnóstico será inserida na fila pelo seu grupo de prioridade.
Você somente pode utilizar um OB de interrupção de diagnóstico em seu programa.
HW IDO identificador de hardware identifica módulos ou unidades funcionais dos módulos. Adicional aos endereços de entrada (I) ou saída (Q), um identificador de hardware (HW ID) é automaticamente atribuído o qual é utilizado para identificar o módulo. Unidades funcionais de um módulo, tal como um contador integrado também fornecido um HW ID deste tipo.
O HW ID é um número inteiro e é fornecido pelo sistema com a interrupção de diagnóstico, para habilitar o módulo defeituoso ou unidade funcional a ser localizada.
Você também pode utilizar o HW ID para diversas instruções para especificar o módulo ao qual a instrução deve ser aplicada.
NotaO HW ID não pode ser alterado.
OB82O programa exemplo avalia uma interrupção de diagnóstico. As seguintes informações de diagnóstico são avaliadas:
•IO_state (contém informações de erro)
•laddr(contém o HW ID)
•Channel (contém o número do canal)
Time error(estouro de tempo) O sistema operacional da CPU chama o OB de estouro de tempo sempre que um dos seguintes eventos ocorrerem:
• O programa cíclico exceder o tempo máximo de ciclo (cycle time).
• O OB chamado ainda está em execução (possível para OBs de interrupção atraso de tempo e OBs de interrupção cíclica).
• Estouro na fila de OBs de interrupção.
• Uma interrupção foi perdida devido sobrecarga de interrupções.
Se você não tiver programado um OB de estouro de tempo, a correspondente resposta do sistema será disparada.
Se o tempo máximo de ciclo for excedido duas vezes, isto é um erro crítico e não resulta em uma chamada do OB, a CPU irá obrigatoriamente para STOP. Você pode prevenir que um segundo estouro de tempo ocorra através do reinício da monitoração do tempo de ciclo com a instrução RE_TRIGR.
Você somente pode utilizar um único OB de estouro de tempo em seu programa.
Chamadas de OBBlocos de organização (OBs) formam a interface entre o sistema operacional da CPU e o programa do usuário.
Os blocos de organização são chamados exclusivamente pelo sistema operacional. Diversos eventos de partida (interrupção horário do dia, interrupção cíclica, etc.) podem causar a ativação do bloco de organização associado.
InterrupçãoSe outro OB for chamado pelo sistema operacional, ele interrompe o
de programaprocessamento do programa cíclico, porque o OB 1 possui menor prioridade.
cíclicoQualquer outro OB pode portanto interromper o programa principal e processa seu próprio programa. O processamento do OB 1 então continua do ponto que foi interrompido.
Quando um OB de maior prioridade é chamado interrompe o OB que está em execução, a interrupção irá ocorrer após a instrução que está em execução. O sistema operacional então salva a pilha completa de registro do bloco interrompido. Estas informações de registros são restauradas quando o sistema operacional continuar o processamento do bloco previamente interrompido.
PrioridadesToda execução de programa OB pode ser interrompida no limite de instrução por um evento (OB) com uma prioridade maior. Prioridades são graduadas de 0 à 28, pelo qual 0 tem menor prioridade e 28 tem a maior.
OB 82 ou tem prioridade 26, quando ela ocorre durante a execução do OB 1, ou prioridade 28 durante a partida (startup).
OBs de mesma prioridade não interrompem uma a outra, mas são iniciadas uma após a outra na ordem na qual foram detectadas.
TarefaComo preparação para os exercícios subsequentes, a monitoração do ciclo da CPU deve ser ajustada em 1000 ms, porque o programa do usuário utiliza seções consideravelmente alongadas do tempo de ciclo da CPU.
Procedimento1.Abra a aba "Properties" na configuração do dispositivo da CPU e então selecione "Cycle time“.
2.Insira 1000 ms como o tempo máximo de ciclo no diálogo "Cycle time“.
3.Transfira a configuração modificada do dispositivo para a CPU.
4.Salve seu projeto.
TarefaO bloco "FC_RemainProg" incrementa o tempo de ciclo da CPU por meio de um contador interno de loop e por esta razão simula um programa de usuário extenso. Este bloco agora deve ser inserido em seu programa de usuário.
Procedimento1.Sob "Global libraries“ abra a biblioteca<Drive>:\S7-Course\S7-1200\Micro1.
2.Programe a chamada do FC_RemainProg no OB1 com marcar e arrastar para dentro de um network vazio.
3.Transfira o valor 50.000 para o parâmetro de entrada "Count_Val" do "FC_RemainProg", pelo qual o tempo de ciclo da CPU se extende para aproximadamente 600 ms.
Nota: Para a CPU usada no caso de treinamento, o ciclo de tempo irá incrementar por aproximadamente 120 ms para 10.000 unidades contadas.
4.Transfira todos os blocos para a CPU.
5.Salve seu projeto.
6.Verifique as funções prévias do programa (jog para a esteira, transporte automático das estações 1 e 2 através da barreira de luz).
ResultadoTodas as funções do programa continuam a funcionar como antes, mas com respostas de tempo mais longos. Isto significa, por exemplo, quando a esteira move-se em jog, cuja resposta de tempo é claramente mais longa (devido ao tempo de ciclo mais longo da CPU) através do acionamento do botão para ativação do motor da esteira.
TarefaO tempo de resposta experimentado para o PLC no exercício anterior será evitado por meio do processamento da interrupção. O primeiro passo será adicionar um bloco de organização apropriado.
ProcedimentoCrie um bloco de organização do tipo "Hardware interrupt". Atribua o nome e número do bloco conforme mostrado no slide.
O tempo de resposta experimentado pelo PLC será evitado por meio do processamento de interrupção. O segundo passo será ativar a interrupção de hardware correspondente.
TarefaA resposta de tempo incrementada deve ser evitada somente na operação jog como segue:
•Quando o botão "T_RIGHT" (I0.2) ou "T_LEFT" (I0.3) for acionado, o motor da esteira pode ser ligado com atraso de tempo como antes.
•Quando o botão for solto, isto é, na borda de descida do sinal do botão, o motor da esteira deve ser desligado imediatamente, isto é sem atraso de tempo.
Por esta razão, os botões (I0.2 e I0.3) devem gatilhar uma interrupção de hardware quando o botão é solto, isto é, na borda de descida. A CPU irá então interromper a execução cíclica do programa e imediatamente executar o correspondente OB de interrupção de hardware "OB_HW-Interrupt" (OB240) no qual a desativação da saída do motor está programada.
Procedimento1.Abra a aba "Properties" na configuração do dispositivo da CPU.
2.Para as entradas digitais integradas dos canais 2 e 3, habilitam o disparo das interrupções de hardware na borda de descida (como mostrado para o canal 2 no slide) e atribua o previamente criado "OB_HW-Interrupt” (OB240) para este evento como uma interrupção de hardware em ambos canais.
3.Salve seu projeto.
O tempo de resposta experimentado pelo PLC será evitado por meio do processamento de interrupção. O terceiro passo será programar a resposta requisitada no correspondente bloco de organização de interrupção (neste caso OB240).
TarefaDevido aos ajustes de parâmetros para a interrupção de hardware, o "OB_HW-Interrupt" (OB240) somente será executado quando o botão de jog for solto, isto é, somente na borda de descida da entrada I0.2 ou I0.3 as quais portanto tem um sinal "0" aplicado durante a execução do OB240.
Para que o sinal de entrada do botão de jog seja lido diretamente do módulo de entrada (e não da imagem de processo de entrada PII) e o sinal de saída reset seja escrito diretamente no módulo de saída (e não na imagem de processo de saída PIQ), um ":P" deve ser anexado ao operando para obter acesso direto ao I/O.
Procedimento1.Programe "OB_HW-Interrupt" (OB240) conforme mostrado.
2.Transfira todos os blocos para a CPU.
3.Salve seu projeto.
4.Verifique o modo jog do motor da esteira.
ResultadoQuando o botão jog for pressionado, o motor da esteira será ligado após decorrido um tempo de atraso, mas quando o botão for solto, o motor será desligado imediatamente.
TarefaUm bloco de organização cíclica deve ser inserido o qual será executado a cada exatos 100ms. Este OB será usado mais tarde para ler o valor atual do canal analógico ao qual o potenciômetro está conectado.
ProcedimentoCrie o bloco de organização do tipo "Cyclic interrupt". Atribua o nome e o número do bloco conforme mostrado no slide.
TarefaO valor do peso (weight) ajustado (simulado) pelo potenciômetro será lido e verificado com relação ao peso mínimo permitido (100 kg) e ao peso máximo permitido (400 kg).
Se o peso ficar dentro da faixa permitida, o bit de memória "M_Weight_ok" (M35.0) será "1“, caso contrário será “0”.
Nota:
"M_Weight_ok" (M35.0) será conectado logicamente a outros blocos do programa S7. Também, o programa do painel a ser colocado em operação posteriormente utilizará este bit.
ProcedimentoEdite o bloco conforme mostrado. Leia a ajuda online (help) a respeito das instruçoes NORM_X, SCALE_X e IN_RANGE.
Função préviaPeças são transportadas das estações 1 ou 2 através da barreira de luz. Uma ação de transporte é iniciada tão logo a peça esteja colocada na esteira na estação 1 ou 2 e o correspondente botão seja pressionado. A ação de transporte termina tão logo a peça passe pela barreira de luz.
Aquisição do peso das peças transportadas (a ser ajustado pelo potenciômetro) já havia sido programado no "OB_Cyclic-Interrupt" (OB235). Se o peso da peça estiver fora da faixa que compreende de 100 kg à 400 kg, o bit de memória "M_Weight_OK" (M35.0) será “0”.
TarefaPeças cujos pesos estejam fora da faixa permitida devem ser retornados para a estação 3 (“Bay 3", I8.7). Estas peças não devem ser contadas.
Procedimento:1.Amplie o bloco "FC_ConvMotor" (FC16) com a função de retorno descrita.
2.Amplie o bloco "FB_Statistic" (FB18) prevenindo que as peças rejeitadas sejam contadas (para uma programação compatível IEC, um parâmetro de entrada adicional será necessário aqui!).
3.Salve seu projeto e transfira todos os blocos para a CPU.