Werte aus Datenbaustein verrechnen

Soccer90

New member
Beiträge
2
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

ich komme bei einem Problem mit Step7 V5.3 nicht weiter und hoffe, dass Ihr mir helfen könnt. Ich programmiere in SCL.

Mein Ziel ist es, einen FB zu erstellen, der Rechenoperationen mit Werten aus einem DB ausführen kann und die Ergebnisse in temporären Variablen bzw. einem neuen DB speichert.
Das einfache Kopieren eines DB-Inhalts in einen anderen DB ist mir bereits gelungen, dazu habe ich
Code:
Ziel_DB.DB[i] := Quell_DB.DB[i]
verwendet.
Nach dem gleichen Schema würde ich jetzt gerne eine Berechnung einbinden, beispielsweise das Runden von Werten. Anschließend möchte ich mich gerne an einer Interpolation versuchen, die dem Matlab Befehl interp2 entsprechen soll.
Mein erster Ansatz lautet
Code:
VAR_INPUT
Quell_DB : BLOCK_DB;
Ziel_DB : BLOCK_DB;
END_VAR

Ziel_DB.DB[2] := (Quell_DB.DB[6]*100)/100;
Dieser Code soll Bestandteil der Deklaration eines FB's sein, welcher nachher DB's als Input Werte erhält, die an den angegebenen Stellen REAL- Werte beinhalten.
Leider wird mir die Fehlermeldung über Unzulässige Operandentypen ausgegeben, da beim Übersetzen offensichtlich nicht erkannt wird, dass hinterher ein REAL Wert an der Stelle stehen soll/wird.
Habe bereits probiert, temporäre Variablen als Ergebnis der Rechenoperation anzugeben, das Problem scheint aber da zu liegen, wo Quell_DB.DB[6]*100 gerechnet werden soll.

Hat jemand eine Idee, wie das Problem zu lösen ist?

Gruß,
Yannik
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Hallo,
bei dieser Adressierung arbeitet SCL immer mit den Grundtypen (BYTE, WORD, DWORD). Mit diesen kann man nicht rechnen. Du mußt also casten ... den DB[6] nach REAL und das Ergebnis der Berechnung wieder nach BYTE ...

Gruß
Larry
 

Blockmove

Supermoderator und User des Jahres 2019
Teammitglied
Beiträge
10.397
Punkte Reaktionen
3.037
Die Handhabung der Datentypen in S7 bringt mich noch um den Verstand...

Und ich bin froh darüber, dass es wenigstens in S7 vernünftige Typen gibt.
Ich plag mich gerade mit S7->WinCC->VBS->SQL-Server->Reporting Services herum.
Ein halber Tag Arbeit bis ein simpler S7 Date_and_Time Wert richtig in der Datenbank bzw. im Report ankommt.

Gruß
Dieter
 

Jochen Kühner

Well-known member
Beiträge
4.211
Punkte Reaktionen
484
Und ich bin froh darüber, dass es wenigstens in S7 vernünftige Typen gibt.
Ich plag mich gerade mit S7->WinCC->VBS->SQL-Server->Reporting Services herum.
Ein halber Tag Arbeit bis ein simpler S7 Date_and_Time Wert richtig in der Datenbank bzw. im Report ankommt.

Gruß
Dieter

Das liegt aber auch daran, das das Siemens eigene Visualisierungsystem (WinCC) nicht mal alle Grundlegenden S7 Datentypen unterstützt (DateTime, TimOfDay,...) da bietet Flexible mehr...
 

Blockmove

Supermoderator und User des Jahres 2019
Teammitglied
Beiträge
10.397
Punkte Reaktionen
3.037
Zuviel Werbung?
->Hier kostenlos registrieren
Das liegt aber auch daran, das das Siemens eigene Visualisierungsystem (WinCC) nicht mal alle Grundlegenden S7 Datentypen unterstützt (DateTime, TimOfDay,...) da bietet Flexible mehr...

Da stimmt. Ist eigentlich eine Frechheit.
Ein WinCC mit 2048Tags kostet über 10000€ und kann nicht mal alle Datentypen und das in Version 7.0 und 15Jahre nach Erscheinen von S7.
Aber jetzt kommt ja noch WinCC 7.2 und das soll es ja können :ROFLMAO:

Gruß
Dieter
 
Oben