O Diagrama de Funções Sequenciais (do inglês: Sequential Function Chart [SFC]) é uma linguagem de representação gráfica utilizada para programação de PLCs. A estrutura do SFC tem suas origens no padrão francês Grafcet [IEC60848 2002]. A programação usando esta linguagem é feita através de conexões orientadas interligando etapas (asso- ciadas com ações) às transições (associadas com lógicas condicionais). O programa da
I1
I2
função
AND
O1
Figura 3.3: Diagrama de Bloco de Funções.
figura 3.4 mostra o diagrama de funções sequenciais de um sistema com duas etapas (es- tados) possíveis (e0 e e1). Ao ser ativada, a etapa e0 testará a condição da transição t1. Caso esta condição seja satisfeita, o sistema passará para a etapa e1. Neste momento, o sistema executa suas ações correspondentes a esta etapa, que no exemplo dado, é ativar a saída digital O1. Posteriormente, a transição t2 será testada e se for satisfeita o sistema voltará ao seu estado inicial (e0) caracterizando a repetição de um ciclo.
e0
e1
t1 I1andI2
setO1
t2 true
Figura 3.4: Diagrama de Funções Sequenciais.
A seguir apresenta-se com mais detalhes os principais elementos que constituem o SFC, de acordo com o livro de Automação e Controle Discreto de Paulo Silveira e Win- derson Santos [da Silveira & dos Santos 1998].
Etapa
Uma etapa significa um estado no qual o comportamento do circuito de comando não se altera frente a suas entradas e saídas. Uma etapa pode assumir o valor de ativa ou inativa. O conjunto de etapas ativas em um determinado instante mostra a situação em
que o sistema se encontra. A etapa que se torna ativa logo após o início da execução do sistema é denominada de etapa inicial.
Transição
A transição é o elemento que significa a possibilidade de evolução do sistema de uma situação para outra. A transição pode encontrar-se válida ou não, atribui-se o valor de válida quando todas as etapas imediatamente precedentes e conectadas a ela estiverem ativas. Portanto, diz-se que a transição ocorreu somente quando esta encontra-se válida.
Conexão
A conexão é responsável pela interligação de uma etapa a uma transição e desta a outra etapa sucessivamente. A conexão é indicada com setas para a orientação do sentido de execução.
Ação
As ações estão associadas a cada etapa e representam os comandos que devem ser executados quando uma determinada etapa estiver ativa. Normalmente, as ações estão ligadas às variáveis lógicas de saída. Em cada associação “etapa/ação” deve existir um qualificador que define como a ação associada à etapa será executada.
Condição
As condições estão associadas a cada transição e representam a função lógica com- binacional que deve ser satisfeita para ocasionar a ocorrência de uma transição válida. Normalmente, as condições estão ligadas às variáveis lógicas de entrada.
Divergência Seletiva
A divergência seletiva é necessária quando ocorrem situações em que uma determi- nada sequência deva ser executada em detrimento de outras que serão desviadas. Esse elemento é análogo ao IF/ELSE das linguagens de programação.
Convergência Seletiva
A convergência seletiva é utilizada para o retorno de uma divergência seletiva para uma estrutura linear. Esse elemento é análogo ao END_IF das linguagens de programa- ção.
Divergência Simultânea
A divergência simultânea é utilizada quando duas ou mais sequências no sistema deve ser executadas ao mesmo tempo. Após uma divergência simultânea, fica claro a ideia de que todas as sequências seguintes terão suas execuções simultaneamente iniciadas, estabelecendo-se assim um caso de paralelismo.
Convergência Simultânea
A convergência simultânea é utilizada para o retorno de uma divergência simultânea para uma estrutura linear.
Regras de Evolução
1. A situação inicial corresponde a uma única etapa que deve estar ativa no início do funcionamento do sistema, de acordo com o formato TC6 XML (2005);
2. Uma situação pode evoluir para outra situação dependendo da ocorrência de uma transição quando esta é válida e a condição associada a mesma estiver verdadeira. Neste caso, acontece a desativação de todas as etapas imediatamente precedentes conectadas a essa transição, bem como a ativação de todas as etapas imediatamente seguintes conectadas a essa mesma transição. Como consequência, a transição torna-se não válida pois as etapas imediatamente precedentes não se encontram ativas;
3. A alternância etapa-transição e transição-etapa deve ser sempre respeitada, inde- pendente da estrutura da sequência seguinte. Desta forma, duas etapas nunca pode- rão estar ligadas diretamente, obrigatoriamente elas devem ser separadas por uma transição. O mesmo ocorre para duas transições que não devem estar ligadas dire- tamente, mas deverão ser separadas por uma etapa;
4. A divergência seletiva deve ser, obrigatoriamente, antecedida por uma etapa e, obri- gatoriamente, sucedida por sequências iniciadas com transições, sendo ainda im- portante alertar que as transições devem sempre conter suas condições mutuamente exclusivas entre si. Essa regra corresponde aos comandos de decisão em linguagem de programação (if . . . then . . . else e/ou switch . . . case);
5. A convergência seletiva deve ser, obrigatoriamente, sucedida por uma etapa, e pre- cedida por sequências finalizadas por transições. Esta regra sempre está associada com a divergência seletiva;
Ela deve ser antecedida por transição e sucedida por sequências iniciadas por eta- pas. Esta regra corresponde ao fork em linguagem de programação;
7. Um paralelismo só é encerrado quando todas as suas sequências estiverem concluí- das, ou seja, quando a etapa final de cada uma das sequências estiver ativa. Então, uma convergência simultânea deve ser obrigatoriamente sucedida por transição e precedida por sequências finalizadas com etapas. Esta regra corresponde ao join em linguagem de programação e está associada com a divergência simultânea.