Import berechneter Signale aus XDA-Dateien: Unterschiede zwischen MDA V7 und MDA V8

Ab MDA V8.3.3 ist es möglich, berechnete Signale aus XDA-Dateien zu importieren. Aus diversen Gründen können die Ergebnisse der berechneten Signale in MDA V8 anders ausfallen als in MDA V7. Dieses Dokument listet die Unterschiede im Detail auf.

  • MDA V7 und MDA V8 verwenden unterschiedliche Programmiersprachen, um Formeln zu evaluieren: MDA V7 benutzt einen Perl-Interpreter, während MDA V8 an C angelehnte Berechnungsvorschriften nutzt. Dies kann zu unterschiedlichen Ergebnissen führen (z. B. aufgrund der Auflösung). Basierend auf das Rechenergebnis (Typdeduktion), verwendet MDA V8 intern automatisch verschiedene Datentypen (z. B. int8, uint8, int16, Boolean, Double).
  • MDA V8 unterstützt für berechnete Signale den Typen Boolean, Double und  Automatisch. MDA V7 unterstützt zusätzlich unterschiedliche Ganzzahltypen (uint16, sint32, ...). Während des Imports wird für alle Ganzzahltypen die  Ausgabe Automatisch verwendet. Wenn Sie in MDA V7 einen Ganzzahltyp auswählen, um ein Ganzzahl-Ergebnis zu sichern, kann MDA V8 Gleitkommazahlen liefern.
  • MDA V7 verwendet automatisch die Decimal()-Funktion für binäre Operationen (z. B. in der Funktion Binary_AND). MDA V8 bildet dieses Verhalten nach, indem es die Raw()-Funktion aufruft. Wenn Sie ein berechnetes Signal verwenden, wird MDA V8 dieses nicht nutzen sondern den physikalischen Wert anwenden.
  • Bei der Verwendung des Modulo (%)-Operators, benutzt MDA V7 die Nachkommastelle. MDA V8 nutzt den physikalischen Wert.
  • Benutzerdefinierte Perl-Skripte, die die Funktionen für neu definierte Signale definieren, werden nicht unterstützt. Berechnete Signale, die solche Funktionen verwenden, werden importiert, aber die Formeln zeigen einen Fehler an.
  • Wenn Sie ein Signal auf die Raster-Einstellungen verweisen, das nicht Teil der aktuellen Formel ist, verwendet MDA V8 "Combined Rasters(Merge Raster)".
  • Einstellungen für verbale Umrechnungen werden in MDA V8 nicht unterstützt und werden nicht berücksichtigt.
  • Signale vom Typ "Grenzüberwachung" werden importiert. Allerdings werden die verbalen Umrechnungseinstellungen (und deren dazugehörigen Meldungen) ignoriert. Das daraus resultierende Signal wird in MDA V8 auf Boolean (und nicht auf String) gesetzt. Die Signale werden während des Imports aus dem Oszilloskop gelöscht. Bitte weisen Sie im Oszilloskop das berechnete Signal manuell einem Booleschen Streifen zu. Sie können es auch dem Instrument Ereignisliste zuweisen. Dies ergibt eine ähnliche Ansicht wie der Ereignisstreifen in MDA V7.
  • Die Funktionen TableMap1 und TableMap2 werden nicht unterstützt und zeigen in MDA V8 Fehler auf.

Konstanten

MDA V7

Migrierte Formeln in MDA V8

BIRTHDAY

In MDA V8 nicht unterstützt

DATE

In MDA V8 nicht unterstützt

E

2,71828182845905

EPOCH

In MDA V8 nicht unterstützt

G

9,80665

LOG2_E

1,44269504088896

LOG10_E

0,434294481903252

LOG_2

0,693147180559945

LOG_10

2,30258509299405

PI

3,14159265358979

PI_DIV_2

1,5707963267949

PI_DIV_4

0,785398163397448

ONE_DIV_PI

0,318309886183791

ONE_DIV_SQRT_2

0,707106781186548

SEC_PER_DAY

86400,0

SEC_PER_HOUR

3600,0

SEC_PER_MIN

60,0

SQRT_2

1,4142135623731

TWO_DIV_PI

0,636619772367581

TWO_DIV_SQRT_PI

1,12837916709551

TWO_PI

6,28318530717959

Standard Operationen

Die Berechnungsergebnisse mit  Standard Operationen von importierten berechneten Signalen weisen folgende bekannte Probleme auf:

  • MDA V7 und MDA V8 haben unterschiedliche Werte für die rint/RoundInt-Funktion. Die rint-Funktion in MDA V7 nutzt eine spezifische asymmetrische Aufrundung nach oben, während MDA V8 symmetrisch nach oben aufrundet.
  • In MDA V7 verwenden die Shift (>>, <<) und die binäre Operationen die Rohwerte eines Signals. MDA V8 bildet dieses Verhalten nach, indem es die Raw()-Funktion aufruft. Diese Emulation funktioniert jedoch nicht richtig für verschachtelte berechnete Signale, d. h. wenn das Argument ein berechnetes Signal ist, das ein Messsignal enthält.
  • Berechnete Signale von Ganzzahltypen in MDA V7 werden in MDA V8 in Double-Typen umgewandelt. Dies führt zu Unterschieden bei der Behandlung von arithmetischem Overflow, z.B. dass der Wert '-1' in MDA V7 als '4294967295.00' dargestellt wird, was ((uint32)'-1') entspricht, und in MDA V8 real '-1.00' ist.

Operationen vom Typ "Einzel-Bit"

 

Was

MDA V7

Migrierte Formeln in MDA V8

Anmerkung

Einzelnes Bit

double((long(rint(signal)) >> shift_value) & and_value)

Wenn ein Messsignal verwendet wird:

Raw(signal) >> shift_value & and_value

Wenn ein Wert verwendet wird:

value >> shift_value & and_value

Für Argumente, die Messsignale sind, wird die Raw-Funktion aufgerufen.

Operationen vom Typ "Bitmaske"

 

Was

MDA V7

Migrierte Formeln in MDA V8

Anmerkung

Bitmaske

double((long(rint(signal)) >> shift_value) & and_value)

Wenn ein Messsignal verwendet wird:

Raw(signal) >> shift_value & and_value

Wenn ein Wert verwendet wird:

value >> shift_value & and_value

Für Argumente, die Messsignale sind, wird die Raw-Funktion aufgerufen.

Operationen vom Typ "Grenzen anzeigen"

MDA V7 ermöglicht es, berechnete Signale zu definieren, die überwachen, ob ein oder mehrere Signale einen Grenzwert überschreiten. Für jeden zu überwachenden Grenzwert ist eine Kondition definiert sowie ein Hinweis, wenn der Grenzwert nicht eingehalten wird.

Für MDA V8 ist eine solche Operation in einem berechneten Signal des Typ Boolean migriert. Die dazugehörende Meldung wird nicht migriert.

Beispiel:

Die XDA-Datei für ein Signal enthält drei Berechnungsregeln:

1

MyLimitMonitor1?1 = ${'C:_Data\INCA-NG_Sample Files\Coldstart2.dat:DG0:CG0:N10'}>1000

2

MyLimitMonitor1?2 = ${'C:_Data\INCA-NG_Sample Files\Coldstart2.dat:DG0:CG0:N10'}<100

3

MyLimitMonitor = ${'MyLimitMonitor1?1'} + ${'MyLimitMonitor1?2'}

Diese Formeln werden in MDA V8 in ein einziges berechnetes Signal konvertiert:

Name

MyLimitMonitor

Formel

(N10 > 1000) || (N10 < 100)

Typ

Boolean