Step 7 6. Potenz einer beliebigen BCD Zahl in Strep7 (SCL)

Zuviel Werbung?
-> Hier kostenlos registrieren
Mir ist allerdings nun unklar wie ich diese veränderte Funktion über die Beobachtungstabelle steuern kann, bzw. wie ich dann die Werte zum Testen übergeben muss.
Du rufst den FC1 in KOP/FUP/AWL oder SCL auf, beschaltest die Übergabeparameter mit Variablen (z.B. MW100, MW102, M8.0) und beobachtest bzw. steuerst diese Variablen in einer VAT = Variablen(beobachtungs)tabelle (Zielsystem > Variable beobachten/steuern). Wegen dem BCD-Format von Eingangswert und Ergebnis bietet sich die Anzeige als HEX an.

*** KOP ***
Code:
       +---------------+
       |      FC1      |          M8.0
-------|EN          ENO|----------( )
       |               |
MW100--|Wert    RET_VAL|--MW102
       +---------------+
*** FUP ***
Code:
       +---------------+
       |      FC1      |
  ...--|EN      RET_VAL|--MW102   M8.0
       |               |        +-----+
MW100--|Wert        ENO|--------|  =  |
       +---------------+        +-----+
*** AWL ***
Code:
      CALL  FC 1
       Wert   :=MW100
       RET_VAL:=MW102
      U     BIE
      =     M 8.0
*** SCL ***
Code:
  Ergebnis := FC1(Wert := MW100);
  M8.0 := OK;
  IF NOT OK THEN [COLOR="#008080"]//Ergebnis ungültig![/COLOR]
    ;            [COLOR="#008080"]//... Fehlerbehandlung[/COLOR]
  END_IF;


Muss ich dann noch Änderungen in der Symboltabelle vornehmen?
Müssen mußt Du nicht, doch wenn Du in der Symboltabelle dem FC1 und den Variablen ein Symbol gibst, dann kannst Du den FC1 und die Variablen (besser lesbar) über das Symbol ansprechen, z.B. "Ergebnis := MyFC_BCDpower6(Wert := Eingabewert);"

Harald
 

Anhänge

  • VAT1.PNG
    VAT1.PNG
    24,2 KB · Aufrufe: 14
Jetzt funktioniert die Übergabe, super :D vielen Dank.
Aufgrund meiner Unwissenheit war der FC nicht richtig beschaltet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Fazit: x**y ist grottenschlecht umgesetzt, exp(ln(x)) ist besser, ausmultiplizieren ist noch besser, aber nur mit Integer. Der Datentransfer von und zu big endian vintage schadet nicht. Da haben sie möglicherweise einpaar hardwaremäßig gekreuzte Leitungen drin.
Um das den Faktor 10 langsamer zu machen, muss aber wirklich einiges schief gelaufen sein.
Ich würde mal vermuten, dass pow() bei den meisten Architekturen über entsprechende FPU Logarithmus-Anweisungen berechnet wird. Das würde ja eher dafür sprechen, dass in der 1200 doch eine Eigenkonstruktion an Prozessor werkelt.
 
Zurück
Oben