Offset Byte alto e Byte baixo

Estou com dificuldades em configurar um offset onde tem dois endereços, um com byte alto e outro com byte baixo dentro do mesmo offset, o byte baixo consigo alterar e ler, através do holding register, inteiro de 2 bytes com sinal, mas não consigo alterar o byte alto, tendo esses duas variáveis dentro do mesmo offset.

Bom dia Marcelo,

Já pensou em utilizar um MetaDataSource para fazer esta divisão dos bytes?
Talvez registrando os dois bytes num ponto e utilizando dois MetaDataPoints, um fazendo & 00001111b e outro fazendo um 11110000b com o valor de entrada.

Nunca tive que fazer isso, mas fica a dica.

Boa sorte e nos diga se conseguiu =]

Abs

Não tenho muito conhecimento em Meta Data Source, só pra vc entender melhor meu caso, no manual do CLP fala que no endereço 5377 em byte alto muda a hora para ligar o relógio que programei em ladder e no mesmo endereço 5377 em byte baixo mudo o minuto para ligar, tudo no mesmo offset, consegui alterar os dados do byte baixo mas não consegui ler nem escrever o byte alto, se vc pudesse explicar mais sobre o Script que devo usar agradeço.

Olá Marcelo, como está indo seu projeto? Cara, nunca mexi nem com RTC nem com esse trem de byte alto e byte baixo, mas poderia deixar bem claro o que fez, quem sabe não serve para entendermos, coloque para nós a situação problema do cliente e o que está fazendo para resolver e onde travou…

A ideia do Diego é legal, mas precisaria saber melhor o que está fazendo para poder ajudar mais, como sempre no ScadaBR tem várias formas de resolver um problema o que é bom demais, poderia ser por Scriptings, colocando um botão de scripting na tela do supervisório. Daria para criar um campo para colocar a hora (ou alguns campos) de ligar e acumular este valor em um datapoint virtual, depois clicando neste botão de scripting o scadabr escreve a o valor do datapoint virtual no clp.

Dá para fazer por metadatapoint tb, aí vc mudaria o valor e automaticamente ele carregaria no clp.

Abaixo tem alguns links do fórum explicando o uso de cada um.

Scriptings
http://www.scadabr.com.br/?q=node/156
http://www.scadabr.com.br/?q=node/182

MetaDataSource e MetaDataPoints
http://www.scadabr.com.br/?q=node/139

OBS.: O campo que me referia para escrever a hora, tem que ser inserido na tela como um componente “Script para o servidor”, dá uma pesquisada nesta página abaixo
http://www.scadabr.com.br/?q=node/152 tem um link legal aí nesta última que mostra vários exemplos em inglês.

Vou esperar os detalhes para me pronunciar mais.

Abraço
Fábio!!!

Oi Fábio, td bem, meu projeto esta praticamente pronto travei nesse ajuste do RTC, o que acontece é o seguinte, trabalho com irrigação de arroz e preciso desligar todos os dias das 19:00 as 22:00, de segunda a sexta, por ser o horário de ponta da concessionária de energia, e frequentemente altero o horário para ligar as bombas, pois quando a lavoura tem água suficiente eu altero os horários diminuindo assim o consumo de energia, estou te mandando um vídeo para que você entenda o funcionamento, gostaria muito que fosse escrito o valor no CLP, pois evito ao máximo ficar dependente do PC, pois o equipamento fica instalado a alguns kilometros da propriedade, e se der um problema no pc o sistema opera normalmente pq ai quem faz essa parte é o CLP.

O que acontece é o seguinte, pelo que eu entendi, programei no Ladder o relógio R01, que é composto por 3 endereços o 5376, 5377 e 5378, isso vc observa abaixo, e cada endereço desses vc altera dois dados, um em Byte alto e outro em Byte baixo, os que estão em byte baixo, consegui alterar usando o holding register, inteiro de 2 bytes, colocando os endereços anteriores, e os Byte alto não consegui alterar.

----------BYTE ALTO---------BYTE BAIXO

5376----Semana Liga-------Semana desliga
5377-----Hora Liga---------Minuto Liga
5378----Hora Desliga-------Minuto Desliga

Abraços Fábio.

Olá Marcelo,

Você precisa fazer alterações neste valor em uma visualização?
Ou através de um script?
Você consegue escrever os valores no braço (watchlist)?

Até onde vejo, você precisaria somente de um parser para escrever um valor 2 bytes dec para configurar o valor em ambos.

Digamos 1111 1111 1111 1111 => 65280 + 254.
Alguma forma de conversão seria necessária, mas a maneira usual seria usar um parser binário
http://jsfromhell.com/classes/binary-parser

Boa sorte

é o seguinte preciso escrever esse valor no CLP, por exemplo quero que ligue as 22h e 10 mim, consigo escrever e ler os 10 min, que esta no endereço 5377 Byte baixo como vc pode ver no que postei acima mas o valor 22 que seria as horas, não consigo por estar em Byte alto, falei com um funcionário da WEG e ele me passou que tenho que escrer o Byte baixo e o alto juntos pra que o CLP consiga ler, mas nessa eu me perdi, no restante consegui ler todas as funçoes. Abraço.

Bom, entende deslocamento para esquerda? Faz um deslocamento para esquerda no valor a hora em 4 bits e soma com o valor dos minutos e escreve no data point…

dá pra fazer com Script para servidor.

Oi Pessoal,

o segredo é isso mesmo que estão discutindo, “deslocar pra esquerda” (na verdade 8 bits) e somar tudo.

Deslocar 8 pra esquerda na prática é o mesmo que multiplicar por 2 oito vezes, ou seja, multiplicar por 256.
Como nem todo mundo conhece transformação de binário/decimal e vice-versa, enviei para o Marcelo umas “matemágicas” que poderiam ajudar. Estou copiando/colando um trecho das dicas abaixo.

Marcelo, antes de se perder com as “meta’s”, pode apenas fazer manualmente mesmo.
Por exemplo, se quer escrever “10” no alto e “5” no baixo como no exemplo abaixo, faça a conta primeiro na calculadora, e digite diretamente o resultado “2565” no datapoint, deve funcionar. Como vc faz isso uma vez por dia não vai ter tanto problema :slight_smile:
Depois a gente te ajuda a automatizar melhor o processo, primeiro tenta essa alteração direto no datapoint.

Ah e Valeu pelo empenho aí pessoal do fórum :smiley: :smiley:

=========Dica para byte alto/byte baixo
Você vai escrever tudo de uma vez só no offset, o resultado da conta abaixo:

Valor_escrita = (256 * BA) + BB
Onde BA = Byte Alto, BB = Byte Baixo.

Por exemplo se você quer fazer 10 no byte alto e 5 no byte baixo, fica:
(256 * 10) + 5 = 2565

Depois disso o que eu sugiro é você fazer em passos:

  1. uma variável virtual, para o conteúdo que vc quer no byte alto
  2. uma variável virtual, para o conteúdo que vc quer no byte baixo
  3. uma variável Meta, para calcular a conta acima (estude pelo manual ou apostila os exemplos simples, por exemplo o de converter celsius em fahrenheit, e depois adapte o cálculo)
  4. um Point link, apontando o resultado da “Meta” para a variável real do Modbus, assim o valor é escrito automaticamente.

Depois para ler os bytes também tem um “mandrake”,
BB = Resto da divisão do Valor_Lido por 256
BA = (Valor_Lido - BB) / 256
Isso vc consegue com duas variáveis “Meta”.

Tenta adiantar um pouquinho e depois avisa até onde vc foi?
um abração.

Ah apenas pra vc não ficar bravo com o ScadaBR, isso aí não foi a
gente que inventou não!!!
É coisa de quem mexe com microprocessadores… foi o pessoal do
hardware que quis assim…
:slight_smile:

Victor

Quero agradecer ao pessoal que me auxiliou e muito nessa tarefa, incomodei bastante mas o resultado foi ótimo, segui essas ultimas explicações do Victor e juntando com as outras consegui entender, pois tenho pouco conhecimento na área mas o meu projeto agora esta completo.

E sobre o ScadaBR, não tem como ficar bravo neh Victor eu só me surpreendo cada vez mais, vai ser uma solução e tanto pra mim.

Outra coisa quando for a Floripa a pizza e o chopp é por minha conta hehehe, abraços.

Opa Marcelo,

Desculpa os jargões da área, as vezes a gente acha que todo mundo vem da engenharia e esquece que muitos que pairam no desenvolvimento de soluções são empreendedores auto-didatas =]

Que bom que o Victor soube mastigar a informação para ti. Boa sorte e um ótimo trabalho.

Abs

Marcelo, tambem sou produtor de arroz, tambem trabalho no mesmo projeto que tu, tenho o mesmo sistema funcionando aqui em 4 levantes utilizando os mesmos recursos que tu utiliza, trabalho com SSW07 e SSW06 todas monitoras remotamente. Atualmente estou estudando a integração de todo o sistema no Scada, até agora esta tudo funcionando 100% no meu laboratório. Vamos trocar idéias…

Vamos trocar informação sim, de qual região vc é?

Estou tentando arduamente ligar e desligar o contato M01 no clic utilizando um datapoint, mas como tenho pouca esperiencia com o CLP, nao estou conseguindo, Diego, teria alguma dica pratica em função do Manual do Clic para esse exemplo?  Consigo fazer normalmente as leituras dos estados das entradas e saidas analógicas e digitais. No item 10.5.2.8 informa o conteudo e o endereço das variaveis. Gostaria de ligar o contato M01 e M02 (11136 e 11137). Não sei se seria simplesmente escrever 1 para ligar e 0 para desligar, mas o scadabr me informa o seguinte erro: Unknown exception code: 81

 

Coloco assim:

Faixa: Registrador Holding

Dados: Binario

Offset: 11136

Bit: 0

Configuravel (x)

Criei um ladder e escrevi no clp, onde a variavel virtual M01 desliga Motor 1 e M02 Desliga Motor 2. Não sei se o caminho é esse, gostaria de uma luz no fim do túnel

Agradeço alguma ajuda desde já.

Abração

 

 

Oi Ebluhm,

Seguinte: Os registradores M01~M3F atuam com as funções 01H e 05H - funções de Coil e não de Holding Register. Tenta modificar o tipo do data point para "Status do Coil", assim ele utiliza as funções corretas.

O manual do Clic não deixa isso muito claro, mas os códigos hexa não mentem =]

Boa sorte ai,

Tambem tentei Status Coil, mas nada o clic me retorna: Unknown exception code: 81. Abaixo da Tabela 10.5.2.8 há uma obsevação:Para a funcão 01H, leitura de multiplos bits, utilizar quantidades multiplas de 16. Sabes o que quer dizer isso, na prática?

Boa pergunta, que eu não sei responder... Liga na Weg e pergunta =]

Explica que está tentando utilizar com o ScadaBR. 

Abs

Acredita?, liguei para weg perguntei como posso Ligar e desligar a variavel M01, ele me pediu para olhar a tabela 10.5.2.1, me dizendo que essa variavel somente podia se lida e não escrita, daí falei para ele, "então, o que quer dizer a tabela 10.5.2.8 (leitura /ESCRITA de variaveis digitais)", dai ele  mudou o discurso dizendo que realmente dá para escrever nessa variavel. Fiquei meio chiocado, esses caras que a WEG bota para atender o consumidor!, um pior que o outro!. Falei do erro apresentado no ScadaBR, ele me disse que era para ver com pessoal do Scada. Não é facil mesmo né. Esse erro de excepcion Code 81 é CLic que envia ou é do proprio SCadaBR?

Pois então,

Vai ver o cara está em treinamento... Suporte é dificil sempre, independente da empresa, vai por mim. Com excessão do ScadaBR =] hehe

Avisa ai se tiver algum progresso.

Fala Diego, tdo bem?

Tive a felicidade de ser atendido por outro técnico, e resolvido em parte, o problema estava na programação do projeto escrito em ladder, essas variáveis segundo ele, não podem ser inseridas com a função bobina, somente podem ser contatos. Por isso o ScadaBR não conseguia escrever 1 e 0, mas o problema da mensagem continua, esse erro não está descrito no manual do clic, quando deixo o Data point ativo a mensagem erro de excepcion Code 81 fica aparecenda a cada atualização, uma forma de passar por isso seria habilitando o data point somente quando fosse ligar ou desligar a variavel. Tens alguma dica de como escrever um script com a função de ativar e desativar o Data Point atraves de uma seleção tipo CHECKBOX?

 

Abração