Dein Problem ist nicht nur das 2x DD...
Hast Du da Code von Step7 classic zu TIA migriert? (Wo hast Du den Code her?)
Für welche CPU soll der Code sein?
1) In Step7 classic kann man mit DD (DB-Doppelword DBD) auf Speicheradressen in einem DB indiziert zugreifen, z.B. DD[4] meint das DBD4. In TIA geht das nicht so. Da musst Du vermutlich die Anweisung PEEK verwenden (das geht aber nur bei DB, wo die Variablen auch Adressen (einen Offset) haben).
2) Die Werte in Deinem DB sind INT (16 Bit = 2 Byte). Du rechnest aber die Adressen (Offset im DB) als wären die Werte DINT (32 Bit = 4 Byte).
3) Den Sinn Deiner FOR-Schleife verstehe ich nicht. Müsstest Du da nicht einen Wert in der Tabelle suchen, der >= Deinem #Niveau_in_cm ist? Also Werte aus der Tabelle lesen? Dein Code liest in der FOR-Schleife gar nicht aus der Tabelle. Oder entspricht der Index in die Tabelle den cm? Dann brauchst Du keine FOR-Schleife.
Warum hat Deine Tabelle keinen Wert bei 0 cm? Besser Du fügst noch einen 0-cm-Wert am Anfang (Offset 0.0) ein, anstatt aufwendig im Code eine Sonderbehandlung bei 0 cm zu programmieren.
Ich habe gerade kein TIA greifbar und weiß nicht die Parameter von PEEK, doch der Code für das Lesen aus Deiner Peiltabelle (plus 0-Wert) müsste etwa so aussehen:
Code:
#iNiveau_in_cm := REAL_TO_INT(#Niveau_in_mm / 10.0); //#iNiveau_in_cm ist ein Int in Temp
#iNiveau_in_cm := LIMIT(MN := 0, IN := #iNiveau_in_cm, MX := #Anzahl_Peilpunkte - 1); //(Anzahl Peilpunkte ist inkl. Wert bei 0 cm)
#iOffset := #iNiveau_in_cm * 2; //Adresse für Tabelle mit INT-Werten, erster Wert für 0 cm
#Stand_Aktuell := PEEK(16#84, #DB_Peiltabelle, #iOffset); //PEEK Syntax?
IF #iNiveau_in_cm = #Anzahl_Peilpunkte - 1 THEN
#Stand_Naechster := #Stand_Aktuell;
ELSE
#Stand_Naechster := PEEK(16#84, #DB_Peiltabelle, #iOffset + 2); //PEEK Syntax?
END_IF;
#Differenz := ...
4) Muß Dein Programmcode wirklich mit Peiltabellen mit unterschiedlicher Anzahl Peilpunkte klarkommen? Besser wäre es wenn Du ein Array an den Baustein übergibst, dann müsstest Du keine Adressen ausrechnen sondern könntest schön symbolisch adressieren und der Code würde auch mit "optimierten" DB funktionieren. Ich vermute, für das lineare Interpolieren aus Tabellen mit Arrays (mit Werte-Paaren) gibt es auch für TIA schon fertige Bausteine (LGF_...?)
PS: sehe ich das richtig, daß die Variablen in Deinem DB Zahlen als Name haben?

Gewöhne Dir so einen Scheixx gar nicht erst an - in "seriösen" Programmiersprachen dürfen Variablennamen keine Zahlen sein. Nimm anstatt 1, 2, 3 ... besser Namen wie Wert_1, Wert_2, Wert_3 ... Das ist nicht wirklich mehr Schreibaufwand, nach dem Wert_1 schreibt ja TIA die weiteren Namen für Dich. (Oder nimm besser ein Array)
Harald