Re: Libnodave
joker76 schrieb:
Hallo,
für unsere Schulprojekt haben wir uns für Libnodave entschieden.
Am Anfang mancher Bedienungsanleitung wird dem Benutzer su seiner Wahl gratuliert...
Nun stehe ich noch vor ein paar Verständnisprobleme.
Werde die einzelnen Programme hintereinander mit entsprechender Parametrierung aufgerufen?
Die verschiedenen Programme sind dazu gedacht, verschiedene Übertragungsverfahren (MPI; PPI, Ethernet mit CP, Ethernet mit IBH Link) zu testen.
Da ihr einen CP habt, ist testISO_TCP das richtige für euch.
Bezüglich der Parameter: Ruft es ohne jedes Argument auf einer Kommandozeile (DOS-Box) auf. Es sagt dann, was es versteht.
Die beiliegenden Programme sind nur zum Test gedacht und sind nicht wirklich nützlich.
Sie haben zum Beispiel keine Parameter, um ihnen gezielt mitzutelen, was sie aus der SPS lesen sollen.
Libnodave an sich ist eine Bibliothek. Das heißt, sie enthält ein paar spezielle Funktionen zum Einbau in eigene Programme.
Oder muss ich ein C-Programm schreiben, in welchenm die
C-Quelldateien eingebunden werden ?
Du mußt keins von beiden. Statt C kannst du auch Pascal benutzen. Von den Dateien mußt du die header Dateien nodave.h und setport.h in dein Programm einbinden, wenn du in C programmierst.
Bei Pascal (oder Delphi) must du nodave.pas benutzen (mit uses nodave.pas).
Beim linken mußt du angeben, daß die Bibliothek libnodave als dynamische Bibliothek eingebunden werden soll. Auf windows ist dazu die Datei libnodave.lib erforderlich, die mitgeliefert wird.
Dies führt dazu, daß dein Programm später beim start Windows (oder Linux?) auffordert, die Bibliothek libnodave zu laden, worauf ihre Funktionen deinem Programm zur Verfügung stehen.
Unser Ziel ist es, aus einem Datenbaustein über Ethernet ein Bereich von 64 Integerwerte auszulesen, um diese dann in eine Datei zu schreiben.
Wenn du dir den code in testISO_TCP.c anschaust, siehst du vielleicht, daß ein entsprechendes Programm durch einige Änderungen daraus erzeugt werden kann:
1. testISO_TCP liest ja schon 64 bytes von DB1. (Zeile 314 ff.). Was, wieviel und woher es liest wird durch die Parameter von daveReadBytes bestimmt.
daveReadBytes(dc, area, DBnummer, start, anzahl, puffer). Die Nummer des DBs müßt ihr anpassen. Weiterhin sind 64 Integer 128 bytes. Ihr müßt also die Anzahl auf 128 setzen.
Wenn Ihr nich ab Datenbyte 0 beginnen wollt, müßt ihr auch die Startadresse ändern.
Schließlich druckt das Testprogramm nur die ersten 2 und den letzten Wert aus.
Ihr könnt in einer Schleife 64 mal daveGetWord(dc) aufrufen. Das holt jedes mal den nächsten Wert als Wort aus dem internen Puffer. Diesen Wert könnt ihr ausdrucken.
Von dem Testprogramm könnt ihr danach alles streichen, was nicht nötig ist. Das meiste ist für euch nicht nötig.
Das entstandene Programm schreibt euch nun die 64 Werte hintereinander auf den Bildschirm. Um in eine Datei zu schreiben, ruft ihr nun einfach.
meinprog >meinedatei auf.
Statt auf den Bildschirm zu schreiben, schreibt es nun in die neu erstellte Datei meinedatei.
Auch in PHP kann man das ganz leicht einbinden: PHP kennt einen Befehl (habe den Namen gerade nicht parat), um ein externes Programm auszuführen. Die Ausgabe dieses Programmes steht danach in einem PHP-array und kann in die HTML-Seite eingebaut werden.