Prévia do material em texto
Automação Industrial Aula 1.1 - DIAGRAMA DE BLOCOS FUNCIONAIS (FUNCTIONAL BLOCK DIAGRAM-FBD) Conteúdo: Bloco de Dados (DB); Parâmetros de uma Função; Diferenças entre Funções e Bloco de Funções; Construção de uma Função; Instancia de Funções: programação estruturada. Projetos de programas desenvolvidos em FBD O Diagrama de Bloco de Função é adequada a controles discretos e sequenciais, ela prevê soluções que permitem a analise do comportamento do programa a partir do fluxo de sinais entre os elementos do diagrama, semelhante aos circuitos eletrônicos digitais. Os elementos da linguagem são interconectados por linhas em que, por regra, o lado esquerdo é destinado para os sinais de entradas do bloco, enquanto o lado direito é reservado para os sinais de saída do bloco. Cada bloco pode ter um ou mais números de pontos de conexão de entrada e de saída. As saídas dos blocos podem ser conectadas a entrada de outro bloco ou a uma variável, mas jamais poderão ser ligadas juntas Os sinais de entrada podem sensibilizar o bloco de maneiras diferentes. Existem entradas sensíveis a Nível (alto ou baixo) ou a borda (subida ou descida). A atividade que uma entrada vai provocar no bloco depende do seu programa residente. Os programas que seguem a norma IEC 61131-3 permitem edições nas 5 linguagens previstas, porém existem blocos que são editados pelo fabricante do CLP, são as chamadas funções nativas. A norma IEC 61131-3 prevê um grupo de bloco de funções rigorosamente identificados e com suas atividades pré-estabelecidas, de forma que todo programador que use um CLP saiba como utilizar suas funções nativas descritas pela norma. Alguns programas para CLP informam ao usuário se o bloco utilizado é IEC ou não. Basicamente os programas são desenvolvidos em dois tipos de blocos: Organizacionais e Funções. Cada vez que é incluído um bloco de função em um Bloco Organizacional é declarado um identificador para aquele uso, essa atividade local de uma mesma função é chamada de instância. Cada instância deve ter um identificador associado (nome da instância) e uma estrutura de dados chamada Data Block (DB), contendo sua saída e variáveis internas. Os valores das variáveis de saída e as variáveis internas classificadas como estáticas desta estrutura de dados (DB) devem persistir de uma execução do bloco de função para outro, de modo que a invocação do mesmo bloco de função, de mesma instância, com os mesmos argumentos (parâmetros de entrada) não necessariamente forneçam o mesmo valor de saída. Somente os parâmetros de entrada e saída devem ser acessíveis do lado de fora de uma instância de um bloco de função. Qualquer bloco de função pode ser usado na composição de outro bloco de função ou programa. O escopo de uma instância de um bloco de função deve ser local à unidade de organização de programa em que ele é instanciado. Bloco Organizacional (OB) É a interface entre o sistema operacional da CPU e o programa do usuário. O OB1 representa e contem e organiza o programa cíclico (pela chamada dos outros blocos). Os Blocos Organizacionais não podem ser chamados pelos outros blocos. Tipos OB Startup OB Cíclico (não-preempitivo) OB Periódico OB Evento OB Startup Um programa startup é executado antes da execução do programa cíclico após o retorno da alimentação ou uma mudança do modo de operação (atrvés da mudança da chave seletora da CPU ou pela PG). OB Cíclico (não-preempitivo) O programa a ser executado continuamente é armazenado a partir do Bloco Organizacional 1 (OB1). Após o programa do usuário ter sido executado completamente no OB1, um novo ciclo começa com a atualização da imagem de processo e o processamento da primeira instrução no OB1. O tempo de varredura do ciclo e o tempo de resposta do sistema é um resultado destas operações. O tempo de resposta ou ciclo de Scan é o tempo total que a CPU leva para uma saída ser atualizada dependendo de um sinal de entrada e o tempo de varredura é o tempo que leva a CPU para executar todo o programa do usuário. OB Periódico Na execução de programas periódicos, você pode interromper a execução do programa cíclico em intervalos fixos. Com interrupções cíclicas, um bloco de organização OB30 ao OB37 é executado após um valor pré-ajustado de tempo ter ocorrido. OB Evento A interrupção de hardware pode ser usada para rapidamente responder a um evento do processo. Após a ocorrência do evento, o ciclo é imediatamente interrompido e um programa da interrupção é executado. Funções (FC) Uma função contém uma parte funcional do programa. É possível programar funções de modo que sejam parametrizáveis. Com isso as funções são ideais para serem reutilizadas no programa, e para realizarem tarefas complexas como cálculos. A norma IEC1131-3 definiu funções padrão como: aritméticas (adição, subtração, multiplicação e divisão), seletoras, trigonométricas, condicionadoras de sinais, comparadoras e de tempo. Uma FC não possui nenhum espaço de memória atribuido. Os dados locais de uma função se perdem após o processamento da função. Em uma função poderão ser, por sua vez, chamados outros FB e FC. Exemplo Será criada uma função chamada “Acionamento_Bomba”, onde três chaves em paralelo (IN1, IN2 e IN3) acionam a saída (S). A figura 1.6 mostra o programa desenvolvido bem como a criação das variáveis. Note que as variáveis foram declaradas como parâmetros de entrada e saída, isto permite que sejam acessadas para passagem de parâmetros. A função na forma de bloco. Função “Acionamento_Bomba” como subrotina do bloco OB1 Bloco de Função (FB) Basicamente o Bloco de função é uma unidade de organização de programa que oferece as mesmas possibilidades que uma função. Adicionalmente, o FB necessita de um espaço de memória (bloco de dados) atribuido para cada chamada. A chamada de um bloco de função é denominada como instância. A cada instância de um bloco de função é atribuido um espaço de memória, que irá conter os dados com os quais o bloco de função irá trabalhar. Esta memória é disponibilizada pelos blocos de dados, que são automaticamente criados pelo software. Também é possível disponibilizar a memória para diversas instâncias em um bloco de dados na forma de múltipla instância. Quando um FB é chamado, um bloco de dados (DB) é atribuido automaticamente como DB de instância. Os dados neste DB de instância podem ser acessados através das variáveis do FB. Com isso as funções são ideais para serem reutilizadas no programa, e para realizarem tarefas complexas. Um FB pode ser chamado varias vezes e diferentes espaços de memória deverão ser atribuidos. Podem-se criar várias instancias nomeadas a partir de um bloco de função. Cada instância deve ter um identificador associado (nome da instância) e uma estrutura de dados contendo sua saída e variáveis internas. Todos os valores das variáveis de saída e as variáveis internas estáticas devem persistir de uma execução do bloco de função para o próximo, de modo que a invocação do mesmo bloco de função com os mesmos argumentos (parâmetros de entrada) não necessariamente forneçam o mesmo valor de saída. Somente os parâmetros de entrada e saída devem ser acessíveis do lado de fora de uma instância de um bloco de função, isto é, as variáveis internas do bloco de função devem ser ocultas do usuário do bloco de função. O escopo de uma instância de um bloco de função deve ser local à unidade de organização de programa (OB) em que ele é instanciado, a não ser que seja declarado global. O nome de instância de um bloco de função pode ser usado como a entrada para uma função ou bloco de função, se declarado como uma variável de entrada ou como uma variável de entrada/saída de um bloco de função. Parâmetros dos blocos e Variáveis Locais Na declaração de um Bloco de Função são definidas as variáveis e estas são subdivididas em dois grupos: Os parâmetros do bloco, que permitem a interface do bloco com o programa. Dados locais,usados para o armazenamento de resultados intermediarios. Estas variáveis são usadas apenas quando se têm pontos de transferência de valores, podendo ser utilizada como entrada ou resultado de uma operação. Blocos de Dados(DB) São áreas de dados do programa do usuário nas quais os dados relativos ao mesmo são gerenciados de maneira estruturada. Um DB de instância é usado para salvar variáveis estáticas criadas em um FB. Estas variáveis “locais“ somente podem ser usadas no FB. Quando o bloco deixa de ser executado, elas são salvas ou retidas pelo DB. Existem dois tipos de blocos de dados, os DB globais, onde todos os OB, FB e FC podem ler os dados armazenados ou gravar novos dados e os DB de instância, que são atribuidos a um determinado FB. Os blocos de dados de instância podem ser atribuídos da seguinte forma: Chamada como instância individual: Exemplo: Os diferentes dados dos motores individuais, por exemplo, rotação, tempo até atingir a rotação nominal, tempo total de operação, são armazenados em diferentes blocos de dados de instância, DB10 e DB11. Chamada como múltipla instância: Um bloco de dados de instância para diversas instâncias de um ou mais blocos de função. Com isto é obtida uma concentração dos dados de instância em um bloco de dados de instância, isto é, é possível aproveitar melhor a quantidade de DBs disponíveis. Isto sempre deve ocorrer quando o bloco que realiza a chamada deve permanecer novamente aplicável como bloco padrão. Exemplo: A figura a seguir mostra a chamada de um contador do tipo CTUD (contadores incremental e decremental) que é chamado duas vezes. Os diferentes dados para ambos os contadores são armazenados como diferentes múltiplas instâncias no bloco de dados de instância DB1 do bloco de função FB1 que realiza a chamada.