lmn27 Napisano 23 stycznia Udostępnij Napisano 23 stycznia Błąd No such file or directory #include <ArduinoRS485.h> przy używaniu biblioteki ArduinoModbus. Z protokołu RS485 w ogóle nie chcę korzystać, biblioteki użyłam dla protokołu Modbus TCP, proszę o pomoc Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) 24 stycznia Udostępnij 24 stycznia @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 More sharing options...
lmn27 24 stycznia Autor tematu Udostępnij 24 stycznia (edytowany) @Treker 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 24 stycznia przez lmn27 Link do komentarza Share on other sites More sharing options...
H1M4W4R1 24 stycznia Udostępnij 24 stycznia (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" 😉 Edytowano 24 stycznia przez H1M4W4R1 1 Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
lmn27 24 stycznia Autor tematu Udostępnij 24 stycznia I wszystko jasne, dzięki za pomoc! Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »