Jochen Kühner
Level-3
- Beiträge
- 4.448
- Reaktionspunkte
- 677
-> Hier kostenlos registrieren
Also kann die alte Kommunikation nur verwendet werden wenn es in den CPU eigenschaften sitzt, und die mit 0x72 immer?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Response auf Start Session:
0000 72 01 00 7a 32 00 00 04 ca 00 00 00 01 36 11 02
0010 87 [B]20[/B] 87 53 a1 00 00 01 20 82 1f 00 00 a3 81 69
0020 00 15 00 a3 82 32 00 17 00 00 01 3a 82 3b 00 04
0030 82 00 82 3c 00 04 81 40 82 3d 00 04 84 80 c0 40
0040 82 3e 00 04 84 80 c0 40 82 3f 00 15 1b 31 3b 36
0050 45 53 37 20 32 31 34 2d 31 41 45 33 30 2d 30 58
0060 42 30 20 3b 56 32 2e 32 82 40 00 15 05 32 3b 37
0070 39 34 82 41 00 03 00 03 00 a2 00 00 00 00 72 01
0080 00 00
=> 0x20 + 0x80 = a0
Request Write:
0000 72 02 00 66 31 00 00 05 42 00 00 00 02 00 00 03
0010 [B]a0[/B] 34 00 00 03 a0 01 01 82 32 01 00 17 00 00 01
0020 3a 82 3b 00 04 82 00 82 3c 00 04 81 40 82 3d 00
0030 04 84 80 c1 00 82 3e 00 04 84 80 c0 40 82 3f 00
0040 15 00 82 40 00 15 00 82 41 00 03 00 03 00 00 00
0050 00 04 e8 89 69 00 12 00 00 00 00 89 6a 00 13 00
0060 89 6b 00 04 00 00 00 00 00 00 72 02 00 00
Für das eine Byte scheint das ja schonmal zu passen.Berechnung Session ID:
Zuminstes das letzte Byte der Session ID wird aus dem Byte 17 der Resopnse auf Start Session berechnet -> Byte 18 + 0x80
Was ich bis heute nicht geschafft habe ist die SYM-CRC Berechnung erfolgreich durchzuführen. Weiß jemand mehr darüber?
Siemens nutzt das gleiche Generatorpolynom wie auch beim Profibus, nämlich:
x^32+x^31+x^30+x^29+x^28+x^26+x^23+x^21+x^19+x^18+x^15+x^14+x^13+x^12+x^9+x^8+x^4+x+1
Das hat der Jochen auch schon in seiner Lib drin, funktioniert einwandfrei:
https://github.com/jogibear9988/Dot...DaveConnectionLibrary/General/TiaCrcHelper.cs
Ich habe nochmal meine Logfiles durchgesehen. Der variable Teil in der Session-Id scheint nur das rechte Byte zu sein, zumindest steht in dem Byte davor immer eine 3.
Wenn man die Daten an Wort-Grenzen ausrichtet gehört die 3 zur Id, muss aber nicht sein.
Aber da beim Verbindungsabbau auch die Session-Id inkl. der 3 im Datenteil vorhanden ist, würde ich sagen sie gehört mit dazu.
Könnte ja sein, das die mittleren 4 bytes der crc sind welcher in dem Patent beschrieben ist? Die ersten 4 Bytes Speicherbereich? Oder etwas in die Richtung und die letzten 4 Bytes die laufende ID... Sind aber alles nur Ideen...
Welches Patent meint Ihr hier?
Hallo,
mir ist noch nicht klar, worüber die Sym-CRC bei der S7-1500 berechnet wird. Und ob diese Sym-CRC Berechnung auch für die S7-1500 unterstützt wird.
Aus einem TIA Projekt kann ich zum Beispiel folgendes herausziehen:
<dataBlock name="DB6" logicalAddress="%DB6" supportsAddressingByOffset="false" subtype="DB" CRC="0xD4FD3326">
...
<dataTag name="Array_Byte" offset="32.0" datatype="Array[0..10] of Byte" id="60" lid="22" rid="0x02010002" />
...
<dataTag name="IEC_COUNTER" offset="148.0" datatype="IEC_COUNTER" id="89" lid="67" rid="0x0200001E" subPartIndex="-5" />
...
<dataTag name="IEC_LTIMER" offset="190.0" datatype="IEC_LTIMER" id="92" lid="70" rid="0x02000044" subPartIndex="-8" />
In einem Wireshark-Mitschnitt, einer Abfrage der Daten aus DB6 sehe ich unter anderem:
Item Address: SYM-CRC=8db85e63, LID=DB6.22
Weiß jemand, ob und wie sich aus den Daten oben berechnen lässt?
BTW: Mit dem .xml File und dem Wireshark-Mitschnitt habe ich die im S/COMM-Plus Wireshark Plugin noch unbekannten Typen
0x10 = IEC_COUNTER
und
0x11 = IEC_LTIMER
gefunden.
Gruß
Jürgen
mir ist noch nicht klar, worüber die Sym-CRC bei der S7-1500 berechnet wird. Und ob diese Sym-CRC Berechnung auch für die S7-1500 unterstützt wird.
Aus einem TIA Projekt kann ich zum Beispiel folgendes herausziehen:
<dataBlock name="DB6" logicalAddress="%DB6" supportsAddressingByOffset="false" subtype="DB" CRC="0xD4FD3326">
...
<dataTag name="Array_Byte" offset="32.0" datatype="Array[0..10] of Byte" id="60" lid="22" rid="0x02010002" />
...
<dataTag name="IEC_COUNTER" offset="148.0" datatype="IEC_COUNTER" id="89" lid="67" rid="0x0200001E" subPartIndex="-5" />
...
<dataTag name="IEC_LTIMER" offset="190.0" datatype="IEC_LTIMER" id="92" lid="70" rid="0x02000044" subPartIndex="-8" />
In einem Wireshark-Mitschnitt, einer Abfrage der Daten aus DB6 sehe ich unter anderem:
Item Address: SYM-CRC=8db85e63, LID=DB6.22
Weiß jemand, ob und wie sich aus den Daten oben berechnen lässt?
BTW: Mit dem .xml File und dem Wireshark-Mitschnitt habe ich die im S/COMM-Plus Wireshark Plugin noch unbekannten Typen
0x10 = IEC_COUNTER
und
0x11 = IEC_LTIMER
gefunden.
public static void SucheCrcTrenner()
{
bool found = false;
byte[] bytes1 = Encoding.ASCII.GetBytes("VAR_STRUCT1");
byte[] bytes2 = Encoding.ASCII.GetBytes("VAR_STRUCT1_INT");
byte[] delim = { 0x00 };
byte[] combined = bytes1.Concat(delim).Concat(bytes2).ToArray();
int delim_pos = bytes1.Length;
string search_crc = "b1c00672";
string crc;
search_crc = search_crc.ToUpper();
for (byte i = 0; i < 255; i++)
{
combined[delim_pos] = i;
crc = getcrc(combined).ToString("X").PadLeft(8, '0');
if (crc == search_crc)
{
Console.WriteLine("Gefunden! Trennzeichen = " + i);
found = true;
break;
}
}
if (!found)
{
Console.WriteLine("Nicht gefunden");
}
Console.ReadKey();
}
So ein "Mist",
ich krieg die Formatierung im Hexdump nicht hin.
Im Edit Feld sieht es immer gut aus, dann wirft das Forum aber scheinbar die "überflüssigen"
Leerzeichen wieder raus und es siehr "blöd" aus.
Ich bitte um Entschuldigung.
Es ist aber hoffentlich zu erkennen was die Felder bedeuten.
mfG. klaly
Item[1]: (Dataset 256 Address 2043 CHAR 68)
- Variable specification: 0x12
- Length of following address specification: 10
- Syntax Id: S7ANY (0x10)
- Transport size: CHAR (3)
- Length: 68
- Dataset number: 256
- Area: Dataset (0x01)
- Address: 0x0007fb
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen