Benachrichtigungen
Alles löschen

Soyosource GTN-1000/1200 - Register/Protokoll

21 Beiträge
9 Benutzer
1 Reactions
4,470 Ansichten
(@hektor54)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 10
 

In meinen Beiträgen "Soyo-Zähler-Unit mittels ESP32 auslesen" und "Daten mittels ESP32 wieder in den Soyo einlesen" ist das Prinzip geklärt.

Statt Power=666; // 666 Watt kannst du auch Daten von einem Web-Client oder über Serial1 (Rx13) einlesen um die Leistung vom Soyo vorzugeben.

Ich habe ein Bild über den Aufbau beigefügt.

 


   
AntwortZitat
(@hektor54)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 10
 

Das ist doch genau, was du suchst.

void loop() {

Power = 666; // 666 Watt

// Daten für Wechselrichter Tx14
byte message[8] = { 36, 86, 0, 33, 0, 0, 128, 8 };

// Der Arduino ist mit bit shifts am schnellsten
message[4] = (byte)((Power >> 8) & 0xff);
// hier schneiden wir einfach das höherwertige byte weg
message[5] = (byte)(Power & 0xff);

// Prüfsumme berechnen (Checksumme)
message[7] = (byte)(264 - message[4] - message[5]);

Serial1.write(message, 8); // Ausgabe über seriellen Port Tx14
}

 


   
AntwortZitat
 FL0
(@fl0)
Newbie
Beigetreten: Vor 12 Monaten
Beiträge: 2
 

@sgssn 

Hallo Gerhard,

anbei der C-Code für die Erzeugung des Datenpakets incl. CRC-Berechnung für die Leistungsvorgabe über die RS485-Schnittstelle:

uint8_t pack[] = {0x24, 0x56, 0x00, 0x21, 0x00, 0x00, 0x80 ,0x00}; //Prototyp
uint16_t power = 123; //Soll-Leistung hier in Watt angeben
// Leistung in Paket ablegen
pack[4] = power >> 8; 
pack[5] = power & 0xff;
// CRC Berechnen und setzen
uint8_t crc = (uint8_t)(0xff + 0x24);
for (uint8_t i=0; i<7; i++)
    crc -= pack[i];
pack[7] = crc; 

Viele Grüße

Flo


   
AntwortZitat
Surolac
(@surolac)
Autarkiekönig
Beigetreten: Vor 12 Monaten
Beiträge: 409
 

@fl0 wenn du den loop von 1 bis 6 machst kannst du das 0x24 sparen. 

uint8_t crc = 0xff;
for (uint8_t i=1; i<7; i++)
    crc -= pack[i];
pack[7] = crc; 

Döp dö dö döp.


   
AntwortZitat
(@sgssn)
Newbie
Beigetreten: Vor 12 Monaten
Beiträge: 2
 

Hallo

danke an Alle! Es geht voran. Bau gerade nen RS485-Adapter an meinen uC und tests das mal.

 

Gruß

Gerhard


   
AntwortZitat
(@hwehner)
Newbie
Beigetreten: Vor 3 Monaten
Beiträge: 1
 

Hallo,

ich versuche gerade vom ESP32 meinen SoyoSource zu limitieren. Ich sende einfach einen einfachen Datenstring über die Serielle schnittstelle 1, wie von lunax beshrieben, 400W mit CRC Byte 0x78.

Die Rechenroutine für die CRC Berechnung von flo liefert aber der Wert 0x77 (119). Beides funktioniert bei mir einfch nicht. Die Hardware ist o.k.

Hat jemand eine Idee?

MfG

Heinz


   
AntwortZitat
Seite 2 / 2
Teilen: