You are on page 1of 6

1

Universidade Federal de Minas Gerais
Escola de Engenharia
Departamento de Engenharia Eletrônica
Laboratório de Informática Industrial
10ª AULA - PROGRAMAÇÃO SOB A NORMA IEC 61131-3 (III): LINGUAGEM SFC
Objetivos: Desenvolvimento de aplicações na linguagem SFC (Structured Function Chart) para o CLP
CompactLogix da Roclwell Automation.

Atividades Prévias
1. Leia atenciosamente, em casa, o texto desta prática.
2. Desenvolva previamente, ainda em casa, o programa na linguagem SFC descrito no item
“Atividades de Projeto e Programação” desta prática.
3. Ao chegar ao laboratório, discuta sua solução com seus colegas de grupo e decidam, em conjunto,
qual programa será o adotado nesta prática.

Introdução
Em aplicações de automação industrial, freqüentemente um projeto é quebrado em partes menores de
forma a facilitar seu desenvolvimento e também permitir que diferentes equipes possam trabalhar em
paralelo. Neste sentido, a linguagem SFC (Sequential Function Chart) é muito útil pois permite que um
projeto de software seja desenvolvido na técnica top-down, na qual parte-se de uma idéia genérica, sem
muitos detalhes, que vai sendo sucessivamente “quebrada” em blocos menores com graus de
detalhamento crescentes, até chegar-se ao grau de refinamento desejado que possibilite o
desenvolvimento dos programas.
Desta forma, com a linguagem SFC podemos ter um programa composto de poucos estados mas onde
as ações de cada estado, por sua vez, são expressas na forma de outro diagrama SFC, e assim
sucessivamente até alcançar-se o grau de refinamento desejado.

Criação de novas tarefas no RSLogix 5000
A atividade prática a ser executada nesta aula requer a criação de novas tarefas (tasks) a serem
executadas pelo CLP CompactLogix. Tarefas correspondem a aplicações independentes ou colaborativas
entre si que são executadas concorrentemente pelo sistema operacional multitarefa do CLP
CompactLogix. No modelo 1769-L32E do CompactLogix podem ser configuradas até 6 tarefas, sendo
apenas uma contínua e as demais periódicas ou por eventos. A tarefa contínua (se existente) é sempre
executada em background (ou seja, com menor prioridade que as demais). Tarefas periódicas executam
em intervalos regulares de tempo definidos pelo programador, e podem ter diferentes níveis de
prioridade entre si.
Como já mencionado no guia de aula anterior que introduz a programação na norma IEC 61131, ao
criar-se um projeto com o RSLogix 5000 são automaticamente definidos uma tarefa (MainTask), um
programa (MainProgram) e uma rotina (MainRoutine). A tarefa MainTask é definida inicialmente como
uma tarefa de execução contínua, podendo contudo ser alterada para uma tarefa periódica ou por
eventos se assim o desejarmos. Para adicionar novas tarefas, execute os seguintes passos:
1. Clique com o botão direito do mouse no item Tasks, no organizador de programas, e selecione New
Task (Fig. 1).

Laboratório de Informática Industrial – Profs. Carmela M. P. Braga / Luiz T. S. Mendes / Michelle M. Santos – DELT/EE-UFMG - 2012

e defina um novo programa para a mesma como exemplificado nas Figs. Criada uma nova tarefa. Braga / Luiz T. como exemplificado na Fig. Santos – DELT/EE-UFMG . S. o intervalo de execução. 2. Mendes / Michelle M. no caso de tarefas periódicas.2012 . Na nova janela que será aberta. Carmela M. Figura 2: Definições sobre uma nova tarefa criada. P. os tipos possíveis serão apenas Periodic ou Event) e.2 Figura 1: Criação de uma nova tarefa. o seu tipo (caso já exista uma tarefa continua. 3 e 4 a seguir: Figura 3: Criação de um programa para uma determinada tarefa. defina o nome da nova tarefa. 3. no organizador de programas. uma descrição para a mesma. 2. clique com o botão direito do mouse sobre a mesma. Laboratório de Informática Industrial – Profs.

uma delas deve necessariamente ser definida como a principal. 4.3 Figura 4: Definições sobre um novo programa criado. Esta tarefa corresponde a um programa composto por duas rotinas: o seqfull – rotina principal. saponáceos. a ser desenvolvida na linguagem SFC o encheR – rotina secundária. composta das seguintes tarefas: MainTask – Tarefa contínua que executará o controle automático do reservatório. simul_sensores – Tarefa periódica responsável pela simulação dos sensores de nível baixo e de nível alto do reservatório. nova batelada tem início. S.) fabrica uma batelada de determinado produto adicionando um componente-base a um reservatório. a ser desenvolvida na linguagem ST (texto estruturado). Mendes / Michelle M. Finalmente. clique com o botão direito do mouse sobre o novo programa criado e selecione New Routine para criar uma nova rotina para o mesmo. A seguir são apresentados os requisitos de operação das rotinas correspondentes a estas três tarefas. Atividades de Projeto e Programação Uma indústria de produtos tensoativos (detergentes. Santos – DELT/EE-UFMG . também em SFC. Desenvolva uma aplicação que execute o controle automático deste sistema. P. Quando este se esvazia. Laboratório de Informática Industrial – Profs. a ser desenvolvida na linguagem FBD. Carmela M. Se forem criadas duas ou mais rotinas. Deve conter a rotina simul. Braga / Luiz T. como exemplificado na Fig. Figura 5: Criação de uma rotina para um programa de uma dada tarefa. simul_nivel – Tarefa periódica que simulará o enchimento e esvaziamento do reservatório. Deve conter a rotina nivelR. agitando o mesmo durante 10 segundos e depois escoando completamente o reservatório. que será chamada pela rotina principal. 5.2012 . desinfetantes. Este passo já foi coberto nas aulas anteriores e não será detalhado aqui. etc.

Rotina nivelR A rotina periódica nivelR deve atribuir os valores 0 ou 1 às variáveis globais reserv_cheio e reserv_vazio de acordo com o valor da variável nivel. Retornar ao passo 2. ou seja. 3. Laboratório de Informática Industrial – Profs. 2. Caso a condição 2 seja verdadeira. defina o período de execução da tarefa simul_nivel como 50ms. Inicialmente o sistema permanece no estado desligado. Braga / Luiz T. Caso esteja. Caso a condição 4 seja verdadeira. 4. cuja faixa de valores é 0 a 100%. Verifica se a seqüência foi desabilitada (desligada) pelo operador. 5.4 Rotina seqfull A rotina principal seqfull deverá implementar a seguinte seqüência: 1. Verifica se o reservatório está vazio. P. seu organizador de programas deve apresentar uma aparência semelhante à seguinte: O símbolo de uma seta circular indica uma tarefa contínua. Rotina encheR A rotina secundária encheR deverá implementar a seguinte seqüência: 1. Decorridos os 10s. Ao final do processo de criação destas tarefas e respectivos programas e rotinas. Santos – DELT/EE-UFMG . executar a rotina encheR que irá controlar o enchimento ou esvaziamento do reservatório. fechar as válvulas e desligar o agitador. 5. Caso esteja. 4. incrementando ou decrementando a variável nivel de acordo com o estado das válvulas de entrada e saída. Verifica se o operador deu a partida no sistema. 2. desligar o agitador e abrir a válvula de saída para esvaziar o reservatório. Verificar se o reservatório está vazio através da variável reserv_vazio. parar tudo. Figura 6: Tarefas. Mendes / Michelle M.2012 . O símbolo “1” designa a rotina principal de cada tarefa. Para que a simulação do enchimento ou esvaziamento do silo ocorra em um tempo aceitável. retornar para o passo 1. abrir a válvula de entrada para encher o reservatório. Rotina simul A rotina periódica simul irá simular o enchimento e esvaziamento do reservatório. 6. S. Carmela M. O símbolo de um relógio indica uma tarefa periódica. fechar a válvula de entrada e ligar o agitador por 10s. Quando o estado da variável reserv_cheio for verdadeiro. 3. programas e rotinas definidas para esta prática.

não se esqueça de definir a rotina que agirá como a principal. Em todas as tarefas criadas. Ao criar os tags referentes às variáveis internas e de E/S. Observe. S.1 Local:3:0:Data. Para tal.0 Local:3:0:Data.0 Local:3:0:Data. Santos – DELT/EE-UFMG . Para que a rotina principal seqfull chame. Figura 7: Escopo de declaração de variáveis (tags) Se você errar neste passo.5 A tabela a seguir apresenta as variáveis de entrada e saída a serem utilizadas. Braga / Luiz T. declare-os no escopo do controlador (ou seja. Tabela 1: Variáveis de entrada e saída Nome executa_seq liga_agitador valv_entrada valv_saida reserv_cheio reserv_vazio nivel Descrição Liga/Desliga Sequência Automática Liga agitador Aciona válvula de entrada Aciona válvula de saída Status de reservatório cheio Status de reservatório vazio Nível do reservatório Tipo BOOL BOOL BOOL BOOL BOOL BOOL DINT Modo Input Output Output Output Base Base Base Endereço Local:1:I. no escopo do projeto associado ao controlador) e não no escopo de cada programa ou rotina (figura 7). na próxima ativação deste passo a rotina chamada reiniciará do ponto onde teve sua execução interrompida. a rotina secundária encheR. devemos adicionar a instrução SFC Reset (SFR).2 ---------------------------------------------------------- Módulo MICA Liga/Desliga do Contator C1 Servo-motor Lâmpada Vermelha Lâmpada Verde ---------------------------------------------------------------------------------------------------------- Observações Importantes: 1. Mendes / Michelle M. Este comando irá provocar o desvio da execução da rotina principal para a rotina referenciada. que quando o passo que chama a rotina secundária é desativado.Data. contudo. será obrigado a cancelar os tags e declará-los novamente! 3. use o comando Jump to Subroutine (JSR): JSR(nome_da_rotina). 2.2012 . Isto é necessário mesmo para as tarefas que possuem apenas uma rotina. Se desejarmos que a rotina chamada reinicie a partir de seu passo inicial. de forma que sejam visíveis a todas as rotinas do programa. no passo adequado. Laboratório de Informática Industrial – Profs. passo_inicial). não se esqueça de defini-los como tags globais. especificando a rotina a ser reinicializada e o passo inicial: SFR(nome_da_rotina. Carmela M. P.

e bolsista de monitoria do Laboratório de Automação. ou depois da instrução JSR. 1756-pm006 Rockwell Automation. Santos – DELT/EE-UFMG . com o qualificador P0. Referências Rockwell Automation. a lógica descrita para a aplicação desta prática omite um detalhe de funcionamento importante. Carmela M. caberá a você identificar as interligações necessárias entre os sensores e atuadores do MICA e os cartões de E/S do CLP.6 A instrução SFR pode ser executada antes da instrução JSR. que você poderá identificar facilmente testando-a de forma cuidadosa. Lembre-se porém dos seguintes cuidados: 1. ignorarmos (por descuido ou desconhecimento) algumas situações operacionais importantes durante o projeto. Instruções de montagem no MICA Nesta prática. SFC and ST programming. É comum. podem ser reveladas mediante um teste cuidadoso. Mendes / Michelle M. Confira com atenção a sua montagem antes de rearmar o botão de emergência. aluno do curso de Engenharia de Controle e Automação. 4. 5. Créditos Esta nota de aula foi realizada com a colaboração do aluno Danilo Ribeiro. Observe que as diferentes tarefas colaboram entre si através das variáveis globais.2012 . bem como realizar as respectivas conexões necessárias. Em particular. porém. Com o MICA energizado. P. 1756-pm003 Laboratório de Informática Industrial – Profs. certifique-se que o botão de emergência esteja pressionado durante qualquer operação de montagem. SFC programming. Braga / Luiz T. com o qualificador P1. S. O resultado coletivo das tarefas executadas é que resulta na ação de controle desejada. 2. as quais. Teste seu programa minuciosamente. A figura abaixo exemplifica o emprego destas instruções: Figura 8: Passo de um diagrama SFC com as instruções JSR e SFR. em automação industrial.