linguagem stl
TRANSCRIPT
Treinamento de Programação de Controladores Festo
Objetivo:
Utilização FST 4.10 como ferramenta de desenvolvimento e manutenção de software
• Entender a estrutura de Programação em Statement List
• Estrutura do Statement List
– Um programa de controle é constituído de um certo número de sentenças.
STEP <Mark>
IF Switch1AND I1.1
THEN SET O1.0OTHRW 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 Paralela3. Programa Executivo
• Programa de Passos (Step Program)
– 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.
• Exemplo de programa de STEP simples
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...
• Programa de Lógica Paralela
– 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
• Exemplo de programa de Lógica Paralela
THEN RESET F0.0
IF N I1.0THEN SET O0.7
IF I1.7THEN SET O1.7OTHRW SET F0.0
RESET O1.7......IF F0.0
AND I1.0THEN SET O1.0
RESET P1OTHRW RESET P1
• Programa Executivo
– 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
• Exemplo de um programa Executivo:
SET F0.0
RESET O1.0
LOAD V50TO TW7
SET T7
CMP2
...
• Comentários
– 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
• Instruções do Statement List
STEP
– 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
– 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.0AND N I1.1
...
THEN
– 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 V100TO TP7
OTHRW
– OTHRW introduz a parte executiva se a condição for falsa.
Exemplo
THEN SET O1.0
OTHRW RESET O1.0
• STL conditional part
AND
Exemplo:
IF I1.0AND I1.1
THEN SET O1.0OTHRW SET O1.7
OR
Exemplo :
IF I1.0OR I1.1OR I1.7
THEN SET O1.0OTHRW SET O1.7
EXOR
Exemplo
IF I1.0EXOR I1.1
THEN SET O1.0OTHRW SET O1.7
NOPExemplo
IF NOPTHEN SET F1.0
N (NEGAÇÃO)Exemplo
IF N O1.0THEN JMP TO Setup
• STL comandos executivos
SET
– SET ativa um bit. Pode ser usado para ativar operandos de um bit(timers, flags, inputs, outputs etc.)
RESET
– RESET desativa um bit. Pode ser usado para desativar operandos de um bit(timers, flags, inputs, outputs etc.)
LOADExemplo:
THEN LOAD V500TO TP31
JMP TO
– JMP TO desvia o programa para um step especificado
Exemplo:
STEP MarkIF I1.0THEN SET O1.0
JMP TO Start......
STEP Start...
• Funções especiais - Extended STL
SWAP
– Troca o byte mais significativo com o menos significativo do operando especificado
Exemplo:
THEN LOAD V$55AATO OW0SWAPTO OW1
– $55AA é carregado em OW0, mas $AA55 é carregado em to OW1.
SHIFT
– 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 10IF I1.0 " entrada ativaTHEN 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.1SHIFT O1.2 " SWAP O1.1<-> O1.2SHIFT O1.3 " SWAP O1.2<-> O1.3SHIFT O1.4 " SWAP O1.3<-> O1.4
SHL
– 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 V16SHLTO 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 V16SHRTO R7
– O valor final em R7 é 8.
ROL– 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 .
ROR– 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 .
BID
– A instrução BID converte o valor do acumulador de 16 bits de binário para BCD.
Exemplo:
THEN LOAD IW0BIDTO OW7
DEB
– A instrução DEB converte o valor do acumulador de 16 bits de BCD para binário.
INV
– Complementa o valor do acumulador de 16 bits usando método complemento de um
Exemplo:
THEN LOAD OW1INV AND IW1TO OW1
CPL
– 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 CPLTO R22
• Arithmetic functions
INC
– Soma 1 ao valor do operando de 16 bits.
Exemplo:
IF I1.3
THEN INC R9
DEC
– 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
• Module calls - Chamadas de módulos
CFM e CMP
– 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.2THEN CFM 0
WITH V10
• PLC operands
– 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)
Inputs
– 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
Outputs
– 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
Flags
– 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
Registers
– 256 registers (0 to 255), somente podem ser acessados as words.
Syntax: Rw
Timers
– 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
Counters
– 256 contadores (0 to 255),
C0 to C255 Counter status, bit
CW0 to CW255 Counter word, multibitCP0 to CP255 Counter preset, multibit
Constants
Vnnnn Multibit
Function units
– 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
Programs
- 64 bits utilizados para set reset e testes de ativação dos 64 possíveis programas
P0 to P63 One-bit
Program statuses
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 Inativo0 1 No meaning1 0 Ativo mas suspenso1 1 Ativo e em processamento
Errors
E One-bitEW Multibit
Initial flags
– Quando um programa é executado pela primeira vez este flag é colocado em 1 e posteriormente resetado automaticamante
FI bit, para cada programa
Retentive operands
– FEC´s
FW0 to 255R0 to 127TP0 to 127C0 to 127CP0 to 127Password
– HCXXParte da zero-power RAM é usada para armazenamento de operandos retentivos, por isso, todos os operandos podem ser retentivos.
FWRTVC, CP, CWFUPassword