[Música] Olá aqui professora Ademir bassanese se você é meu aluno aqui do curso de técnicas e métodos estruturados de programação de CLP seja bem-vindo então a mais essa aula mais de 180 aulas aqui no curso e você que está vendo essa aula pelo canal do YouTube seja bem-vindo seja bem-vinda né se inscreva no canal tem muito conteúdo gratuito no canal e essa aula eu tô gravando então justamente porque o Cláudio né deixou uma mensagem aqui no canal no YouTube né apaixonados por mecatrônica E ele disse assim sempre acompanhe seus vídeos mas como trabalhar com memória
no codex Não achei nenhum vídeo falando sobre o assunto então Cláudio eu vou responder aqui esse teu questionamento com esse vídeo né então eu vou falar sobre variáveis retentivas e variáveis permanentes né porque o CLP obviamente né ele tem memória ele tem a memória de programa e ele tem memória de dados e invariavelmente a gente para fazer o nosso programa A gente vai usar variáveis né a gente não vai fazer uma lógica só utilizando entradas e saídas sejam elas digitais lá analógicas eu vou precisar usar variáveis né E quando eu faço a declaração da variável
lá né se eu não indico para o CLP que ele é uma variável retentiva ou o que ela é uma variável permanente né quando eu desligo o CLP ela fica é uma memória ela fica na memória RAM né então quando eu desligar o CLP e ligar novamente essa variável vai ser o valor que tá nela vai ser perdido né ele vai ser Zerado ou ele vai ser inicializado com o valor na declaração ali então então só que aí eu tenho problemas né Então olha só por exemplo Digamos que eu tenha o valor de um temporizador
os sete Point ou PV né o valor corrente da temporização ou o valor de um contador né o 7 pote ou o próximo próprio valor de Contagem contei lá tô contando peças da minha máquina e já tá na 950 E aí cai a energia quando volta volta Zerado eu perdi aquele valor de Contagem eu quero armazenar isso quero que quando volte esse valor se mantenha né imagina vamos controlador peidei lá de temperatura ou de pressão ou de vazão né então eu gastei um tempão lá ajustando o valor né o proporcional integral derivativo e aí quando
cai energia volta ele volta zerada minha máquina volta parada eu tenho que entrar com todos os dados novamente né então eu vou explicar Então nesse vídeo como armazenar uma variável na entre aspas memória do CLP Relembrando um pouquinho aqui quando a gente fala de variáveis né Eu tenho dois tipos de variáveis as variáveis não em relação ao tipo da variável mas em relação à forma de dela trabalhar né então eu tenho as variáveis locais e as variáveis é globais as varadas locais elas só o Paul ou o Pou nessa unidade de programação que ela se
encontra é que é que vai entender essa variável E se eu declarar ela como uma variável Global lá no variei globalist né no Vl variabal globalista do vgl né aí sim eu vou conseguir fazer com que todos os povos do meu programa entendam essa variável como eu falei agora pouco no início né Essas variáveis sejam elas locais globais elas estão na memória RAM né E aí tem esse problema de você perder o valor as variáveis que eu quero que mantenham o valor Elas têm dois tipos as repentivas ou as permanentes Qual que é a diferença
delas tá vamos lá as repentivas elas mantém o valor quando o CLP ele é reinicializado e que é o reinicializado quando eu desligo e ligo novamente ele tira ele da tomada e liga de novo cai a energia e volta né então elas voltam porém imagina que eu tenho que fazer uma atualização uma manutençãozinha no código do programa Ah queimou uma saída do CLP lá e eu não vou poder trocar todo o módulo de saída eu vou eu tenho uma saída sobrando eu vou trocar o endereço de saída né a saída 5.0 foi para 5.1 E
aí eu vou lá trocar o endereço compilo e transfiro faço o download desse novo programa para o CLP aí uma variável que é recentiva eu vou perder o valor então ela não mantém o valor quando é feito um download tá E aí numa situação assim eu quero manter digamos assim né o meu set points lá todos e tal Então aí nesse caso eu vou fazer eu vou ter que declarar ela com uma variável permanente então variável permanente ela mantém o valor quando se lprinicializado e também quando é feito um download tá então esse essa é
a diferença desses dois tipos de variáveis a gente vai ver como é que a gente utiliza isso vamos lá então agora eu vou começar com a parte de declaração de uma variável repentiva como é que eu faço isso então eu fiz questão de deixar os desenhos o que tava no manual do codex né então eu posso declarar uma varava repetitiva dentro do Pou né de uma variável local ou dentro do gvl que é uma que é o globo vareibolist então aqui eu vou abrir né eu vou abrir a declaração com um var espaço retém tá
e vou declarar as minhas variáveis ali dentro né então aqui eu tenho o nome da variável e o tipo né o tipo de dado da variável tá então a declaração é igual tanto numa variável local num Pou ou como no gvl e aqui fica uma uma outra dica Olha só gente que bacana eu já vi isso muito com outros programas e tal né Porque que o pessoal olha só que bacana ele começa com a letra i minúscula e depois vem o nome da variável com o a letra maiúscula né esse I quer dizer o tipo
da variável que é ela é anti porque lá no meio do programa vai aparecer o nome da variável em algum lugar do programa que variável a essa que tipo de dado é esse aí eu tenho que voltar lá em cima da declaração para ver E aí na própria variável eu já indica que tipo de dado que é ó o minúsculo é se fosse um real seria um R minúsculo se fosse um Chery seria um C minúsculo E aí aqui ó se ela é Global tem um g na frente olha g de global underline então isso
aqui não é assunto aqui do vídeo mas eu aproveitei para mostrar tá essa outra dica então muito bem eu vou começar fazendo na prática usando aqui essa variável é repetitivo vamos lá então galera olha só eu vou usar o meu vou aplicar né Essa variável retentiva no meu último programa aqui na última aula que eu gravei Então vamos lá então eu vou fazer a declaração lá né então eu vou eu vou considerar aqui uma variável local onde eu tenho aqui a lista de nomes Deixa eu só mostrar para quem talvez não viu essa aula não
viu esse vídeo né eu tenho aqui uma lista de nomes é uma é uma rei né de 10 nomes ele quando eu clico no botão carregar ele inicializa alguns valores de nomes aleatoriamente e quando eu clicar no botão ordem alfabética ele vai colocar em ordem alfabética aqui esse nome tá então usando fora aqui eu vou deixar aqui nos cards aqui desse vídeo para quem tá no YouTube para você ver essa aula que é muito bacana eu vou compilar que ele e transferir para vocês verem o que que aconteceria se eu desligasse o CLP ligasse novamente
se não ver que eu vou perder todos os nomes da minha lista vou fazer o login eu já tô com série B virtual vou fazer download aqui então muito bem aqui eu tenho um botão para carregar os nomes vejam que só fazer uma mental zoom aqui ó vamos ver os nomes eles estão zerados né olha aqui a lista Minha lista de nomes ela tá vazia ela tá vazia esse espaço aqui é vazio então é da inicialização não define nada né então quando eu carrego os nomes ó vem os nomes eu inicializo e aqui eu coloco
em ordem alfabética eu vou fazer aqui ó o receptor online exceto o ar então o receto arma ele simula é essa situação de desligar o CLP e ligar novamente então quando eu der um reset aqui ó eu dou um sim tá é no caso aqui desse tal ele volta em Stop isso não quer dizer que o CLP físico seu aí volte em Stop tá alguns dos que eu já trabalhei Alguns vão podem voltar em Stop então eu vou lá numa configuraçãozinha e boto lá o para ele voltar em Ram né tem alguns que estão vinculado
a uma entrada digital se ela tá em zero ele volta Stop se ela tá em um ele volta mas se LP mais atuais aí eles já voltam em start tá então aqui o meu codecis ele volta em Stop eu tenho que dar um Ram então ó quando eu dei o Run vejam que eu perdi os nomes eu perdi os valores ele como se ele tivesse inicializado novamente as variáveis ele inicializou novamente a minha lista de nomes então eu perco Então vamos lá como é que eu quero fazer então para resolver isso Então olha só aqui
no meu na minha declaração de variáveis abaixo das variáveis normais né eu vou fazer então eu vou abrir um vácuo espaço até vou aumentar aqui a minha o meu Zoom eu vou botar espaço verten dou o enter aqui ó ele dá um endivar ele ficou encaixado quer dizer que ele já reconheceu E aí eu vou passar aquela minha lista de nomes ó eu vou dar um controle para você selecionei ela e vou colocar ela aqui embaixo tá eu não posso ter duas listas de nomes então eu vou colocar dois duas barras aqui para comentar aqui
essa lista então é muito bem se fosse uma variável Global eu ia lá no gvl faria isso mas como eu não tenho variável Global aqui eu só tenho essa local tá então salvar como Pilar agora e vamos transferir vou dar um login vamos lá então agora pelo que eu tinha explicado antes ele vai manter o valor né quando eu desligar e ligar o CLP [Música] Então vamos lá carreguei os nomes aqui fiz a ordem alfabética Tá e agora eu vou dar um receptor rodar aqui né se o seu CLP ele voltar automático não precisa dar
o Ram ele volta automaticamente ó ele Manteve aqui a lista João José Juca Paulo Pedro Rafael Vitória tá para carregar os nomes a questão Inicial antes de botar em ordem né eu dou um alarme ele vai manter aqui os dados então muito bem né é isso que eu quero agora se eu der um receptor quer dizer que eu vou é com você eu transferir se o programa Tá então não recebe aqui ó ele voltou e não Manteve os dados ele não Manteve os dados tem que carregar de novo e botar em ordem Então agora eu
vou voltar aqui para minha alma para mostrar esta situação Então tá E aí eu eu tenho que utilizar em vez de uma variável repentiva eu vou passar a usar uma variável permanente é uma variável permanente Olha só eu também trouxe a situação do manual aqui do Poder Então essa aqui é assim táxi da declaração de uma variável Global persistente que está na lista de persistente vários aqui então olha só aqui eu tenho assim táxi da declaração dentro de um Pou ou e aqui é dentro da lista de variáveis persistentes tá já vou explicar isso Ó
eu tenho o nome aqui e tenho o tipo de dado tá eu tenho que fazer essa lista Então veja eu tenho uma globaleia e boliche eu também eu e eu tenho uma lista de variáveis persistentes olha só vamos ver o que que é isso tá então deixa eu voltar aqui no poder desses olha só gente se eu vier aqui no application ficar com o botão do lado direito e adicionar um objeto olha só que bacana eu tenho aqui ó persistente variados a persistente variados Então eu vou deixar vou botar só a persistente aqui Vá nas
minhas variáveis persistentes então ele criou uma lista de variáveis persistentes E aí eu vou ter que declarar aqui então então aqui o meu a minha lista de nomes eu vou mais uma vez copiar ela aqui e vou colar ela lá na lista de variáveis persistentes Deixa eu voltar agora para o LC mas como ela não vai fazer mais efeito aqui no retém eu comento aqui para tirar ela daqui tá só que aí quando eu aconteceu agora né vamos lá a gente poder ter então agora olha só gente ele variável lista nome ela não foi não
ao identificador lista nomes not the fire não tá definido eu tô com um monte de erros aqui porque porque ele não entende isso aqui no meu programa local aqui né no meu PLC prg ele não entende isso então por quê Porque ela tá lá na variável persistente se estivesse se fosse uma variável Global eu teria o mesmo problema entre aspas Então como é que eu faço para resolver isso aqui eu tenho que indicar onde é que tá essa essa variável persistente ela tá na lá na perda E aí está de nome então agora ela vai
estruturar então tem que vir aqui control c e colar aqui na frente né de todo mundo de todo os variáveis esse esse caminho aqui digamos assim né Outro ponto agora só botar o ponto ponto ponto ponto aqui também onde tem o fórum né [Música] tem que fazer essa esse mostrar esse caminho onde é que tá essa agora vai dar certo deixa eu compilar aqui agora a gente vai ver que a minha variável vai vai permanecer lá então carreguei os nomes ó carregou todo mundo aqui né na variável persistente botei em ordem agora se eu vendo
online e der um receptor sim ele Manteve lá as variáveis em ordem e se eu vier e de um ele mantém também Então essa é a melhor situação mas garantida né Mesmo que eu Desligue liga esse LP ou que eu transfira faço um novo download eu não perco os dados Então olha só aqui é bacana vá Professor mas pô o senhor tá usando aí essa lista de nomes e tal né será que funciona para aqueles outros itens que o senhor falou lá para um contador lá né então vamos lá eu vou eu vou mostrar agora
um contador aqui digamos deixa eu fechar essa lista vou fazer uma nova um contador aqui ó contador dois pontos 20 ponto e vírus tá então esse aqui é o meu é o meu PV do contador eu vou fazer o seguinte para não ficar muito extenso vou fazer vou adicionar um novo povo aqui em ler só tá acostumado bastante com ele né então vamos lá eu vou inserir um contador aqui ó [Música] o meu PV vai ser cinco o meu CV né o valor corrente de Contagem Então vai ser meu computador botar nessa variável e com
computador [Música] para fazer a contagem eu vou criar aqui um botãozinho que é para vai ser o meu computador esse botão aqui então eu vou ligar ele ligar entre aspas né eu vou vincular ele é aqui com a minha variável Aliás com o meu Pera aí Não pera aí que eu tô Faltou um Faltou um cara que só um pouquinho é o meu botão né botão dois pontos é boleando agora sim então tem uma goleada que eu vou usar aqui ão e aqui eu da minha visualização eu vou vincular esse botão computador aqui agora sim
e para poder resetar aqui ó eu vou resetar automaticamente Quando ele chegar em 5 então quando o meu o CPU 0.c for acionado e quando chegar em 5 né ele vai resetar automaticamente Então o que tá aqui CTU zero que ele vai resetar automaticamente muito bem como eu declarei esse meu contador aqui ó uma variável local vai ter aquele mesmo problema então vamos lá em login vamos fazer o login aqui e já mostrar isso rapidamente por que que eu coloquei o computador porque eu quero mostrar depois como é que eu faço a variável persistente local
né Então olha só aqui eu dou Claro Faltou um detalhe porque que ele não tá rodando contando né porque não tá na testa aqui então esse computador tem que estar na testa obviamente senão ele não vai rodar aqui eu vou carregar aqui na testa tá então agora sim ele vai rodar Então tudo bem Já carreguei na e agora vamos fazer o login Agora sim ele vai contar bonitinho né olha lá tô contando um dois três né eu tô visualizando aqui ó 4 5 ele Zerou porque acionou o português mas tudo bem vemos que eu tô
no meio da Contagem esse não tenho precede tá lá contando mil peças aí eu vou lá e faço um receto Arno aqui desliga o CLP desliga novamente que aconteceu ó Zerou eu perco toda a contagem né então eu não quero fazer isso se eu [Música] colocar aqui né vamos fazer de novo aqui ó espaço retém retém e colocar esse meu contador aqui tá só que aí que acontece né se eu botar só o valor da variável contador aqui ó não vai adiantar [Música] nós vamos ver que não vai eu tenho que botar todo meu computador
lá dentro vamos lá vamos fazer aqui ó computador 3 online Então não é o valor de saída que eu tenho que colocar então é o meu próprio computador que eu tenho que colocar lá dentro esse valor de saída ele pode continuar sendo ele só recebe quem vai armazenar mesmo é o corrente valor né Então é ele que vai vai manter Eu Quero manter eu quero reter Então vamos fazer essa primeira essa primeira situação aqui [Música] já compilou vou fazer o login vamos nessa então sim vamos lá um aviso quando ele faz isso se por acaso
aqui no seu codecir quando você fizer o login a visualização não entrar tá é porque é um bugzinho Então você tem que rodar de novo ó já tá em três aqui se eu vier aqui der um receptor o que vai acontecer [Música] ele voltou para o 3 que interno ele ficou zero ali quando eu transferir mas o internamente depois ele atualizou o valor do computador então isso é bacana né só que se eu vier aqui der um code ele ele não vai voltar não voltou Então eu tenho que transformar ela em persistente só que aí
caramba botar né esse contador aqui né no meu Pou aqui esse computador aqui lá na ali se vai dar persistentes né é meio é meio é complicado então como é que eu vou mostrar isso agora então deixa eu voltar para minha apresentação aqui Eu sempre tenho uma apresentação de apoio que sempre vai junto nas aulas Então essa aqui é assim táxi de uma declaração dentro de um povo tá então eu vou fazer ó eu vou abrir o persistente retan dentro do Pou vou botar o identificador aqui e aí ó tem o nome Isso aqui vai
servir para uma variável para uma vara input para uma vara ou tipo uma varinha alta eu tô usando um bloco de função também vou fazer dessa forma né E aí isso é muito importante então eu tenho o nome o tipo do dado E aí aqui ó lá na minha variável na minha na minha lista que variáveis persistentes eu tenho que indicar o caminho instancepcional o caminho da instância eu fiz a tradução na Instância então ele tem que saber se não ele não vai saber lá então vamos lá então persistente tem vamos fazer ela aqui então
aqui em vez de ser tem aqui é persistente ter então meu computador ele é um computador persistente agora só que aí lá no meu Pou lá no ou não lá no na lista de variáveis persistente eu tenho que dar o f lá então vamos lá aqui dentro do meu do meu persistente var né da minha lista de variáveis persistentes então eu aqui vou colocar tem que colocar aquela variável lá declarado naquele Pow então primeira coisa que eu tenho que fazer é dizer em qual pouco ele tá E aí o Paul aqui É Pou né Eu
não eu não renomeei eu deixo só renomear ele para a gente para ficar mais fácil então esse aqui é o meu contador lá eu vou botar em caixa alta só para você tá vendo a aula poder entender direitinho então é o meu que ele ele faz isso eu dou um ok ele vai atualizar lá o nome aquele nomezinho aqui em cima do meu Pou agora o pão de tem o Contador chama-se Contador então aqui na minha no meu F aqui né que ele chamou de [Música] então eu vou fazer o seguinte eu vou botar aqui
ó contador eu vou indicar primeiro o Pou que é que é o Pou computador ponto E aí qual elemento lá que eu quero eu quero instanciar o CT zero né só que aí não termina aqui não vou botar ponto de Virada do espaço o que que o ct10 é ele é um conter up então eu tenho que se fosse uma variável inteira ia ser ínte né se fosse um um temporizador aqui seria então eu vou eu copio também aqui ó Tá o que que ele é E aí eu dou espaço contra o V aí em
cima então Faltou dois pontos né acho que faltou dois pontos isso e os dois pontos aqui Então vamos lá passo dois pontos Pronto agora sim então eu vou botar o nome do Pou onde tá minha variável local ponto e aí eu copio o que tá lá eu posso até fazer o seguinte processo hoje vou fazer diferente aqui contador. é que aquele já chama né Eu já indico mas o outro jeito de fazer é assim eu venho aqui copia toda a declaração contra você vou lá no persistente dou o nome do Pou bota o ponto e
dou um control V ó e copiou também pode ser dessa forma então aqui eu instanciei ele e agora vamos ver como é que vai como é que vai funcionar essa variável local é instanciada lá na minha lista de variáveis persistentes então isso vai servir por essa uma variável normal que nem é essa desse computador pelo que eu tô mostrando né E vai servir também serviria também para um bloco de função né então seria bem tranquilo um dois três agora eu venho aqui dou um reset War Olhe voltou beleza problema era no code né Gold também
vai vai retornar ó voltou três lá então gente me despeço aqui dessa aula Espero que que você tenha gostado dela então Relembrando sempre que eu tiver uma variável que eu queira numa eventual perda de energia do meu CLP né que ele volte e aquela variável volte o estado que ela tá volte o valor que ela tava cara gente isso aqui é muito importante que é muito importante né seja uma variável boleana seja inteira seja real né seja o valor de um contador de um temporizador então eu posso trabalhar dessa forma né então Maravilha forte abraço
e até a próxima [Música]