Solar-Regler über RS232

Hallo,

als Anfänger :confused: wäre ich über etwas Hilfe sehr dankbar :slight_smile:

habe eine Solarsteuerung PS600 von Prosolar die ich seriell auslesen möchte so als erste Schritte :smiley:

Protokoll ist bekannt und liegt mir vor

Abfrage ist:

0x02 Länge(1Byte) Daten Prüfsumme

Anzahl der Datenbytes ist Länge
Prüfsumme ergänzt die Summe (letzte 8 Bit)aller vorhergehenden Bytes auf 0

wie muss ich das mit der Prüfsumme verstehen und wie kann ich das implementieren

Beispiel für Abfrage der Version wäre 0x02+0x01+0x01+ Prüfsumme


define("SER", 51070);
$TX_BUF = "\x02\x01\x01"; Prüfsumme fehlt noch 
//Etwas über den COM Port senden
$result = COMPort_SendText(SER, $TX_BUF);

die Antwort würde als high low bytes zurück kommen

wie müsste ich das dann abfangen wäre die Antwort dann in $result oder ist das ein falscher Ansatz

So wie ich es lese must du einen Befehl senden, dann antwortet der Regler mit der Rückgabe des Befehles und den darauf resultierenden Daten und der Schecksumme nach der du jetzt fragst.

Beispiel: Du fragst nach der Version, dann sendest du 0x02.
Als Antwort bekommst du zB 0x02, 0x07. 0x07. Die letzte 0x07 ist der Wert, den die letzten 8Bit der Summe zum Wert 0 brauchen.
Erklärung 0x02+0x07 ergibt 0x09.
Bis zur 0 braucht es 0A,0B,0C,0D,0E,0F und dann wird die letzte Ziffer wieder zu 0 im HexaCode. Das ist dann als Aditionswert im Hexa-Code die Zahl 7.

Bei 0x07, 0x08 ist die Prüfsumme 0x01, denn 7+8=F —> F+1 =0 in der Hexa-Zählweise

Der Befehl, den du sendest, muss nicht, so lese ich es, von dir mit einer Checksumme „verpackt“ werden. Wenn doch, dann must du auch so eine „Aufrechnung“ machen.
Ich hoffe ich liege da richtig, bin nicht so der Erklärbär

Hallo Helmut,

danke für dir rasche Antwort

senden muss ich Befehl plus CS in meinem Fall als 0x02+0x01+0x01+cs wäre dann 0x0C

aber woher kommt die Antwort?

Hallo Bronsky,

die Daten kommen über den Comport zurück. Registervariable anlegen und mit einer zuvor von Dir angelegten Variable(string) verknüpfen.

Beispiele zum Auslesen des Comports gibt es hier im Forum jede Menge.

Registerv..jpg

Ja, richtig mit 0C füllst du die Hexzahlen zu Null auf.
Wie mein Vorredner schon schrieb, Comport-Instance in beiden Richtungen erstellen.
Die Boudrate einstellen, soweit ich weiß muss ein Pin der Schnittstelle auf high sein, steht aber im PDF zum Solarkontroller.
In den Beispielscripten, hier im Forum, mal schauen wie Hex-Zahlen übertragen werden. Ist nicht so einfach, aber zu schaffen.

Empfehlen kann ich das Freewaretool com0com. Es erstellt virtuelle Com-Ports auf dem Rechner. Damit kann man mal die eigenen, auf dem Com-Port1 ausgegeben Sachen ansehen und auch Antworten darauf simulieren. Oder ein Nullmodem basteln, obwohl man keinen zweiten Comport hat.
Link:
Das com0com-Projekt auf http://com0com.sourceforge.net/ enthält auch
einen „COM port to TCP redirector (com2tcp)“
Na denn, aber lass es nicht zu spät werden, oder war es eher früh? :slight_smile:

Hallo,

komme jetzt erst wieder zum testen

ja das mit dem ComPort war mir schon klar

momentan habe ich das Problem das ich beim Ausführen des Scriptes (und auch andere Scripte) einen Fehler bekomme

cannot create file … scripts/.currentscript - Zugriff verweigert

obwohl ich im Ordner Scripts dateien oder Ordner manuell erstellen kann und auch das testscript wird ja abgespeichert

Irgend eine Idee dazu - komme da nicht weiter

Hi,

also das mit dem Zugriff auf .currentscript habe ich gefunden - lag an einem zweiten script das auf den ComPort ging.

hab jetzt mal einen Portmonitor aktiviert und folgendes festgestellt

ich sende

02 01 01 FC - hier muss ich FC und nicht 0C als checksumme nehmen

zurück schickt die Steuerung

02 03 01 10 01 E7 - E7 ist wieder CS die reinen Daten sind dann 01 10 01

wie kann ich das jetzt empfangen

[QUOTE=bronsky;36064
wie kann ich das jetzt empfangen[/QUOTE]

so wie ich es oben beschrieben habe. Die Daten stehen in deiner Variable.

Gib’ mal in der Suchfunktion des Forums " String an der COM-Schnittstelle " ein.
Da wird von HJH und Paresy einiges aufgeklärt. Und von Tommi gibt es auch einiges an Aufklärung.