Real Werte indirekt adressiert aus SCL in DB schreiben und lesen

Jupp_76

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen :)

Lieder konnte ich über die Hilfe nichts finden das mich weitergebracht hätte, deswegen schreibe ich hier mal mit der Hoffnung das mir jemand weiterhelfen kann.

Also ich habe für eine statistische Auswertung ein SCL Modul geschrieben das eine Histogrammfunktion ermöglicht. Der erste entwurf arbeitete für die Histogrammwerte mit WORD. Jetzt möchte ich das gerne in Real ändern, allerdings scheint das unter SCL nicht so einfach zu gehen.

Funktionsumfang:
Übergabe des DB als Block_DB an die Funktion
Indirektes lesen von Realwerten aus dem DB
Indirektes schreiben von Realwerten in den DB

Ich bekomme immer den Fehler das der Datentyp nicht zulässig ist.
WEnn ich allerdings absolut adressiere funktioniert der Baustein...

Kann mir jemand weiterhelfen ?
Vielen Dank
 
Hallo,
du kann in/mit SCL immer nur WORD oder DWORD an einen externen DB schreiben. Das ist aber erstmal kein Problem. Du brauchst auf deine Quell-Variable nur eine AT-Sicht (z.B. vom Typ DWORD) erzeugen und die dann übertragen.

Beispiel :
Code:
VAR_TEMP
   REAL_Var : REAL ;
   dw_REAL_Var at REAL_Var : DWORD ;
END_Var
... die so entstandene "neue" Variable hat nun das richtige Format für den "Transferiere"-Befehl.

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

so richtig klar ist mir das noch nicht :), wenn ich folgendes versuche bekomme ich gleich vom Compiler einen Fehler das ungültige Operantentypen verwendet werden :-(


VAR_INPUT
Sollgewicht : REAL;
letzte_Netto: REAL;
e: REAL; // Auflösung des Histogramms
n: INT; // Breite des Histogramms muss ungerade sein
Histogramm_DB: BLOCK_DB;
END_VAR


VAR_TEMP
REAL_Var : REAL ;
dw_REAL_Var at REAL_Var : DWORD ;
END_Var


dw_REAL_Var:=Histogramm_DB.DBD0;

Histogramm_DB.DBD0:=dw_REAL_Var + 1;


Normalerweise Programiere ich B&R oder Beckhoff, der SCL Kompiler ist schon etwas wählerisch :)

Kannst Du mir vielleicht nochmal helfen?
 
wenn du das Folgende änderst, dann geht es :
Code:
dw_REAL_Var:=Histogramm_DB.DBD0;

Real_Var := Real_Var + 1 ;

Histogramm_DB.DBD0:=dw_REAL_Var ;
Gruß
LL
 
Hey Larry,
besten dank jetzt funktioniert alles :).
Das ist schon ein bisschen merkwürdig was die Siemensianer da so in Ihren Compiler integriert haben :)
 
Zurück
Oben