Você está na página 1de 30

| 


      
Objetivo:
Utilização FST 4.10 como ferramenta de desenvolvimento e
manutenção de software
‡ Entender a estrutura de Programação em Statement List
‡ ¢   
± Um programa de controle é constituído de um certo número de sentenças.
STEP <Mark>

IF Switch1
AND I1.1
THEN SET O1.0
OTHRW SET Horn

± Cada linha representa uma sentença para o controlador. Uma sentença é composta por:
1. Instruções STL (IF, AND, THEN, SET, OTHRW)
2. Operandos do controlador (inputs, outputs, registradores, contadores, temporizadores ou
flags.)

± Os programas podem ser escritos como:


1. Programa de Passos (Step Program)
2. Programa de Lógica Paralela
3. Programa Executivo
‡
  

 )

± Cada programa pode ter até 255 steps, que podem receber ou não um rótulo simbólico(mark)

± Um programa de passos pode ter pulos para outras partes do programa (JMP TO step mark)

± Um step pode conter uma ou mais sentenças

± Um sentença completa contem IF condição ,THEN cláusula e possivelmente OTHRW cláusula

± O primeiro step pode ser uma sentença incompleta, iniciando-se pelo THEN. Neste caso é
somente uma parte executiva onde a cláusula THEN será sempre executada sem que seja
necessário uma condição de entrada.

± O programa é executado passo a passo ou step by step

± O controle somente passa para o próximo step depois que uma das cláusulas THEN ou
OTHRW da última sentença do step corrente tiver sido executada. Enquanto esta condição
não ocorrer, as instruções do step corrente são executadas ciclicamente.
‡ ¢     |¢


STEP Mark1
IF I1.0
THEN SET F1.5
OTHRW RESET F1.5

STEP Mark2
THEN RESET F0.0

IF F1.5
THEN SET O0.7
SET F0.0
OTHRW SET O0.0
JMP TO Mark1

STEP Mark3
IF F0.0
AND I0.0
THEN SET O0.4

STEP Mark4
...
‡
   
 

± Um programa de lógica paralela é composto somente por sentenças, ou seja, não há


marcadores de passos (STEP). Um programa de lógica paralela é identico a um step de um
programa de passos

± A primeira sentença pode ser incompleta. Todas as seguintes devem ser completas.

± Um programa de lógica paralela é um processo ciclico até que seja resetado, (assim com um
programa em Ladder)

± Se for necessário rodar o programa somente uma vez, na última sentença este deverá ser
resetado (veja exemplo a seguir).

± O marcador de step STEP não poderá ser utilizado. Caso seja utilizado, ou será sinalizado
erro, ou o programa deixará de ser ciclico, se a última cláusula THEN ou OTHRW for
executada o programa será desligado.

± Não é possível instrução JMP


‡ ¢      
 

THEN RESET F0.0

IF N I1.0
THEN SET O0.7

IF I1.7
THEN SET O1.7
OTHRWSET F0.0
RESET O1.7
...
...
IF F0.0
AND I1.0
THEN SET O1.0
RESET P1
OTHRWRESET P1
‡
 ¢ 

± Um programa executivo é estruturado da mesma maneira que um programa de lógica paralela.

± Não há instrução com cláusula THEN.

± Todas as sentenças são executadas sem condição de entrada.

± Não é possível instrução JMP.

± Se for incluído um IF em uma programa executivo, erros serão informados

‡ ¢    ¢ 


SET F0.0
RESET O1.0
LOAD V50
TO TW7
SET T7
CMP2
...
‡  

± Há duas formas de adicionar comentários em um programa STL:

1. Pequenos comentários com até 36 caracteres podem ser inseridos em linhas de programação,
se iniciados pelo simbolo aspas ( ³ )
Exemplo:
IF N I1.7 ´Sensor não acionado

2. Comentários com mais de 36 caracteres podem ser inseridos no inicio da linha se introduzidos
através do símbolo aspas duplo (³ ³ )
³´ Este é um comentário que poder ocupar até uma linha inteira
‡    

|¢

± Sentença muito importante para determinar a estrutura de um programa ou, se pulos(JMP TO)
são utilizados, determina a seqüência de processamento
± STEP pode ser seguido de um´rótulo simbólico (label). Este rótulo somente é necessário se for
utilizada a instrução JMP TO <rótulo do step de desvio>
Exemplo:
STEP Setup
...
...
THEN JMP TO Setup
± Durante a compilação do programa, os steps são renumerados internamente, a partir de 1 até
o número de steps do programa

± IF sempre introduz uma condição. Todos os operandos podem ser testados ou fazerem parte
de uma associação lógica em uma sentença. O resultado representa a condição para o
processamento futuro.
Exemplo:
IF I1.0
AND N I1.1
...

|¢
± THEN introduz a parte executiva se a condição for verdadeira
± A sentença pode conter comando para modificar saídas, flags, temporizadores, chamada a
outros programas e módulos, etc
Exemplo:
THEN LOAD V100
TO TP7
R|

± OTHRW introduz a parte executiva se a condição for falsa.


Exemplo
THEN SET O1.0
OTHRW RESET O1.0
‡ |  


Exemplo:
IF I1.0
AND I1.1
THEN SET O1.0
OTHRW SET O1.7

R
Exemplo :
IF I1.0
OR I1.1
OR I1.7
THEN SET O1.0
OTHRWSET O1.7
¢R
Exemplo
IF I1.0
EXOR I1.1
THEN SET O1.0
OTHRW SET O1.7

R

Exemplo
IF NOP
THEN SET F1.0

(NEGAÇÃO)
Exemplo
IF N O1.0
THEN JMP TO Setup
‡ |  

¢|
± SET ativa um bit. Pode ser usado para ativar operandos de um bit(timers, flags, inputs, outputs
etc.)

¢¢|
± RESET desativa um bit. Pode ser usado para desativar operandos de um bit(timers, flags,
inputs, outputs etc.)

R 
Exemplo:
THEN LOAD V500
TO TP31

|R
± JMP TO desvia o programa para um step especificado
Exemplo:
STEP Mark
IF I1.0
THEN SET O1.0
JMP TO Start
...
...
STEP Start
...
‡  ! ¢   |



± Troca o byte mais significativo com o menos significativo do operando especificado


Exemplo:
THEN LOAD V$55AA
TO OW0
SWAP
TO OW1
± $55AA é carregado em OW0, mas $AA55 é carregado em to OW1.
|
± Esta instrução executa um troca entre o acumulador de bit (SBA) e o bit do operando
± Esta instrução pode ser usada para construir Shift Register com tamanho variável maior ou
manor que 16 bits, com performance semelhante as instruções SHL e SHR
Exemplo:
STEP 10
IF I1.0 " entrada ativa
THEN LOAD I1.1
TO F0.0 " um flag é utilizado para registrar
³ o valor do bit a ser transferido
SHIFT O1.1 " SWAP F0.0 <-> O1.1
SHIFT O1.2 " SWAP O1.1<-> O1.2
SHIFT O1.3 " SWAP O1.2<-> O1.3
SHIFT O1.4 " SWAP O1.3<-> O1.4

± SHL transfere os bits do operando uma posição para a esquerda e o bit mais a direita é
carregado com zero. Seu efeito é uma multiplicação por 2.
Exemplo:
THEN LOAD V16
SHL
TO R7
± O valor final em R7 é 32.

± SHR transfere os bits do operando uma posição para a direita e o bit mais a esquerda é
carregado com zero. Seu efeito é uma divisão por 2.
Exemplo:
THEN LOAD V16
SHR
TO R7
± O valor final em R7 é 8.
R
± Oefeito desta instrução é o mesmo que da instrução SHL exceto pelo fato de que o bit mais
significativo é transferido através do bit de acumulador para o bit menos sgnificativo .

R
± Oefeito desta instrução é o mesmo que da instrução SHR exceto pelo fato de que o bit menos
significativo é transferido através do bit de acumulador para o bit mais sgnificativo .

"
± A instrução BID converte o valor do acumulador de 16 bits de binário para BCD.
Exemplo:
THEN LOAD IW0
BID
TO OW7

¢"
± A instrução DEB converte o valor do acumulador de 16 bits de BCD para binário.

± Complementa o valor do acumulador de 16 bits usando método complemento de um
Exemplo:
THEN LOAD OW1
INV
AND IW1
TO OW1


± Complementa o valor do acumulador de 16 bits usando método complemento de dois. Seu
efeito é o mesmo que multiplicar o valor por -1.
Exemplo:
IF ( R32
< V0 )
THEN LOAD R32
CPL
TO R22
‡ #$

± Soma 1 ao valor do operando de 16 bits.
Exemplo:
IF I1.3
THEN INC R9

¢
± Subtrai 1 do valor do operando de 16 bits.
Exemplo:
IF I2.2
AND N I3.6
THEN DEC R9
± Em complemento as sentenças apresentadas, segue abaixos as operações aritméticas
disponíveis:
%&%'%!%(%)%*%*+%+%,+%,%*,

± Estas funções permitem operações aritméticas e comparações

Exemplo:
IF ( FW0
= V1234
)
AND
( R1
<> V0
)
THEN LOAD ( R5
+ V10 )
TO R4
‡  ! #   
 

± Instruções utilizadas para solicitar a execução de uma rotina de programa..


± Modulos e Funções podem ser escritos em STL ou C
± Módulos e Funções podem utilizar Function Units (FU) para passar informações de ou para
outros programas
± Ambos são utilizados para executar uma rotina externa ao programa.
± Se necessário fornecer parâmetros, então utiliza-se CMP ou CFM com WITH
± A diferença entre uma Função e um módulo é que função não pode conter steps e módulo é
um programa que pode conter steps.
Exemplo
IF I1.2
THEN CFM 0
WITH V10
‡
  
± ABREVIAÇÕES
b - Bit
w - Word (16 bits)

± Faixa de valores para operandos multibis ou word

0 to 65535 (Unsigned decimal)


-32768 to +32767 (Signed decimal)
$0000 to $FFFF (Hexadecimal)


± 256 input words (0 to 255) de 16 bits (0 to 15), podem ser acessados como bit ou como word
Input (bit):
Syntax: Iw.b

Input word:
Syntax: IWw
R
± 256 outputs words (0 to 255) de 16 bits (0 to 15), podem ser acessados como bit ou como word
Output (bit):
Syntax: Ow.b

Input word:
Syntax: OWw

 
± 10,000 flag words (0 to 9999) de 16 bits (0 to 15), podem ser acessados como bit ou como
word .
Flag (bit):
Syntax: Fw.b

Flag word:
Syntax: FWw
  
± 256 registers (0 to 255), somente podem ser acessados as words.
Syntax: Rw

| 
± 256 timers (0 to 255), podem ser programados como pulse (T), switch-on delay (TON) or
switch-off delay (TOFF) timers em LDR; em STL somente são programados como puilse.

Timer status (bit):


Syntax: Tnn, TONnn, TOFFnn

Timer value: TWnn

Timer preset: TPnn


 
± 256 contadores (0 to 255),
C0 to C255 Counter status, bit
CW0 to CW255 Counter word, multibit
CP0 to CP255 Counter preset, multibit


Vnnnn Multibit


± 256 function units, 7 delas (32 to 38) são usadas para passar parâmetros para módulos e
funções, as demias são destinadas para uso geral
FU0 to FU255 Multibit

 
- 64 bits utilizados para set reset e testes de ativação dos 64 possíveis programas
P0 to P63 One-bit

 

PS0 to PS63 One-bit

± A associação do Program + Program Statues fornece informações sobre o estado dos


programas
P PS Status
0 0 Inativo
0 1 No meaning
1 0 Ativo mas suspenso
1 1 Ativo e em processamento
¢  
E One-bit
EW Multibit

$ 
± Quando um programa é executado pela primeira vez este flag é colocado em 1 e
posteriormente resetado automaticamante
FI bit, para cada programa

  
± FEC´s
FW0 to 255
R0 to 127
TP0 to 127
C0 to 127
CP0 to 127
Password
± HCXX
Parte da zero-power RAM é usada para armazenamento de operandos
retentivos, por isso, todos os operandos podem ser retentivos.

FW
R
TV
C, CP, CW
FU
Password

Você também pode gostar