SolarMax Wechselrichter mit TwinCAT per RS485 auslesen

borsti87

Level-1
Beiträge
71
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich brauch mal euren rat/hilfe ich möchte zwei SolarMax Wechselrichter der S-Serie auslesen, dafür habe ich folgende Hardware:

CX1010-0121 - CPU Groundmodul
CX1010-N031 - RS485 Anschluss

Nun habe ich das ganze schonmal verkabeld un wiel jetz anfangen das programm zu schreiben. Angefangen habe ich damit erst mal die Schnittstellen-Kommunikation mit dem MaxCommProtokol zu testen und da mit habe ich so meine Probleme.
Die Protokolerklärung habe ich mal als PDF angehängt.
Als erstes habe ich begonnen eine einfache anfrage zu senden indem ich einen Sende-String erzeugt habe wie diesen hier
Code:
sSendString: T_MAXSTRING := '{FA;01;07|64:UDC|043D}
diesen versuche ich dan an die Serielle Schnitstelle zu senden per
Code:
SendString255_1(
SendString := sSendString,
TXbuffer    := MaxComTXbuffer
);
das ganze im Standard Task.

Im ComBackroundTask mit Piorität = 0 und Zykluszeit = 1ms steht folgendes:
Code:
MaxCommControl( 
COMin := MaxCommInData,
COMout := MaxCommOutData,
TxBuffer := MaxComTxBuffer,
RxBuffer := MaxComRxBuffer
);
Das problem ist nun das ich immer folgende Fehlermeldung von der Schnittstelle erhalte: COMERROR_TXBUFFOVERRUN.

Was mach ich falsch kann mir jemad helfen?

Gruß
Borsti87
 

Anhänge

  • MaxComm_Protokollbeschreibung_de_080314.pdf
    81 KB · Aufrufe: 47
Die möglichen Ursachen sind sehr vielfältig:
- wird sendstring zyklisch aufgerufen? Dann sendest du auch zyklisch, 256Byte / 10ms kann je nach Baudrate schnell zum Überlauf führen
- wird vielleicht der Buffer von MaxCommControl nicht geleert? Sind die IO-Variablen verknüpft? Läuft die Hardware fehlerfrei?
- Sind die Kommunikationsparameter richtig? Wenn Handshake angewendet wird, dann muss die Kommunikation laufen und der Wechselrichter muss die Daten abholen, sonst läuft sehr schnell der Hardware-Buffer in der RS485-Anschaltung über.

Gruß,
witkatz
 
Zurück
Oben