Sfc20

bresner1

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo


Ich habe gerade ein S5 projekt konvertiert indem der Befehl


ADD BF +1
L KH EEFF Adresse MB 255
TNB 1

auftaucht.

Die fehlermeldung beim übersetzen dazu sieht so aus

+ 1;
L W#16#EEFF;
//CALL SFC 20 (
// SRCBLK := P#????? BYTE 1 ,
// RET_VAL := conv_ret_val,
// DSTBLK := P#????? BYTE 1
// );
// *** Fehler in Zeile 98 (FB 58): CALL SFC 20 generiert, bitte Parameterliste ergänzen. ***


kann jemand estwas damit anfangen?
 
Hallo Bresner,

der Befehl TNB 1 transferiert dekrementierend und byteweise.
Die Quelladresse steht im Akku 2 und die Zieladresse im Akku 1.
Die Quelle ist bei dem Code den Du angegeben hast leider nicht
zu erkennen. Die Zieladresse ist das MB 255 (Wenn der Kommentar stimmt).
Da nach dem TNB eine 1 steht, wird nur 1 Byte kopiert. Daher kannst Du Dir
den SFC 20 schenken und statt dessen "T MB 255" einsetzen.

Ich hoffe ich konnte Dir helfen!

Grüße
Gebs
 
Code:
    L   =  ADR        lade Adresse
        +F        Offset Kanalnr.
        T   MW 250        Zwischenbuffer Adresse
        ADD BF    +1    
        L   KH    EEFF    Adresse MB 255
        TNB    1        lade 1 Byte von VIPA Karte
ich hoffe bei diesem code sieht man mehr

und wie benene ich die any pointer?



Und kenn noch jemand den LIR 0 befehl habe den fehler gerade im code gefunden

S5:

L = K/DB
L KB 255 DB Nr. ausmaskieren
UW
SPZ = ERR3 DB 0 nicht erlaubt
SLW 1 DB
ADD KF -7168 Offset DB Adresse ($ E400)
LIR 0

S7:

L #K_DB;
L 255; // DB Nr. ausmaskieren
UW;
SPZ ERR3; // DB 0 nicht erlaubt
SLW 1; // DB
+ -7168; // Offset DB Adresse ($ E400)
// LIR 0;
// *** Fehler in Zeile 111 (FB : Befehl nicht definiert. ***
 
Zuletzt bearbeitet:
Ich würde mal nachsehen, was der Code da unter s5 eigentlich bewirken soll. Hab den Eindruck, daß Daten aus einem Empfangsfach abgeholt und in einem DB abgelegt werden o.ä. Diesen Teil wirst du wahrscheinlich, auf Grund der anderen Hardware eh überarbeiten müssen. Also ist die Frage, ob man sich nicht die Funktion der alten und neuen Hardware vergegenwärtigt und ein neues Stück Code schreibt.
 
Zu Deinem Pointer-Problem fehlen leider noch ein paar Info's:
Was steht im =ADR und was wird hinzuaddiert (Offset Kanaladresse)?
Im Uebrigen sehe ich das genauso wie Ralle.

Zum Lir 0:
Hier wird einfach nur der DB geöffnet, der im Formaloperanden K/DB
an den FB übergeben wird. Im Step 7 Code würde ich das so lösen:

L #K_DB // übergebene DB-Nummer laden
T MW 254 // zwischenspeichern (entweder im MW oder in Temp. Variable)
AUF DB [MW 254] // DB öffnen
 
Zurück
Oben