Medidor de energía DC 1000V con RS485 y Arduino obteniendo voltaje y corriente del problema de registro

0

Estoy haciendo un medidor de 1000V DC con Arduino y RS485. El problema es que cuando envío un valor de registro desde Arduino, no obtengo la salida que deseo, la salida es hexadecimal y no puedo averiguar dónde está el voltaje y la corriente. Además, cuando estoy cambiando la entrada de voltaje no obtengo salida de cambio hasta ahora, el código es:

#include <Stdio.h>
#include <SoftwareSerial.h>

#define RX 4
#define TX 5
SoftwareSerial softSerial(RX, TX);

#define dirPin 16
char charArray[6];

uint8_t HeadingData[] = {0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0x71, 0xCB};

void setup()
{
  Serial.begin(9600);
  softSerial.begin(9600);
  Serial.println("\n\nStart\n");
  pinMode(dirPin, OUTPUT);
}
void loop()
{
  digitalWrite(dirPin, HIGH); //Trans En
  sendMSG(HeadingData, sizeof(HeadingData));

  digitalWrite(dirPin, LOW); // Rec En
  recieveMSG();

  delay(1000);
}
void recieveMSG()
{
  int charIndex = 0;
  delay(100);
  while (softSerial.available())
  {
    int recieved = softSerial.read();
//    Serial.print("recieved byte in DEC = ");
//    Serial.println(recieved);
    Serial.print("recieved byte in HEX = ");
    Serial.println(recieved, HEX);
    //    delay(50000);
    //    charArray[charIndex] = recieved;   // store everything that was read in charArray byte-by-byte
    //    charIndex++;
    //    Serial.println(charArray[0], HEX);
    //    Serial.println(charArray[1], HEX);
    //    Serial.println(charArray[2], HEX);
    //    Serial.println(charArray[3], HEX);
    //    Serial.println(charArray[4], HEX);
    //    Serial.println(charArray[5], HEX);
    //    Serial.println("message recieved\n\n");
  }
}

void sendMSG(uint8_t Message[], int len)
{
  for (int i = 0; i < len; i++)
  {
    softSerial.write(Message[i]);
    delay(10);
    Serial.print(Message[i], HEX);
    Serial.print(" ");
  }
  Serial.println("\n\n");
}

Indique dónde estoy equivocado y qué se debe cambiar. Aquí está el pdf para el direccionamiento del registro, he utilizado el registro de voltios 1 de este ... metering.igmc.ir/static_info/RS485.pdf La salida es 1 4 0 0 0 2 71 CB

byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 6 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 40 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = B byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 10 byte recibido en HEX = 25 byte recibido en HEX = FF 1 4 0 0 0 2 71 CB

1 4 0 0 0 2 71 CB

byte recibido en HEX = 91 byte recibido en HEX = B byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 25 byte recibido en HEX = FF 1 4 0 0 0 2 71 CB

byte recibido en HEX = 5B byte recibido en HEX = FA 1 4 0 0 0 2 71 CB

byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 y por favor diga cómo obtener la salida como esta V = 51 4 0 0 0 2 71 CB

byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 6 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 40 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = B byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 10 byte recibido en HEX = 25 byte recibido en HEX = FF 1 4 0 0 0 2 71 CB

1 4 0 0 0 2 71 CB

byte recibido en HEX = 91 byte recibido en HEX = B byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49 1 4 0 0 0 2 71 CB

byte recibido en HEX = 25 byte recibido en HEX = FF 1 4 0 0 0 2 71 CB

byte recibido en HEX = 5B byte recibido en HEX = FA 1 4 0 0 0 2 71 CB

byte recibido en HEX = 1 byte recibido en HEX = 4 byte recibido en HEX = 4 byte recibido en HEX = 22 byte recibido en HEX = B8 byte recibido en HEX = 1 byte recibido en HEX = 0 byte recibido en HEX = 70 byte recibido en HEX = 49

y diga cómo obtener una salida como V = 5V abd I = 0.02A ???

    
pregunta Maria Javed

0 respuestas

Lea otras preguntas en las etiquetas