Escolar Documentos
Profissional Documentos
Cultura Documentos
Funes;
Blocos funcionais;
Programas;
Passos, aes e transies em SFC.
Definies
Atribuio
A atribuio feita atravs do operador := que usado para alterar o valor armazenado
em uma varivel ou o retorno de uma funo.
Expresses
Uma expresso uma construo que retorna um valor aps a sua avaliao. So compostas
de operadores e operandos. Um operando pode ser uma constante, uma varivel, uma
chamada de funo ou outra expresso.
Avaliao de Expresses
A avaliao de uma expresso ocorre por meio do processamento dos operadores de acordo
com certas regras de ligao. O operador com a ligao mais forte processado primeiro,
em seguida, o operador com a prxima ligao mais forte, e assim por diante, at que todos
os operadores sejam processados. Operadores com ligao de mesma fora so
processados da esquerda para a direita.
A seguir voc encontra uma tabela de operadores ST na ordem de sua fora de ligao:
IF D<0.0 THEN
C:=A;
C:=B;
ELSE
C:=D;
END_IF;
CASE CASE INT1 OF
1: BOOL1 := TRUE;
2: BOOL2 := TRUE;
ELSE
BOOL1 := FALSE;
BOOL2 := FALSE;
END_CASE;
FOR J:=101;
IF ARR[I] = 70 THEN
J:=I;
EXIT;
END_IF;
END_FOR;
WHILE J:=1;
J:=J+2;
END_WHILE;
REPEAT J:=-1;
REPEAT
J:=J+2;
END_REPEAT;
EXIT EXIT
Instrues IF
Com a instruo IF voc pode verificar uma condio e, dependendo desta condio,
executar instrues.
Sintaxe:
Exemplo:
IF temp<17
THEN heating_on := TRUE;
ELSE heating_on := FALSE;
END_IF;
Aqui o aquecimento ativado quando a temperatura dos coletores for abaixo de 17 graus.
Caso contrrio, ele permanece desativado.
Instruo CASE
Com as instrues CASE possvel combinar vrias instrues condicionadas com a mesma
varivel de condio em uma construo.
CASE <Var1> OF
<Valor1>: <Instruo 1>
<Valor2>: <Instruo 2>
<Valor3, Valor4, Valor5>: <Instruo 3>
<Valor6.. Valor10>: <Instruo 4>
...
<Value n>: <Instruo n>
ELSE <ELSE Instruo >
END_CASE;
Se a mesma instruo est para ser executada em diversos valores das variveis, ento,
esses valores so escritos um aps o outro, separados por vrgulas e, em seguida, a condio
da execuo comum.
Se a mesma instruo est para ser executada para um intervalo de valor de uma varivel,
escreve-se o valor inicial e o valor do final, separados por dois pontos, um aps o outro. Na
sequencia vem a condio comum.
Exemplo:
CASE INT1 OF
1,5: BOOL1 := TRUE;
BOOL3 := FALSE;
2: BOOL2 := FALSE;
BOOL3 := TRUE;
10..20: BOOL1 := TRUE;
BOOL3:= TRUE;
ELSE
BOOL1 := NOT BOOL1;
BOOL2 := BOOL1 OR BOOL2;
END_CASE;
Lao FOR
Sintaxe:
INT_Var :INT;
FOR <INT_Var> := <INIT_VALUE> TO <END_VALUE> {BY <Step size>} DO
<Instructions>
END_FOR;
A parte entre chaves {} opcional.
As <Instrues> so executadas desde que o contador <INT_Var> no seja maior do que o
<END_VALUE>. Isso verificado antes de executar as <Instrues> para que as <instrues>
nunca sejam executadas se <INIT_VALUE> for maior do que <END_VALUE>.
Exemplo:
FOR Counter:=1 TO 5 BY 1 DO
Var1:=Var1*2;
END_FOR;
Erg:=Var1;
Vamos presumir que a configurao padro para Var1 o valor 1. Ento, ele ter o valor 32
aps o lao FOR.
Lao WHILE
O lao WHILE pode ser usado como o lao FOR com a diferena de que a condio de
interrupo pode ser qualquer expresso booleana. Isso significa que voc indica uma
condio que, quando atendida, o lao ser executado.
Sintaxe:
Nota: o programador deve certificar-se de que nenhum lao sem fim gerado. Ele faz isso, alterando a
condio do lao, por exemplo, via contador bidirecional.
Exemplo:
WHILE counter<>0 DO
Var1 := Var1*2;
Counter := Counter-1;
END_WHILE;
Os laos WHILE e REPEAT so, em um determinado sentido, mais eficientes do que o lao
FOR, uma vez que no precisam saber o nmero de ciclos antes de executar o lao. Em
certos casos possvel trabalhar com esses dois tipos de laos. Se, no entanto, o nmero de
ciclos de lao claro, ento um lao FOR prefervel, pois ele no permite lao sem fim.
Lao REPEAT
Sintaxe:
REPEAT
<Instrues>
UNTIL <Expresso booleana>
END_REPEAT;
Nota: programador deve certificar-se de que nenhum lao sem fim causado. Ele faz isso, alterando a condio
na parte da instruo do lao, por exemplo, acionando um contador para cima ou para baixo.
Exemplo:
REPEAT
Var1 := Var1*2;
Counter := Counter-1;
UNTIL
Counter=0
END_REPEAT;
Instruo EXIT
Se a instruo EXIT aparece em um lao FOR, WHILE ou REPEAT, ento, o lao mais interno
encerrado, independentemente da condio de interrupo.
TON
Declarao:
TEMPO1 : TON;
MOTOR1 : BOOL;
LIGA1 : BOOL;
Ex. programa:
TOF
Declarao:
TEMPO2 : TOF;
MOTOR2 : BOOL;
LIGA2 : BOOL;ST:
Ex. programa:
TP
Declarao:
TEMPO3 : TP;
MOTOR3 : BOOL;
LIGA3 : BOOL;
Ex. programa:
Declarao:
CTU1 : CTU ;
SINAL1 : BOOL;
CONTA1 : BOOL;
ZERA1 : BOOL;
VALOR : WORD;
CONTAGEM : WORD;
Ex. programa:
CTUD
Declarao:
CTUD2 : CTUD ;
SINAL2_U : BOOL;
SINAL2_D ; BOOL;
CONTA2 : BOOL;
ZERA2 : BOOL;
TOTAL2 : BOOL;
VALOR2 : WORD;
CONTAGEM2 : WORD;
Ex. programa:
Objetivo
Regular o trfego num cruzamento, atravs da implementao de um sistema de controle
dos semforos existentes para os carros e pedestres.
Funcionamento
Num determinado cruzamento ser instalado um sistema que consiste em dois semforos
para os carros e dois semforos para os pedestres, agrupados aos pares. Cada grupo de
semforos complementar aos anlogos na via adjacente.
Um grupo de semforos constitudo por um semforo para os carros e outro para os
pedestres, de acordo com a Figura 1.
O cruzamento em que se pretende controlar o trfego representado pela Figura 2.
Figura 1
Figura 2