Fehler beim lesen über SFC14 von DP / ASI Link 20

leszek77

Active member
Beiträge
37
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo

ich möchte alle 16 Bytes aus dem Link 20 auslesen
ich habe es versucht mit SFC 14

CALL SFC 14
LADDR :=W#16#A0
RET_VAL:=MW20
RECORD :=P#DB100.DBX0.0 BYTE 16

FEHLER 80

es geht nur über
CALL SFC 14
LADDR :=W#16#A0
RET_VAL:=MW20
RECORD :=P#DB100.DBX0.0 BYTE 1

oder
L PEB 160
T DB100.dbb 0

aber ich würde gerne alle 16 in einen rutsch auslesen.
So habe ich meine HW Config versucht die Konsistenz
von "Einheit" auf "gesamte Länge" umzustellen aber dann bekomme
ich einen busfehler.

Wie soll ich weiter vorgehen?

Ich bin für eure hilfe sehr dankbar.

mfg

Leszek
 

bike

Well-known member
Beiträge
6.464
Punkte Reaktionen
794
Ohne Kenntnisse deiner Hardwarekonfiguration kann dir wohl keiner echt helfen.
Für mich schaut dein LADDR komisch aus.

Sonst selbst die Adresse prüfen.


bike
 

MSB

Well-known member
Beiträge
7.129
Punkte Reaktionen
1.613
Zuviel Werbung?
->Hier kostenlos registrieren
Warum so umständlich?
Die 16 Byte ins Prozessabbild packen, oder das Prozessabbild vergrößern (geht eigentlich bei allen aktuellen CPUs), und direkt mit E/A arbeiten.

@Bike A0 wäre wohl (PEB)160, was jetzt nicht so seltsam wäre.

Generell ist es bei SFC14 notwendig, das die 16Byte dann auch als Konsistent über die gesamte Länge parametriert sind,
wobei ich im Moment nicht weiß, ob das beim ASI-Link beeinflussbar ist.

Mfg
Manuel
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
19.456
Punkte Reaktionen
5.870
Der AS-I Link 20 kann nur Konsistenz "Einheit" Byte für die 16/16-Byte I/O-Daten. Er darf nicht auf Konsistenz "gesamte Länge" umgestellt werden. Eine höhere Konsistenz als Byte ist auch gar nicht notwendig.

Also am einfachsten den AS-I Link in das Prozessabbild legen. Oder halt jedes Eingangsbyte per PEB... einlesen.

Harald
 
OP
L

leszek77

Active member
Beiträge
37
Punkte Reaktionen
0
Danke ich habe den Asi-Link in Prozessabbild gelegt und

CALL SFC 20
SRCBLK :=P#E 20.0 BYTE 16
RET_VAL:=MW20
DSTBLK :=P#DB100.DBX0.0 BYTE 16

bzw umgekehrt bei Ausgängen

Danke
 
Oben