Skocz do zawartości

Błąd No such file or directory #include <ArduinoRS485.h> przy używaniu biblioteki ArduinoModbus.


lmn27

Pomocna odpowiedź

@lmn27 witam na forum 🙂 Taki błąd oznacza, że w szkicu używana jest biblioteka, która nie jest zainstalowana. Bez wglądu do kodu ciężko coś doradzić. Najprostsze rozwiązanie - zainstaluj brakującą bibliotekę.

Link do komentarza
Share on other sites

(edytowany)

@Treker image.thumb.png.3b80569dbeb6c213a6ac683b0d7bd712.png

Dzięki za odpowiedź. Bibliotekę mam zainstalowaną 😕

Chcę zaprogramować płytkę esp32. Zbieram dane przez wifi z inwertera i bms, program ma zarządzać przepływem energii w systemie magazynowania energii. Modbusa potrzebuje do wymiany danych między urządzeniami. Biblioteka, której użyłam może obsługiwać TCP albo RS485 może tutaj leży problem 😕 Niestety nie mam pomysłu jak sobie z tym poradzić 

#include <WiFi.h>
#include <ArduinoModbus.h>

ModbusTCPClient modbus;
WiFiClient client;

// Dane do połączenia z siecią Wi-Fi
const char* ssid = "nazwa_sieci";
const char* password = "haslo";

// Przykładowe piny, do których podłączone są przekaźniki
const int przekaznikACPin = 5;
const int przekaznikDCPin = 18;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  // Czekaj na połączenie z Wi-Fi
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Połączono z Wi-Fi!");

  pinMode(przekaznikACPin, OUTPUT);
  pinMode(przekaznikDCPin, OUTPUT);

  if (!modbus.begin(client)) {
    Serial.println("Failed to start Modbus TCP Client.");
    while (1);
  }
}

void loop() {
  if (!modbus.connected()) {
    modbus.stop();
    if (!modbus.connect(IPAddress(192, 168, 0, 100), 502)) { // IP i port urządzenia Modbus
      Serial.println("Connection to Modbus Server failed");
      return;
    }
  }

  // Odczyt danych z Modbus
  float produkcjaEnergii = getProductionFromInverter();
  float zapotrzebowanieEnergii = getDemandFromSmartMeter();
  int poziomNaladowaniaMagazynu = getBatteryLevelFromBMS();

  // Logika decyzyjna
  if (produkcjaEnergii > zapotrzebowanieEnergii) {
    if (poziomNaladowaniaMagazynu < 90) {
      // Załącz przekaźniki, aby zasilać magazyn energią
      digitalWrite(przekaznikACPin, HIGH);
      digitalWrite(przekaznikDCPin, HIGH);
    } else if (poziomNaladowaniaMagazynu >= 90) {
      // Rozłącz przekaźniki, energia idzie do sieci
      digitalWrite(przekaznikACPin, LOW);
      digitalWrite(przekaznikDCPin, LOW);
      // Dodatkowo włącz funkcje do wysyłania nadwyżki energii do sieci
    }
  } else if (produkcjaEnergii < zapotrzebowanieEnergii) {
    if (poziomNaladowaniaMagazynu > 20) {
      // Załącz przekaźnik DC, aby pobrać energię z magazynu
      digitalWrite(przekaznikDCPin, HIGH);
    } else if (poziomNaladowaniaMagazynu <= 20) {
      // Rozłącz przekaźnik DC, energia idzie z sieci
      digitalWrite(przekaznikDCPin, LOW);
      // Dodatkowo włącz funkcje do pobierania energii z sieci
    }
  }

  // Czekaj pewien czas przed następnym cyklem
  delay(1000);
}

// Funkcje do odczytu danych - te funkcje należy zaimplementować
float getProductionFromInverter() {
  // Komunikacja z inwerterem i pobranie danych o produkcji energii
  // Tutaj powinien być kod do odczytu z Modbus
  return 0.0; // Zwróć rzeczywistą wartość produkcji energii
}

float getDemandFromSmartMeter() {
  // Komunikacja ze smart meterem i pobranie danych o zapotrzebowaniu na energię
  // Tutaj powinien być kod do odczytu z Modbus
  return 0.0; // Zwróć rzeczywistą wartość zapotrzebowania na energię
}

int getBatteryLevelFromBMS() {
  // Komunikacja z BMS i pobranie danych o poziomie naładowania magazynu energii
  // Tutaj powinien być kod do odczytu z Modbus
  return 0; //

 

Edytowano przez lmn27
Link do komentarza
Share on other sites

(edytowany)
1 godzinę temu, lmn27 napisał:

Dzięki za odpowiedź. Bibliotekę mam zainstalowaną 😕

Właściwie to nie masz. Masz zainstalowaną bibliotekę "ArduinoModbus", która wymaga "ArduinoRS485" 😉

obraz.thumb.png.db465bef1d931457e7c71609d3afdf4d.png

Edytowano przez H1M4W4R1
  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.