Linguagem STL

30
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

Transcript of Linguagem STL

Page 1: Linguagem STL

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

Page 2: Linguagem STL

• 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

Page 3: Linguagem STL

• 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.

Page 4: Linguagem STL

• 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...

Page 5: Linguagem STL

• 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

Page 6: Linguagem STL

• 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

Page 7: Linguagem STL

• 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

...

Page 8: Linguagem STL

• 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

Page 9: Linguagem STL

• 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

Page 10: Linguagem STL

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

Page 11: Linguagem STL

OTHRW

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

Exemplo

THEN SET O1.0

OTHRW RESET O1.0

Page 12: Linguagem STL

• 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

Page 13: Linguagem STL

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

Page 14: Linguagem STL

• 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

Page 15: Linguagem STL

JMP TO

– JMP TO desvia o programa para um step especificado

Exemplo:

STEP MarkIF I1.0THEN SET O1.0

JMP TO Start......

STEP Start...

Page 16: Linguagem STL

• 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.

Page 17: Linguagem STL

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

Page 18: Linguagem STL

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.

Page 19: Linguagem STL

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.

Page 20: Linguagem STL

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

Page 21: Linguagem STL

• 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

Page 22: Linguagem STL

– 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

Page 23: Linguagem STL

• 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

Page 24: Linguagem STL

• 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

Page 25: Linguagem STL

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

Page 26: Linguagem STL

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

Page 27: Linguagem STL

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

Page 28: Linguagem STL

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

Page 29: Linguagem STL

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

Page 30: Linguagem STL

– HCXXParte da zero-power RAM é usada para armazenamento de operandos retentivos, por isso, todos os operandos podem ser retentivos.

FWRTVC, CP, CWFUPassword