TIA Checksumme im Programm berechnen/ASCII in HEX

TimL.

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich arbeite zurzeit an einem Projekt mit und bin für die Programmierung zugeteilt worden. Da ich aber noch in der Ausbildung bin stoße ich auf paar Probleme. Mein größtes Problem ist jetzt folgendes:

Ich habe ein PSD6 Ventil von Hamilton, welches Seriell (TXD,RXD) über eine SPS gesteuert wird. Hauptsächlich arbeite ich da im TIA mit send_P2P und recieve_P2P. Die Befehle stehen in der Anleitung in ASCII also schreibe ich diese in HEX um und trage Sie in den sendBuffer ein. Allerdings soll ich es jetzt so programmieren, dass über ein HMI Display ein Wert eingegeben werden soll und das Programm soll das von alleine in HEX umrechnen und in den entsprechenden sendBuffer eintragen. Da verzweifle ich schon da ich sowas noch nie gemacht habe.

Was ich noch schwere finde ist, das ja zu jedem Befehl es eine extra Checksumme gibt die mit in den sendBuffer muss. Also müsste das Programm automatisch die Eingabe in HEX wandeln, es in den sendBuffer eintragen UND die Checksumme dazu berechnen und eintragen. Ist das überhaupt möglich wenn ja hat jemand einen Denkanstoß für mich? Das Programm schreibe ich in SCL.

Vielen Dank im Voraus und Liebe Grüße

TimL.
 
Mit dem Befehl HTA funktioniert die Konvertierung.
Was die Checksumme betrifft; wie wird diese denn gebildet. Dies müsste doch im Handbuch beschrieben sein. Also eine Art Formel
 
Mit dem Befehl HTA funktioniert die Konvertierung.
Was die Checksumme betrifft; wie wird diese denn gebildet. Dies müsste doch im Handbuch beschrieben sein. Also eine Art Formel
Also für die Checksumme hat mir ein Kollege einen Weg gezeigt die schriftlich zu berechnen. Der Befehl der gesendet werden soll besteht ja aus einzelnen HEX Zeichen. Die hab ich alle untereinander geschrieben und für jedes HEX Symbol den Wert in Binär daneben. Dann habe ich die einzelnen 1 und 0 werte die untereinander stehen jeweils in einer Reihe zsm gerechnet und dadurch ist ein neuer Binär Code entstanden also wenn die Anzahl an 1en in einer Reihe gleich war eine 0 und ungleich eine 1 und somit hatte ich dann das jeweilige Checksumme für einen einzelnen Befehl
 
Es gibt doch bestimmt auch ein Handbuch, wo die Bildung der Checksumme mit professionellen Fachbegriffen beschrieben ist? Kommt da vielleicht XOR oder Parität drin vor?
Oder kannst Du eine Zeichnung machen, wo die Werte untereinander stehen und wie Du die 0 und 1 Werte zsm rechnest?
 
ungetestet:
Code:
msg : ARRAY [0..n] OF BYTE;  //Command Nachricht
chksum : BYTE;
//DataBlockLen ist die Länge des DataBlocks von <STX> bis <ETX>

#chksum := 0;
FOR #i := 0 TO #DataBlockLen - 1 DO
    #chksum := #chksum XOR #msg[#i];
END_FOR;

#msg[#i] := #chksum; //Checksumme hinter Datablock in Command eintragen
 
Zurück
Oben