Você está na página 1de 131

CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 1

MICROPROCESSADOR E CLP (JORGE AUGUSTO)

APRESENTAÇÃO

O entendimento do mundo está na atualização de nosso


conhecimento técnico e científico.

Decidimos fazer um estudo de uma área pouco


explorada, de pouco conhecimento prático, mas que está a
todo momento nos envolvendo em nossa casa, no lazer e no
trabalho: CLP.

Dividiremos nosso ensino em dias de estudo,


equivalentes há 30 minutos diários de leitura, dando passos a
um assunto envolvente, você se empolgará em colocar em
prática os novos conhecimentos adquiridos na área de
microprocessamento e lógica de programação, sentindo-se
não apenas um aluno, mas uma pessoa que brinca com algo
que lhe abrirá os olhos a esse mundo de tecnologia, não mais
admirada por pouco entendê-la, mas sim, admirando,
entendendo e utilizando.

Agradeço à Deus
pela oportunidade de passar esses
conhecimentos, que com muito esforço
venho retribuir em agradecimento da vida.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 2
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

CONTEÚDO DO MÓDULO DE ENSINO

1) Curso de linguagem de programação dedicada a


compilador para microprocessador.

2) CLP dedicado.

3) Cabo de programação do CLP.

4) Software de programação do CLP.

5) Manual de comandos do CLP.

6) Exemplo de programas.

OBS.
Pré – requisitos:

1º DIA - INTRODUÇÃO : TECNOLOGIA

Nosso curso não é de eletrônica, porém é bom saber


que a evolução de equipamentos com processamento de
informações, foi decorrente do desenvolvimento da
microeletrônica.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 3
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

A tecnologia microprocessada está a todo o momento


aprimorada para que possamos projetar e processar
informações do nosso meio sem necessariamente
entendermos de microeletrônica, para comandar um
equipamento ou para que este possa tomar decisões
seguindo uma lógica previamente estabelecida.

Desde o inicio dos tempos, sempre foi necessário


equipamentos, que de certa forma controlassem de algum
modo certas condições, como por exemplo: temperatura de
um forno, controle da direção de um barco, controle de
potência de uma caldeira, controle de velocidade de um
motor, etc.

Foram utilizados a princípio, recursos pessoais e


mecânicos para proceder certos controles e tomadas de
certas decisões.

Com o surgimento de novas tecnologias, como balanças,


bi-metálicos, pressostatos, etc, foram possíveis regulagens e
tomadas de pequenas decisões em comandos de
equipamentos sem necessidade do uso pessoal.

Observamos que para ser realizado um determinado


controle ou ajuste, é necessária uma outra informação que
chamaremos de entrada.

A entrada de informação gerará uma atuação ou contra-


reação em equipamentos não processados, porém garantirá
uma situação pré-estabelecida.

As entradas podem ser: um pressostato, um micro-fim-


de-curso, uma botoeira, uma temperatura, uma chave, uma
palavra, um código, etc.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 4
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

A atuação motivada pela entrada, chamaremos de


SAÍDA, que pode ser: um relé, uma tensão, uma corrente, um
código, uma palavra, um som, etc.

A necessidade de controles mais complexos fez com


que fossem criados dispositivos de entrada e saída, mais
complexos, mas somente com o desenvolvimento da
eletrônica foram possíveis controles mais precisos, controles
com amortecimento, surgindo controles com lógica e
memória.

A maneira mais simples de trabalhar com lógica em


comandos, foi usando números binários, ou seja, trabalhar
com dois dígitos (0 ou 1), representando dois estados simples
de representação.

Números decimais Números binários


0 0
1 1
2 10
3 11
10 1010
25 11001

Números decimais utilizam 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9


para representar os demais números.

Números binários utilizam 0 e 1, para representar os


demais números.

A lógica booleana é a matemática desenvolvida para se


trabalhar com números binários 0 e 1.

O desenvolvimento de memórias que pudessem


armazenar dados ou informações e programas, pode
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 5
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

desenvolver rapidamente os microprocessadores,


desenvolvendo-se assim o microcontroladores.

Microprocessadores são dispositivos de


processamento abertos, que necessitam de uma grande
quantidade de periféricos para realizarem a captura de
informações externas e gravar informações, buscar dados,
interagir com os meios, normalmente utilizados por um PC ou
processamentos de grande magnitude.

Microcontroladores são dispositivos que por si próprio


já tem muitos dispositivos para interagir com os meios,
necessitando de poucos periféricos, utilizados para comando
de aparelhos portáteis, equipamentos industriais e por serem
de baixo custo são utilizados em CLP´s e outros
equipamentos de desenvolvimento.

Com o desenvolvimento de controles mecânicos e de


controles elétricos e pneumáticos, teve-se a necessidade de
poder interagi-los formando sistemas mais complexos, e
surgiram os comandos elétricos, utilizando sistemas
eletromecânicos e comandos com placas eletrônicas
dedicadas. O problema para esses sistemas estava na
dificuldade de se fazer qualquer mudança do comando ou
procedimentos de controle, necessitando muitas vezes do
desenvolvimento de um novo projeto de placa eletrônica.

As fábricas automotivas buscaram alternativas para esse


problema, surgindo os PLC´s ou CLP´s.

CLP: é um equipamento que utiliza um microcontrolador


que já tem dispositivos de coleta de informações,
armazenamento e saída de informações, onde pode ser
programado, quantas vezes forem necessárias, substituindo
assim as antigas placas eletrônicas dedicadas.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 6
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Os CLP´s facilitam nossas vidas, mesmo se não forem


engenheiros, pode-se automatizar equipamentos, mecânicos,
elétricos, pneumáticos e de uso no nosso lar.

1a . PRÁTICA:
Conhecer o equipamento:

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

- Ligação 220 Volts.


- O led acenderá e iniciará um programa exemplo, que
acionará em seqüência S1 – S6.
- C representa o terminal comum dos relés internos S1 a S6
representados pelos led´s correspondentes, são as saídas.
- E1 a E10, são as entradas que são acionadas pela tensão
(+).

2º DIA – ELEMENTOS DOS MICROPROCESSADORES

A área de microprocessamento é muito abrangente e


nos dedicaremos a equipamentos que utilizarão a tecnologia
de microcontroladores, mas para isso vamos ter agora, uma
visão geral de microprocessadores.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 7
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

ELEMENTOS

1) FAMÍLIAS LÓGICAS:

Vamos iniciar com linguagem binária, ou matemática de


dois dígitos 0 e 1, simplificando, assumimos que:

SIM ou VERDADEIRO = 1
NÃO ou FALSO = 0

Tabela Lê-se
a) OU ou OR A+B=C A ou B = C
SÍMBOLO 0+0=0
A C 0+1=1
B 1+0=1
1+1=1

Tabela Lê-se
b) E ou AND A٠B=C AeB=C
SÍMBOLO 0٠0=0
A C 0٠1=0
B 1٠0=0
1٠1=1

Tabela Lê-se
c) NÃO ou (NOR) A + B = C A ou B invertido = C
SÍMBOLO 0+0=1
A C 0+1=0
B 1+0=0
1+1=0
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 8
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Tabela Lê-se
d) NÃO E ou (NAND) A ٠ B = C A e B invertido = C
SÍMBOLO 0٠0=1
A C 0٠1=1
B 1٠0=1
1٠1=0

Tabela Lê-se
e) OU EXCLUSIVA A + B = C A ou exclusiva B = C
SÍMBOLO 0 0=0
A C 0 1=1
B 1 0=1
1 1=0

Tabela Lê-se
f) E COINCIDÊNCIA A B=C A E Coincidência B = C
SÍMBOLO 0 0=1
A C 0 1=0
B 1 0=0
1 1=1

Todos os outros elementos lógicos, derivam destes.

2) CIRCUITOS INTEGRADOS DIGITAIS:

Representam eletricamente e fazem as operações


lógicas acima descritas e suas associações.

a) CMOS – São circuitos integrados digitais, cujas


características são:
o Série 54C / 74 C e 4000.
o Alimentação 3 a 18 Volts.
o Utilizam tecnologia Mosfet.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 9
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

b) TTL – São circuitos integrados digitais, cujas


características são:
o Série 54 / 74.
o Alimentação única de 5 Volts.
o Utilizam somente transistores.

3) COMBINAÇÕES LÓGICAS:

Combinando-se os elementos lógicos mais simples


podemos elaborar equações matemáticas binárias, mais
complexas, exemplos:
o Flip-Flop (memórias o Decodificadores;
simples); o Multiplex;
o Contadores; o Demultiplex;
o Divisores; o Memórias;
o Codificadores; o Microprocessadores.

4) ELEMENTOS NÃO LÓGICOS:

São os chamados conversores analógicos para digitais


(A/D) e conversores digitais para analógicos (D/A).

Os conversores A/D são componentes eletrônicos muito


importantes, pois codificam valores analógicos (como:
temperatura, pressão, tensão, etc) em números binários.

Conversores de tensão em freqüência (V/F) são


conversores mais simples, mas com mesma eficiência,
convertendo valores de tensão em pulsos ou freqüência.

5) MEMÓRIAS ELETRÔNICAS OU MEMÓRIAS


SEMICONDUTORAS:
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 10
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

São locais onde são armazenados dados e programas


em um sistema digital.

a) Memória Ram ou memória de acesso aleatório, é


destinada a leitura e gravação. A memória Ram necessita de
alimentação para manter os dados armazenados.
Uma memória Ram de 1024 x 4 representa que é formada
por 64 linhas de 16 colunas (64x16 = 1024) de palavras de 04
bits (dígitos binários). Um byte = 4 bits.

b) Ram Dinâmica (DRAM) usando tecnologia CMOS


possibilitam concentrar até quatro vezes mais informações do
que a Ram estática. As DRAM necessitam de pulsos de
tensão para que os dados não se percam chamados de
REFRESH (refrescamento).

c) Memória ROM Memória de leitura, são memórias


construídas por uma matriz de semicondutores que depois de
gravados não perdem mais os dados e não podem ser mais
regravados, sendo divididos em:
c.1) PROM São programadas pelo usuário, a gravação é feita
por gravadores especiais que queimam fusíveis internos.
c.2) EPROM São memórias alteráveis podendo ser gravadas,
apagadas e gravadas com os processos:
o UVPROM – Utilizam luz ultravioleta que incidirá numa
janela no CI.
o EPROM – Utiliza pulsos elétricos, apagamento,
assumindo nível lógico zero.
Uma memória EPROM (2716) tem 16 K de memória,
representando uma organização de 2048 palavras de 08 bits
cada, sendo alimentada por 5 volts.
Obs.: 08 bits representa uma palavra de 08 dígitos binários
ou 02 bytes.
Microprocessadores: É um conjunto de circuitos lógicos,
encapsulados numa única pastilha de larga escala de
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 11
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

integração (LSI), capaz de realizar diversas funções, de forma


seqüencial.
MEMÓRIA

ENTRADA UNIDADE DE SAÍDA


CONTROLE

UNIDADE DE LÓGICA
E ARITMÉTICA

Temos 05 partes principais: circuitos de entrada,


memória, unidade de controle, unidade de lógica e aritmética,
saída.
Classificação dos microprocessadores:
Conforme já vimos um bit assume o valor de 0 ou 1, o
microprocessador contém os circuitos necessários para a
execução das funções de uma unidade central de
processamento, funções codificadas em uma palavra de
vários bits.
Os bytes são padronizados em palavras de 04 bits, 08
bits, 16 bits, 32 bits e 64 bits. Convencionou-se classificar os
microprocessadores pela quantidade de bits em sua palavra
(byte).
São chamados de microprocessadores de 04 bits, 16 bits, 32
bits e 64 bits.
Estrutura dos microcomputadores:
 Microprocessador;
 Memória Rom e Ram;
 Memória externa (flexível e rígida);
 Periféricos de entrada (teclado, modem);
 Periféricos de saída (vídeo, som).
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 12
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

2a. PRÁTICA:
Faça as ligações no CLP conforme indicado:

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

Pode-se usar um fio ligado diretamente da saída (+) ás


entradas E1 e E2, fazendo assim a função do interruptor
fechado.

LEGENDA

INTERRUPTOR INTERRUPTOR
FECHADO ABERTO

LED “E” LIGADO = 1 LED “E” APAGADO = 0


CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 13
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Preencha a tabela verdade de acordo com o obtido nas


saídas S1 e S2.

TABELA VERDADE
E3 E4 E5 S1 S2
0 0 0 1 0
0 0 1 1 0
0 1 0 1 0
0 1 1 1 0
1 0 0 1 0
1 0 1 1 0
1 1 0 1 0
1 1 1 0 1

E3

E4 S1

E5

E3

E4 S2

E5

De acordo com o obtido nas saídas S1 e S2, responda:

a) Qual a porta lógica de S1 ?


____________________________________________
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 14
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

____________________________________________

b) Qual a porta lógica de S2 ?


____________________________________________
____________________________________________

c) Qual o símbolo da porta de saída S1 ?

d) Qual o símbolo da porta de saída S2 ?

3º DIA – TERMOS TÉCNICOS

TERMOS TÉCNICOS USADOS PARA CIRCUITOS


MICROCONTROLADORES
Obs: Não é necessário saber os termos técnicos para
sabermos programar o CLP, mas é interessante para
entendermos a filosofia do mesmo.
1) Acumulador: É um registrador utilizado durante as
operações de entrada e saída de dados.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 15
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

2) Registrador de instrução: Estes registradores operam


como se fossem memórias Rom do chip, guardando código
de instruções para controlar o chip.
3) Decodificação de instruções: Tem a função de decodificar
as instruções contidas nos registradores.
4) Stack Pointer: Esse é um registrador que fornece um
endereço de código de construção à unidade de memória,
durante cada operação de busca de instrução.
5) Pinagens Padrões ou universais:
a) Alimentação: VSS = terra ou GND
VBB = - 5V
VCC = + 5V
VDD = + 12V
b) Endereçamento: A0 – A15.
c) Comunicação: BI-Direcional D0 – D7.
d) Modo de espera: DBIN.
e) Estado de espera de comando externo: WAIT.
f) Escrita de memória externa: WR.
g) Sinal de entrada que coloca via de dados e via de
endereços em alta impedância: HOLD.
h) Sinal de saída que coloca via de dados e via de endereços
em alta impedância: HLDA.
i) Sinal de entrada que avisa que tem sinal na via de dados:
READY.
j) Interrupção habilitada: INTE.
k) Requisição de interrupção: INT.
l) Retorno à posição zero da memória: RESET.
m) Requisição de memória externa – MREQ
n) Sinal para ativar o refrescamento de memória: RFSH
o) Entrada prioritária acima da interrupção: NMI
p) Sinal de relógio: Clock
q) Sinal de atraso de leitura externa: RDY
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 16
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Obs: Vale ressaltar os itens ‘g’ e ‘j’ .


g) A saída de um circuito digital pode assumir 03 estados:
 0 = zero volts ;
 1 = tensão de alimentação ;
 Z = alta impedância, que representa que a saída não
mais alimentará com 0 volt ou 5 volts, mas ficará a
disposição para receber informação sem interferir com o
meio.
j) A interrupção de um processamento significa a parada na
seqüência do programa para fazer outra instrução mais
prioritária e depois retornar ao programa antes parado.
Obs: O clock representa a velocidade de processamento. O
processamento segue dois caminhos distintos:
1º - Todo programa segue em seqüência pelo clock do
circuito, dando prioridade às interrupções.
2º - O programa de timer independente segue individualmente
sem necessitar do clock ou freqüência de processamento.

OUTRAS FUNÇÕES :
Divisor somador, unidade de multiplexação e divisão,
unidade de teste e proteção, unidade de segmentação,
unidade de paginação, decodificador, fila de instrução,
controle de barramento, porto, modo virtual, nível de
prioridade.

TIPOS DE CLP´S:
Temos basicamente 03 tipos principias:
 Os CNC´s ;
 Os CLP´s industriais ;
 Os CLP´s compactos.
1) CNC (Controlador de comando numérico)
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 17
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

É um CLP dedicado e programável para atender a uma


faixa de atividades.
No desenvolvimento das máquinas operatrizes de
usinagem, sempre se procurou soluções que permitissem
aumentar a produtividade e qualidade oferecendo flexibilidade
necessária para usinagem de diferentes configurações de
peças.
Os CLP´s de comando numérico (CNC) surgiram nos
Estados Unidos nos meados de 1950, no
MASSACHUSSETS INSTITUTE OF TECNOLOGY,
desenvolvendo um sistema aplicável a máquinas-ferramentas
para controlar a posição de fusos, de acordo com dados
fornecidos do processador.
Comando numérico é um equipamento eletrônico capaz
de receber informações e transmiti-las em forma de comando
à máquina operatriz, de modo que esta sem a intervenção do
operador, realize as operações na seqüência programada.
Seus programas são dedicados a funções matemáticas
e entrada de sensores de posição, tensão, etc, e controlando
bombas, motores trifásicos, servo mecanismo de precisão,
utilizando um programa de CAD, chamado de MASTERCAN,
familiarizado com desenhos em 2 e 3 dimensões.
2) CLP Industrial
Os CLP´s industriais tem uma constituição muito flexível
de entradas e saídas, sendo todo ele modular e expansível
em módulos armazenados em um Rack, adequando a
necessidade do complexo, trabalhando independente ou se
comunicando a outros CLP´s formando um gerenciamento
complexo chamado de sistema supervisório, contendo
interfaces homem–máquina, teclados, monitores, entradas
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 18
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

A/D e D/A, modens, todos em módulos se comunicando com


o módulo CPU principal.
Os CLP´s industriais são de custo elevado por
necessitarem de vários módulos de entrada, alimentação,
processamento e saída, são utilizados em processos
complexos.
3) CLP´s Compactos
São CLP´s que carregam em um único bloco, a fonte, o
processador, a unidade de entrada digital e/ou analógica e
saída digital e/ou analógica.
São equipamentos pequenos, de fácil programação e
poucas vezes necessitando de equipamentos externos como:
 IHM – Interface homem – máquina;
 A/D e/ou D/A – Conversores.
Temos basicamente três tipos de linguagem para
programação de CLP:
1º) Linguagem Estruturada - É uma linguagem de alto nível,
de fácil compreensão e implementação, usando códigos de
funções em forma de palavras ou termos de referência.

2º) Linguagem Ladder - Usando símbolos elétricos e


diagramas, é usada por técnicos eletricistas e em áreas
específicas.
3º) Linguagem em Diagrama de Bloco - Usando símbolos de
blocos de funções, é usada em pneumática e em áreas
específicas.
Obs: Para nosso curso abranger todas as áreas
daremos uma introdução em linguagem de símbolos (Lader e
diagrama de blocos) e vamos aprender a trabalhar com
linguagem estruturada por ser universal.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 19
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

3a. PRÁTICA:
Ligar cargas à saída do CLP:

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

Objetivo:
Utilização do CLP na ligação de cargas.
Observar o funcionamento das lâmpadas, acendimento,
apagamento, e ordem como ocorre.

LEGENDA

INTERRUPTOR LÂMPADA 02 PILHAS


ABERTO DE 3 VOLTS TIPO AA
(de lanterna) LIGADAS
EM SÉRIE
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 20
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

4º DIA – INTRODUÇÃO A LINGUAGEM DE


PROGRAMAÇÃO
TERMOS UTILIZADOS:
1) INFORMAÇÃO – Informações e dados são representados
por meio de sinais.
2) SINAIS BINÁRIOS – São grandezas físicas a que se
atribuem somente dois estados, como um contato aberto ou
fechado de um interruptor.
3) SINAIS ANALÓGICOS – É a representação de uma
grandeza que pode assumir no decorrer do tempo, qualquer
valor dentro de uma faixa de valores.
4) INFORMAÇÃO DIGITALIZADA – Digitalizar uma grandeza
analógica significa dividir a mesma, em vários segmentos, de
forma que se possa fazer posteriormente uma relação, entre
uma quantidade de segmentos e a grandeza medida.

5) ELEMENTOS DE COMANDO – São ligados à entrada do


CLP, como acionadores binários, botões, sensores, etc, ou
ligados à saída acionando contactores, relés, iluminação,
controles, etc.
6) PROCESSAMENTO DO PROGRAMA – Quando
escrevemos o programa, o compilador do Software, o
transfere de forma binária para a memória do CLP,
armazenado de forma seqüencial em que se encontram a
lista de instruções, sendo processado de forma seqüencial e
repetitiva.
7) TEMPO DE CICLO – Tempo necessário para a execução
do programa (SCAN).
8) MEMÓRIA DE IMAGEM – No início de cada ciclo de
programa, o sistema operacional verifica o estado atual de
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 21
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

todas as entradas e registra esta informação em uma área de


memória que chamaremos de imagem das entradas, de
maneira análoga à entrada, temos também uma memória
imagem das saídas, após cada processamento as imagens
de entrada e saída são atualizadas na memória específica.
CARACTERÍSTICAS DO CLP:
CLP NT
- Entrada AC: 24 Vca/ 110 Vca/ 220 Vca;
- 06 saídas a relé ou 06 saídas a transistor;
- 08 entradas digitais;
- 02 entradas rápidas;
- 01 entrada analógica resistiva
- 01 saída RS 232
- Endereçamento fixo: 02 portos: (entrada ou saída
do processador interno do CLP)
CLP NT.8
- Entrada AC: 24 Vca/ 110 Vca/ 220 Vca;
- 10 saídas a relé ou 10 saídas a transistor;
- 02 saídas a transistor PWM;
- 01 saída para display;
- 08 entradas digitais;
- 02 entradas rápidas;
- 02 entradas analógicas – 5V
- 01 saída RS 232
- Endereçamento fixo: 02 portos: (entrada ou saída
do processador interno do CLP)

CLP CONTROLE
- Entrada AC: 24 Vca/ 110 Vca/ 220 Vca;
- 06 saídas a relé ou 06 saídas a transistor;
- 08 entradas digitais;
- 02 entradas rápidas;
- 01 entrada analógica resistiva
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 22
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

- 01 saída RS 232
- Endereçamento fixo: 02 portos: (entrada ou saída
do processador interno do CLP)

Porto D: D.0 – RX Porto B: B.0 – I/O


D.1 – TX B.1 – I/O
D.2 – I e INT 1 B.2 – I/O
D.3 – I e INT 2 B.3 – I/O
D.4 – I B.4 – I/O
D.5 – controle entrada B.5 – I/O
D.6 – controle saída B.6 – I
B.7 – I
Obs.: I – representa entrada;
O – representa saída;
I/O – entrada e saída;
RX – recebe dados da serial;
TX – transmite dados para serial;

 Endereçamento Indicado:

Saída do CLP:

S1 – B0 As informações
S2 – B1 do porto B0 a B5
S3 – B2 saem para as
S4 – B3 saídas S1 a S6
S5 – B4 respectivamente,
S6 – B5 quando o porto
D6 = 1.

Entrada do CLP:

D4 entrada AD resistiva

E1 – D2 E2 – D3
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR 23
PARA MICROPROCESSADOR E CLP (JORGE AUGUSTO)

E3 – B0 Os portos D2 e D3
E4 – B1 são independentes
E5 – B2 e são
E6 – B3 INTERRUPÇÕES.
E7 – B4
E8 – B5 As informações das
E9 – B6 entradas do porto
E10 – B7 B0 a B7 são lidas
quando o porto D5
= 1.

Observe bem as entradas E1 e E2. Elas são ditas


INTERRUPÇÕES pois, se necessário (um botão de STOP ou
emergência, por exemplo), necessitarmos parar a execução
do programa que esteja sendo executado e executarmos
outra tarefa. Isto será melhor esclarecido adiante.
LINGUAGEM POR DIAGRAMA DE BLOCOS:
Funções:
1) Função E
símbolo
A Q
B & “
entrada saída
TABELA DIAGRAMA
A B Q
0 0 0 A
0 1 0
1 0 0 B
1 1 1
Q

2) Função OU
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 24
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

símbolo
A Q
B >= 1 “
entrada saída
TABELA DIAGRAMA

A B Q
0 0 0 A B
0 1 1
1 0 1
1 1 1
Q

3) Inversor

símbolo
A Q
& “
entrada saída

TABELA DIAGRAMA

A Q
0 1 A
1 0
Q

4) Função NÃO E
Símbolo
A Q
B & “
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 25
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

entrada saída

TABELA DIAGRAMA
A B Q
0 0 1 A
0 1 0
1 0 0 B
1 1 0
Q

5) Função NÃO OU

símbolo
A Q
B >= 1 “
entrada saída

TABELA DIAGRAMA

A B Q
0 0 1 A B
0 1 1
1 0 1
1 1 0
Q
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 26
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

6) Função OU EXCLUSIVO

símbolo
A
B &

>= 1 Q
A &
B
entrada saída

TABELA DIAGRAMA

A B Q
0 0 0 A
0 1 1
1 0 1 B
1 1 0
Q

7) Contador

símbolo
E Q
RST C

entrada saída

E – entrada de contagem;
RST – entrada para zerar contagem;
C – número de vezes para contagem;
S – quando a contagem = C, a saída é 1.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 27
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

8) Temporizador:

símbolo
E Q
T
π ╨

entrada saída

E – Habilitador do contador
T – escolha do tempo

π ╨ ▀ - Tipos: de pulso único, cíclico, temporizador


comum e randômico, respectivamente.

Obs:Demais símbolos e comandos são chamados de


dedicados, onde realizam operações matemáticas como
soma, multiplicação, divisão, comparação, substituição,
leitura e conversão de entradas analógicas, leitura de pulsos,
etc.

4a. PRÁTICA:
EXERCÍCIOS RESOLVIDOS

1) Automatizar um portão com controle de um único botão,


para fechar e abrir.
ABRE

PORTÃO

M1 M2
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 28
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

O portão é acionado por motor. O portão fica em cima de um


trilho com cremalheira. Existem dois sensores ou micros fim
de curso, M1 e M2.
o M1 – indica portão fechado;
o M2 – indica portão aberto;
o A – Botão para abrir e fechar o portão.
Se o portão estiver abrindo e ultrapassado um intervalo de
tempo e M2 ainda não tiver sido acionado, o motor será
desligado.
TABELA

A M1 M2
0 0 0 Espera tempo (portão abrindo)
0 0 1 Portão aberto
0 1 0 Portão fechado
0 1 1 Defeito
1 0 1 Fechar portão
1 1 0 Abrir portão
1 1 1 defeito

DIAGRAMA

A R1 A R2 M1

R1 R2 A M2

M2 M1

T T

M R1 R2 T
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 29
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

LEGENDA:
M – MOTOR
A – BOTÃO PARA ABRIR E FECHAR PORTÃO
M1 – MICRO QUE INDICA PORTÃO FECHADO
M2 – MICRO QUE INDICA PORTÃO ABERTO
R1 – RELÉ AUXILIAR ESQUERDO
R2 – RELÉ AUXILIAR DIREITO
T – TEMPORIZADOR
- LÂMPADA

Obs: Podemos ver que para fazermos essa automação


teríamos que usar:
o 01 botão com 03 contatos disponíveis;
o 02 relés auxiliares;
o 01 temporizador e
o 02 micros com contatos disponíveis.
A lâmpada deverá ficar acesa somente no movimento do
portão, indicando defeito se não apagar.

PROGRAMA CLP – DIAGRAMA DE BLOCO

A
R1 >= 1

>= 1 “ SAÍDA FECHAR


M2 & MOTOR
T
A T
A 10seg
R2 >= 1

>= 1 “ SAÍDA ABRIR


M1 & MOTOR
T
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 30
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

M1
M2 &

>= 1 “ SAÍDA
M1 & LÂMPADA
M2

Obs. Os desenhos já estão gravados no software de


programação do CLP que usa esse tipo de linguagem
bastando somente dizer, qual comando usar que na tela do
PC aparecerá o desenho específico.

A linguagem é simples, mas complicado ao


entendimento na primeira vista.

220
Vca
M

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

A M1 M2
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 31
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

5º DIA – LINGUAGEM DE PROGRAMAÇÃO LADER

É a linguagem mais simples de visualização da estrutura de


programação, mas restrita a um determinado meio de
utilização.

SIMBOLOGIA

1) Entrada ou contato auxiliar aberto

2) Entrada ou contato auxiliar fechado

3) Saída ou relé virtual

4) Associação OR
A

B C

5) Associação AND

A B C

6) Associação AND + OR

A B C E

D
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 32
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

7) Associação AND contida no OR

A B C F

D E

8) Associação NÃO E (NAND)

A B C

9) Associação NÃO OU
A

B C

EXEMPLO DE UMA ASSOCIAÇÃO COMPLEXA

10) Temporizador

tempo número
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 33
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

tipo
11) Contador

C
RST

12) Funções especiais

função – equação

13) Comparadores
Símbolos
V1 ! = F “ igual a “
Símbolo > F “ maior “
V2 Q < F “ menor ”
>= “ maior ou igual “
<= “ menor ou igual “
>< “ diferente “
14) Contadores especiais

CU – Entrada de contagem
CU
crescente.
CD
CD – Entrada de contagem
S Q
decrescente.
R
R – Reset.
S – Trava.
15) Temporizadores Especiais

Símbolos
Símbolo SP – pulso
SE – prolongamento sinal
Q SD – retardo na ligação
R SS – retardo com retenção
SF – retardo no desligamento
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 34
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

16) Leitor de palavras

BINÁRIO 20 21 22 23 24 25 26 27 28 29
E1 E2 E3 E4 E5 E6 E7 E8 E9 E10
DECIMAL 1 2 4 8 16 32 64 128 256 512

Função que lê as palavras como se fossem números.

5a . PRÁTICA:
EXERCÍCIO
Controle de duas esteiras alimentadoras de uma linha de
produção.
Sensor 3 Sensor 1

ESTEIRA
PRINCIPAL SAÍDA

Motor 2 Motor 1
Sensor 2

ESTEIRA
ALIMENTADORA
PAINEL DE COMANDO
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 35
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

LEGENDA:
Térmico Térmico
M1 M2 SINALEIRO
Alarme
BOTOEIRA
C/ LÂMPADA

ALARME
Liga Desl. Rearme
SONORO
Alarme

Condições:

1) Ao ligar o sistema é ligado o motor1 e depois de 15


segundos, o motor 2.
2) As esteiras são para transporte de caixas. Quando o
sensor 1 for acionado, desliga a esteira principal.
3) Se os sensores 2 e 3 estiverem acionados ao mesmo
tempo, desliga a esteira de alimentação.
4) Se os térmicos dos motores foram acionados, liga o
alarme, acionando o botão de rearme alarme pela botoeira e
os térmicos não forem desabilitados, desliga a sirene, mas a
lâmpada da botoeira ficará ligada.

Entradas:
Sensor 1 – E1
Sensor 2 – E2
Sensor 3 – E3
Térmico M1 – E4
Térmico M2 – E5
Botão Liga – E6
Botão Desliga – E7
Botão Rearme Alarme – E8
Saídas:
Contactor M1 + Lâmpada liga – S1
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 36
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Contactor M2 – S2
Lâmpada térmico M1 – S3
Lâmpada térmico M2 – S4
Alarme acústico – S5
Lâmpada alarme – S6

Obs.
- Não terá lâmpada na botoeira desliga.
- Os sinaleiros dos térmicos ficarão ligados quando estiverem
Ok.

PROGRAMA LADER

E4 E5 AUX.1

E6 AUX.1 E7 AUX.2

AUX.2
Temp1 15seg

AUX.1 S6

Temp2 1seg

S6 T2 E8 S5

S5

E1 AUX.2 S1

E2 E3 AUX.3
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 37
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

AUX.3 T1 S2

E4 S3

E5 S4

EXEMPLO DE COMO PODE SER FEITA A LIGAÇÃO NO


CLP:

220
Vca
M1 M2

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

E1 – sensor 1 E5 – térmico M2
E2 – sensor 2 E6 – liga
E3 – sensor 3 E7 – desliga
E4 – térmico M1 E8 – rearme alarme
6º DIA – LINGUAGEM ESTRUTURADA – INÍCIO
6a. PRÁTICA:
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 38
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Entraremos agora ao estudo de linguagem estruturada,


muito poderosa e muito abrangente, que podemos utilizar em
todos os ramos da automação: predial, comercial, industrial e
de diversão.

O CLP NT utiliza esta linguagem e você terá um


excelente CLP para ser utilizado em qualquer área, em
automações industriais, comerciais, ou até mesmo em sua
residência.

Dividiremos esta etapa em:


 Instalação do compilador da linguagem estruturada,
sendo necessário um PC com windows 95 (ou superior)
e saída paralela disponível.
 Conhecimento dos comandos principais e exercícios e
exercícios práticos.

Gostaríamos que aproveitasse e se dedicasse com


entusiasmo às próximas páginas e paralelamente
utilizaremos o CLP para juntos, podermos visualizar outras
possibilidades que ao nosso redor podemos colocar
comandos e ações processadas, assegurando maior
eficiência, velocidade e segurança ao sistema ou
equipamento que para o próximo curso entraremos no mundo
das interfaces homem-máquina e dos conversores A/D.
Juntamente com o conversor A/D ou IHM (interface homem-
máquina) que virá com o curso de mesmo valor.

Inserir o disquete ou CD no drive específico e através do


explorer do windows, dar um duplo clique no arquivo
(SETUP.EXE).
1) Abrirá uma janela de apresentação do programa
compilador. Clique na tecla (NEXT).
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 39
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

2) Abrirá outra janela de aceitação do programa. Clique em


(YES).
3) Abrirá a janela de informações. Escreva seu “nome” e
“companhia” ou “profissão” e clique em (NEXT).
4)Abrirá outra janela mostrando o local onde será instalado o
programa. Clique em (NEXT).
5) Abrirá outra janela indicando o grupo onde o programa
será instalado, clique em (NEXT).
6) Abrirá a ultima janela para encerrar a instalação, clique em
(NEXT).
7) Como chamar o programa instalado:
Abra com o explorer do windows o arquivo em:
C:\PROGRAM FILES\MCS ELETRONICS\BASCON-AVR
Dando um duplo clique.

JANELA DO PROGRAMA.

BASCOM - ‫ٱ‬ x
FILE EDIT PROGRAM TOOLS OPTIONS WINDOW HELP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

NOME E CAMINHO DO ARQUIVO - ‫ٱ‬ x

PROGRAMA

Comandos da palheta principal do programa (de 1 à 21).

FILE
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 40
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

1 FILE OPEN: para abrir um arquivo.

2 ou teclando CTRL + O,
FILE CLOSE: Fecha o programa. Se ainda não foi salvo,
perguntará qual nome e onde guarda-lo.

3 FILE SAVE: salvar o programa.


FILE SAVE AS: salvar o programa com outro nome e/ou
outro diretório.

4 FILE PRINT PREVIEW: prepara o arquivo para impressão.

5 FILE PRINT: imprime o arquivo atual na impressora


escolhida do windows.
FILE EXIT: sair do programa.

6 : visualiza impressão.

EDIT

EDIT UNDO ou teclando CTRL + Z: desmancha o último texto


manipulado.

EDIT REDO ou teclando CTRL + SHIFT + Z: refaz o último


texto desmanchado.

7 EDIT CUT ou teclando CTRL + X : corta o texto


selecionado.

8 EDIT COPY ou teclando CTRL + C : coloca o texto


selecionado na tela de programa.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 41
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

9 EDIT PASTE ou teclando CTRL + V : cola o texto dentro da


pasta na posição atual.

12 EDIT FIND ou teclando CTRL + F : verifica o texto em seu


programa, posiciona o cursor no texto.

EDIT FIND NEXT – F3 : Busca o último item especificado.

EDIT REPLACE: repõe o texto em seu programa.

PROGRAM

PROGRAM COMPILE – F7 : com esta opção você pode


compilar seu programa atual e será salvo automaticamente.
Compilar um programa significa transforma-lo em linguagem
binária para podermos gravar no CLP.

Obs. Quando compilamos um programa o compilador gera os


seguinte arquivos:

 PROGRAMA.BIN : Arquivo binário.


 PROGRAMA.DB6 : Arquivo para simulador.
 PROGRAMA.OBJ : Arquivo objeto.
 PROGRAMA.ERR : Arquivo de erros do programa.
 PROGRAMA.RPT : Arquivo de relatório.
 PROGRAMA.EEP : Arquivo de imagem da EPROM.

13 PROGRAM SYNTAX CHECK SHORTCUT ou teclando


CTRL + F7 : verifica erros de sintaxe no programa.

15 PROGRAM SHOW RESULT ou teclando CTRL + W : dá


informações em forma de relatório do programa, como:
 nome do programa;
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 42
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

 data e hora da ultima compilação ;


 versão do compilador;
 freqüência em baud na transmissão;
 memória Ram, etc.

14 PROGRAM SIMULATE – F2 : Abrirá uma nova janela


onde podemos simular o programa antes de gravarmos no
CLP.

JANELA DO PROGRAMA.

AVR SIMULATOR - ‫ٱ‬ x


1 2 3 4 5 6 7 8 9 10 11 12 13
VARIÁVEL LOCAL VISUALIZAR ABRIR INTERRUPÇAO
VARIÁVEL VALOR HEXADECIMAL BINÁRIO

PROGRAMA

LINHA
DE
PROGRAMA

a) THE TOOLBAR:

1 Inicia a simulação, o simulador pausará quando você


pressionar o botão 2 PAUSE.
3 Botão Stop : pára a simulação e zera todas as variáveis.
4 Botão Step – F8 : executará uma linha de programa e
pausará.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 43
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

5 Botão Step Over ou teclando SHIFT + F8 : faz a mesma


função do Botão Step, porém executa sub-programas.

6 Botão Run To : simulará a atual linha.

9 Este botão abrirá a janela de registro mostrando os valores


dos registros em hexadecimal.

10 Este botão abrirá uma janela e mostrará os registros de


I/O.

11 Este botão abrirá a janela de memória do programa,


durante a simulação. Você poderá mudar os valores das
variáveis na janela de registro 10 e também na janela de
memória.

Debaixo da barra de ferramenta na etiqueta com as


páginas, podemos acrescentar variáveis clicando duas vezes
na coluna VARIABLE.
A tecla LOCALS demonstra as variáveis em sub ou
função.
A tecla “WATCH OU VISUALIZAR” é usada para entrar
com uma expressão que será avaliada durante estimulação.
A tecla “UP ou ABRIR” : exibe a posição no
microprocessador SREG REGISTER, bastando escolher os
FLAGS, que mostram os quadrados em branco, bastando
marca-los, escolhendo para mostrar os valores mínimos e
máximos do SOFTWARE STACK, o HARDWARE STACK e
FRAME POINTER.
A tecla INTERRUPTS : desabilita o programa em
execução.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 44
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

7 Botão “THE HARDWARE SIMULATOR” : Abrirá uma janela


que simulará em forma de pontos luminosos os portos do
processador:
Porto B0 à B6;
Porto D0 à D7.

13 Tecla “PROGRAM SEND TO CHIP” abrirá uma janela


oferecendo opções do programa.

JANELA DO PROGRAMA.

AVR SP PROGRAMMER - ‫ٱ‬ x


FILE BUFFER CHIP
1 2 3 4 5 6 7 8 9 10 CHIP 90S2313 ▼

Escolher

FLAS ROM CCPROM

1 FILE EXIT : retorna para o editor.

2 BUFFER CLEAR : limpa buffer.


BUFFER LOAD FROM FILE : carrega o arquivo dentro do
buffer.
BUFFER SAVE TO FILE : salva o conteúdo.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 45
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

CHIP IDENTIFIQUE : Abrirá uma janela para escolhermos o


processador do CLP. Veremos na próxima aula.

WRITE BUFFER INTO CHIP : Programa o buffer dentro do


chip ROM ou EEPROM.

READ CHIPCODE INTO BUFFER : Lê os códigos ou dados


do chip.

RCEN : Escreve um bit para habilitar o oscilador interno, é


uma variável do simulador do compilador.

7º DIA – PREPARANDO O PROGRAMA


PARA CONVERSAR COM O CLP
JUNTOS
7a . PRÁTICA

Na tela principal, tecle na palheta superior em OPTION,


escolha COMPILER, escolha CHIP, aparecerá uma janela de
configuração, proceda como se segue.

BASCON – AVR Options x


Compiler Communication Environment Simulator Programmer Monitor Printer

Chip Output Communication 12C,SPI, 1 WIRE LCD

Chip 90S2313 ▼ Flash ROM 2K2


XRAM NONE ▼ SRAM 128
HW Stack 32 EEPROM 128
NONE
Framesize 50

Ok Cancel
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 46
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Janela para selecionar o tipo de processamento,


selecionando RAM externa, especifica o tamanho máximo de
programa, especifica o tamanho do frame.
Cada local tem um espaço para armazenar.

OPTIONS COMPILER OUTPUT


Para a seleção e geração de um arquivo binário, seleção
e geração de um arquivo DEBUG, seleção de arquivo
HEXADECIMAL, seleciona arquivo REPORT, seleciona
arquivo de erro.

Para selecionamento dos arquivos necessários para


simulação, debugar e compilar o programa escrito para
gravar no CLP.

BASCON – AVR Options x


Compiler Communication Environment Simulator Programmer Monitor Printer

Chip Output Communication 12C,SPI, 1 WIRE LCD

Binary file AVR Studio object file

Debug file

HEX file

Report file

Error file Size warning

Ok Cancel

Para selecionamento dos arquivos necessários para


simulação, debugar e compilar o programa escrito para
gravar no CLP.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 47
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

OPTIONS COMPILER COMMUNICATION


BASCON – AVR Options x
Compiler Communication Environment Simulator Programmer Monitor Printer

Chip Output Communication 12C,SPI, 1 WIRE LCD

Baudrate 9600 ▼

Frequency 10.000.000 ▼

Error 1%

Ok Cancel

Seleciona a velocidade de transmissão de dados em


BAUD e a freqüência de clock do CLP.
OPTIONS COMPILER 12C, SPI, 1 WIRE
BASCON – AVR Options x
Compiler Communication Environment Simulator Programmer Monitor Printer

Chip Output Communication 12C, SPI, 1WIRE LCD

12C SPI
PORT B.0 ▼
SCL port PORT B.0 ▼ Clock
MOSI PORT B.0 ▼
SDA port PORT D.0 ▼
MISO PORT B.0 ▼
1 WIRE SS PORT B.0 ▼
PORT B.0 ▼
1 Wire □ Use Hardxare SPI

Ok Cancel

Janela para selecionar a porta de comunicação do CLP


para programação.
OPTIONS COMPILER LCD
BASCON – AVR Options x
Compiler Communication Environment Simulator Programmer Monitor Printer
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 48
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Chip Output Communication 12C, SPI, 1WIRE LCD

LCD type 16 * 1 a ▼
Enable PORT D.3 ▼
BUS mode Data mode RS PORT D.2 ▼
◙ 4-bit ◙ pin
○ 8-bit ○ bus DB7 PORT D.7 ▼
DB6 PORT D.8 ▼
LCD address C000
DB5 PORT D.5 ▼
RS ddress 8000
□ Make upper 3 bits 1 in LCD designer DB4 PORT D.4 ▼

Ok Cancel

Janela de selecionamento do DISPLAY do simulador a


ser usado.
OPTIONS COMMUNICATION
BASCON – AVR Options x
Compiler Communication Environment Simulator Programmer Monitor Printer

Com Port COM 1 ▼ Handshake


None ▼
Baudrate 1200 ▼ Emulation TTY ▼

Panity None ▼ Font Font

Databits 8 ▼ Backcolor Navy ▼

Stopbits 1 ▼

Ok Cancel

Esta janela tem opções de modificar o sinal de


comunicação para o terminal emulador.
OPTIONS ENVIRONMENT

BASCON – AVR Options x


CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 49
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Compiler Communication Environment Simulator Programmer Monitor Printer

Editor Font IDE

Autoindent Comment position 060

Don´t change case TAB size 3

Reformat BAS files Keymapping DEFAULT ▼

Reformat Code No reformat extension DAT

Smart TAB Size of new editor window

Sintax highlight Normal


Maximized
Show margin

Ok Cancel

Janela de opções de manipulação do editor de


programa.

OPTIONS ENVIRONMENT OF FONT

BACK GROUND COLOR – Cor do editor windows, cor do


fundo.

KEYWORD COLOR – Cor reservada para trabalho.

COMMENT COLOR – Comentário da cor.

ASC COLOR – Cor usada para ASM.

HW REGISTERS – Cor usada para janela de registros.

FONT – clique no LABEL para selecionar outra fonte do editor


windows.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 50
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

BASCON – AVR Options x


Compiler Communication Environment Simulator Programmer Monitor Printer

Editor Font IDE

Back ground color White ▼ Editor Font Font

Keyword color Navy ▼ Bold

Comment color Green ▼ Italic

ASM color Purple ▼

HW register color Maroon ▼

Ok Cancel

DESCRIÇÃO DE OPÇÕES

BASCON – AVR Options x


Compiler Communication Environment Simulator Programmer Monitor Printer

Editor Font IDE

Tooltips File location

Show Toolbar
Save file as .. for new files

Ok Cancel

Janela para configurar as barras de ferramentas.


Passando por essa etapa e configurando todas essas
janelas já podemos nos comunicar com nosso CLP podendo
gravar o nosso programa no CLP NT.

ATALHOS DO PROGRAMA EDITOR


CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 51
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Não é necessário decorar todas, o tempo fará com que você


utilize alguns com mais freqüência.
LEFT ARROW – um caractere para esquerda.
RIGHT ARROW – um caractere para direita.
UD ARROW - uma linha acima.
DOWN ARROW – uma linha abaixo.
HOME – para começo da linha.
END – para fim da linha.
PAGE UP – página acima.
CTRL + Y – apagar linha corrente.
F1 – ajuda.
F3 – finalizar texto.
F5 – rum programa.
F7 – compilar programa.
CTRL + F7 – checar sintaxe.
CTRL + M – simular.
CTRL + N – novo arquivo.
CTRL + P – imprimir arquivo.
CTRL + S – salvar arquivo.
CTRL + W – resultado em relatório da compilação.

PALAVRAS RESERVADAS
São as palavras que representam os comandos, e por
isso não devemos usa-las como comentário de programa,
nem como nome de variável ou constante.

Λ
!
;
$BAUD
$CRYSTAL
$DATA
$DEFAULT
$END
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 52
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

$EEPROM
$EXTERNAL
$INCLUDE
$LCD
$LCDRS
$LCDPUTCTRL
$LCDPUTDATA
$LIB
$REGFILE
$SERIAL INPUT
$SERIAL INPUT 2 LCD
$SERIAL OUTPUT
$XRAMSIZE
$XRAMSTART

1WRESET
1WREAD
1WWRITE

ACK
ABS ( )

ALIAS
AND
AS
ASC ( )
AT

BAUD
BCD
BIT
BITWAIT
BLINK
BOOLEAN
BYTE
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 53
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

BYVAL

CAPTURE1
CASE
CHR ( )
CLS
CLOSE
COMPARE1A
COMPARE1B
CONFIG
CONST
COUNTER
COUNTER0
COUNTER1
COUNTER2
CPEEK ( )
CRYSTAL
CURSOR

DATA
DEBOUNCE
DECK
DECLARE
DEFBIT
DEFBYTE
DEFLNG
DEFWORD
DEGSNG
DEFLCDCHAR
DEFINT
DEFWORD
DELAY
DIM
DISABLE
DISPLAY
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 54
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

DO
DOWNTO

ELSE
ELSEIF
ENABLE
END
ERAM
ERASE
ERR
EXIT
EXTERNAL

FOR
FOURTH
FOURTHLINE
FUNCTION

GATE
GETAD ( )
GETRCS ( )
GOSUB
GOTO

HEXVAL ( )
HIGH ( )
HOME

12CRECEIVE
12CSEND
12CSTART
12CSTOP
12CRBYTE
12CWBYTE
IDLE
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 55
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

IF
INCR
INKEY
INP ( )
INPUT
INPUTBIN
INPUTHEX
INT0
INT1
INTEGER
INTERNAL
INSTR
IS

LCASE ( )
LCD
LEFT
LEFT ( )
LEN ( )
LOAD
LOCAL
LOCATE
LONG
LOOKUP ( )
LOOKUPSTR ( )
LOOP
LTRIM ( )
LOW ( )
LOWER
LOWERLINE

MAKEBCD ( )
MAKEDEC ( )
MAKEINT ( )
MID ( )
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 56
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

MOD
MODE

NACK
NEXT
NOBLINK
NOSAVE
NOT

OFF
ON
OR
OUT
OUTPUT

PEEK ( )
POKE
PORTA
PORT B
PORT A
PORT C
PORT D
PORTE
PORTF
POWERDOWN
PRINT
PRINTBIN
PULSE OUT
PWM1A
PWM1B

READ
READEEPROM
REM
RESET
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 57
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

RESTORE
RETURN
RIGHT
RIGHT ( )
ROTATE
RTRIM ( )

SELECT
SERIAL
SET
SHIFT
SHIFTLCD
SHIFTCURSOR
SHIFTIN
SHIFTOUT
SOUND
SPACE ( )
SPIINIT
SPII
SPIMOVE
SPIOUT
START
STEP
STR ( )
STRING ( )
STOP
STOP TIMER
SUB
SWAP

THEN
THIRD
THIRDLINE
TIMER 0
TIMER 1
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 58
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

TIMER 2
TO
TRIM ( )

UCASE
UNTIL
UPPER
UPPERLINE

VAL ( )
VARPTR ( )

WAIT
WAITKEY ( )
WAITMS
WAITUS
WATCHDOG
WRITEEEPROM
WEND
WHILE
WORD

XOR
XRAM
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 59
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

FUNDAMENTOS DE LINGUAGEM

1) CARACTERES
 Numéricos : 0 a 9.
 Alfanuméricos : A a Z.

2) DÍGITOS
 Binários : 0 e 1.
 Hexadecimal :0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,E,F.

3) CARACTERES ESPECIAIS

 BLANC (espaço) :
 SINGLE (apostrofo) : ‘
 ASTERISKS (multiplicação) : *
 PLUG SIGN (soma) : +
 COMMA (vírgula) : ,
 MINUS SIGN (menos) : -
 PERIOD (ponto decimal) : .
 SIASH (divisão) : /
 COLON : :
 DOUBLE : “
 SEMICOLON : ;
 LESS TRAN (menor) : <
 EQUAL SING : =
 GREATER THAN (maior) : >
 BACKSLASH (divisão inteira) : \
 EXPONENT : ^
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 60
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

4) TIPOS DE DADOS

a) BIT (1/8 BYTE) = 0 ou 1.


b) BYTE = 0 a 255.
c) INTEGER = -32,768 A + 32,767.
d) WORD = 0 A 65535.
e) LONG = -2147483648 A 2147483648.
f) SINGLE = 32 BIT
g) STRING = acima de 254 BYTES.

É muito importante se distinguir os valores máximos e mínimos de


cada TIPO, pois, dependendo do programa, pode-se ter grandes dores de
cabeça procurando por cálculos que não dão certo.

5) TIPOS DE VARIÁVEIS.

a) valor constante, ex. A = 5 , C = 1,1.


b) variáveis alfanuméricas, ex. abc = def , f = j.
c) constantes, ex. temp = C+5.
d) variável hexadecimal – prefixo &H, ex. a = &H A
e) variável binária, ex. C = &B101011.

6) OPERADORES

a) ARITMÉTICOS :
+, -, *, \, Λ.

b) RELACIONAIS :
= igualdade X = Y.
<> diferença X <> Y.
< menor que X < Y
> maior que X > Y
<= menor ou igual X <= Y.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 61
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

>= mayor ou igual X >= Y.

c) LÓGICOS:
NOT: negação.
AND: conjunção.
OR: disjunção.
XOR: exclusive OR.
Ex. Se X = Y and Z, escreva: X = J.

Obs. Se lê : se em X, Y and Z, escreva X = J, quer dizer, se Y


ou Z assumir o mesmo valor X = J.

8º DIA – PROGRAMANDO O CLP E


CONHECENDO OS COMANDOS
JUNTOS
8a . PRÁTICA

Para começar a programar, devemos conhecer a


estrutura do programa.

1a. Descrição das variáveis.


2a. Rotinas do programa.
3a. Sub-rotinas do programa.
4a. Descrição dos timer internos;
Descrição das interrupções.

Para jogar os programas do PC ao CLP, basta mandar


compilar o programa, teclando F7,quando estiver na tela
principal e o programa não aparecendo nenhum erro, clicar
em 18 (Run Programmer) da tela principal com o botão direito
do mouse, na tela que aparecer, escolher V AUTO VERIFY,
LPT 378 PORT DELAY 0, quando for gravar o CLP, clicar
com o botão esquerdo do mouse na tecla 18(Run Programer),
que o programa será carregado no CLP.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 62
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Estaremos ensinando e utilizando cada comando de


programa da forma necessária ao uso de forma utilizável.

Obs. Todos os exemplos podem ser compilados e


gravados no CLP.

1O. comando: $BAUD e $CRYSTAL


Para escolher a velocidade de transmissão e CLOCK do
CLP independente do DEFAULT original.
Sintaxe: $BAUD = variável.
$CRYSTAL = variável.

Obs. Quando colocamos um apostrofo (‘) no início da linha de


programa, a linha fica somente como comentário de
programa, não sendo compilada.

EXEMPLO PROGRAMA 1

Quando tiver sinal na entrada E1, a saída S1 ficará


piscando em intervalos de 2 segundos.

‘ programa exemplo_led piscando declarações.


‘ DECLARAÇÕES
config portb = input ‘ port B = entrada.
config portd = input ‘ input D = entrada.
portb = 0 ‘ pinos do porto B estão em baixa.
portd = 255 ‘ pinos do porto D estão em alta.
declare sub sair ( )
declare sub ler() ‘ sub-rotina.
$baud = 1200
$crystal = 10000000 ‘ 10 MHz
dim E1 as byte
‘ ROTINAS DO PROGRAMA
do
ler
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 63
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

if E1 = 0 then
portb.0 = 1
sair
wait 2
else
portb.0 = 0
sair
wait 2
end if
loop

sub sair()
portd.6 = 0
waitms 10
port.6 = 1
waitms 10
end sub
return

sub ler()
portb = 255
portd.5 = 1
E1 = pind.5
Portd.5 = 0
Portb = 0
End sub
return

Neste primeiro exemplo vemos as sub rotinas sub sair() e


sub ler(). Estas rotinas são deveras importante na utilização
do CLP-NT, pois elas controlam o estado do controlador de
Entrada/Saída.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 64
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

2O. comando: ALIAS


Indica uma variável a um pino.
Sintaxe: variável alias pino.

EXEMPLO PROGRAMA 2

Fazer uma lógica E com duas entradas E1, E2 e saída


S1.

‘ programa exemplo_porta E de 2 entradas.


‘ DECLARAÇÕES
config portb = input
config portd = input
portb = 0
portd = 255
declare sub sair ( )
dim E as byte
‘ ROTINAS DO PROGRAMA
do
E1 alias portd.2
E2 alias portd.3
E = E1 and E2
Portb.0 = E
Sair
loop

sub sair ( ) ‘ rotina para dar


portd.6 = 0 ‘ um pulso no
waitms 10 ‘ porto D6 para
portd.6 = 1 ‘ ativar a saída
end sub
return ‘ S1 = B0
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 65
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

3O. comando: ABS ( )


Retorna o valor absoluto de um valor numérico.
Sintaxe: VAR = ABS (var2)
Onde VAR = BYTE, INTEGER, WORD, LONG
VAR 2 = INTEGER, LONG

Obs. O comando “print” manda os dados para a saída


serial do CLP NT.
Utilizaremos um pequeno software, para receber as
informações do CLP no PC, leia a última página.

EXEMPLO PROGRAMA 3

dim A as integer ‘ declaração


dim C as integer ‘ declaração
open “ comd.1:1200,8,n,1,inverted” for output as #1
portd = 0
portb = 0
portd.6 = 1
waitms 10
portd = 0
A =-8
C = abs(A)
Print #1 , C
Wait 2
Loop
end
Chame o programa Terminal
(80) e escolha 1200baud e Hex e
conectar o terminal na serial
do computador.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 66
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

4O. comando: ASC


Converte um valor STRING em um valor ASCII.
Sintaxe: VAR = ASC (STRING)
Onde VAR = BYTE, INTEGER, WORD, LONG
STRING = STRING, CONSTANT

EXEMPLO PROGRAMA 4

dim A as byte
dim C as string *10 ‘ 10 dígitos alfanuméricos
open “comd.1:1200,8,n,1,inverted” for output as #1
portb = 0
portd = 0
portd.6 = 1
waitms 10
portd = 0
do
A = “ABC”
C = abs(A) (BB) (C0) (02)
print #1 , C
wait 2
loop programa Terminal, escolha
end 1200 baud e hex

5O. comando: BCD


Converte a variável em STRING
Sintaxe: PRINT BCD (VAR)
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 67
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

LCD BCD (VAR)


Onde VAR = BYTE, INTEGER, WORD, LONG, CONSTANT

6O. comando: CHR


Converte uma variável ou uma constante em caracter
Sintaxe: PRINT CHR (VAR)
Onde S = CHR (VAR)

EXEMPLO PROGRAMA 6 - Generico

dim A as byte
A = 65
Print CHR (a)
End

7O. comando: CONFIG INTX


Configura interrupção.
O CLP NT tem 2 interrupções, que podemos usar como
contador rápido, calcular velocidade, freqüência, tempo de
subida, tempo de descida.

Sintaxe: CONFIG INT X = ESTADO


Onde ESTADO = RISING
FALLING

RISING – Gerar uma interrupção quando o pino estiver ativo


FALLING – Gerar uma interrupção quando o pino, ativo, for
desativado.

X = 0 ou 1.
O Valor de X pode ser 0 ou 1, definindo a interrupção a ser
utilizada.

EXEMPLO PROGRAMA 7
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 68
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

O programa calculará o tempo de rotação de uma


máquina, se maior que 100, desligar a máquina.

Micro ou sensor
Eixo da máquina disco

E1 = D2 entrada de sinal do micro


S1 = saída para desligar o motor

‘ DECLARAÇÕES
config int0 = rising O fator prescaler = 64 serve
config timer1 = timer , prescaler = 64 para definir o tempo de
portb = 0 ativação do timer.
Toda vez que se passarem
portd = 255 64ms a rotina timer_isr
config portd = input será executada.
dim velocidade as Word
dim tempo as Word
declare sub sair()

on timer1 timer_isr
on int0 int0_isr
enable timer1
enable int0
enable interrupts
start timer 1
do
if velocidade > 100 then
portb.0 = 0
sair
else
portb.0 = 1
sair
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 69
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

end if
wait 2
loop

sub sair()
portd.6 = 0
waitms 10
portd.6 = 1
waitms 10
end sub
return

int0_isr:
velocidade = velocidade + 1
if tempo > 100 then
tempo = 0
end if
return

timer1_isr:
tempo = tempo + 1
if tempo > 1000 then
tempo = 0
end if
return

Obs: as sub rotinas é uma constante em muitos programas


do CLP, como as sub rotinas de SAIR, LER e interrupições.

Veremos mais à frente o modo de se trabalhar melhor com os


timers do CLP.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 70
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

micro

9º DIA – CONTINUAÇÃO DOS COMANDOS


JUNTOS
a
9 . PRÁTICA

8O. comando: CONFIG TIMER0


Configura o temporizador ou contador0.
Sintaxe: CONFIG TIMER0 = COUNTER, EDGE
CONFIG TIMER0 = TIMER 0, PRESCALE = 1, 8, 64, 256,
1024
EDGE = RISING/FALLING

VER EXEMPLO ANTERIOR


CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 71
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

9O. comando: CONFIG TIMER1


Configura o temporizador ou contador 1.
Sintaxe:
CONFIG TIMER1 = COUNTER, EDGE = RISING/FALLING,
NOICE CANCEL = I/O,
CAPTURE EDGE = RISING/FALLING,
CONFIG TIMER1 = TIMER, PRESCALE = 1, 8, 64, 254, 1024
CONFIG TIMER1 = PWM, PWM = 8,
COMPARE A PWM = CLEAR UP/CLEAR
DOWN/DISCONNECT, COMPARE B PWM = (SEE A)

Obs.

EDGE: selecionar para contra em alto ou baixo.

CAPTURE EDGE: captura o tempo de uma entrada de


registro em alto ou baixo.

NOICE CANCELING: para cancelar ruído você pode


providenciar valor1.

PRESCALE: o time é conectado a um sistema de clock,


seleciona um divisor de clock com os parâmetros de valores
1, 8, 64, 256, 1024.

O time pode ser usado no modo PWM. Este modo tem a


função de gerar pulsos modulados. Este modo é deveras
importante para controles transistorizados de motores CC por
exemplo.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 72
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

10O. comando: CONFIG WATCHDOG

Programa tempo para verificar travamento do programa.

Sintaxe: CONFIG WATCHDOG = TIME


TIM = mili-segundos = 16, 32,64,128,256,512,1024 e 2048
resetando o programa após esse tempo, caso o programa
não recomece.

EXEMPLO PROGRAMA 10

“declarações
portb = 0
portd = 255
config watchdog = 2048 ‘ 2 seg ≈
start watchdog ‘ início watchdog
dim I as word ‘ I = constant
declare sub sair()
portb.0 = 1
sair
wait 2
for I = 1 to 10000
waitms 1
portb.0 = 0
next
end
sub sair()
portd.6 = 0
waitms 10
portd.6 = 1
waitms 10
end sub
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 73
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

return

Obs. O programa nunca chegará a contagem de I = 10000,


porque estrapolará o tempo de 2,048 seg, resetando o
programa.

11O. comando: CONFIG PORT


Configura o porto ou o pino.
Sintaxe: CONFIG PORT X = STATE
CONFIG PINO Y = STATE
STATE INPUT – direciona os dados para entrada.
OUTPUT – direciona os dados para saída.

EXEMPLO PROGRAMA 11

Programa de alarme residencial, usando 8 entradas, 1


botão de rearme alarme, 1 botão de desliga sirene, 1 saída
para ligar uma lâmpada de sinalização e uma saída para ligar
a sirene. As 8 entradas são micros ou sensores instalados em
janelas e portas.

‘ DECLARAÇÕES
config portb = input
config portd = input
portb = 0
portd = 255
portd.5 = 0
dim E1 as byte, E2 as byte, E3 as byte, E4 as byte
dim E5 as byte, E6 as byte, E7 as byte, E8 as byte
dim E9 as byte, E10 as byte, A as byte
declare sub ler()
declare sub sair()

‘ ROTINAS DO PROGRAMA
do
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 74
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

ler
if A = 0 then
if E3=0 or E4=0 or E5=0 or E6=0 or E7=0 or E8=0 or
E9=0 or E10=0
portb.0 = 1
portb.1 = 1
A=1
Sair
Wait 1
End if
End if

If A = 1 and E2 = 0 then
Portb.1 = 0
Portb.0 = 0
Sair
Wait 1
End if

If A = 1 and E1 = 0 then
Portb = 0
Sair
A=0
Wait 4
End if
Loop
Sub sair()
Portd.6 = 0
Waitms 10
Portd.6 = 1
Waitms 10
End sub
Return
Sub ler()
Portb = 255
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 75
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Portd.5 = 1
Waitms 10
E1 = pind.2
E2 = pind.3
E3 = pinb.0
E4 = pinb.1
E5 = pinb.2
E6 = pinb.3
E7 = pinb.4
E8 = pinb.5
E9 = pinb.6
E10 = pinb.7
Portb = 0
Portd.5 = 0
End sub
return
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 76
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

220
Vca

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

Botões Micros
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 77
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

12O. comando: CPEEK


Retorna um byte armazenado em código de memória.
Sintaxe: VAR = CPEEK

EXEMPLO PROGRAMA 12 - Generico

dim I as integer, B1 as byte


for I = 0 to 31 para I = 0 ate 31
b1 = cpeek (I)
print hex (b1); “ “ ;
wait 1
next
end

13O. comando: DEBOUNCE


Para ler o resultado de uma entrada do CLP conectado a
uma chave.
Sintaxe: DEBOUNCE Px, y, STATE, LABEL [,SUB]
Px,y = ex. Pinb.0
STATE = SE O PINO ESTA ALTO OU BAIXO
LABEL = especifica o próximo estado do pino.

EXEMPLO PROGRAMA 13 - Generico

config debounce = 30 ‘ espera de 25 ms


declare sub PC ( )
debounce port.0, 0, pc, sub
wait 1
pc ( )
print “port.0”
return
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 78
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

14O. comando: DECR


Decrementa a variável de 1 unidade.
Sintaxe: DECR (VARIÁVEL)
VAR = BYTE, INTEGER, WORD, LONG, SINGLE

EXEMPLO PROGRAMA 14 - Genérico


‘ programa exemplo decremento
dim A as byte
A=5
decr A
print A
end

15O. comando: DECLARE FUNCTION


Descrimina o uso da função.
Sintaxe: DECLARE (FUNÇÃO), (TIPO FUNÇÃO)

16O. comando: DECLARE SUB


Descrimina sub-rotina.
Sintaxe: DECLARE (Nº SUB-ROTINA)

EXEMPLO PROGRAMA 16
Exemplos anteriores

17O. comando: DELAY


Executa o programa em menor tempo.
Sintaxe: DELAY

EXEMPLO PROGRAMA 17
‘ programa para escrever 5 em binário
‘ na saída
declare sub sair()
portb = 0
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 79
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

portd = 255
portd.5 = 0
do
portb = 0
sair
wait 4
delay
portb = 1
sair
wait 4
delay
loop
sub sair()
portd.6 = 0
waitms 10
portd.6 = 1
waitms 10
end sub
return

18O. comando: DIM


Para dimensionar uma variável.
Sintaxe: DIM (VARIÁVEL) AS (TIPO)

EXEMPLOS ANTERIORES

19O. comando: CONST


Para declarar constantes.
Sintaxe: CONST (NOME)

EXEMPLO PROGRAMA 19 – Genérico


const a = 5
const b = 20
watms a
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 80
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

print chr (b)


end

10º DIA – CONTINUAÇÃO DOS COMANDOS


JUNTOS
10a. PRÁTICA

20O. comando: DISABLE


Para desabilitar interrupções.
Sintaxe: DISABLE (INTERRUPÇÃO)
INTERRUPÇÕES:
INT0 – interrupção externa 0 – E1
INT1 – interrupção externa 1 – E2
0VF0, TIMER0, COUNTER0 – clock independente 0
0VF1, TIMER1, COUNTER1 – clock independente 1
CAPTURE1, ICP1 – captura de clock externo
COMPARE1A, 0C1A – compara timer 1A externo
COMPARE1B, 0C1B – compara timer 1B externo
SPI – interruptor SPI
URXC – sinal serial RX do CLP
UTXC – sinal serial TX do CLP
UDRE – sinal de dados em registro
SERIAL – desabilita URXC, UTXC E UDRE
ACI – interrupção sinal comparador
ADC – converter A/D

O programa abaixo é parte do código de um protocolo de


transmissão:

...

On Urxc Recebe_dados_modbus
Enable Urxc
Enable Interrupts
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 81
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Portd = 255
Portb = 0

Main_loop:

Waitms 100
Portb = 0
Sair

Enable Serial
Reset A
Reset Udr.3
Reset Udr.4

Processa = 0
Observe aqui o comando Disable
Do Serial. Sua finalidade é a de
If Processa = 1 Then desabilitar temporariamente o
recebimento de dados, e dar
Disable Serial continuidade ao processamento
Portb.1 = 1 de dados. Se não houvesse esse
Sair desabilitamento, o programa
nunca iria ter tempo de enviar
Waitms 50 os dados requisitados!
Goto Processa_dados
End If
Portb = 0
Sair

Loop

...
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 82
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

21O. comando: DO-LOOP


Para as seguintes instruções sempre faça.
Sintaxe: DO
Comandos
LOOP (UNTIL – CONDIÇÃO)

EXEMPLO PROGRAMA 21
‘ programa pisca led
dim E1 as byte
declare sub ler()
declare sub sair ( )
portb = 0
portd = 255
dim a as byte

do
ler
If E1 = 0 then
portb.0 = 1 ‘ led pisca, enquanto
sair ‘ E1 estiver acionada
wait 4
portb.0 = 0
sair
end if
loop
sub ler()
portb =255
portd.5 = 1
waitms 10
E1 = pind.2
Portb = 0
Potd.5 = 0
End sub
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 83
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Return
Sub sair()
Portd.6 = 0
Waitms 10
Portd.6 =1
Portb = 0
End sub
return

2 pilhas
Lâmpada de lanterna 3Volts
220
Vca

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

22O. comando: IF_THEN_ELSE


Se a instrução for verdadeira fará isso, senão fará aquilo.
Sintaxe:
If (condição) then (instrução)
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 84
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

else (senão – instrução)


end if

EXEMPLO PROGRAMA 22 – Genérico

dim b as byte
dim a as byte
b = 10
a = 10
If a > 10 then
print chr (a)
else
print chr (b)
end if

23O. comando: ENABLE


Liga (habilita) uma interrupção.
Sintaxe: ENABLE (INTERRUPÇÃO)

EXEMPLO PROGRAMA 23 - Generico


Genérico
enable interrupts ‘ habilita todas interrupções
enable timer1 ‘ habilita timer1

24O. comando: END


Para terminar o programa em execução.
Sintaxe: END

EXEMPLO PROGRAMA 24
‘ programa para ligar seis saídas
‘ em seqüência com intervalo de segundos
declare sub sair ( )
portb = 0
portd = 255
do
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 85
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

portb = 0
wait 4
portb.0 = 1
sair
wait 4
portb.0 = 1
sair
wait 4
portb.1 = 1
sair
wait 4
portb.2 = 1
sair
wait 4
portb.3 = 1
sair
wait 4
portb.4 = 1
sair
wait 4
portb.5 = 1
sair
loop
end

sub sair
portd.6 = 0
waitms 10
portd.6 = 1
waitms 10
end sub
return

25O. comando: EXIT


Para sair a qualquer momento de uma estrutura.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 86
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Sintaxe:
EXIT FOR
EXIT DO
EXIT WHILE
EXIT SUB
EXIT FUNCTION

EXEMPLO PROGRAMA 25- Generico


Genérico
If a >= b1 then
do
a=a+1
If a=100 then
Exit do ‘ sai do DO
end if
loop
end if

Obs. É necessário relembrar a estrutura interna do CLP.


PORTB
ENTRADAS RÁPIDAS
portB.0
portD.2 – E1
portB.1
portD.3 – E2
portB.2
são independentes
portB.3
portB.4
portB.5
ENTRADAS DIGITAIS
portB.6
portB.0 – E3
portB.7
portB.1 – E4
PORTD portB.2 – E5
portD.2 portB.3 – E6
portD.3 portB.4 – E7
portD.4 portB.5 – E8
portD.5 portB.6 – E9
portD.6 portB.7- E10
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 87
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

portB.2 – S3
SAÍDAS A RELÉ portB.3 – S4
portB.0 – S1 portB.4 – S5
portB.1 – S2 portB.5 – S6

SAÍDA DIGITAL
portD.4 – S7
DB_____ 7

SAÍDA SERIAL RS 232


portD.0 – RX – DB – verificar
portD.1 – TX – DB – verificar
sinal 0volts – DB – verificar

Obs. Para ler os sinais das entradas é necessário que


coloquemos:
portB = 255
portD.5 = 1

Obs. Para habilitar as saídas é necessário dar um pulso no


portD.6 como nos exemplos do sub-rotina sair:

Sub sair ( )
portd.6 = 0
waitms 10
portd.6 = 1
end sub

5 volts
0 volts
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 88
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

11º DIA – CONTINUAÇÃO DOS COMANDOS


JUNTOS
a
11 . PRÁTICA

26O. comando: FOR NEXT


Executa um bloco de instruções dentro de uma
contagem
Sintaxe: for (var = start) to/downto
end (step-valor)
Step = pulos ou multiplicador na contagem

EXEMPLO PROGRAMA 26 - Generico


‘ programa de contagem de 1 a 10
‘ de 2 em 2
dim a as byte
for a = 1 to 10 step 2
print chr (a)
next
wait 1
end
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 89
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

27O. comando: GOSUB


Encaminha para uma sub-rotina.
Sintaxe: gosub (rotina)

EXEMPLO PROGRAMA 27
Controle de compressor e descarga do mesmo.
serpentina

MOTOR D0 BALÃO
COMPRESSOR COMPRESSOR P
DE
AR

P = pressostato descarga
QUADRO DE COMANDO
ou dreno
E1 – TÉRMICO
T E2 – PRESSOSTATO
E3 – LIGA
TÉRMICO MOTOR SIRENE E4 – DESLIGA
S1 – LIGA MOTOR
S2 – LIGA DRENO
S3 – LIGA SIRENE
LIGA DESLIGA

‘ programa para controle de compressor

dim A as byte, E1 as byte, E2 as byte, E3 as byte


dim E4 as byte, dim B as byte
dim segurança as word
dim descarga as Word
declare sub ler ( )
declare sub sair ( )
declare sub ligar ( )
declare sub desligar ( )
declare sub segur ( )
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 90
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

config timer1 = timer, prescale = 64


on timer1 timer1_isr
enable timer1
enable interrupts
start timer 1
portb = 0
portd = 255

do
gosub ler
If E1 = 1
gosub desliga
end if
If E1 = 1 and A = 1 then
gosub segur
end if
If E1 = 0 and E3 = 0 then
gosub ligar
A=1
end if
If E1 = 0 and E4 = 0 then
gosub desligar
A=0
end if
If segurança > 60 then
gosub segur
end if
If descarga > 950 then
gosub descar
end if
If E2 = 0 then segurança = 0
end if
goto
sub sair ( )
portd.6 = 1
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 91
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

waitms 10
portd.6 = 1
portb = 0
sub sair
return

sub ler ( )
portd = 255
portd.5 = 1
E1 = portd.2
E2 = portd.3
E3 = portb.0
E4 = portb.1
portb = 0
portd.5 = 0
end sub
return

sub desliga ( )
portb = 0
A=0
gosub sair
end sub
return

sub liga ( )
portb.0 = 1
gosub sair
portb = 0
end sub
return

sub segur( )
portb.2 = 1
gosub sair
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 92
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

A=0
segurança = 0
end sub
return

sub descar
If descarga > 950 and a = 1 then
portb.1 = 1
gosub sair
wait 3
portb = 0
gosub sair
else
descarga = 0
end if
end sub
return

timer1_isr:
B=B+1
descarga = descarga + 1
If B = 950 then
segurança = segurança + 1
B=0
end if
return
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 93
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

2º contato do pressostato
220 C1 – contactor para
Vca ligar motor
D – bobina do dreno
C1 D S S - sirene

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10
E1 – TÉRMICO
E2 – PRESOSTATO
E4 – LIGA
E5 – DESLIGA
Obs. A válvula do dreno acionará com intervalo de 15 min /
3seg e a segurança verificará o intervalo máximo do
pressostato para desligar o compressor.

28O. comando: GOTO


Vai para uma rotina especificada.
Sintaxe: goto (nome rotina)

EXEMPLO PROGRAMA 28 - Generico


Genérico
Início:
a=a+1
If a< 10 then
goto início
end if
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 94
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

end

29O. comando: HEX


Muda o valor de um string em hexadecimal.
Sintaxe: variável = hex (x)

EXEMPLO PROGRAMA 29 – Genérico

dim a as byte, s as string * 10


a = 123
s = hex (a)
print chr (s)
end

30O. comando: HEXVAL


Converte uma string de valor hexadecimal em um valor
numérico.
Sintaxe: variável = hexval (x)

EXEMPLO PROGRAMA 30 – genérico

dim a as integer, s as string * 15


s = “c”
a = hexval (s)
print chr (a)
end

31O. comando: HIGH


Reaver o bit mais significativo de uma variável.
Sintaxe: variável = high (s)

EXEMPLO PROGRAMA 31 – genérico

dim i as integer, z as byte


i = &h1001
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 95
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

z = high (i)
print chr (z)
end

32O. comando: IF_THEN_ELSE_END IF


Dependendo se a condição for verdadeira ou falsa irá
fazer um bloco de instruções.

EXEMPLO PROGRAMA 32 - generico


dim a as integer
a = 10
If a = 10 then
print chr (a)
else
a = 20
print chr (a)
end if
end

33O. comando: INCR


Incrementa uma variável de cada vez
Sintaxe: incr (variável)

EXEMPLO PROGRAMA 33 - generico


Genérico
do
incr a
print chr (a)
loop until a >4
end

1 2 3 4
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 96
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

12º DIA – CONTINUAÇÃO DOS COMANDOS


JUNTOS
a
12 . PRÁTICA

34O. comando: INPUT


Comando usado para dar entrada de dados durante a
execução do programa.
Sintaxe: input (“prompt”), variável

EXEMPLO PROGRAMA 34 - Genérico


Genérico
config portb = input

35O. comando: LEFT


Especifica o número a esquerda do caractere.
Sintaxe: variável = high (s)

EXEMPLO PROGRAMA 35 – Genérico

dim s as string * 10, z as string * 10


s = “abcdefg”
z = left (s,5)
print chr (z)
end
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 97
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

36O. comando: LEN


Comprimento de uma string (254 máximo).
Sintaxe: variável = len (string)

EXEMPLO PROGRAMA 36 – genérico

dim s as string * 12
dim a as byte
s = “teste”
a = len (s)
print chr (a)

37O. comando: LOW


Busca o byte menos significativo tido de uma variável.
Sintaxe: variável = low (s)

EXEMPLO PROGRAMA 37- Genérico

dim i as integer, z as byte


i = &h1001
z = low (i)
print chr (z)
end

1
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 98
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

38O. comando: MAKEBCD


Converte a variável a um valor BCD.
Sintaxe: variável1 = makebcd (variável2)

Obs. Que é valor BCD ? É a substituição de cada valor


decimal em um byte, ex:
132 – valor decimal
onde:
1 = 0001 (binário)
3 = 0011 (binário)
2 = 0010 (binário)
132 decimal convertido em BCD = 0001 0011 0010

EXEMPLO PROGRAMA 38 – Genérico

dim a as byte
a = 65
a = makebcd (a)
print chr (a)
end

0110 0101

39O. comando: MAKEDEC


Converte valores BCD em decimal.
Sintaxe: variável1 = makedec (variável2)
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 99
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

40O. comando: ON INTERRUPT


Executa uma sub-rotina especificada por uma
interrupção E1_pind.2 e E2_pwd.3 no CLP

Este comando também pode ser estendido para


interrupções de RS232, Timers, etc.

INT0, INT1, INT2, INT3, INT4, INT5, TIMER0, TIMER1,


TIMER2, ADC, EEPROM, CAPTURE1, CAPTURE2,
COMPARE1A, COMPARE1, COMPARE1C. Cada um desses
tipos de interrupção é utilizado dependendo do processador
do CLP.
Os nomes mais utilizados no compilador são:
OC1, OVF2, ICP1, OC1A, OC1B, OVF1, OVF0, SPI,
URXC, UDRE, UTXC, ADCC, ERDY e ACI.

Podemos, utilizando a interupção URXC, por exemplo,


fazer com que o CLP responda, ao enviarmos um sinal de
requisição do estado dele.

EXEMPLO PROGRAMA 40
‘ programa exemplo
‘ fica piscando o led
‘ até detectar uma interrupção em E1

portb = 0 Observe o comando ON INT0 NOVO


portd =255 NOSAVE. O NOVO, refere-se à sub-rotina
declare sub novo que será executada quando a interrupção
correspondente a entrada E1 for ativa. O
declare sub sair( ) NOSAVE refere-se ao NÃO salvamento das
enable interrupts variáveis utilizadas pela microprocessador.
enable int0 (SREG, R31, R16 e R11 à R0 não são salvos).
RECOMENDA-SE sempre salvar estes
on int0 novo nosave registradores (removendo este NOSAVE).
do
portb.0 = 1
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 100
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

sair
wait 2
portb.0 = 0
sair
wait 2
loop

novo:
portb.1 = 1
sair
wait 3
portb.1 = 0
sair wait 3
return

sub sair ( )
portd.6 = 0
waitms 10
portd.0 = 1
portb = 0
end sub
return
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 101
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

220
Vca

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

41O. comando: ON VALUE


Especifica a partir de um valor para qual sub-rotina deve
ir.
Sintaxe : on (variável) goto/gosub (rotina), (rotina)

EXEMPLO PROGRAMA 41- Genérico


Genérico
x=2
on x gosub prim, seg, ter
‘ ......................0......1.....2
x=0
on x gosub prim, seg, ter
end

seg:
print chr (x)
return
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 102
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

prim:
ter:
print chr (x)
return

42O. comando: PRINT


Envia os dados para a saída RS 232 do CLP.
Sintaxe : print (tipo de variável); “variável”

EXEMPLO PROGRAMA 42
‘demo print
portb = 0
portd = 255
dim A as byte, B1 as byte, C as integer
open “comd.1:1200,8,n,1,inverted” for output as #1

do
A=1
print #1 , A
wait 1
print #1
wait2
B1 = 10
Print #1, hex (b1) ‘verificar no programa Terminal.exe
C = &ha000 ‘escolher 1200Baumd e hex
Print #1, hex (c)
loop
end
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 103
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

43O. comando: PRINT BIN


Envia para serial, valores binários.
Sintaxe : input bin variável (variável)

EXEMPLO PROGRAMA 43 - Genérico


dim a (10) as byte, c as byte
for c = 1 to 10
a (c) = a
next
print bin a (1)
end

13º DIA – CONTINUAÇÃO DOS COMANDOS


JUNTOS
a
13 . PRÁTICA

44O. comando: RESET


Leva o valor do bit ou variável.
Sintaxe : input bin variável (variável)

EXEMPLO PROGRAMA 44- Genérico

dim b1 as bit, b2 as byte


dim i as integer
reset portb.3
reset b1
reset b2.0
reset i.15
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 104
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

45O. comando: RETURN


Retorno de uma sub-rotina.
Sintaxe : return

EXEMPLO PROGRAMA 45
‘ chave estrela triângulo com proteção
‘ da passagem de estrela para triângulo
dim A as byte
dim E3 as byte, E6 as byte, E4 as byte, E5 as byte
declare sub sair
declare sub ler
declare sub liga
declare sub desliga
declare sub alarme
portb = 0
portd = 255
A=0
do
ler
If E6 = 0 and E5 = 0 then
If E3 = 0 and E4 = 1 and A = 0 then
liga
end if
If E3 = 1 and E4 = 0 then
desliga
end if
If E6 = 0 and E5 = 0 then
liga
else
desliga
alarme
end if
else
desliga
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 105
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

alarme
end if
loop
sub liga ( )
portb = 0
portb.0 = 1
portb.1 = 1
sair
wait 15
portb.1 = 0
wait 1
ler
if E5 = 1 then
desliga
alarme
else
portb = 0
portb.0 = 1
portb.2 = 1
sair
A=1
End if
return
sub sair ( )
portd.6 = 0
waitms 10
portd.6 = 1
end sub
return
sub ler( )
portb = 255
portd.5 = 1
portb = 255
E3 = pinb.0
E4 = pinb.1
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 106
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

E5 = pinb.2
E6 = pinb.3
portb = 0
portd.5 = 0
end sub
return
sub desliga( )
portb = 0
sair
A=0
end sub
return
sub alarme( )
portb.3 = 1
sair
end sub
return
220
Vca
C1 C2 C3

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

L D C2 TÉRMICO
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 107
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

PAINEL

ERRO

L D

Ao acionar a botoeira L (liga), e o térmico estiver ok e C2


D
estiver desligado, liga C1 e C2, espera 15 segundos, desliga
C2, espera C2 desligar, ligando C3.
C1 C2
R

C3
46O. comando: RIGHT
Especifica os caracteres à direita de um string.
Sintaxe : variável = right (var1, st)

EXEMPLO PROGRAMA 46 - Genérico


dim s as string * 15, z as string * 15
s = “abcdefg”
z = right (s,2)
print z
end
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 108
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

47O. comando: SELECT_CASE_END SELECT


Executa de uma vez vários blocos.
Sintaxe : select case (variável)

EXEMPLO PROGRAMA 47- Genérico


Genérico
dim a as byte, b as byte, c as byte
do
do
c=0
a=a+1
b=a*2
select case A
case 1 : c = b
case 2 : c = b
case 3 : c = b
end select
print chr (c)
wait 1
If b >= 3 then exit do
goto
a=0
loop

48O. comando: SET


Coloca em uma unidade uma variável.
Sintaxe : set bit
Set variável.x

EXEMPLO PROGRAMA 48 – Genérico

dim b1 as byte, b2 as byte


dim c as word, l as long
set b.1
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 109
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

set b2.1
set c.15
set l.31
end

49O. comando: SPIIN, SPIINIT


Spiin - Lê as entradas do CLP.
Spiinit – Lê da direita para esquerda.
Sintaxe : spiinit
spiin ( variável, bytes)

EXEMPLO PROGRAMA 49- Genérico


dim a(10) as byte
config spi = soft
varia1 = pinb.0
varia2 = pinb.1
varia3 = pinb.2
varia4 = pinb.3
spiinit
spiin a(1), 4
end

50O. comando: SPIOUT


Leva a saída uma variável.
Sintaxe : spiout (variável, bytes)

EXEMPLO PROGRAMA 50
Genérico
config spi = soft
din1 = pind.5
din2 = portd.7
din3 = p1.2
din4 = portd.3
spiinit
dim a(10) as byte, x as byte
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 110
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

spiout a(1), 5
spiout x, 1
end

51O. comando: STOP / START


Stop – para parar uma interrupção.
Start – inicia uma interrupção.
Sintaxe : start (interrupção)
stop (interrupção)

EXEMPLO PROGRAMA 51- Genérico

config timer1 = timer, prescale = 64


enable timer1
start timer1

52O. comando: STR


Transforma o número em um string.
Sintaxe : variável = str (x)

EXEMPLO PROGRAMA 52- Genérico


dim a as byte, s as string * 10
a = 123
s = str (a)
print s
end

123
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 111
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

53O. comando: STRING


Transforma um string com repetição em caracteres
ASCII
Obs. Caracteres ASCII são códigos onde dois números
representam um caractere alfanumérico.
Ex. 65 = a
Sintaxe : variável = string (m,n)

EXEMPLO PROGRAMA 53- Genérico

dim s as string * 15
s = string (5,65)
print s
end

54O. comando: SUB


Define um procedimento de uma sub-rotina.
Sintaxe : sub name (variável1)

EXEMPLO PROGRAMA 54-Genérico

declare sub zerar ( )


sub zerar ( )
portb = 0
end sub
return

55O. comando: SWAP


Troca o valor de duas variáveis.
Sintaxe : swap (variável1, variável2)
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 112
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

EXEMPLO PROGRAMA 55-Generico

dim a as integer, b1 as integer


a = 1 : b1 = 2
print a; b1
swap a, b1
print a; b1
end

1 2
2 1

14º DIA – CONTINUAÇÃO DOS COMANDOS


JUNTOS
a
14 . PRÁTICA

56O. comando: VAL


Converte um string representado por um número em um
número decimal.
Sintaxe : valor = val (s)

EXEMPLO PROGRAMA 56- Genérico

dim a as byte, s as string * 10


s = “123”
a = val (s)
print a
end

123
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 113
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

57O. comando: WAIT


Suspende o programa em segundos.
Sintaxe : wait segundo

EXEMPLO PROGRAMA 57- Genérico


dim a as byte
a=4
do
wait 3
print a
b=b+1
If b > 4 then
b=0
exit do
end if
loop

58O. comando: WAITKEY


Espera até um caractere na serial
Sintaxe : valor = waitkey

EXEMPLO PROGRAMA 58
Genérico
dim a as byte
a = waitkey ( )
print a

( valor recebido)
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 114
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

59O. comando: WAITMS


Suspende o programa em mili-segundos.
Sintaxe : waitms ms

EXEMPLO PROGRAMA 59

Genérico
waitms 10
print “ * ”

60O. comando: WAITUS

Suspende o programa em micro-segundos.


Sintaxe : waitus (microsegundos)

EXEMPLO PROGRAMA 60
Genérico
waitus 100
print “ * ”
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 115
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

61O. comando: WHILE-WEND


Faça enquanto.
Sintaxe : WHILE <condições>
<instruções>
WEND

EXEMPLO PROGRAMA 61

Controle de nível da caixa d’água.


Caixa d’água

Bóia de mercúrio

E3

Bomba caixa d´água

S1
T2
T1
S2
Bóia de mercúrio
E4 bomba do
poço

poço
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 116
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

SINÓTIPO

LÂMPADA LIGADA
CAIXA CHEIA
OU MOTOR LIGADO

REARME E3

ALARME

ENTRADAS:

E3 – Bóia caixa d´água


E4 – Bóia cisterna
E5 – Rearme
E6 – Térmico T1
E7 – Térmico T2

SAÍDAS

S1 – Bomba poço
S2 – Bomba caixa
S3 – Cisterna cheia – sinaleiro
S4 – Caixa cheia – sinaleiro
S5 – Alarme
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 117
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Obs.
Se após 1 hora, a bomba não encher a cisterna, toca
alarme.
Se após 1 hora a bomba não encher a caixa, toca o
alarme.
S2 não liga, se nível da cisterna está baixo.

‘ declaração do programa
declare sub sair ( )
declare sub ler ( )
declare sub tempo ( )
declare sub alarme1 ( )
config portb = input
portb = o
portd = 255
dim E3 as byte, E4 as byte
dim E5 as byte, E6 as byte
dim E7 as byte, T1 as byte
dim T2 as byte, T3 as byte

do
ler
while E6 = 0 and E7 = 0 and T1 < 100 and T2 <100
If E3 = 0 and E4 = 0 then
Portb.2 = 1
Portb.3 = 1
sair
T1 = 0
T2 = 0
End If
If E3 =0 and E4 = 0 then
Portb.1 = 1
Portb.2 = 1
sair
T1 = 0
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 118
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

End If
If E3 = 1 and E4 = 0 then
Portb.0 = 1
Portb.3 = 1
sair
T2 = 0
End If
If E3 = 1 and E4 = 1 then
Portb = 0
sair
T1 = 0
T2 = 0
Alarme1
End If
tempo
ler
wend
T1 = 0
T2 = 0
While E5 = 1
Portb.4 = 1
Sair
Wait1
Portb = 0
Sair
Wait 1
ler
Wend
Loop

Sub tempo( )
T3 = T3 + 1
Wait 1
If T3 > 60 then
T1 = t1 + 1
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 119
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

T2 = t2 + 1
T3 = 0
End If
Return

Sub sair
Portd.6 = 0
Waitms 10
Portd = 1
Portb = 0
End sub
Return

Sub ler ( )
Portb = 255
Portd.5 = 1
E3 = pinb.0
E4 = pinb.1
E5 = pinb.2
E6 = pinb.3
E7 = pinb.4
Portb = 0
Portd.5 = 0
End sub
Return

Sub alarme 1 ( )
Portb.3 = 1
sair
end sub
return
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 120
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

OBS: os programas genéricos são pedaços de outros


programas , mais que você pode utiliza-los em seus próprios
programas

220
Vca
C1 C2 L1 L2 L3

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

L1 – caixa cheia
L2 – poço cheio
L3 – defeito
C1 – contactor motor caixa d´água
C2 – contactor motor poço
E3 – bóia caixa
E4 – bóia do poço
E5 – rearma
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 121
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Observação:

Exemplo: portb 0 1 0 0 1 0
S6 S5 S4 S3 S2 S1- Representa

Portb.6

Quando configuramos portb = 255 ou portd = 255


liberamos para leitura das entradas, juntamente com
portd.5 = 1 e portb.6 = 0.

15º DIA – CONTINUAÇÃO DOS COMANDOS


JUNTOS
a
15 . PRÁTICA

62O. Comando: RND


Gera um numero aleatório.
Sintaxe : variavel = RND

EXEMPLO PROGRAMA 62 - Generico

dim I as integer
do
I = RND (100)
print chr ( I )
wait 1
loop
end
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 122
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

63O. Comando: CHECKSUM


Retorna o valor de um string.
Sintaxe : b = checksum ( variável )
b = contagem dos bytes da variável string

EXEMPLO PROGRAMA 63 - genérico

dim s as string * 10
s = “ teste “
print checksum ( s )
end

64O. Comando: GETRC


Transfere o valor de um potenciômetro externo de valor
de 1000R para uma variável no CLP NT.
Sintaxe : variável = getrc ( pin,numero )

Obs.: deve-se conectar o fio vermelho da saída do cabo de


programação a um potenciômetro de 1000 R e o fio preto do
conector ao cursor do potenciômetro. O valor da variável
quando o potenciômetro estiver no valor mínimo estará em
torno de 200 e quando estiver com o valor maximo sera em
torno de 1.

EXEMPLO PROGRAMA 64
Controlar as saídas de S1 a S6 de acordo com a regulagem
do potenciômetro ligado a um balancim
Motor
Potenciômetro balancim
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 123
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Comando para controlar tensão de esteira de uma maquina .


Acionando a entrada de um inversor de freqüência para
manter a tensão da esteira constante , lendo a leitura do
potenciômetro .

220 Resistores de 2200 R


Vca

~ ~ + C S1 S2 S3 S4 S5 S6

preto
vermelho

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

Potenciômetro. 1000 R

Inversor
Motor -

+
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 124
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

‘declarações
dim p as Word
portb = 0
portd = 255
portd.4 = 0
declare sub sair ( )

do
p = getrc(pind , 4)
while p < 200 and p > 180
portb.0 = 1
sair
p = getrc(pind , 4)
wend
while p < 180 and p > 160
portb.1 = 1
sair
p = getrc(pind , 4)
wend
while p < 160 and p > 140
portb.2 = 1
sair
p = getrc(pind , 4)
wend
while p < 160 and p > 140
portb.2 = 1
sair
p = getrc(pind , 4)
wend
while p < 140 and p > 100
portb.3 = 1
sair
p = getrc(pind , 4)
wend
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 125
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

while p < 100 and p > 70


portb.4 = 1
sair
p = getrc(pind , 4)
wend
while p < 70
portb5 = 1
sair
p = getrc(pind , 4)
wend
loop

sub sair ( )
portd.6 = 0
waitms 10
portd = 1
portb = 0
end sub
return

Exemplo geral envolvendo todos os principais comandos

Programa de comunicação serial de no Maximo 100 CLPs


interligados via serial, mandando informações de velocidade
e pulsos das maquinas onde os CLPs estam instalados para
um computador.

Entrada E1 pegara informação de velocidade da maquina.


Entrada E2 pegara informações de produção da maquina.
As entradas de E3 a E9 servira para codificar o numero da
maquina.
A entrada E10 codificara a ultima maquina.
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 126
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

Maq. 100 --------------- Maq. 1


computador

comunicação
RS 232

CLP 100 CLP 1 PC


RX/ TX/GND

‘Declarações
open “comd.1:1200,8,n,1,inverted” for output #1
declare sub transmite ( )
declare sub atualiza ( )
declare sub guarda ( )
declare sub zerar ( )
‘ Configura interrupções
config int0 = rising
config int1 = rising
config timer1 = timer, prescale = 64
config portb = input
config portd = &B00000010
portb = 255
portd = 255
‘Configura variaveis
dim num as byte , x as byte , a_lin as byte
dim numero as byte , b as byte , c as Word
dim d as Word , e as byte , f as byte , g as byte
dim h as byte , b_lin as byte , c_lin as word
dim d_lin as word , e_lin as word
dim f_lin as word , g_lin as word
dim h_lin as word , Bb as byte , Cc as byte
dim Dd as byte , Ee as byte , Ff as byte
dim Gg as byte , Gg as byte , Hh as byte
master alias pinb.7
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 127
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

dim pos as byte , tempo as Word


dim pulso as Word , temlarg as Word
dim largura as word , veloc as word
‘Ativa interrupções
on urxc rec_isr
on timer timer1_isr
on int1 int_isr
on int0 int0_isr
enable urxc
enable timer1
enable int0
enable int1
enable interrupts
start timer1

do
if master = 1 then
num = pinb – 128
else
num = pinb
end if
numero = num

while master = 0 and x < c_lin


x=x+1
wait 1
atualiza
transmite
wend

while master = 1 and x < c_lin


tempo = 0
pos = 1
while pos < 9 and tempo < 10
wend
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 128
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

x=x+1
if tempo > 10 then
atualiza
transmite
end if
transmite
guarda
wend
x=0
atualiza
loop

sub guarda ( )
b = b_lin
c = c_lin
d = d_lin
e = e_lin
f = f_lin
g = g_lin
h = h_lin
end sub
return

sub atualiza ( )
b=x
c = numero
d = veloc
if pulso >= 1000 then
e=1
pulso = pulso – 1000
else
e=0
end if
f=0 ‘ reserva
g = 0 ‘ reserva
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 129
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

h = 0 ‘ reserva
end sub
return

sub transmite ( )
print #1, chr (254)
waitms 10
print #1,chr (x)
waitms 10
print #1,chr (c)
waitms 10
print #1,chr (d)
waitms 10
print #1,chr (e)
waitms 10
print #1,chr (f)
waitms 10
print #1,r (g)
waitms 10
print #1,chr (h)
waitms 10
end sub
return

rec_isr :
select case pos
case 1 : a_lin = udr
case 2 : b_lin = udr
case 3 : c_lin = udr
case 4 : d_lin = udr
case 5 : e_lin = udr
case 6 : f_lin = udr
case 7 : g_lin = udr
case 8 : h_lin = udr
end select
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 130
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

if a_lin = 254 then ‘apontador


pos = pos + 1
else
pos = 1
end if
return

timer1_isr:
tempo = tempo + 1
templarg = templarg + 1
return

int1_isr:
pulsos = pulsos + 1
return

int0_isr:
largura = largura + 1
if largura >= 10 then
veloc = templarg
templarg = 0
largura = 0
end if
return
CURSO DE LINGUAGEM DE PROGRAMAÇÃO DEDICADA A COMPILADOR PARA 131
MICROPROCESSADOR E CLP (JORGE AUGUSTO)

~ ~ + C S1 S2 S3 S4 S5 S6

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10
Exercício: faça as ligações...
Finalizações e observações gerais.

Você também pode gostar