Analoge Ausgänge mit Hilfe von Libnodave auslesen

Alexandr

Level-1
Beiträge
28
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
ich benutze S7-300 CPU 313C und CP 343-1 Lean + AI5/AO2 x 12Bit. Der Rest ist unwichtig.

Die Adressen sind
Eingänge PEW 752 bis 750 jeweils 1 Wort.
Ausgänge PAW 752 und 754 da nur 2 analoge Ausgänge.

So in Libnodave lese ich die analoge Eingänge mit

res=daveReadBytes(dc,daveP,0,752,2,NULL)
bis
res=daveReadBytes(dc,daveP,0,760,2,NULL)

Wie soll das mit den Ausgängen funktionieren, da dort in der Funktion die PEW bzw. PAW nicht in der Funktion steht, kann ich die Adressen nicht unterscheiden.

Danke im vorraus..
 
Ausgänge auslesen funktioniert IMHO doch nur, wenn die Werte entweder im PAA, einem Merkerwort oder in einem DB stehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe 2 Variablen vom Datentyp Word in DB1 deklariert und der weise ich mit dem MOVe Baustein die PAW 752 & 754 zu. Warum bekomme ich

Aktualdatentyp WORD paßt nicht zu formalem Typ des Formalparameter

Wenn ich bei MOVE auf F1 clicke steht dass man alle Datentypen übergeben kann.
 
Doof von mir. Natürlich geht nicht da PAW ein Ausgang ist und kann bei MOVE-Eingang nicht übernommen werden...

Sorry

Noch irgendwelchen vorschlag
 
Also ich würde es mit laden/transferieren in PLC versuchen.
Dann hast du es im Db1 ind kannst in einem Satz laden und dann in einem Satz schreiben.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich würde es mit laden/transferieren in PLC versuchen.
Dann hast du es im Db1 ind kannst in einem Satz laden und dann in einem Satz schreiben.

Ich versuche PAW 752 zu laden und in DB1.DBW259 zu transferieren. Das ist das gleiche wie MOVE in FUP. Das geht leider nicht. Ich kann PAW 752 nicht laden. Es gibt immer diese Fehlermeldung

"""Aktualdatentyp WORD paßt nicht zu formalem Typ des Formalparameter"""

Was mache ich da falsch?
 
Definiere im DB1 deine Variable als Word, nimm eine gerade Adresse, keine ungerade!
 
Welchen Sinn soll das haben ein PAW lesen zu wollen?
Irgendwo wird das doch im Programm beschrieben,
an der Stelle überträgst Du auch den Ausgabewert
an die Variable für Libnodave.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Definiere im DB1 deine Variable als Word, nimm eine gerade Adresse, keine ungerade

Die sind in DB1 als word definiert und gerade auch 250.0 und 252.0

Welchen Sinn soll das haben ein PAW lesen zu wollen?

Die Werte sollen in einem Datenbank ausgegeben werden (alle Werte von der SPS) und im Browser angezeigt.

Irgendwo wird das doch im Programm beschrieben,
an der Stelle überträgst Du auch den Ausgabewert
an die Variable für
Libnodave

Wie gesgat ich habe das mit
res=daveReadBytes(dc,daveP,0,752,2,NULL)

in Libnodave zu übertragen aber wie unterscheidet man Analog Eingänge von Ausgänge... daveP ist ja für beide und die Adressen sind ja gleich: 752 & 754
 
Nochmal, wie schon vom westermann vielleicht nicht klar genug formuliert:

Ein PAB/PAW/PAD kann man nicht lesen. Umgekehrt lässt sich ein PEB/PEW/PED ja auch nicht beschreiben.

Wenn ein Rücklesbarkeit gefordert ist gibt's zwei Ansätze:
- Du konfigurierst in der Hardwarekonfiguration die Basisadresse deiner analogen Peripherie ins Prozessabbild (ich glaube bei der 313C geht das bis 128 oder 256), dann lässt sich der ausgegebene Wert aus dem entsprechenden AW lesen
- Du handelst wie von westermann vorgeschlagen und schreibst an der Stelle im Programm, an der das PAW beschrieben wird deinen Wert noch zusätzlich in eine später mit libnodave auslesbare Adresse (Merkerbereich, Datenbaustein)
 
Zurück
Oben