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...