MC7-Code in AWL umzuwandeln

Doku...

Hatt den jemand auch was in Textform zu dem aufbau der Parameter bzw. der DB Datenstruktur und Wertestruktur.

Ich hab zwar schon was aber aus dem Quellcode rauslesen ist ja umständlich! Dachte vielleicht hat das jemand bisschen dokumentiert?
 
Wie ich das aus seinem anderen Thread verstanden habe, will er einen SDB wieder in die Hardwarekonfiguration zurückübersetzen.
Ich wüsste nicht, dass sich da schonmal jemand dran gemacht hat die SDBs zu entschlüsseln.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry I mentioned wrong name!
Hi Jochen
I'm Looking for an open source project that decrypt all Blocks which is in PLC memory(all OBs, all SFCs, All SFBs, All SDBs ,...). At this moment, I got all blocks in MC7 format using Libnodave, but just decoded only OBs and FCs and FBs by DotNetSiemensToolbox.dll, not SDBs and DBs. how can I decode this blocks(SDBs and DBs) and read original content Written by SIMATIC S7?
Regards
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Parser Fehler MC7->DB

Hallo Jochen,

ich versuche einen MC7-DB mit Deiner ToolBoxLibrary zu Dekompilieren, leider kommt es zu einem Fehler in GetInterface. Scheinbar wird die Struktur nicht korrekt geparst, beim Aufruf von FillActualValuesInDataBlock kommt es dann zum Schreiben außerhalb des definierten Bereiches der "actualValueBytes". Kannst du mir helfen, an welcher Stelle das Parsen fehlschlägt?
BTW: Der DB kommt aus einer SIMATIC S7-300 CPU 319-3 PN/DP.

Anhang anzeigen DB1806.txt

Danke im Vorraus.

Gruß,
Andreas
 
Die Struktur Parsen geht ja, die Frage ist, stimmt die?
Bei den Werten muss man schauen wo es fehlschlägt, bzw. Wie weit die Werte stimmen.
Dann muss man halt schauen was falsch gemacht wird
Code:
DB1806
000.0: ROOTNODE: STRUCT
000.0: 	IN: STRUCT
000.0: 		IN0: BOOL
001.0: 		IN1: BYTE := 255
002.0: 		IN2: WORD := 5000
004.0: 		IN3: WORD := 500
006.0: 		IN4: INT := 1
008.0: 		IN5: INT
010.0: 		IN6: INT
012.0: 		IN7: INT
014.0: 	OUT: STRUCT
014.0: 		Out0: BOOL
014.1: 		Out1: BOOL
016.0: 		Out2: DWORD
020.0: 	IN_OUT: STRUCT
020.0: 	STATIC: STRUCT
020.0: 		STAT0: WORD
022.0: 		STAT1: INT
024.0: 		STAT2: INT
026.0: 		STAT3: INT
028.0: 		STAT4: INT
030.0: 		STAT5: INT
032.0: 		STAT6: INT
034.0: 		STAT7: BOOL
034.1: 		STAT8: BOOL
034.2: 		STAT9: BOOL
034.3: 		STAT10: BOOL
034.4: 		STAT11: BOOL
034.5: 		STAT12: BOOL
034.6: 		STAT13: BOOL
035.0: 		STAT14: BYTE
036.0: 		STAT15: INT
038.0: 		STAT16: WORD
040.0: 		STAT17: INT
042.0: 		STAT18: INT
044.0: 		STAT19: WORD
046.0: 		STAT20: WORD
048.0: 		STAT21: WORD
050.0: 		STAT22: WORD
052.0: 		STAT23: WORD
054.0: 		STAT24: BYTE
056.0: 		STAT25: INT
058.0: 		STAT26: WORD
060.0: 		STAT27: ARRAY [1..240] OF BYTE
300.0: 		STAT28: STRUCT
300.0: 			STAT29: STRUCT
300.0: 				STAT30: BOOL := True
300.1: 				STAT31: BOOL := True
300.2: 				STAT32: BOOL := True
300.3: 				STAT33: BOOL
301.0: 				STAT34: BYTE := 255
302.0: 				STAT35: WORD := 1
304.0: 				STAT36: WORD := 3456
306.0: 				STAT37: WORD := 3456
308.0: 				STAT38: ARRAY [0..3] OF BYTE
312.0: 				STAT39: WORD
314.0: 				STAT40: WORD := 1000
316.0: 			STAT41: STRUCT
316.0: 				STAT42: BYTE
317.0: 				STAT43: BYTE := 1
318.0: 				STAT44: WORD := 500
320.0: 				STAT45: WORD := 1500
322.0: 			STAT46: STRUCT
322.0: 				STAT47: BYTE
323.0: 				STAT48: BYTE := 1
324.0: 				STAT49: WORD := 500
326.0: 				STAT50: WORD := 1500
328.0: 			STAT51: STRUCT
328.0: 				STAT52: BOOL
329.0: 				STAT53: BYTE
330.0: 				STAT54: WORD := 60
332.0: 				STAT55: TIME_OF_DAY := 01.01.0001 03:05:00
336.0: 		STAT56: FB1805
336.0: 		STAT57: STRUCT
336.0: 			STAT58: BOOL
336.1: 			STAT59: BOOL
338.0: 			STAT60: WORD
340.0: 			STAT61: WORD := -1
342.0: 			STAT62: ANY
352.0: 			STAT63: ANY
362.0: 			STAT64: ANY
372.0: 			STAT65: BOOL
372.1: 			STAT66: BOOL
372.2: 			STAT67: BOOL
372.3: 			STAT68: BOOL
374.0: 			STAT69: WORD
376.0: 			STAT70: BOOL
376.1: 			STAT71: BOOL
376.2: 			STAT72: BOOL
378.0: 			STAT73: WORD
380.0: 			STAT74: STRUCT
380.0: 				STAT75: STRUCT
380.0: 					STAT76: BYTE
381.0: 					STAT77: BYTE := 1
382.0: 					STAT78: WORD := 500
384.0: 					STAT79: WORD := 1500
386.0: 				STAT80: STRUCT
386.0: 					STAT81: BYTE
387.0: 					STAT82: BYTE := 1
388.0: 					STAT83: WORD := 500
390.0: 					STAT84: WORD := 1500
392.0: 				STAT85: STRUCT
392.0: 					STAT86: REAL
396.0: 					STAT87: REAL
400.0: 					STAT88: REAL
404.0: 					STAT89: BYTE
406.0: 					STAT90: WORD
408.0: 					STAT91: DATE_AND_TIME
416.0: 					STAT92: DATE_AND_TIME
424.0: 					STAT93: DATE_AND_TIME
432.0: 				STAT94: STRUCT
432.0: 					STAT95: ARRAY [0..3] OF BYTE
436.0: 					STAT96: WORD
438.0: 					STAT97: WORD
440.0: 					STAT98: BOOL
441.0: 					STAT99: BYTE
442.0: 					STAT100: BYTE
444.0: 					STAT101: WORD
446.0: 					STAT102: WORD
448.0: 				STAT103: STRUCT
448.0: 					STAT104: BYTE
450.0: 					STAT105: WORD
452.0: 					STAT106: WORD
454.0: 				STAT107: WORD := -1
456.0: 				STAT108: ARRAY [0..63] OF STRUCT
456.0: 					STAT109: DWORD
460.0: 					STAT110: DATE_AND_TIME
468.0: 					STAT111: WORD
470.0: 					STAT112: DWORD
474.0: 					STAT113: REAL
478.0: 					STAT114: REAL
482.0: 					STAT115: REAL
2376.0: 			STAT116: STRUCT
2376.0: 				STAT117: STRUCT
2376.0: 					STAT118: BOOL
2376.1: 					STAT119: BOOL
2376.2: 					STAT120: BOOL
2376.3: 					STAT121: BOOL
2377.0: 					STAT122: BYTE
2378.0: 					STAT123: WORD
2380.0: 					STAT124: WORD
2382.0: 					STAT125: WORD
2384.0: 					STAT126: ARRAY [0..3] OF BYTE
2388.0: 					STAT127: WORD
2390.0: 					STAT128: WORD
2392.0: 				STAT129: STRUCT
2392.0: 					STAT130: BYTE
2393.0: 					STAT131: BYTE
2394.0: 					STAT132: WORD
2396.0: 					STAT133: WORD
2398.0: 				STAT134: STRUCT
2398.0: 					STAT135: BYTE
2399.0: 					STAT136: BYTE
2400.0: 					STAT137: WORD
2402.0: 					STAT138: WORD
2404.0: 				STAT139: STRUCT
2404.0: 					STAT140: BOOL
2405.0: 					STAT141: BYTE
2406.0: 					STAT142: WORD
2408.0: 					STAT143: TIME_OF_DAY
2412.0: 			STAT144: BOOL
2412.1: 			STAT145: BOOL
2412.2: 			STAT146: BOOL
2412.3: 			STAT147: BOOL
2412.4: 			STAT148: BOOL
2412.5: 			STAT149: BOOL
2412.6: 			STAT150: BOOL
2412.7: 			STAT151: BOOL
2413.0: 			STAT152: BOOL
2413.1: 			STAT153: BOOL
2413.2: 			STAT154: BOOL
2413.3: 			STAT155: BOOL
2413.4: 			STAT156: BOOL
2413.5: 			STAT157: BOOL
2413.6: 			STAT158: BOOL
2413.7: 			STAT159: BOOL
2414.0: 			STAT160: BOOL
2414.1: 			STAT161: BOOL
2414.2: 			STAT162: BOOL
2414.3: 			STAT163: BOOL
2414.4: 			STAT164: BOOL
2414.5: 			STAT165: BOOL
2414.6: 			STAT166: BOOL
2414.7: 			STAT167: BOOL
2415.0: 			STAT168: BYTE
2416.0: 			STAT169: BYTE
2417.0: 			STAT170: BYTE
2418.0: 			STAT171: WORD
2420.0: 			STAT172: WORD
2422.0: 			STAT173: INT
2424.0: 			STAT174: WORD
2426.0: 			STAT175: STRUCT
2426.0: 				STAT176: WORD := 64
2428.0: 				STAT177: WORD
2430.0: 				STAT178: BYTE := 1
2431.0: 				STAT179: BOOL
2432.0: 				STAT180: BYTE := 2
2433.0: 				STAT181: BYTE := 2
2434.0: 				STAT182: BYTE
2435.0: 				STAT183: BYTE
2436.0: 				STAT184: BYTE
2437.0: 				STAT185: BYTE
2438.0: 				STAT186: ARRAY [1..16] OF BYTE
2454.0: 				STAT187: ARRAY [1..6] OF BYTE
2460.0: 				STAT188: ARRAY [1..6] OF BYTE
2466.0: 				STAT189: ARRAY [1..16] OF BYTE
2482.0: 				STAT190: ARRAY [1..6] OF BYTE
2488.0: 				STAT191: WORD
2490.0: 			STAT192: FB1803
2490.0: 			STAT193: STRUCT
2490.0: 				STAT194: BOOL
2492.0: 				STAT195: WORD
2494.0: 				STAT196: BOOL
2494.1: 				STAT197: BOOL
2494.2: 				STAT198: BOOL
2496.0: 				STAT199: WORD
2498.0: 				STAT200: ANY
2508.0: 				STAT201: BOOL
2508.1: 				STAT202: BOOL
2510.0: 			STAT203: FB1801
2510.0: 			STAT204: STRUCT
2510.0: 				STAT205: BOOL
2512.0: 				STAT206: WORD
2514.0: 				STAT207: INT
2516.0: 				STAT208: BOOL
2516.1: 				STAT209: BOOL
2516.2: 				STAT210: BOOL
2518.0: 				STAT211: WORD
2520.0: 				STAT212: ANY
2530.0: 				STAT213: BOOL
2530.1: 				STAT214: BOOL
2532.0: 			STAT215: FB1802
2532.0: 			STAT216: STRUCT
2532.0: 				STAT217: BOOL
2534.0: 				STAT218: WORD
2536.0: 				STAT219: INT
2538.0: 				STAT220: BOOL
2538.1: 				STAT221: BOOL
2538.2: 				STAT222: BOOL
2540.0: 				STAT223: WORD
2542.0: 				STAT224: INT
2544.0: 				STAT225: ANY
2554.0: 				STAT226: BOOL
2554.1: 				STAT227: BOOL
2556.0: 			STAT228: FB1804
2556.0: 			STAT229: STRUCT
2556.0: 				STAT230: BOOL
2558.0: 				STAT231: WORD
2560.0: 				STAT232: BOOL
2560.1: 				STAT233: BOOL
2560.2: 				STAT234: BOOL
2562.0: 				STAT235: WORD
2564.0: 				STAT236: BOOL
2564.1: 				STAT237: BOOL
2566.0: 			STAT238: STRUCT
2566.0: 				STAT239: WORD
2568.0: 				STAT240: WORD
2570.0: 			STAT241: ARRAY [1..28] OF BYTE
2598.0: 			STAT242: WORD
2600.0: 			STAT243: INT
2602.0: 			STAT244: TIME
2606.0: 			STAT245: TIME
2610.0: 			STAT246: TIME
2614.0: 			STAT247: TIME
2618.0: 			STAT248: TIME
2622.0: 			STAT249: TIME
2626.0: 			STAT250: TIME
2630.0: 			STAT251: TIME
2634.0: 			STAT252: WORD
2636.0: 			STAT253: ARRAY [0..1] OF BYTE
2638.0: 			STAT254: STRUCT
2638.0: 				STAT255: BYTE
2639.0: 				STAT256: BYTE
2640.0: 				STAT257: WORD
2642.0: 				STAT258: WORD
2644.0: 			STAT259: STRUCT
2644.0: 				STAT260: BYTE
2645.0: 				STAT261: BYTE
2646.0: 				STAT262: WORD
2648.0: 				STAT263: WORD
2650.0: 			STAT264: DWORD
2654.0: 			STAT265: DWORD
2658.0: 			STAT266: WORD
2660.0: 			STAT267: WORD
2662.0: 			STAT268: WORD
2664.0: 			STAT269: WORD
2666.0: 			STAT270: WORD
2668.0: 			STAT271: WORD
2670.0: 			STAT272: WORD
2672.0: 			STAT273: WORD
2674.0: 			STAT274: WORD
2676.0: 			STAT275: WORD
2678.0: 			STAT276: WORD
2680.0: 			STAT277: WORD
2682.0: 			STAT278: WORD
2684.0: 			STAT279: WORD
2686.0: 			STAT280: INT
2688.0: 			STAT281: STRUCT
2688.0: 				STAT282: BYTE
2689.0: 				STAT283: BYTE
2690.0: 				STAT284: WORD
2692.0: 				STAT285: WORD
2694.0: 			STAT286: STRUCT
2694.0: 				STAT287: BYTE
2695.0: 				STAT288: BYTE
2696.0: 				STAT289: WORD
2698.0: 				STAT290: WORD
2700.0: 			STAT291: INT
2702.0: 			STAT292: ARRAY [0..15] OF BYTE
2718.0: 			STAT293: ARRAY [0..4095] OF BYTE
6814.0: 			STAT294: ARRAY [0..4095] OF BYTE
10910.0: 		STAT295: BYTE
10912.0: 	RET_VAL: STRUCT
 
Hallo Jochen,

ich glaube es gibt noch einen Fehler im Interface-Parser.
In dem von Dir geposteten Interface-Extract sind die folgenden Zeilen erkennbar:
Code:
336.1: 			STAT59: BOOL
338.0: 			STAT60: WORD
und
Code:
376.2: 			STAT72: BOOL
378.0: 			STAT73: WORD

Scheinbar wird immer beim Übergang von BOOL auf WORD ein Byte zu viel addiert, daher schlägt vermutlich dann auch die Zuweisung der Startwerte fehl.

Gruß,
Andreas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
schau mal in step7, denke das ist richtig.
hab leider keine zeit das zu debuggen.
denke wenn du die aktualwerte unterschiedlich befüllst, dann kannst du rausfinden bis wohin diese richtig sind und so den fehler finden.
 
Es ist richtig so.
Wenn man in ein DB Typen wechseln, wie von BOOL auf WORD in den beispiel, wird immer von den nächste gerade Byte fortgesetzt.

edit: Oder wenn man einen neuen STRUCT beginnt, wird auch von den nächsten geraden byte fortgestzt.
 
Zuletzt bearbeitet:
Zurück
Oben