MC7-Code in AWL umzuwandeln

Zuviel Werbung?
-> Hier kostenlos registrieren
Naja, was noch fehlt ist der von mir etwas verhasste "CALL"-Befehl...

Die Parameter... ja, die fehlen im AWL-Code auch noch, bin leider noch nicht ganz dazu gekommen...

Und wegen der Zugriffsverletzung muss ich mal schauen, was da passiert... kannst du mir den Baustein mal in einem S7-Projekt schicken, dann weiß ich genau was du meinst! :D

Was mir jetzt allerdings noch richtig Sorgen macht sind die SDBs, die sehen irgendwie ganz komisch aus... ich tippe mal darauf, dass das einfach die Hardeware-Konfiguration ist, aber um das herauszufinden bin ich glaube ich nochmal genau so lange beschäftigt bis das geht, ist ja ein relativ komplexes Thema...

[EDIT]
Brauchst mir den Baustein doch nicht zu schicken, hab den Fehler doch gleich gefunden, DANKE!!!

Update im Anhang!
[/EDIT]
 
Zuletzt bearbeitet:
Und wegen der Zugriffsverletzung muss ich mal schauen, was da passiert... kannst du mir den Baustein mal in einem S7-Projekt schicken, dann weiß ich genau was du meinst! :D
Ich habe einfach einen neuen FC erzeugt und diesen direkt in die SPS geladen. Kann aber auch sein dass es an meiner Test-SPS hier liegt - ich will nichts beschwören.
Was mir jetzt allerdings noch richtig Sorgen macht sind die SDBs, die sehen irgendwie ganz komisch aus... ich tippe mal darauf, dass das einfach die Hardeware-Konfiguration ist, aber um das herauszufinden bin ich glaube ich nochmal genau so lange beschäftigt bis das geht, ist ja ein relativ komplexes Thema...

Im SDB 999 sind schonmal Routing Informationen / HW Konfig, das hab ich dank Ralle gerade im Siemens Forum gelesen:
http://www.automation.siemens.com/WW/forum/guests/PostShow.aspx?language=de&PostID=125362
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe einfach einen neuen FC erzeugt und diesen direkt in die SPS geladen. Kann aber auch sein dass es an meiner Test-SPS hier liegt - ich will nichts beschwören.
Ich glaube nicht wirklich, dass es da wirkliche Unterschiede bei der Erzeugung der Bausteine gibt, was mir aufgefallen ist, dass die Bausteine in der SPS erst geprüft werden, ob sie gültig sind, z.B. wenn ich in meiner CPU 315 2 PN/DP ein "ENT" oder "LEAVE" drinnen habe macht der kurz was und sagt dann, dass da was Böses drinnen ist...

Im SDB 999 sind schonmal Routing Informationen / HW Konfig, das hab ich dank Ralle gerade im Siemens Forum gelesen:
http://www.automation.siemens.com/WW/forum/guests/PostShow.aspx?language=de&PostID=125362

Werd mir das mal, in nächster Zeit zu Gemüte führen, wenn ich den Rest, der noch in Planung ist umgesetzt ist... jetzt erstmal die grundlegende AWL-Übersetzung fertig machen! :cool:
 
Bin mal wieder dazugekommen was an dem Programm was zu machen.

Aktuelle Änderungen/Erweiterungen:
- Schnittstellen für Instanzdatenbausteine hinzugefügt (IN, OUT, usw.),
- Schnittstellenvariablen werden im Programm angezeigt,
- und noch ein paar Kleinigkeiten zurechtgebogen
 

Anhänge

  • MC7.zip
    538,9 KB · Aufrufe: 277
Irgendwas passt da mit den Adressregisterfunktionen noch nicht.

Ich habe mal ohne Sinn in einen FC

TAR1 MD 10
+AR1 P#10.0
LAR1 MD 10

geschrieben, dann wird:
TAR1 MD 10

U DIX 65075.0
ausgegeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Rückmeldung!

Ich sitze gerade irgendwo in den USA am Flughafen und komme erst wieder in 2 Wochen an meinem heimischen PC auf dem ich das ändern kann, werde ich aber dann sofort erledigen!
 
Spend considerable time last weekend while comparing disassemblers and documentation, and came up with the following:
1) I'm working with VIPA PLCs, access via ISO on TCP. Some files I uploaded using MC7.exe contained a whole series of "NOP 0" at the end of the code, and some parts of code I was expecting were missing.
Much later I discovered the "testISO_TCP" delivered with Libnodave also did not seem to work correctly in this setup. Although I had a lot of large blocks in my PLC (>32k), the larges one I got using "testISO_TCP -d --readoutall" was 11k.

I believe this is caused by the following line in "doUpload()", nodave.c (version 0.8.4.4):
Code:
netLen=p2.data[1] /* +256*p2.data[0]; */ /* for long PDUs, 
I guess it is so */;
The (original) comment here suggests the packetlength could also be 2 byte. Looking at the generated debug data I was convinced in my case the netLen should be made up from both p2.data[1] and p2.data[0], so I changed this line accoding to the suggestion in the comment:
Code:
netLen=p2.data[1] +256*p2.data[0]; /* for long PDUs, I guess it is so */;
After change and recompile the "testISO_TCP -d --readoutall" works fine.
When I switched the original dll that came with mc7.exe with this recompiled one I get the results I expect. Seems like the authors guess was right!

I'm using the following VIPA PLC:
CPU with Ethernet-PG/OP
Slot 100
VIPA 315-2AG12 V3.4.2 Px000078.pkg, SERIALNUMBER .....
SUPPORTDATA : PRODUCT V3420, HARDWARE V0111, 5679G-V10 , HX000026.100 , Bx000227 V6420, Ax000086 V1200, Ax000056 V0000, fx000007.wld V1120, :
Slot 201
VIPA 342-1DA70 V3.1.9 Px000062.pkg, SUPPORTDATA : PRODUCT V3190, BB000218 V5190, AB000068 V4160,
ModuleType CB2C0010
Now this was working I really started to appreciate yor work!
2) Comparing the output of two disassemblers, I found and corrected many flaws in my own one :-(.

The AWL code below for FC21 contains the instructions which I think are not correctly disassembled in mc7.exe.

Looking forward to the next version!
 

Anhänge

  • fc21.zip
    1,5 KB · Aufrufe: 100
When I wrote Libnodave, I did only had a 315 at my disposal. Although I guessed right, I decided to stay on the safe side because if the data[0] field served for other purposes, any value above 4? (buffer size / 256) would lead to overflow problems.
There are some more issues with PDU length >240. I plan to update Libnodave code as soon as I find time to do so.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, Thanks

btw, found the same behaviour with the following hardware:
416-2DP (6ES7 416-2XN05-0AB0 / V5.1)
CP443-1 Advanced (6GK7 443-1EX41-0XE0 / V1.0)
are you interested in the "testISO_TCP --readoutall" debug output of these systems?
 
hallo,

könnte mir bitte jemand sagen, was zwischen NW's und author+family+name+version ist (und wovon haengt es ab wie lang es ist)?

3 beispiele (blau markiert):

Code:
...snip...
E1 84 D8 84 83 00 98 0A  A3 00 98 0C [COLOR=Red]65 00[/COLOR] 01 01
00 [COLOR=Silver]00 00 00 00[/COLOR] 01 [COLOR=Silver]06 00[/COLOR]  16 00 1A 00 08 00 08 00 
04 00 04 00 [COLOR=DeepSkyBlue]00 00 00 00[/COLOR]  41 54 41 54 41 54 41 54
46 54 46 54 46 54 46 54  4E 54 4E 54 4E 54 4E 54
22 00 1B 87 00 00 00 00  00 00 00 00
Code:
...snip...
[COLOR=Red]65 00[/COLOR] 01 05 00 [COLOR=Silver]00 00 00  00[/COLOR] 01 [COLOR=Silver]0A 00[/COLOR] 08 00 08 00
14 00 0A 00 14 00 0A 00  04 00 04 00 04 00 04 00
[COLOR=DeepSkyBlue]00 00[/COLOR] 41 54 41 54 41 54  41 54 46 54 46 54 46 54
46 54 4E 54 4E 54 4E 54  4E 54 22 00 5B BC 00 00
00 00 00 00 00 00
Code:
...snip...
00 0C [COLOR=Red]65 00[/COLOR] 01 20 00[COLOR=Silver] 12  00 [/COLOR][COLOR=Black][COLOR=Silver]00 00[/COLOR] [/COLOR][COLOR=Black]01 01 05 01 01
01 05 01 01 01 01 02 05  05 05 05 05 05 20 [/COLOR][COLOR=Black][COLOR=Silver]04 00
[/COLOR][/COLOR][COLOR=Black]12 00 12 00 10 00 1A 00  [/COLOR][COLOR=DeepSkyBlue]02 00 02 00 0B 00 0D 00[/COLOR]
41 54 41 54 41 54 41 54  46 54 46 54 46 54 46 54
4E 54 4E 54 4E 54 4E 54  22 00 3C 39 00 00 00 00
00 00 00 00
danke
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Human: mc7-reader scheint die schnittstellenvariablen in manchen situationen falsch zu interpretieren

beispiel: SFC6 (RD_SINFO) [getestet mit: VIPA 315-2AG10-0331, 6ES7 416-3XR05-0AB0, 6ES7 318-2AJ00-0AB0]

Code:
70 70 01 09 01 0D 00 06  00 00 00 7E 00 00 00 00
03 B0 9C D2 11 0C 03 B0  9C D2 11 0C 00 30 00 04
00 00 00 02 65 00 01 00  00 29 00 00 00 [COLOR=Red]05 16 01[/COLOR]
[COLOR=RoyalBlue]11 02 08[/COLOR] [COLOR=DeepSkyBlue]02 02 02 02 02  02 02 02 02 02 02 02 04
02 06 02[/COLOR] [COLOR=RoyalBlue]11 02 08[/COLOR] [COLOR=DeepSkyBlue]02 02  02 02 02 02 02 02 02 02
02 02 04 02 06 02[/COLOR] 00 00  00 00 20 20 20 20 20 20
20 20 44 42 5F 46 55 4E  43 54 52 44 5F 53 49 4E
46 4F 10 00 00 00 00 00  00 00 00 00 00 00
das sind

  • einmal ret_val int,
  • out struct [byte, byte, byte, byte, byte, byte, word, dword],
  • und nochmal out struct [byte, byte, byte, byte, byte, byte, word, dword]
mc7-reader zeigt in diesem fall mehrere return values, den ersten struct falsch, und den zweiten korrekt

grund: anstatt den normalen "05 06" für "ret_val int" ist hier "05 16 01"
 
Forscher: danke, aber den header habe ich schon (siehe anhang), ich wollte nur wissen was zwischen netzwerklaenge-definitionen und author-feld da ist
 

Anhänge

  • mc7hdr.pdf
    31,2 KB · Aufrufe: 192
Human: es gibt probleme auch mit "stat" schnittstellenvariablen bei fb's, wo "fb" (0x15) oder "sfb" (0x1B) als datentyp da steht

beispiel:
Code:
70 70 01 01 03 0E 00 65  00 00 00 6C 00 00 00 00
03 14 C0 0E 24 91 03 14  C0 0E 24 91 00 1C 00 06
00 00 00 02 65 00 01 65  00 14 00 00 00 [COLOR=Red]1B 05 00[/COLOR]
[COLOR=Gray]11 04 07[/COLOR] [COLOR=Silver]01 01 0B 01 01  02 0B 02 02 04 0B 04 0B
04[/COLOR] 4E 01 00 00 00 00 00  41 31 30 31 41 31 30 31
46 31 30 31 46 31 30 31  4E 31 30 31 4E 31 30 31
10 00 D5 13 00 00 00 00  00 00 00 00
struktur:
0x15/0x1B: fb/sfb, danach fb/sfb-nummer (low/high), und ein struct* mit der kopie von der schnittstelle des (ref.) bausteins


(*: das soll der grund dafür sein, dass man bei structs den parametertyp (in/out/in_out,usw...) auch per item definieren muss)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Quellcode???

Ist es möglich zu dem Programm auch den Quellcode zu erhalten?

Würde die Möglichkeit AWL Code umzuwandeln gerne in mein LibNodave Connection Library einbauen, aber das ganze nochmal zu machen wenn man den Quellcode viel. haben kann ist sonst zuviel arbeit!
 
Danke an Human nochmal für den Code zu seinem MC7.exe.

Ich habe das ganze mit einem Tool nach C-Sharp konvertiert und in meine Library eingebaut! Auch sind bei mir jetzt die Call's implementiert (hoffe soweit richtig!)
 
Nur der Vollständigheit halber, könntest du das kurz erläutern wie du dabei vorgegangen bist bzw. wie die aussehen? :shock:
 
SO habs nun mit noch ein paar Bausteinen durchgetestet... Denke mal es funktioniert soweit.

Call in Step7

ein UC sieht ja normalerweise so aus:

3D 01 70 0B 00 02

wobei die 02 bedeuten -> keine Parameter
04 -> 1 Parameter
06 -> 2 Parameter
usw...

Die Parameter sind ja dann schon in deiner doku beschrieben.

Wobei 87 nur für L und nicht für DB steht, da ja der DB wert in lokaldaten umgespeichert wird!

Und 84 == DB und 85 == DI aber nur für dirkete werte wie dbx0.0 ODER did4 nicht bei db.dbx diese werden in lokaldaten umgespeichert!
 
Was fehlt noch im Excel Dokument:

UC FC [LWjjjj]
0xfb 0x60 0xjj 0xjj 0x70 0x0b 0x00 0x02

UC FC [DBWjjjj]
0xfb 0x50 0xjj 0xjj 0x70 0x0b 0x00 0x02

UC FC [DIWjjjj]
0xfb 0x40 0xjj 0xjj 0x70 0x0b 0x00 0x02


BEi CC statts 60, 50, 40 ==> 61 51 41
 
Zurück
Oben