Crouzet Millenium 3 xd26 Serielle Kommunikation

Distanz

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi SPS Profis,

ich brauche mal Eure Hilfe. Ich bin dabei die Crouzet Millenium xd26 über die Serielle Schnittstelle auszulesen. Jedoch bekomme ich es nicht hin die Prüfsumme zu berechnen.

Hier mal die Anleitung von Crouzet:




Beschreibung
Der Funktionsblock Ausgang serielle Verbindung ermöglicht das Senden von Daten, die sich an festen Adressen im Controller befinden, an andere Geräte über eine serielle Verbindung.


--------------------------------------------------------------------------------

Zugriff
Diese Funktion kann über die HMI-Funktionsleiste aufgerufen werden.


--------------------------------------------------------------------------------

Eingänge/Ausgänge
Die Funktion verfügt über acht Eingänge vom Typ Ganzzahl. Diese Eingänge ermöglichen es der Applikation, die zu sendenden Daten an die gewählten Festadressen-Speicherpositionen zu schreiben.


--------------------------------------------------------------------------------

Parameter
Über das Fenster Parameter wählt der Benutzer einen Bereich von acht Adressen. Folgende Adressbereiche sind verfügbar:
25 - 32
33 - 40
41 - 48




--------------------------------------------------------------------------------

Der Frame der zu lesenden Daten und die Antwort
Der an den Controller zu sendende Frame für die zu lesenden Daten ist wie folgt strukturiert:
Anfangstrennzeichen: " : "
Adresse des Slave: 0x04
Lesebefehl: 0x03
Adresse der Daten: 0x00 00 FF xx
xx ist eine Zahl zwischen 0x00 und 0x2F und entspricht der Adresse des ersten zu lesenden Datenbytes minus 1.
Anzahl Bytes: 0xnn
Dies ist die Anzahl der zu lesenden Datenbytes. Jeder Wert besteht aus zwei Bytes.
Prüfsumme: 0xcc
Dies ist die Summe plus 1 der Bytes der Slave-Adresse und der Anzahl Bytes.
Endtrennzeichen: " CR " " LF "


Die Antwort des Controllers ist wie folgt strukturiert:
Anfangstrennzeichen: " : "
Adresse des Slave: 0x04
Lesebefehl: 0x03
Anzahl Bytes: 0xnn
Gelesene Daten: 0xd1H d1L d2H ... dnnL
Es handelt sich um die 0xnn gelesenen Bytes.
Prüfsumme: 0xcc
Dies ist die Summe plus 1 der Bytes der Slave-Adresse und des letzten gelesenen Datenbytes.
Endtrennzeichen: " CR " " LF "




--------------------------------------------------------------------------------

Beispiel
Lesen von 5 16-Bit-Werten von der Adresse 17:
Frame in hexadezimaler Schreibweise vor der ASCII-Codierung:
" : " 04 03 00 00 FF 10 0A E0 " CR " " LF "
Frame in hexadezimaler Schreibweise nach der ASCII-Codierung:
3A 30 34 30 33 30 30 30 30 46 46 31 30 30 41 45 30 0D 0A
Antwort, wenn die fünf Werte 0 ergeben:
3A 30 34 30 33 30 41 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 45 46 0D 0A




--------------------------------------------------------------------------------

Verhalten im Falle eines Kommunikationsausfalls
Das Senden bestimmter fehlerhafter Frames an den Controller hat einen Ausfall der Kommunikation zur Folge. Das heißt, dass weder das Senden von Daten über den seriellen Port an den Controller noch die Kommunikation mit dem Controller aus der Programmierumgebung heraus möglich ist. In diesem Fall muss die Stromversorgung des Controllers aus- und wiedereingeschaltet werden. Auf diese Weise lässt sich die Kommunikation wiederherstellen.





Wenn ich das Beispiel wie oben angegeben an die SPS Sende funktioniert es wunderbar sobald ich aber die Adresse der Bytes (Welche laut Anleitung nicht zur Berechnung der Prüfsumme relevant ist) , oder die Anzahl der Bytes verändere klappt es nicht mehr! Dies liegt wie gesagt an der Prüfsumme.

Kann mir hierbei jemand helfen?

Wie komme ich auf die 0xE0 entspricht 224 ???

Ich komme nur auf 214 also 0xD6. Hiermit klappt die Verbindung nicht mehr ist ja klar!
(Rechnung: 0 => ASCII 48, 4 => ASCII 52, 0 => ASCII 48, A => ASCII 65 daraus die Summe 213 + 1 = 214 )


Gruß
und vielen Dank für eure Hilfe!
 
Zuletzt bearbeitet:
Zurück
Oben