Probleme mit SFC20

Mangokind

Level-1
Beiträge
73
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
€€€€€€€€

ende vom lied: einer der übertragenen Parameter hat an ganz anderer stelle bei einer bestimmten belegung späne gemacht...

deswegen auch der 'zufällige' charakter. ich hatte per VAT die werte geändert, aber nur in einem der bausteine :rolleyes:
 
Zuletzt bearbeitet:
Interessant wäre in erster Linie mal der Code, wo du dir die Any zusammenbastelst und dann den SFC20 aufrufst. Am häufigsten liegt dort der Fehler, würde ich mal sagen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
durch einen aufgerufenen FC

2 anypointer (QANY, ZANY) im TEMP-bereich ab byte 0 bzw 10

L W#16#1002 //Typ BYTE
T LW 0
L #ANZB //Anzahl Bytes
T LW 2
L #QDB //Quell-DB
T LW 4
L #QANF //Anfang der Quelle
SLD 3
OD DW#16#84000000
T LD 6


L W#16#1002 //Typ BYTE
T LW 10
L #ANZB //Anzahl Bytes
T LW 12
L #ZDB //Ziel-DB
T LW 14
L #ZANF //Anfang der Quelle
SLD 3
OD DW#16#84000000
T LD 16

CALL "BLKMOV"
SRCBLK :=#QANY
RET_VAL:=#RET_VAL
DSTBLK :=#ZANY

der fehler liegt aber nicht hier, da das problem auch auftritt, wenn ich den aufruf der SFC20 direkt ins OB1 schreibe ohne die funktion zu nutzen und dort fest die Pointer vorgebe.
 
Hallo Mangokind,

hast Du immer unterschiedliche Längen die kopiert werden sollen?
Dann kann es sein, dass der DB 2009 vllt. zu kurz ist.

Grüße
Gebs
 
die im eingangsposts erwähnten DBs sind jeweils kopien, also identisch, sowohl in aufbau/struktur, als auch aktualwerten.

mit anderen worten: alle als 'Baustein A' aufgelisteten DBs sind abgesehen von ihrer nummer gleich, und alle als Baustein B aufgerufenen DBs sind untereinander ebenfalls gleich

Baustein A ist 698 Byte lang,
Baustein B ist 11358 Byte lang

ich kopiere jeweils 62 Byte von adresse 420.0 von Baustein A nach 22.0 in Baustein B

es ist also noch relativ viel luft, sollte bei den pointern n zahlendreher drin sein.

die Bausteine existieren auch alle online und offline

die aufrufe im OB1 ändern sich zwischen funktionierenden und nicht funktionierenden lediglich in den nummern der DBs

also bei

CALL "BLKMOV"
SRCBLK :=P#DB2004.DBX420.0 BYTE 62
RET_VAL:=#ret_val
DSTBLK :=P#DB2009.DBX22.0 BYTE 62

ändert sich jeweils nur der rote teil und bei manchen funktionierts, bei anderen nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
das ist mir etwas suspekt ...
Bist du dir wirklich ganz sicher, dass der Fehler nicht irgendwo anders her kommt ? Was ist mit der Parameter-Versorgung deines FC ? Sind das Konstanten oder Werte, die wieder irgendwo anders hergeholt werden ?

Gruß
LL
 
Hallo,
das ist mir etwas suspekt ...
Bist du dir wirklich ganz sicher, dass der Fehler nicht irgendwo anders her kommt ?

was soll ich auf diese frage antworten? ich hab den gesamten tag mit der suche nach der antwort verbracht und konnte keinen fehler feststellen.

sicher kann ich mir aber nicht sein, weil da offenbar n fehler auftritt und der ne ursache haben muss.

die werte, aus denen die anypointer für SFC20 erstellt werden sind korrekt. die anypointer, mit denen SFC20 aufgerufen wird, sind korrekt.
wenn ich quell- und zielpointer einfach nur vertausche, kopiert er ohne SPS-fehler in die gegenrichtung, also liegen die nummern im zulässigen bereich und die DBs sind auch ok, und die anypointer scheinen auch zu stimmen.
wenn ich die nummern der DBs ändere funktioniert alles in beide richtungen zuverlässig und reibungsfrei

dazu kommt ja noch die sache, dass der blockmove-aufruf manchmal sogar funktioniert, manchmal aber nicht. und der einzige unterschied zwischen den phasen waren heute eine halbe stunde mittagspause, wo ich absolut nix am programm geändert habe und auch keiner der kollegen derartiges getan hat und beim 2. mal hab ich per VAT ein paar der werte neu gesetzt, die er kopieren soll und schon gings wieder nicht.

der inhalt hat aber nichts mit dem kopiervorgang zu tun. es berechnet sich also nichts daraus und die anypointer hängen auch nicht davon ab.

Was ist mit der Parameter-Versorgung deines FC ? Sind das Konstanten oder Werte, die wieder irgendwo anders hergeholt werden ?

Gruß
LL

irgendwo anders hergeholt, aber korrekt belegt.
 
Zuletzt bearbeitet:
dazu kommt ja noch die sache, dass der blockmove-aufruf manchmal sogar funktioniert, manchmal aber nicht.
Das sieht (für mich) aber eher nach einem Programmierfehler aus ...
Den Vorschlag von Onkel Dagobert solltest du aber auch jeden Fall auch aufgreifen - das hat mir auch schon öfter mal geholfen ...

Gruß
LL
 
Zurück
Oben