RS485- Precisando de ajuda para comunicação entre Arduíno e um analisador de turbidez de processo.

      Boa Tarde companheiros. trabalho numa empresa de saneamento e estou tentando uma comunicação entre um Arduíno e um analisador de turbidez de processo de baixa modelo TH-404 pelo RS485 pois fiz pelo 4-20ma mais não esta muito exato os valores.

Exibições: 423

Responder esta

Respostas a este tópico

É esse ?

https://www.digimed.ind.br/br/produtos/analisador--transmissor--con...

Fala que usa Modbus.
Recomendo dar uma pesquisada no ScadaBR

https://www.scadabr.com.br/

sim esse mesmo.

Boa noite,

Analisando o manual do TH-404:

Leia o manual todo - tem muita configuração a ser feita.

* Nos modelos com Protocolo Hart na saída analógica, a saída digital RS-485 não está habilitada.

Você deve conectar os dois fios da interface RS-485 nos pinos 10 e 11:

Você terá que configurar a interface RS-485 através do display do TH-404.

Veja na pagina 21 ou Pag 28.

Protocolo - MODBUS

Velocidade = 96 (9600 Bps) 

Número de bits = 8 

Comunicação ID = 1

Na Pag 32 = 

" Saídas de Comunicação Digitais - RS 485


Uma característica importante das saídas de comunicação digitais é que uma única linha de transmissão
permite o fluxo de dados de diversos equipamentos em um único cabeamento. Desse modo, diversos
equipamentos com saídas de comunicação RS485 podem ser conectados em apenas um cabo tronco, do tipo
par trançado, por cabos de derivação curta criando uma rede de comunicação simples e direta.
Apesar desta vantagem, ao longo da linha de transmissão podem ocorrer reflexões no fluxo de dados devido à
descontinuidade de impedâncias que a onda de transmissão itinerante vê ao se propagar pela linha. Para
minimizar este efeito deve ser instalado nas extremidades da linha de transmissão resistores de terminação
que irão balancear (casar) as impedâncias da linha."

Estude o caítulo 11 - Configurações MODBUS

Boa noite JNS,

o seu equipamento tem o Protocolo Hart?

Como vc disse que tentou usar o 4-20mA, acredito que ele tenha o protocolo Hart,

A interface 4-20mA é usada com quase a totalidade de equipamento com o Fieldbus e o protocolo Hart

utiliza o padrão Fieldbus e sendo assim ele não tem a interface RS485 habilitada.

RV

Bom dia companheiros.

Eu consegui fazer leituras no 4-20mA so que com uns valos um pouquinho acima axo que é só ajustar. mais eu optei pelo RS485 pois temos 6 analisadores ai eu pretendo colocar tudo num cabo só. o problema que ja usei vários códigos mais sem sucesso. Ja li tudo e mais um pouco mais ainda não achei nada a respeito de analisadores.

#include <ModbusMaster.h>

/*!
We're using a MAX485-compatible RS485 Transceiver.
Rx/Tx is hooked up to the hardware serial port at 'Serial'.
The Data Enable and Receiver Enable pins are hooked up as follows:
*/
#define MAX485_DE 3
#define MAX485_RE_NEG 2

// instantiate ModbusMaster object
ModbusMaster node;

void preTransmission()
{
digitalWrite(MAX485_RE_NEG, 1);
digitalWrite(MAX485_DE, 1);
}

void postTransmission()
{
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
}

void setup()
{
pinMode(MAX485_RE_NEG, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
// Init in receive mode
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);

// Modbus communication runs at 115200 baud
Serial.begin(9600,SERIAL_8N1);

// Modbus slave ID 1
node.begin(1, Serial);
// Callbacks allow us to configure the RS485 transceiver correctly
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}

bool state = true;

void loop()
{
uint8_t result;
uint16_t data[6];

//Toggle the coil at address 0x0002 (Manual Load Control)
//result = node.writeSingleCoil(0x550, state);
//state = !state;

// Read 16 registers starting at 0x3100)
result = node.readInputRegisters(0x0550,1 );

if (result == node.ku8MBSuccess)
{

Serial.print("Vbatt: ");
Serial.println(node.getResponseBuffer(0X00/100.0f));
Serial.print("Vload: ");
Serial.println(node.getResponseBuffer(0xC0)/100.0f);
Serial.print("Pload: ");
Serial.println((node.getResponseBuffer(0X0000) +
node.getResponseBuffer(0X0000) 16)/100.0f);
}

delay(2000);
}

Usei este código aqui tirada do próprio site  do Arduíno. Comunica com o analisador mais os valores não bate axo que é na hora de ele ler o código binaria. se variar no analgizador ele varia no serial mais como disse não bate os valores. sera que alguém tem uma ideia.

Ao que parece esse programa que vc está rodando não é para o aparelho em questão.

Ele le e apresenta os registradores 0x00, 0xc0 e depois um composto do 0x0000 com o 0x0000, que são os mesmos de sempre... 

Os registradores que vc precisa ler estão listados no manual nas paginas 33 a 37.

O 0x500 por ex parece conter uma informação importante.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço