Как можно считывать данные с анализатора мощности с помощью arduino NANO через rs485

так вот, у меня есть этот энергетический анализатор. И я хочу читать данные с Arduino NANO, через rs485

вот продукт и вот таблица регистрации этого устройства.

Я использую boud rate 9600, без четности, slave 1

кроме того я прочитал эту ссылку и это видео

но все равно я не могу считывать данные с анализатора мощности с помощью arduino.

там 3 темы, в которых я не уверен:

    1. Какую библиотеку мне следует использовать? теперь я использую modbus master
    1. Как должно быть соединение arduino и преобразователя tll/rs-485?
    1. Как читать такие данные, как:

Address Dec: 0, Address Hex: 0000, Format Word: uint32, Counts : 2, Unit: V, Примечания: Напряжение L1-N, Множитель: 0.1

например я использовал эти коды

#include <SoftwareSerial.h>

#define SSerialRX        10  //Serial Receive pin
#define SSerialTX        11  //Serial Transmit pin


#define SSerialTxControl 3   //RS485 Direction control

#define RS485Transmit    HIGH
#define RS485Receive     LOW

#define Pin13LED         13

/*-----( Declare objects )-----*/
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

/*-----( Declare Variables )-----*/
int byteReceived;
String ph_hexa, ph_hexa_hight_byte, ph_hexa_low_byte, ph_hexa_value; 
byte request [] = {
    0x01, 
    0x03,
    0x17,
    0x70,  
    0x00,   
    0x01,   
    0x65,    
    0x80    
};

//01 03 17 70 00 01 65 80 из примера таблицы регистрации на последней странице

void setup()   /****** SETUP: ВЫПОЛНЯЕТСЯ ОДИН РАЗ ******/
{
  // Запустите встроенный последовательный порт, вероятно, для последовательного монитора
  Serial.begin(9600);
  Serial.println("YourDuino.com SoftwareSerial remote loop example");
  Serial.println("Use Serial Monitor, type in upper window, ENTER");
  
  pinMode(Pin13LED, OUTPUT);   
  pinMode(SSerialTxControl, OUTPUT);    
  
  digitalWrite(SSerialTxControl, RS485Receive);  // Init Transceiver   
  
  // Start the software serial port, to another device
  RS485Serial.begin(19200);   // set the data rate 

}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
   if (RS485Serial.available())  //Искать данные из другого Arduino
   {
    Serial.print("Response: ");
    for (int i = 0; i <= 6; i++) {
        byteReceived = RS485Serial.read();    // Read received byte
      
        ph_hexa = String(byteReceived, HEX);
          
          // index 3 = high byte
          if(i == 3)  
          {
            ph_hexa_hight_byte =   ph_hexa;  
          }

          // index 4 = low byte
          if(i == 4)  
          {
            ph_hexa_low_byte =   ph_hexa;  

            ph_hexa_value = ph_hexa_hight_byte + ph_hexa_low_byte;

            Serial.print(ph_hexa_value);// Показать на последовательном мониторе  
          }
        Serial.print(" ");                       
      }
      /*
      Serial.println(ph_hexa);
      ph_hexa = "";
      */
      Serial.println();
   }
   else
   {
      Serial.println();
      Serial.print("Request: ");
      digitalWrite(SSerialTxControl, RS485Transmit);  // Init Transceiver
      for (int i = 0; i < 8; i++) {
        Serial.print(request[i], HEX);          
        RS485Serial.write((byte)request[i]);                
      }
      Serial.println();
      digitalWrite(SSerialTxControl, RS485Receive);  // Init Transmit       
   }
   delay(1000);

}

но ответа нет.

23:17:17.663 -> YourDuino.com SoftwareSerial remote loop example
23:17:17.709 -> Use Serial Monitor, type in upper window, ENTER
23:17:17.756 -> 
23:17:17.756 -> Request: 131770016580
23:17:18.691 -> 
23:17:18.691 -> Request: 131770016580
23:17:19.719 -> 
23:17:19.719 -> Request: 131770016580

, 👍1

Обсуждение

Можете ли вы дать нам ссылку на документацию на английском языке? Что вы пробовали и в чем ваша реальная проблема?, @Sim Son

Страница @SimSon на английском языке находится здесь https://www.entes.eu/mpr-47s-d/ ссылки обновляются . также я добавил код. но я не получил никакого ответа, как сказал пользователь., @mehmet

Какой микросхемы вы используете для подключения измерителя мощности?, @Sim Son

Если вы еще этого не сделали, поменяйте местами сигналы A и B с одной стороны и посмотрите, будет ли что-нибудь по-другому. Маркировка этих сигналов часто отличается от того, что вы ожидали., @timemage

@SimSon arduino nano, @mehmet

Для реального подключения RS485 вам нужен специальный чип, такой как ST485/MAX485, между nano и измерителем мощности. По крайней мере, ваш код должен работать с таким чипом, но я полагаю, что есть способы связи по RS485 без чипа., @Sim Son

...но для этого потребуется другая библиотека или изменения в библиотеке, @Sim Son

Как сказал @SimSon, просто используйте микросхему RS485 между вашим Nano-анализатором и анализатором мощности. Для начала проверьте [это tutorial](https://create.arduino.cc/projecthub/maurizfa-13216008-arthur-jogy-13216037-agha-maretha-13216095/modbus-rs-485-using-arduino-c055b5)., @Fahad

Извините, я думаю, что это было неправильно понято. Я также использую модуль MAX485. вот так https://hackster.imgix.net/uploads/attachments/1122513/pasted_image_0.png?auto=compress%2Cformat&w=680&h=510&fit=max, @mehmet