• Nenhum resultado encontrado

CursoAP2

N/A
N/A
Protected

Academic year: 2021

Share "CursoAP2"

Copied!
207
0
0

Texto

(1)

Curso de Autómatos Programáveis

(2)

2

Índice

Deslocamento de Dados

Introdução aos Sistemas Numéricos

Instruções Aritméticas

Cartas Analógicas (Entradas e Saídas)

Instruções Especiais (PID, PIDAT)

Endereçamento Indirecto

Programação por Blocos de Função

SFC

(3)
(4)

4

SFT(10) controla-se mediante três condições de execução I, P e R.

SFT

Quando há

uma transição ascendente na entrada de deslocamento (P),

todos os bits do registo se deslocam uma posição, para a esquerda,

perdendo o bit da esquerda.

(5)

-

O mesmo canal pode designar-se para St

e E para criar um registo de

deslocamento de 16 bits (ou seja, um canal).

-

Quando a condição de execução R se coloca a ON, todos os bits no registo

de deslocamento ficarão a OFF e o registo não operará

até

que R fique OFF

de novo.

(6)
(7)
(8)

8

(9)

Tipos de Dados

O modo natural de representar os dados num Sistema Decimal (Números de 0 a

9)

Existem outros sistemas de Numeração:

Binário

BCD (Binário Codificado Decimal)

Hexadecimal

Vírgula flutuante

(10)

10

Tipos de dados

SISTEMAS DE NUMERAÇÃO

EM GERAL, QUANDO UMA QUANTIDADE (Nª

INTEIRO) SE REPRESENTA MEDIANTE UM SISTEMA

DE NUMERAÇÃO DE BASE B, SIGNIFICA QUE :

N

B

N-1

N

N-1

1

1

0

0

N = X B + X B + ... + X B + X B

(11)

Tipos de dados

Bin

Bin

á

á

rio (Base 2):

rio (Base 2):

1 0 1 1 1 0 1 0

Equivalente em Decimal:

Equivalente em Decimal:

1 0 1 1 1 0 1 0 27 26 25 24 23 22 21 20

x

x

(12)

12

Tipos de dados

Converter para decimal o seguinte número Binário:

1 1 0 0 0 0 1 0 27 26 25 24 23 22 21 20

x

x

2

7

+

+

2

6

+

+

0

+

+

0

+

+

0

+

+

0

+

+

2

1

+

+

0

=

=

EXEMPLO

EXEMPLO

194

(13)

Tipos de dados

EXEMPLO

EXEMPLO

Converter para Binário o seguinte número Decimal:

194

194

97

97

0

0

2

2

48

48

1

1

2

2

24

24

0

0

2

2

12

12

0

0

2

2

6

6

0

0

2

2

3

3

0

0

2

2

2

2

1 1 0 0 0 0 1 0

1

1

1

1

0

0

0

0

0

0

0

0

1

1

0

0

(14)

14

Tipos de Dados

CÓDIGO MEDIANTE O QUAL CADA NÚMERO DO SISTEMA

DECIMAL (0..15) SE REPRESENTA EM BINÁRIO (0,1)

UTILIZANDO A PARTIR DO 9, AS LETRAS (A…F)

A CONVERSÃO DIRECTA É

A SEGUINTE…

CÓDIGO HEXADECIMAL

(15)

Tipos de Dados

CÓDIGO HEXADECIMAL

DECIMAL BINÁRIO HEXADECIMAL

0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B

(16)

16

Tipos de Dados

CONVERTER UM NÚMERO BINÁRIO PARA

HEXADECIMAL

BINÁRIO: 0010010011101111

DIVIDIR EM GRUPOS DE QUATRO DADOS BINÁRIOS

0010

0100

1110

1111

(17)

Tipos de Dados

CÓDIGO BCD

CÓDIGO MEDIANTE O QUAL CADA NÚMERO DO SISTEMA DECIMAL (0..9) SE REPRESENTA EM BINÁRIO (0,1).

A CONVERSÃO DIRECTA ÉA SEGUINTE :

DECIMAL BINÁRIO 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101

(18)

18

Tipos de Dados

NÚMEROS EM VÍRGULA FLUTUANTE

Parte Decimal

Expoente

...

31 30 23 22 21 ………... 2 1 0

(-1)

sinal

·2

expoente

-127

·(1+

Parte Decimal

·2

-23

)

Sinal

Sinal (s)

⇒ 1: negativo , 0: positivo (bit 31)

Parte decimal (M)

⇒ A parte decimal inclui 23 bits (bit 0.. 22).

(19)

Tipos de Dados

Números em VÍRGULA FLUTUANTE

Expressam números reais em 32 bits conforme o standard IEEE754:

(-1)

sinal

·2

expoente-127

·(1+

Parte Decimal

·2

-23

)

1#10000000#11000000000000000000000

Sinal: (-1)

1

= -1

Expoente: 2

128-127

=2

1

=2

(20)

20

Tipos de Dados

Números em VÍRGULA FLUTUANTE

Vantagens:

Permite expressar números reais

sem especificar o nº de posições

inteiras e decimais

Maior versatilidade na representação

de números reais

(21)

Tipos de Dados

A = 41 = 0100 0001

5 = 35 = 0011 0101

CÓDIGO ASCII

CÓDIGO INTERNACIONAL CUJAS SIGLAS SIGNIFICAM

AMERICAN STANDARD CODE INFORMATION

INTERCHANGE.

HOJE É

UTILIZADO EM COMUNICAÇÕES E TROCA DE

DADOS.

NESTE CÓDIGO UTILIZAM-SE 8 BIT’s

PARA A

REPRESENTAÇÃO DE CARACTERES.

(22)

22

Tipos de Dados

O código ASCII é

um

standard americano

para a troca de

informação.

Existem distintas

variedades de código

ASCII para distintas

linguagens, assim como

o ASCII Extended

em

que o 8º

bit é

utilizado.

(23)
(24)
(25)

Funções de operação em binário ou BCD

(26)

26

Funções de Operação em Binário ou BCD

Funções de Operação em Binário ou BCD

Símbolos para introduzir Constantes numéricas:

& - formato decimal

(27)

Funções de operação em binário - Soma

(28)

28

Funções de operação em binário - Subtracção

(29)

Funções de operação em binário - Multiplicação

(30)

30

Funções de operação em binário - Divisão

(31)

Funções de incrementar/decrementar

(32)

32

Funções de conversão

(33)

Funções de operação “Vírgula Flutuante”

Funções de operação “Vírgula Flutuante”

As famílias CS1 e CJ1 têm um potente leque de instruções

matemáticas em Vírgula Flutuante.

As instruções dividem-se em dois grandes grupos:

Simples (operandos com 32 bits)

Dupla precisão (operandos com 64 bits)

Estão disponíveis instruções de conversão, que facilitam a

programação.

Conversão:

Vírgula Flutuante para binário (16 bits): FIX(450)

(34)

34

Funções de operação “Vírgula Flutuante”

Funções de operação “Vírgula Flutuante”

As instruções disponíveis são:

Adição: +F(454)

Subtracção: -F(455)

Multiplicação: *F(456)

Divisão: /F(457)

Graus para Radianos: RAD(458)

Radianos para Graus: DEG(459)

Seno: SIN(460)

Co-seno: COS(461)

Tangente: TAN(462)

Arco Seno: ASIN(463)

Arco Co-seno: ACOS(464)

Arco Tangente: ATAN(465)

Raiz Quadrada: SQRT(466)Exponente: EXP(467)Logaritmo: LOG(468)Potência de Expoente: PWR(840)

Funções de Comparação

( =F , <>F , <F , <=F , >F , >=F)

Existem as mesmas instruções

para dupla precisão (operados

a 64 bits).

(35)
(36)
(37)
(38)

38

Introdução às Cartas Analógicas

Sinais analógicos e digitais

Tipos de cartas analógicas para CJ

CJ1W-AD041

CJ1W-DA021

Características

Configuração

(39)

Introdução às cartas analógicas

Sinais analógicos e digitais

Diferença entre ambos

Sinal analógico Æ valores infinitos

Sinal digital Æ determinados valores

definidos por uma resolução

de conversão.

Resolução:

Intervalos em que se divide um sinal analógico para

(40)

40

Introdução às cartas analógicas

Relação de conversão

Relação que existe entre os sinais analógicos e os sinais digitais

Analógico Æ Digital: Valor hexadecimal de um canal associado ao valor

analógico de entrada.

Digital Æ Analógico: Valor analógico de saída associado ao valor hexadecimal

de um canal.

(41)

Introdução às cartas analógicas

Tipos de cartas analógicas para o CJ

– CJ1W-AD041 / 81 Æ 4 / 8 Entradas analógicas (Utilizaremos Carta 4 Entradas)

– CJ1W-DA021 / 41 / 81 Æ 2 / 4 / 8 Saídas analógicas (Utilizaremos Carta 2 Saídas)

– CJ1W-MAD42 Æ 4 Entradas e 2 saídas analógicas

Todas com as seguintes gamas configuráveis:

(42)

42

CJ1W-AD041 -> Características

·

4 Entradas analógicas configuráveis da seguinte forma:

1 a 5 V

0 a 10 V

-10 a 10 V

0 a 5 V

4 a 20 mA

·

Resolução de 4000 / 8000 pontos (12 bits / 13 bits)

·

Tempo de conversão é

de: 1ms / 0,5ms máx. por canal

Funções dos sinais de entrada:

Valor médio (sobre n amostras) Retenção do valor máximo

(43)

CJ1W-DA021 -> Características

·

2 Saídas analógicas configuráveis da seguinte forma:

1 a 5 V

0 a 10 V

-10 a 10 V

0 a 5 V

4 a 20 mA

·

Resolução de 4000 / 8000 pontos (12 bits / 13 bits)

·

Tempo de conversão é

de: 1ms / 0,5ms máx. por canal

Funções dos sinais de entrada:

Valor médio (sobre n amostras) Retenção do valor máximo

(44)

44

Switch Æ entradas em tensão ou corrente de unidade Æ Parte Frontal da carta

Não deve coincidir com o de outra carta especial (por exemplo outra carta de entradas ou saídas analógica)

Efectuar as ligações que se vão utilizarAlimentar o PLC

Utilizar a tabela E/S do CX-Programmer para configurar a carta

…….

(45)
(46)

46

(47)

Cartas Analógicas -> Configuração

1º Entrar em Comunicação com o Autómato 2º Colocar Autómato em Modo Programação

(48)

48

(49)
(50)

50

Instruções de Escalonamento

SCL –

Função Escala, Inteiros sem sinal BIN a BCD

(51)

SCL –

Função de Escala BIN a BCD

Executa uma função de escala que converte de forma linear um valor

de 4 dígitos hexadecimal (BIN) a um valor BCD de 4 dígitos. Converte

os dados para uma escala com um máximo de 9999, e mínimo de 0.

S -> Canal fonte

P1 -> Primeiro canal de parâmetros R -> Canal destino

(52)

52

SCL –

Função de Escala BIN a BCD

Primeiro canal de parâmetros P1

A partir deste canal introduz-se 4 pontos que vão definir a função

linear.

P1 Æ Ponto Ad em BCD (Dado 1 convertido).

P1+1 Æ Ponto As em Hex (Dado 1 antes da conversão).

P1+2 Æ Ponto Bd em BCD (Dado 2 convertido).

(53)

SCL2 –

Escala BIN a BCD

Realiza uma função de escala e converte linearmente um valor

hexadecimal com sinal de 4 dígitos a um valor BCD de 4 dígitos.

Converte os dados inteiros com sinal para uma escala de valor

máximo 9999 e mínimo -9999.

S -> Canal fonte

P1 -> Primeiro canal de parâmetros R -> Canal do resultado

(54)

54

SCL2 –

Escala BIN a BCD

Primeiro canal de parâmetros P1

Neste canal introduzimos o ponto de intercepção com o eixo X e o declive da

recta (incrementos de x e y).

P1 Æ Intercepção com o eixo X em Hex com sinal.

P1+1 Æ Intervalo de X em Hex com sinal

(55)

Instruções especiais

PID –

Controlo PID

(56)

56

PIDAT –

Controlo PID com Auto-tuning

Efectua um controlo PID de uma determinada variável de entrada, obtendo-se a saída correspondente

(57)

PIDAT –

Controlo PID com Auto-tuning

Canais de controlo

Nestes 9 canais são estabelecidos os parâmetros PID, tempos de amostragem e

número de bits de entrada e saída.

(58)

58

Objectivo

Pretende-se controlar a frequência da Bomba mediante um variador de velocidade. O Sensor Ultra-sónico fornece o nível do depósito (saída 0 a 10V).

Quando o nível de água no depósito for superior a 200 litros, a bomba recebe ordem de marcha. A frequência mínima da Bomba é de 10Hz e a máxima é de 50Hz.

A frequência da bomba vai ser proporcional ao nível de água no depósito. A proporcionalidade é a seguinte: - 200 litros = 10Hz - 1000 litros = 50Hz Sensor ultra-sónico Bomba Variador de Frequência Depósito

(59)

Implementação Passo-a-Passo

Configurar a entrada analógica

1

¾ Sabemos que o sinal de entrada é em tensão e com os limites de 0 a 10V.

1- Colocar o Switch correspondente à entrada

analógica 1 na posição OFF (entrada em tensão). 2 - Efectuar as ligações físicas

SENSOR

+

(60)

-60 Implementação Passo-a-Passo

Configurar a entrada analógica

1

3 – Parametrizar o número de Carta Especial (ex: 00)

4 – Ligar o PLC e colocar em modo PROGRAM. Criar a tabela de Entradas/Saídas.

5 – Parametrizar o módulo (Zona D correspondente ou utilizar a Tabela de E/S do CX-Programmer)

Carta Especial nº 00: m = D20000 + (a x 100) onde a = 00

então m = D20000 + (00 x 100) m = 20000

(61)

Implementação Passo-a-Passo

Configurar a entrada analógica

1 Entradas Utilizadas: - Entrada 1, então: D(m) = 1 D20000 = 1 Limites do sinal: - 0 a 10V, então: D(m+1) = 01

(62)

62 Implementação Passo-a-Passo

Configurar a entrada analógica

1

6 – Desligar e voltar a ligar o PLC, para que as parametrizações sejam activadas. 7 – Colocar o PLC em modo MONITOR e verificar o funcionamento

da Entrada Analógica 1. - Canal CIO 2001 n = CIO2000 + (a x 10) onde a = 00 então n = CIO2000 + (00 x 10) n = 2000

(63)

Implementação Passo-a-Passo

Configurar a saída analógica

2

1 - Efectuar as ligações físicas

¾ Sabemos que o sinal de saída é em tensão e com os limites de 0 a 10V.

VARIADOR

+

(64)

-64 Implementação Passo-a-Passo

Configurar a saída analógica

2

2 – Parametrizar o número de Carta Especial (ex: 01)

3 – Ligar o PLC e colocar em modo PROGRAM. Criar a tabela de Entradas/Saídas.

4 – Parametrizar o módulo (Zona D correspondente ou utilizar a Tabela de E/S do CX-Programmer) Carta Especial nº 01: m = D20000 + (a x 100) onde a = 01 então m = D20000 + (01 x 100) m = 20100

(65)

Implementação Passo-a-Passo

Configurar a saída analógica

2 Saídas Utilizadas: - Saída 1, então: D(m) = 1 D20100 = 1 Limites do sinal: - 0 a 10V, então: D(m+1) = 01 D20101 = 01

(66)

66 Implementação Passo-a-Passo

Configurar a saída analógica

2

5 – Desligar e voltar a ligar o PLC, para que as parametrizações sejam activadas. 6 – Colocar o PLC em modo MONITOR e verificar o funcionamento

da Saída Analógica 1. - Canal CIO 2011 n = CIO2000 + (a x 10) onde a = 01 então n = CIO2000 + (01 x 10) n = 2010

(67)

Implementação Passo-a-Passo

Configurar a saída analógica

2

NOTA: Para que a saída fique activa, é necessário activar o bit correspondente de conversão habilita. CIO 2010.00

Ex: Colocar o valor 0FA0 no canal CIO 2011 e verificar se a saída tem 10V.

(68)

68 Implementação Passo-a-Passo

Programação Entrada Analógica

3

Vamos criar uma conversão do valor analógico (Hex para BCD) de forma a que represente o valor do nível em litros.

O Sensor Ultra-sónico fornece uma saída em tensão de 0 a 10V. Em Hexadecimal vai corresponder: 0V – 0(Hex) 10V – 0FA0(Hex)

(69)

Implementação Passo-a-Passo

Programação Entrada Analógica

3

O sensor foi configurado para ter a seguinte correspondência: 0V - 0 Litros

10V - 1000 Litros

então, podemos dizer que: 0 Litros – 0(Hex)

1000 Litros – 0FA0(Hex)

Necessitamos de efectuar uma

BCD 1000

(70)

70 Implementação Passo-a-Passo

Programação Entrada Analógica

3

Existe uma função que faz essa conversão proporcional: SCL

BCD HEX B D A C SCL(194) IN (Hex) OUT (BCD) Parâmetros P = A P+1 = B P+2 = C P+3 = D

(71)

Implementação Passo-a-Passo

Programação Entrada Analógica

3 No nosso exemplo: SCL(194) 2001 D100 D500 D500 = 0000 D501 = 0000 D502 = 1000 D503 = 0FA0 BCD 1000

Efectuar o Ladder correspondente e verificar o valor do D100.

Deve ser:

(72)

72 Implementação Passo-a-Passo

Programação Saída Analógica

4

Sabemos que o variador de Velocidade vai receber um valor em tensão de 0 a 10V. Este sinal é proveniente do PLC e vai fornecer a frequência de referência do variador.

0V = 0Hz 10V = 50Hz

O nosso objectivo é criar o controlo proporcional seguinte: 200 Litros = 10Hz

1000 Litros = 50Hz

O valor em litros temos disponível no D100. Agora necessitamos de criar uma conversão proporcional de BCD (200 a 1000) para HEX ( ? A 0Fa0).

(73)

Implementação Passo-a-Passo

Programação Saída Analógica

4

Se 10V (0FA0 Hex) = 50Hz quanto é 10Hz?

0FA0 50

X 10 0FA0 (hex) = 4000 (Dec) X = (4000 x 10) / 50 X = 800 (Dec) = 320 (hex)

Necessitamos de efectuar uma correspondência proporcional do valor em BCD (200 a 1000)

HEX 0FA0

(74)

74 Implementação Passo-a-Passo

Programação Saída Analógica

4

Existe uma função que faz essa conversão proporcional: SCL3

SCL3(487) IN (BCD) OUT (HEX) Parâmetros P = Offset (Hex) P+1 = Delta X (BCD) P+2 = Delta Y (Hex) P+3 = Max. (Hex) P+4 = Min. (Hex) HEX BCD 200 1000 0320 0FA0 X Y

(75)

Implementação Passo-a-Passo

Programação Saída Analógica

4 No nosso exemplo: SCL3(487) D100 2011 D510 D510 = 0000 D511 = 0800 D512 = 0C80 D513 = 0FA0 D514 = 0320 HEX BCD 0320 0FA0 Y

(76)

76 Implementação Passo-a-Passo

Programação Saída Analógica

4 D510 = 0000 D511 = 0800 D512 = 0C80 D513 = 0FA0 D514 = 0320 HEX BCD 200 1000 0320 0FA0 X Y Delta X = 1000 - 200 Delta Y = 0FA0 - 0320 Máximo = 50Hz (10V) Mínimo = 10Hz (2V) 0FA0 10V 0320 X 0FA0 (hex) = 4000 (dec)

(77)

Implementação Passo-a-Passo

Programação Saída Analógica

4

Efectuar o Ladder correspondente e verificar o funcionamento:

NOTA: Para que a saída fique activa, é necessário activar o bit correspondente de conversão habilita. CIO 2010.00

Verificar que quando o valor do nível é inferior a 200 Litros a saída tem um valor de 2 Volt e vai aumentando proporcionalmente até atingir os 10 Volt aos 1000 Litros.

(78)

78 Implementação Passo-a-Passo

Controlo da Bomba

5

O controlo da frequência de referência já está implementado. Falta agora criar a condição de colocação em marcha da bomba (RUN do variador de frequência) quando o nível for superior a 200 Litros.

Para isso basta efectuar a seguinte lógica, tendo em conta que a saída 60.00 esta ligada à entrada de RUN do variador:

(79)
(80)
(81)

Endereçamento BCD (*) ou Binário (@)

Endereçamento BCD (*) ou Binário (@)

O endereçamento indirecto, pode ser efectuado em BCD ou em

binário

O símbolo * significa que o endereçamento é em BCD

O símbolo @ significa que o endereçamento é em binário

Quando por necessário endereçar canais com endereço superior

a 9999, é necessário recorrer ao endereçamento indirecto em

binário.

D0 = 10 Se

(82)

83

Endereçamento BCD (*) ou Binário (@)

Endereçamento BCD (*) ou Binário (@)

D0 = 10 Se D16 = 1234 então

(83)

Endereçamento BCD (*) ou Binário (@)

Endereçamento BCD (*) ou Binário (@)

Pretende-se efectuar um endereçamento indirecto para a área de

memória D32700.

@

Indica que o valor corresponde a um endereço em binário

(84)
(85)
(86)
(87)

Programação em Blocos de Funções (FB)

Vantagens do ST (Texto Estruturado) ao Ladder

Editor de Blocos de Funções

Criar um Bloco de Função

Reutilização

Monitorização e Edição Online

(88)

89

Porquê Blocos de Função?

Um programa criado com FB’s, esteticamente é melhor, e requer menos tempo de

desenvolvimento.

Código de programa Reutilizado

™ Programar unicamente uma vez uma função/processo que se voltem a utilizar

™ Reutilizar o FB várias vezes

Melhor vista / apresentação do programa no PLC

™ O programa é mais fácil de ser interpretado

™ Redução da extensão do código do programa

™ Redução de possíveis erros no código do programa

É possível a programação com blocos de funções caso a versão do CX-programmer seja a partir de V5.0, e as CPU’s da série CS/CJ a partir da versão 3.0. Também se pode programar FB nas séries CP1H/L

(89)
(90)

91

Texto Estruturado vs Ladder

Texto Estruturado

O texto estruturado é uma linguagem de alto nível para fins gerais, para expressar diferentes tipos de comportamento que estão

envolvidos em diferentes tipos de dados.

É utilizado para cálculos matemáticos complicados.

Ladder

(91)

Blocos de Funções ≠

Diagramas de Blocos de Funções

FB (Function Block):

Programa com funcionalidade própria em Texto Estruturado ou Ladder

FBD (Function BlockDiagram): Linguagem Gráfica para Ladder

EN

ENO

Ladder

ou

Texto

Estruturado

(92)

93

Definição de um Bloco Função

vs

Instância de um Bloco de Função

Definição de um Bloco de Funções

Instância da definição de um Bloco de Função

(93)

Editor da Definição de Blocos de Funções

Editor de

(94)

95

Criar um Bloco de Função

1

ou

(95)

Criar um Bloco de Função –

Inserir variáveis 1/2

Seleccionar o cabeçalho de FB

Inserir variáveis de FB:

Inserir -> FB_Variable

Botão direito do rato

2

(96)

97

Criar um Bloco de Função –

Inserir variáveis 2/2

Introduzir o nome

Seleccionar tipo de dados

Seleccionar tipo:

Interno

Entrada

Saída

Externo

Entrada/Saída (apenas CPU’s v4.0)

4

5

(97)

Criar um Bloco de Função –

Variáveis como array

Seleccionar uso Interno / Avançado

Uso de uma variável array

7.1

(98)

99

(99)
(100)

101

Inserir Parametros

(101)

Reutilização Bloco de Função

Guardar FB para um ficheiro

(102)

103

Online

É possível editar contactos, bobinas ou instruções.

É possível editar os símbolos ou direcções conectadas aos terminais

de entrada e saída de uma chamada de FB.

É possível apagar a chamada de FB durante a edição online.

É possível adicionar uma nova chamada de um FB se a instância

desse FB já existe.

Não é possível apagar uma instância de um FB se existem chamadas a

essa instância.

Não é possível adicionar uma nova instância de FB durante a edição

online.

(103)

Seleccionar o PLC

Seleccionar o nome e a direcção

Utilizar [i] para o índice da

Monitorização On-line –

Janela de Monitorização

Monitorização

Fluxo de alimentação

(104)

105

Administrador de Memória –

Atribuição de Memória FB

(105)
(106)

107

107

Precauções na estrutura do programa

Não inserir instruções à esquerda da instância

Incorrecto Correcto

Incorrecto Correcto

Sóuma instância por rede

(107)

Blocos de Funções (Especificações)

Número de definições de blocos de funções

Unidades de CPU do CS1

Unidades de CPU do CS1

-

-

H/CJ1

H/CJ1

-

-

H:

H

CPU44H/45H/64H/65H/66H/67H/64H-R/65H-R/66H-R/67H-R CPU42H/43H/63H 1,024 128

Unidades de CPU do CJ1M

Unidades de CPU do CJ1M

CJ1M-CPU11/12/13/21/22/23 128

Unidades de CPU do CP1H

Unidades de CPU do CP1H

CP1H-XA/X/Y 128

Unidades de CPU do CP1L

Unidades de CPU do CP1L

CP1L-M/L 128

(108)

109

109

Blocos de Funções (Especificações)

Número de instâncias

Unidades de CPU do CS1

Unidades de CPU do CS1

-

-

H/CJ1

H/CJ1

-

-

H:

H

CPU44H/45H/64H/65H/66H/67H/64H-R/65H-R/66H-R/67H-R CPU42H/43H/63H 2,048 256

Unidades de CPU do CJ1M

Unidades de CPU do CJ1M

CJ1M-CPU11/12/13/21/22/23 256

Unidades de CPU do CP1H

Unidades de CPU do CP1H

CP1H-XA/X/Y 256

Unidades de CPU do CP1L

Unidades de CPU do CP1L

CP1L-M/L 256

Controladores NSJ

Controladores NSJ

Todos os modelos 2,048

(109)

Blocos de Funções (Especificações)

Nível de suporte

CX

CX

-

-

Programmer

Programmer

Ver 5.0

Ver 5.0

Não suportada.

CX

CX

-

-

Programmer

Programmer

Ver. 6.0 ou superior

Ver. 6.0 ou superior

Suporta até 8 níveis.

Número de parâmetros usados em FB

Variáveis de entrada/saída

16

Variáveis de entrada

64 Não incluída EN

(110)

111

111

Programação Estruturada

Criar um Bloco de Funções em 7 passos:

1. Considerar se uma FB é necessário e útil

2. Definir as Entradas

3. Definir as Saídas

4. Definir as Variáveis Internas

5. Decidir se utilizar Ladder ou Texto Estruturado

6. Programar o Bloco de Funções (FB)

(111)
(112)

Blocos de Funções em Texto

Estruturado (ST)

(113)

O que é, e para que serve o Structured

Text

(ST)?

Linguagem de alto Nível (similar a

PASCAL)

Linguagem de alto N

Linguagem de alto N

í

í

vel (similar a

vel (similar a

PASCAL)

PASCAL)

Utilizado em controlo industrial

Utilizado em controlo industrial

Utilizado em controlo industrial

Definido pela norma IEC 61131-3

Definido pela norma IEC 61131

(114)

115

Elementos de um programa em ST

Parte declarativa Parte declarativa Parte declarativa Parte de execução Parte de execu

(115)

Expressões

São regras para calcular um valor

São regras para calcular um valor

São regras para calcular um valor

Os tipos podem ser...

booleanas, de tipo real, de tipo

inteiro, etc..

Os tipos podem ser...

Os tipos podem ser...

booleanas, de tipo real, de tipo

booleanas, de tipo real, de tipo

inteiro, etc..

inteiro, etc..

Os operadores podem ser...

Os operadores podem ser...

Os operadores podem ser...

Exemplos

Exemplos

2.0 * 3.1459 * raio

2.0 * 3.1459 * raio

ABS(

ABS( temptemp ) / pressão) / pressão

Valvula1 AND NOT Valvula2

(116)

117

Prioridade dos operadores

Opera

Operaççãoão SSíímbolombolo PrioridadePrioridade Parêntesis (expressão) array[índice] 1

Avaliação da Função identificador 2

Exponencial ** 3 Complemento NOT 4 Multiplicação * 5 Divisão / 5 Soma + 6 Subtracção - 6 Comparações <, >, <=, >= 7 Igualdade = 8 Diferença <> 8

AND Booleano & AND 9

XOR Booleano XOR 10

OR Booleano OR 11

Considerar a ordem

Considerar a ordem

de prioridade dos

de prioridade dos

operadores

operadores

Em caso de d

Em caso de d

ú

ú

vidas,

vidas,

colocar parêntesis

(117)

A instrução de atribuição

Define o valor da expressão da direita, para a variável da esquerda

Define o valor da expressão da direita, para a vari

Define o valor da expressão da direita, para a vari

á

á

vel da esquerda

vel da esquerda

Ex. C

Ex. Cáálculo lculo compcomp.. comp comp := 2 * := 2 * pipi * r* r R=5, PI=3,14159 R=5, PI=3,14159 comp comp := 2 * := 2 * pipi * r* r Valor actual da Valor actual da vari

variáável...vel...

O operador de atribuição é

:=

O operador de atribui

O operador de atribui

ç

ç

ão

ão

é

é

:=

:=

Importante. Não confundir o operador de atribuição com o de comparação

Importante

Importante

. Não confundir o operador de atribui

. Não confundir o operador de atribui

ç

ç

ão com o de compara

ão com o de compara

ç

ç

ão

ão

(118)

119

Delimitadores

Qualquer frase deve acabar sempre

Qualquer frase deve acabar sempre

com um delimitador (

com um delimitador (

;

;

)

)

Não usar um delimitador dentro de uma

Não usar um delimitador dentro de uma

expressão

expressão

(* --- Asignación ---*) a := a AND NOT b; (*--- Seleccción Simple ---*) IF a = TRUE THEN a := a AND b; END_IF; (*--- Selección Simple ---*) IF a = TRUE ; THEN a := a AND b; END_IF;

(119)

Comentários

Os coment

Os coment

á

á

rios colocam

rios colocam

-

-

se

se

entre parêntesis e asteriscos

entre parêntesis e asteriscos

(

(

*

*

y

y

*

*

)

)

Pode

Pode

-

-

se utilizar qualquer

se utilizar qualquer

caractere

dentro dos

(* --- Atribuição ---*) a := a AND NOT b; (*--- Seleccção Simples ---*) IF a = TRUE THEN a := a AND b; END_IF;

(120)

121

Espaços, Tabulações e Separadores

(* --- Atribuição ---*) a := a AND NOT b; (*--- Selecção Simples ---*) IF a = TRUE THEN a := a AND b; END_IF;

Pode-se usar qualquer número de

caracteres dentro do código ST.

• Excepções:

Palavras reservadas, nomes de

variáveis, caracteres especiais,

constantes.

Usá-los sempre entre palavras

reservadas e variáveis.

(121)

Maiúsculas e Minúsculas

Uso de mai

Uso de mai

ú

ú

sculas e min

sculas e min

ú

ú

sculas

sculas

é

é

indiferente em qualquer frase

indiferente em qualquer frase

ou nome de vari

ou nome de vari

á

á

vel

vel

(*--- Selecção Simples ---*) if a = true then a := a and b; endif; (*--- Selecção Simples ---*) IF A = TRUE THEN A := A AND B;

(122)

123

Caracteres proibidos para os nomes das variáveis

Caracteres que não se podem

Caracteres que não se podem

usar aos nomes dados

usar aos nomes dados

à

à

s

s

vari

vari

á

á

veis:

veis:

!

!

# $ % &

# $ % &

( )

( )

-

-

= ^

= ^

\

\

| @

| @

[ ] { } ; : + * , < > . / ?

[ ] { } ; : + * , < > . / ?

¿

¿

(*--- Selecção Simples ---*)

if chic@= true then

a := a and b;

endif;

(*--- Selecção Simples ---*)

if chico_a = true then

a := a and b;

(123)

Introdução de Constantes

Os valores num

Os valores numééricos, podemricos, podem--se expressar em:se expressar em:

-- Decimal Decimal (sem prefixo)(sem prefixo)

-- Hexadecimal Hexadecimal ( 16# )( 16# )

-- OctalOctal ( 8# )( 8# )

-- BinBinááriorio ( 2# )( 2# )

Em constantes inteiras ou reais, podem-se usar ( _ ) literalmente para formatar, isto melhora a leitura do código.

(*---Selecção Simples ---*)

ifchico_a = true then

a := 10; b := 16#A; c := 8#12; d := 2#1010;

(124)

125

Constantes de Texto

O número de caracteres numa variável de tipo STRING é de 1 a 255.

Uma constante de texto colocam-se entre plicas →

'AAA'.

As maiúsculas e minúsculas são discriminadas.

Um caractere $ seguido de dois dígitos numéricos são interpretados como um

hexadecimal.

$02 → #02 hexadecimal

Um caractere $ seguido de uma letra é interpretado como:

$$:

caractere $

(Código ASCII: #24)

$':

plica simples

(Código ASCII: #27)

$L ó $l:

final de linha (LF)

(Código ASCII: #0A)

$N ó $n:

nova linha (CR + LF)

(Código ASCII: #0D0A)

$P ó $p:

final de página (FF)

(Código ASCII: #0C)

$R ó $r:

Terminador (CR)

(Código ASCII: #0D)

$T ó $t:

Tabulação horizontal (Tab) (Código ASCII: #09)

(125)

Tipos de dados (I)

S

Síímbolombolo ConteConteúúdodo TamanhoTamanho Intervalo de valoresIntervalo de valores

BOOL Dados de bit 1 0 (falso), 1 (verdadeiro)

INT Inteiro 16 -32.768 a +32.767

DINT Duplo Inteiro 32 −2,147,483,648 a +2,147,483,647 LINT Inteiro Largo 64 −9,223,372,036,854,775,808 a

+9,223,372,036,854,775,807

UINT Inteiro sem Sinal 16 &0 a 65,535

UINT BCD Inteiro sem Sinal BCD WORD ( #0000 a #FFFF ) ou ( &0 a 65,535 ) UDINT Duplo Inteiro sem Sinal 32 &0 a 4,294,967,295

UDINT BCD Duplo Inteiro sem Sinal

BCD

DWORD #00000000 a #FFFFFFFF ou &0 a 4,294,967,295

(126)

127

127

Tipos de dados (II)

S

Síímbolombolo ConteConteúúdodo TamanhoTamanho Intervalo de valoresIntervalo de valores

REAL Número Real 32 −3.402823 ×10 38 a −1.175494 × 10−38, 0,

+1.175494 × 10−38 a +3.402823 ×10 38

LREAL Número Real largo 64 −1.79769313486232 × 10308 a

−2.22507385850720 × 10−308 , 0, 2.22507385850720 × 10−308 a 1.79769313486232 × 10308

WORD Dado de 16-bits 16 ( #0000 a #FFFF ) ou ( &0 a 65,535 ) DWORD Dado de 32-bits 32 #00000000 a #FFFFFFFF ou

&0 a 4,294,967,295

LWORD Dado de 64-bits 64 #0000000000000000 a

#FFFFFFFFFFFFFFFF ou &0 a 18,446,744,073,709,551,615

STRING Array de texto Variável De 0 a 255 bytes. FUNCTION

BLOCK

Instância de bloco de funções ---

---CHANNEL Word WORD

(127)

Texto estruturado.

Funções matemáticas suportadas:

Soma (+)

Subtracção (-)

Multiplicação (*)

Divisão (/)

Funções de bit suportadas:

Bitwise AND (AND ou &)

Bitwise OR (OR)

(128)

129

129

Operadores

Operadores suportados:

Parêntesis ( brackets () )

Índice de Matriz ( square brackets [ ] )

Operador de Atribuição (:=)

Operador de Comparação Menor Que (<)

Operador de Comparação Menor ou Igual Que (<=)

Operador de Comparação Maior Que (>)

Operador de Comparação Maior ou Igual Que (>=)

Operador de Comparação Igual (=)

(129)

Operadores

Símbolo Tipo de operação Tipos de dados suportados pelos operadores. Prioridade 1: alta, 11:baixa

[ ] ( ) Expressão / Tabelas [ índices ] 1 Function

()

Designação de uma função Dependendo da função. 2

** Exponencial REAL, LREAL 3

NOT Complemento BOOL, WORD, DWORD, LWORD 4

* Multiplicação INT, DINT, UINT, UDINT, ULINT, REAL, LREAL 5 / Divisão INT, DINT, LINT, UINT, UDINT, ULINT, REAL,

LREAL

+ - Soma / Subtracção INT, DINT, LINT, UINT, UDINT, ULINT, REAL,

LREAL

6

< > <= >=

Comparações BOOL, INT, DINT, LINT, UINT, UDINT, ULINT, WORD, DWORD, LWORD, REAL, LREAL

(130)

131

131

Palavras reservadas.

TRUE, FALSE

IF, THEN, ELSE, ELSEIF, END_IF

DO, WHILE, END_WHILE

REPEAT, UNTIL, END_REPEAT

FOR, TO, BY, END_FOR

(131)

Tipos de Dados

Símbolo Tipo de dado Nº de bits

BOOL Booleano 1

INT Inteiro (Integer) 16

UINT Inteiro senSinal (Unsigned Integer) 16

DINT Duplo Inteiro (Doble Integer) 32

UDINT Duplo Inteiro sem Sinal (UnsigendDoble Integer) 32

LINT Inteiro Largo (LongInteger) 64

ULINT Inteiro Largo sem Sinal (Unsigned LongInteger) 64

WORD Sequência de bit de 16 bits 16

DWORD Sequência de bit de 32 bits 32 LWORD Sequência de bit de 64 bits 64

(132)

133

133

Instruções 1/2

Instru

Instruççõesões FunFunççãoão ExemploExemplo

; Final de instrução END_IF ;

(* *) Comentário (* Comentário *)

:= Atribuição A := B

IF, THEN, ELSE, ELSEIF, END_IF

Condicional simples IFa < b THEN c := a END_IF;

CASE OF, ELSE, END_CASE Condicional composta CASE a OF

1: b := 1; 2: b := 2; ELSE

b := 3; END_CASE;

(133)

Instruções 2/2

Instrução Função Exemplo

FOR, TO, BY, DO, END_FOR Loopcom n repetições. FOR d := 1 TO 5

b := d * 2; END_FOR;

WHILE, DO, END_WHILE Loopcom condição inicial. WHILE a < 15 DO

b := b + 3; END_WHILE;

REPEAT, UNTIL, END_REPEAT Loopcom condição final. REPEAT

d := d + 1; UNTIL d < 15 END_REPEAT;

EXIT Sair do processo de um loop. WHILE true

a := a + 1;

(134)

135

Cores usadas no código de programação

Palavras reservadas:

Palavras reservadas:

Azul

Azul

Coment

Coment

á

á

rios:

rios:

Verde

Verde

Erros:

Erros:

Rojo

Rojo

Restante:

Restante:

Negro

Negro

A atribui

A atribui

ç

ç

ão das cores, podem ser

ão das cores, podem ser

parametrizadas nas versões mais

parametrizadas nas versões mais

recentes do

(135)

Instrução

IF

Executa de forma condicional um grupo de instruções,

dependendo do valor de uma expressão.

Sintaxe:

IF

expression1

THEN

statement-list1

[

ELSIF

expression2

THEN

statement-list2 ]

[

ELSE

statement-list3 ]

(136)

137

137

Instrução

IF

(condição simples)

Sintaxe da declaração:

IF <condition> THEN

<expression_1>;

ELSE

<expression_2>;

END_IF;

Sintaxe da declaração:

IF

<condition>

THEN

<expression_1>;

ELSE

<expression_2>;

END_IF

;

(137)

Instrução

IF

(condição simples)

Sintaxe da declaração:

IF <condition_1> THEN

IF <condition_2> THEN

<expression_1>;

ELSE

<expression_2>:

END_IF;

END_IF;

Sintaxe da declaração:

IF

<condition_1>

THEN

IF

<condition_2>

THEN

<expression_1>;

ELSE

<expression_2>:

END_IF

;

END_IF

;

(138)

139

139

Instrução

IF

(múltiplas condições)

Sintaxe da declaração:

IF <condition_1> THEN <expression_1>;

ELSIF <condition_2> THEN <expression_2>;

ELSIF <condition_3> THEN <expression_3>;

...

ELSIF <condition_n> THEN <expression_n>;

ELSE

<expression_m>;

END_IF;

Sintaxe da declaração:

IF

<condition_1>

THEN

<expression_1>;

ELSIF

<condition_2>

THEN

<expression_2>;

ELSIF

<condition_3>

THEN

<expression_3>;

...

ELSIF

<condition_n>

THEN

<expression_n>;

ELSE

<expression_m>;

(139)
(140)

141

141

Instrução

IF

(Exemplos)

IF A>0 AND B>1 THEN

X:=10; Y:=20;

ELSE

X:=0; Y:=0;

END_IF;

IF A>0 AND B>1 THEN

X:=10; Y:=20; ELSE X:=0; Y:=0; END_IF; IF A>0 THEN X:=10; ELSIF B=1 THEN X:=1; ELSIF B=2 THEN X:=2; ELSE X:=0; END_IF; IF A>0 THEN X:=10; ELSIF B=1 THEN X:=1; ELSIF B=2 THEN X:=2; ELSE X:=0; END_IF; IF A>0 THEN X:=10; ELSE X:=0; END_IF; IF A>0 THEN X:=10; ELSE X:=0; END_IF; IF A THEN X:=10; ELSE X:=0; END_IF; IF A THEN X:=10; ELSE X:=0; END_IF;

(141)

Instrução

CASE

Executa um de vários grupos de instruções segundo o valor de

uma expressão.

Sintaxe:

CASE <ecuación_entera> OF <ecuación_entera_valor_1>

:

<expresión_1>; <ecuación_entera_valor_2>

:

<expresión_2>; ... <ecuación_entera_valor_n>

:

<expresión_n>; ELSE <expresión_m>;

(142)

143

143

(143)

Instrução

CASE

(Exemplos)

CASE A OF

1: X:=1;

2: X:=2;

3: X:=3;

ELSE

Y:=0;

END_CASE;

CASE

A

OF

1: X:=1;

2: X:=2;

3: X:=3;

ELSE

Y:=0;

END_CASE

;

CASE A OF

1: X:=1;

2,5: X:=2;

6..10: X:=3;

11,12,15..20: X:=4;

ELSE

Y:=0;

END_CASE;

CASE

A

OF

1: X:=1;

2,5: X:=2;

6..10: X:=3;

11,12,15..20: X:=4;

ELSE

Y:=0;

END_CASE

;

(144)

145

145

Instrução

FOR

Repete um grupo de instruções um número de vezes especificado.

Sintaxe:

FOR control variable := <integer_expression1>

TO <integer_expression2> [ BY <integer_expression3> ]

DO

<statement-list>;

END_FOR;

<integer_expression1> : valor inicial da variável de controle. <integer_expression2> : valor final da variável de controle.

<integer_expression3> : incrementos da variável de controle.

(145)
(146)

147

147

Instrução

FOR

(Exemplos)

FOR i:=0 TO 100 DO array[i]:=0; END_FOR; IF i=101 THEN a:=TRUE; ELSE a:=FALSE; END_IF; FOR i:=0 TO 100 DO array[i]:=0; END_FOR; IF i=101 THEN a:=TRUE; ELSE a:=FALSE; END_IF; FOR n:=0 TO 50 BY 5 DO SP[n]:=100; END_FOR; FOR n:=0 TO 50 BY 5 DO SP[n]:=100; END_FOR;

(147)

Instrução

WHILE

Executa uma série de instruções sempre que uma condição dada

seja True.

Sintaxe:

WHILE

<expression>

DO

<statement-list>;

(148)

149

149

(149)

Instrução

WHILE

(Exemplos)

A:=0; WHILE A<=1000 DO A:=A+7; END_WHILE; A:=0; WHILE A<=1000 DO A:=A+7; END_WHILE; n:=1; WHILE X<3000 DO X:=X*2; DATA[n]:=X; n:=n+1; END_WHIE; n:=1; WHILE X<3000 DO X:=X*2; DATA[n]:=X; n:=n+1; END_WHIE;

(150)

151

151

Instrução

REPEAT

Executa uma série de instruções até que uma condição seja True.

Sintaxe:

REPEAT

<statement-list>;

(151)
(152)

153

153

Instrução

REPEAT

(Exemplos)

A:=1;

TOTAL:=0;

REPEAT

TOTAL:=TOTAL+A; A:=A+1;

UNTIL A>10 END_REPEAT;

A:=1;

TOTAL:=0;

REPEAT

TOTAL:=TOTAL+A; A:=A+1;

(153)

Instrução

EXIT

Força a saída de um loop ( FOR, WHILE, REPEAT )

Sintaxe:

FOR (WHILE, REPEAT) expression ...

IF <condition> THEN EXIT;

END_IF;

(154)

155

155

Instrução

RETURN

A operação de RETURN depende de onde se use no programa.

Programa ST

Programa ST

:

• Força o final da tarefa ST que está a ser executada e executa a tarefa seguinte.

ST usado em SFC

ST usado em SFC

:

• Força o final da acção que está a ser executada e executa o programa seguinte de acção ou programa de transição.

ST usado em FB

ST usado em FB

:

• Força o final do bloco de funções ST que contém o RETURN, retorna ao sítio onde foi chamado FB e executa a instrução seguinte.

Sintaxe:

(155)

Funções

Tipo de função Utilidade

Funções numéricas Valor absoluto, funções trigonométricas, etc… Funções para “manipular” strings Manipular array de caracteres.

Funções de expansão OMRON Funções de expansão de linguagem padrão. Conversão de tipos de dados Conversão entre tipos de dados.

(156)

157

157

Funções numéricas (I)

Função Tipo de dados dos argumentos

Tipo de dados devolvidos

Descrição

ABS (arg) INT, DINT, LINT, UINT,

UDINT, ULINT, REAL, LREAL

INT, DINT, LINT, UINT, UDINT, ULINT, REAL, LREAL

Valor absoluto

SQRT (arg) REAL, LREAL REAL, LREAL Raiz quadrada

LN (arg) REAL, LREAL REAL, LREAL Logaritmo natural: LOGe LOG (arg) REAL, LREAL REAL, LREAL Logaritmo: LOG10

EXP (arg) REAL, LREAL REAL, LREAL Exponencial natural: earg EXPT (arg) Base REAL, LREAL REAL, LREAL Exponencial: baseexpo

Expoente INT, DINT, LINT, UINT, UDINT, ULINT

(157)

Funções numéricas (II)

Função Tipo de dados dos argumentos

Tipo de dados devolvidos

Descrição

SIN (arg) REAL, LREAL REAL, LREAL Seno COS (arg) REAL, LREAL REAL, LREAL Coseno TAN (arg) REAL, LREAL REAL, LREAL Tangente ASIN (arg) REAL, LREAL REAL, LREAL Arco Seno ACOS (arg) REAL, LREAL REAL, LREAL Arco Coseno ATAN (arg) REAL, LREAL REAL, LREAL Arco Tangente

Referências

Documentos relacionados

5 Busca en el text anterior i copia un grup nominal de cada tipus... l’ús de

Os seguintes efeitos secundários são muito raros (afectam menos de 1 em cada 10.000 pessoas):. Alterações na análise sanguínea (diminuição de glóbulos vermelhos ou brancos e das

Este novo desenho de procedimentos permite, ainda, a criação de instrumentos que clarifiquem o processo de equivalência respeitante a habilitações adquiridas em escolas

a) Confeccionar filmes de pectina simples e filmes compostos de pectina e alginato em diversas proporções e avaliar as propriedades em relação às diferentes

Caso tenham sido realizadas alterações em documentos e informações que não decorram do cumprimento de exigências, ainda que em virtude de atualizações

Assim sendo, estando perante uma pluralidade de penhoras sobre o mesmo bem: referência à preferência resultante da penhora (artigo 822.º, n.º1 do Código Civil); a penhora de

[r]

O composto 4 apresenta isomeria óptica, pois possui carbono quiral ou assimétrico (carbono ligado a quatro ligantes diferentes entre si).. Na molécula do metano, o carbono está