s7onlinx.dll tracer

LowLevelMahn

Level-1
Beiträge
766
Reaktionspunkte
90
Zuviel Werbung?
-> Hier kostenlos registrieren
im Anhang findet ihr ein kleines c/c++ artiges Projekt von mir
mit dem man leicht die Kommunikation der s7onlinx.dll
von/zu Applikationen mitloggen kann

tracerdll.dll -> detours hooker
tracerlib.lib -> kann die traces schreiben/lesen
tracerview.exe -> kleines Anzeigeprogramm

viel spass den interessierten

LowLevelMahn
 

Anhänge

  • s7onlinx.dll.tracer.zip
    11,2 KB · Aufrufe: 152
was noch interessant wäre...

welche Applikationen nutzen noch die s7onlinx.dll?

also auf jeden Fall mal der NCDDE server des 840D HMI Advance
und Prodave6 (denke ich)

Sinn der Frage:

ich würde gern die aktuelle und niederste gemeinsame kommunikationsschnitttstelle finden - bisher denke ich das die s7onlinx.dll am niedersten ist - danach kommt bei mir nur noch der Treiber für die CP5611 karte und der hat auch keine weiteren Abhängigkeiten

was kann der normalsterbliche machen:
einfach mit dem http://www.dependencywalker.com/
schauen welche Dlls noch so verwendet werden

danke

btw: nutzt jemand den tracer schon? - oder bin ich hier im falschen Forum
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
welche Applikationen nutzen noch die s7onlinx.dll?

also auf jeden Fall mal der NCDDE server des 840D HMI Advance
und Prodave6 (denke ich)

Sinn der Frage:

ich würde gern die aktuelle und niederste gemeinsame kommunikationsschnitttstelle finden - bisher denke ich das die s7onlinx.dll am niedersten ist - danach kommt bei mir nur noch der Treiber für die CP5611 karte und der hat auch keine weiteren Abhängigkeiten

was kann der normalsterbliche machen:
einfach mit dem http://www.dependencywalker.com/
schauen welche Dlls noch so verwendet werden

danke

btw: nutzt jemand den tracer schon? - oder bin ich hier im falschen Forum
Das Forum ist mit Sicherheit das richtige (es gibt kein Besseres in diesem Umfeld). Aber das Thema ist sehr speziell. Und ich hoffe dass ich jetzt nicht einigen auf die Füße trete, aber ich glaube, dass nur wenige wissen wofür das Ganze gut sein soll.
Ich werde mit den Tracer auf jeden Fall bei Gelegenheit ansehen. Komme derzeit aber aus Mangel an Langeweile nicht dazu. Wenn neue Versionen verfügbar sein sollten, bitte auf jeden Fall einstellen.
 
naja für dich wird er ja nicht so interessant sein...

ihr DeltaLogic-Junges seit ja schon ziemlich gut mit "funktionierenden" Produkten versorgt

benötigt ihr für die Kommunikation zum CP5611 auch die s7onlinx oder geht ihr da eigene Wege? Möglicherweise habt Ihr ja sogar einen Linux-Treiber für die CP5611?

mein Langzeitziel ist ein Ersatz für die s7onlinx.dll zu schreiben
und dann die CP5611 Treiber zu ersetzen - mir fehlt nur total die Produktübersicht - ich weiss nicht was die s7onlinx.dll alles kann und ob der CP5611-Treiber (S7opciax.sys) auch andere Karten anbindet

ciao
 
Zuletzt bearbeitet:
Für die CP5611 verwenden wir die S7onlinx-Schnittstelle. Die Idee, einen eigenen Direktzugriff zu schreiben, haben wir nach Prüfung verworfen. Zuviele Hindernisse stehen das im Weg. Und die Gefahr, dass sich in der Hardware was ändert, Siemens zwar einen Treiber liefert, aber der eigene nicht mehr funktioniert. Ein weiteres großes Problem an der Geschichte ist, dass die CP5611 einen ASPC2 hat. Dieser muss direkt programmiert werden. Doku gibt es nur gegen sehr sehr viel Geld, Fazit es lohnt sich nicht. Wenn es schon eine Originalkarte sein muss, dann doch lieber die 5613 verwenden. Dort gibt es von Siemens ein SDK und Linux-Treiber etc. Eine weitere Alternative sind die Profibus-Karten anderer Hersteller. Als Beispiel ist hier Softing oder Hilscher angeführt. Dort sind Treiber für Linux ebenfalls verfügbar. Man kann sich somit voll und ganz um das überlagerte Protokoll kümmern und muss sich nicht mit der Hardware rumärgern.
Wofür soll die alternative S7onlinx.dll gut sein? Was ist der Zweck (außer Lernen)?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für die CP5611 verwenden wir die S7onlinx-Schnittstelle.
die kann aber auch die anderen system ansprechen, oder?
ich hoffe mal das siemens die details in den treiber gesteckt hat und nicht in diese dll

Die Idee, einen eigenen Direktzugriff zu schreiben, haben wir nach Prüfung verworfen. Zuviele Hindernisse stehen das im Weg. Und die Gefahr, dass sich in der Hardware was ändert, Siemens zwar einen Treiber liefert, aber der eigene nicht mehr funktioniert.
ändert sich die treiber oft - siemens ist dort doch schonn bischen träger

Ein weiteres großes Problem an der Geschichte ist, dass die CP5611 einen ASPC2 hat. Dieser muss direkt programmiert werden. Doku gibt es nur gegen sehr sehr viel Geld, Fazit es lohnt sich nicht.
heisst das microcode - oder ist die karte einfach kein dummer durchreicher
->der treiber scheint keinen sooo komplexen aufbau zu haben - sagt der freeware ida

Wenn es schon eine Originalkarte sein muss, dann doch lieber die 5613 verwenden. Dort gibt es von Siemens ein SDK und Linux-Treiber etc.
link?

Wofür soll die alternative S7onlinx.dll gut sein? Was ist der Zweck (außer Lernen)?
gedankenspiel - eigener CP5611 treiber + s7onlinx.dll + WINE = Step 7 unter Linux - also eher Lernen ... btw: der 2.6.24 ist da, wer freut sich noch?
 
die kann aber auch die anderen system ansprechen, oder?
ich hoffe mal das siemens die details in den treiber gesteckt hat und nicht in diese dll
Die s7onlinx kann alle mir bekannten Treiber ansprechen. Sie reicht in diesem Sinne nur durch.

ändert sich die treiber oft - siemens ist dort doch schonn bischen träger
Keine Ahnung, der Hardwaretreiber hat mich bis jetzt noch nicht richtig interessiert. Aber auch bei Siemens besteht die Möglichkeit der Änderung ;)

heisst das microcode - oder ist die karte einfach kein dummer durchreicher
->der treiber scheint keinen sooo komplexen aufbau zu haben - sagt der freeware ida
Der ASPC2 ist ein sehr intelligentes Kerlchen der sehr viel selbständig abhandelt. Vorausgesetzt er wird richtig parametriert. Die 5611 zählt zu den dummen Karten, d.h. die Programmierung erfolgt auf dem PC. Die 5613/5614 sind intelligente Karte mit eigenem Prozessor. Diese erhalten nur bestimmte Kommandos und handeln diese komplett ab. Sie schirmen die Komplexität des ASPC2 vom PC ab.

War soweit ich weiß bei der Karte dabei.

gedankenspiel - eigener CP5611 treiber + s7onlinx.dll + WINE = Step 7 unter Linux - also eher Lernen ... btw: der 2.6.24 ist da, wer freut sich noch?
Was ist WINE? Warum so kompliziert? Warum nicht eine alternative PB-Karte? Warum überhaupt eine PB-Karte? Warum nicht z.B. einen NetLink PRO verwenden? Der funktioniert auch problemlos unter Linux.
 
Vorweg ein Wort: Die MPI-Schnittstelle ist im wesentlichen auch Profibus, nur läuft dort nicht gleichzeitig DP-Kommunikation.

Um dir eine Vorstllung zu geben, was ein ASPC2 tut:
- Er wird mit Baudrate, der eigenen PB-Adresse, der Rolle (Master) und dem PB-Timing parametriert.
- Danach fügt er sich selbstständig in den PB-Token Ring ein und erledigt die Grundpflichten eines Masters (Teilnehmerliste, GAP-Verwaltung, Versenden von Quittungen) eigenständig.
- Er holt sich komplette Diagramme aus einem Speicherbereich, den er sich mit dem Host-Prozessor teilt und legt emfangene Telegramme dort ab. Dieser Speicher ist strukturiert in verkettete Listen pro SAP (Service access point).
- Er wickelt Telegrammwiederholungen eigenständig ab, wenn die Quittung ausbleibt.
- Nach Emfang, erfolgreichem oder endgültig erfolglosem Versand kann er den Host-Prozessor per Interrupt benachrichtigen.

Der Treiber für das Ding muß im wesentlichen:
- Die Register initialisieren
- Den Zugriff des Host-Prozessor auf den gemeinsamen Speicher durchführen
- Die Interrupts beantworten, falls verwendet.

Probleme:
- Die Siemens-Doku zum ASPC2 ist frei erhältlich, aber m.E. ziemlich schlecht. Siemens rät darin, gleich eine Software von Siemens dazu zu kaufen. Preis war mal 90000 Dollar, wenn ich mich nicht irre.
- Du kannst nicht einfach mit dem ASPC2 auf dem CP6511 spielen. Auf der Karte ibefindet sich ein PCI-Bus-ASIC von einem Dritthersteller. Es scheint mir nicht ohne weiteres ersichtlich, ob und wie man darüber die Register des ASPC2 erreicht.
- Die meisten Register sind nur schreib-, nicht lesbar, daher kann man nicht einmal sehen, ob man erfolgreich geschrieben hat oder wie der Original-Treiber die Register initialisiert.
gedankenspiel - eigener CP5611 treiber + s7onlinx.dll + WINE = Step 7 unter Linux ...
Wenn Step7 unter WINE laufen könnte, könnte man vielleicht eher den Original-Treiber unter Kontrolle eines Linux-Kernel-Moduls laufen lassen. Da gab es mal was mit einem Modul, was den Original NTFS-Treiber von Windows in Linux einbindet. Ich komme gerade nicht auf den Namen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
danke für die infos

Die Siemens-Doku zum ASPC2 ist frei erhältlich, aber m.E. ziemlich schlecht. Siemens rät darin, gleich eine Software von Siemens dazu zu kaufen
hast du einen Link - oder das Dokument?
Nur als Orientierungshilfe

Du kannst nicht einfach mit dem ASPC2 auf dem CP6511 spielen. Auf der Karte ibefindet sich ein PCI-Bus-ASIC von einem Dritthersteller. Es scheint mir nicht ohne weiteres ersichtlich, ob und wie man darüber die Register des ASPC2 erreicht.
d.h. die schlechte Doku ist nur für einen teil weiter hinter der PCI anbindung - das ist blöd

Die meisten Register sind nur schreib-, nicht lesbar, daher kann man nicht einmal sehen, ob man erfolgreich geschrieben hat oder wie der Original-Treiber die Register initialisiert.
man könnte auch in den Originaltreiber schauen - aber trotz der geringen Größe würde ich sicherlich eine weile brauchen - und ganz legal ist das dann ja auch nicht - oder?

an beide
Danke für die Details und das Augenöffnen
ich konzentriere mich erstmal nur auf die s7onlinx.dll und die komischen pakete der 840D NCK/PLC

@zottel
libnodave und deine doku helfen mir sehr beim verstehen - und ich hoffe ich kann dann auch was zu deiner lib beitragen
hab hier noch andere pdu-typen und opcodes usw. für dich - und die sache mit der benachrichtigung bei veränderung

@Rainer
die Fixierung auf den CP5611 auch nur weil ich die Hoffung hatte (habe) keine Hardware-Veränderung vornehemen zu müssen (wir bekommen den ganzen klotz PCU+Cp56111 usw + Software ) komplett konfektioniert und konfiguriert von Siemens) und dennoch die Siemenssoftware zu ersetzen - aber das muss noch warten

btw: hat einer von euch beiden ein analyseprogramm für s7onlinx.dll traces - also bringt es euch was für eure Produkte wenn ich ein paar der PCU/NCK spezifischen Kommunikationen mitlogge und euch zukommen lasse?
 
Zuletzt bearbeitet:
@Rainer
die Fixierung auf den CP5611 auch nur weil ich die Hoffung hatte (habe) keine Hardware-Veränderung vornehemen zu müssen (wir bekommen den ganzen klotz PCU+Cp56111 usw + Software ) komplett konfektioniert und konfiguriert von Siemens) und dennoch die Siemenssoftware zu ersetzen - aber das muss noch warten

btw: hat einer von euch beiden ein analyseprogramm für s7onlinx.dll traces - also bringt es euch was für eure Produkte wenn ich ein paar der PCU/NCK spezifischen Kommunikationen mitlogge und euch zukommen lasse?
Auf Grund der zu erwartenden Probleme empfehle ich nach wie vor eine Lösung, die über TCP/IP zugreift, d.h. NetLink Pro o.ä. Hier muss nur die PG/PC-Schnittstelle umgestellt werden. Die Hardwareabhängigkeit ist hier wesentlich geringer und die Portierung (wenn erforderlich) somit wesentlich schneller. Außerdem kannst Du dann direkt mit dem reden, der den Treiber für die S7-Software geschrieben hat ;).
An weiteren Infos, speziell im Bereich NC, bin ich immer interessiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
verkauft an den Herren auf der anderen Seite des Netzwerks..

Auf Grund der zu erwartenden Probleme empfehle ich nach wie vor eine Lösung, die über TCP/IP zugreift, d.h. NetLink Pro o.ä. Hier muss nur die PG/PC-Schnittstelle umgestellt werden. Die Hardwareabhängigkeit ist hier wesentlich geringer und die Portierung (wenn erforderlich) somit wesentlich schneller. Außerdem kannst Du dann direkt mit dem reden, der den Treiber für die S7-Software geschrieben hat.

ok wenn ich Geld in die Hand nehme komm ich zu dir

An weiteren Infos, speziell im Bereich NC, bin ich immer interessiert.

für euch sind bestimmt die NC Variablen sinnvoll - die scheinen komplett in dem Datablock,...Areacode-Teil zu liegen (identifikation über ne checksumme oder sowas) - nur siemensdoku lesen ...

die direkte nc-code übertragung und solche sachen basieren auf teils stringbasierten befehlen (möglicherweise NCK spezifisch) - mal schauen ob das allgemein genug ist
 
Hallo

Danke erst mal für das Tool. Ich verwende es auf einer HMI V6.0.
Wenn man den Tracer startet nachdem die HMI hoch gelaufen ist, werden Daten die im aktiven Dateisystem sind nicht mehr angezeigt. Man muss den Tracer also zuerst starten. Dann werden aber immer noch nicht die Telegramme von allen Aktionen aufgezeichnet. Z.B. bei dem erstellen eines IBN Archiv. Wo kann das Problem liegen?

mfg
Tobias
 
Hallo

OK, geht. Kann jetzt auch alle möglichen Telegramme tracen.
Ich habe zum sniffen von allen möglichen Telegrammen auf einem Bus mit RS485-Topologie einen "Sniffer" (oder wie man das auch immer nennen will) designed und implementiert der unabhängig von Sinec Hard- und Software arbeiten kann. Die Hardware dafür kann man sich mit einem FTDI-Controller selber bauen oder das USB Interface RS485 von W&T kaufen. Nur falls das jemanden interessiert...

mfg
Tobias
 
Zuviel Werbung?
-> Hier kostenlos registrieren
dauerhaftes verankern des tracers

du kannst auch die tracerdll.dll nicht mit withdll.exe sondern mit setdll.exe (im bin von Detours) dauerhaft an die ncdde.exe binden ... dann hast du logs von windows-start bis shutdown... aber vorsicht der logger erzeugt das tracerdll.bin file immer wieder neu d.h. du solltest den im windows-mode setten und nach dem normalstart mit logging wieder in den windows-mode wechseln und den tracer wieder mit setdll entfernen

mfg LowLevelMahn

btw: wie läufts mitm reverse engeneering :) ... bei mir stockts gerade ein bischen (keine zeit)
und wenn du aenderungen am tracer machst kannst du die ja auch posten
(mir fehlt noch eine mutex-sicherung beim schreiben, nachm nck-reset ist teilweise ein neuer thread im spiel und der erzeugt kurzzeitig defekte log-pakte)
 
Zuletzt bearbeitet:
Ja. Bin schon fertig mit tracen. Hab alle Telegramme die ich gebraucht habe. An der Tracer-DLL hab ich nix geändert, hab mir allerdings einen Viewer geschrieben. Der ist aber in der Firma und mit dem Borland Builder entwickelt. Kann ihn deshalb nicht online stellen.

viel Erfolg noch...:)

mfg
Tobias
 
Zurück
Oben