LED "SF"; PAW 926 und Diagnosepuffer

Jelly

Level-1
Beiträge
217
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leutz!

Ich hab schon wieder mal ne Frage.

Meine Anlage ist mittlerweile fast komplett, mit 2 DP.Strängen.

Aber ich habe immer noch die LED "SF" und der Diagnosepuffer sagt:

Ereignis 6 von 10: Ereignis-ID 16# 2943
Peripherie-Zugriffsfehler, schreibend
P-Bereich , Wortzugriff, Zugriffsadresse: 926
Angeforderter OB: Peripheriezugriffsfehler-OB (OB 122)
Prioritätsklasse: 1
externer Fehler, kommendes Ereignis
14:14:32:038 10.10.06

Nun ich habe zwar die Eingangsadressen 920...933, aber Ausgänge nur mit 920...921, keine mit 926.

Was könnt denn da noch der Fehler sein? Sucht er etwa die PAW 926 ? Ich hab schon sämtliche Bausteine durch...

Danke für alles!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja der ist freigegeben.

Dabei ist das nur ein kleines Prog:

in: status (struct, 2 byte)
mess 1 (int)
mess 2 (int)
mess 3 (int)

NW1: //Daten holen

L P##dp_e
LAR1

L #DP_Addr //IN: 920
SLD 3
T #EA_Addr //temp
L PEW [#EA_Addr] //temp
T W [AR1,P#2.0]

L #DP_Addr
+ 2
SLD 3
T #EA_Addr
L PEW [#EA_Addr]
T W [AR1,P#4.0]

L #DP_Addr
+ 4
SLD 3
T #EA_Addr
L PEW [#EA_Addr]
T W [AR1,P#6.0]

L #DP_Addr
+ 6
SLD 3
T #EA_Addr
L PEW [#EA_Addr]
T W [AR1,P#0.0]


NW2: //Messdaten lesen

L #dp_e.I_L1
T #I_L1
L #dp_e.I_L2
T #I_L2
L #dp_e.I_L3
T #I_L3


NW3: //Status lesen

U #dp_e.status.ein
UN #dp_e.status.nicht_bereit
= #EIN


bin ich denn blind?
 
Zuletzt bearbeitet:
dein Programm versucht das PAW 926 zu schreiben und der Diagnosebuffer erkennt das keine Peripheri mit dem das PAW 926 verknüpft ist vorhanden ist.

Du solltest also dein Programm prüfen ob diese nicht auf irgendeine Art und Weise einen 926er oder 927er Ausgang schreiben will
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Fehler

na dann klick doch mal auf "Baustein öffnen" und er springt die Stelle an. Dann blende mal Adressregister und Akku ein, schalte die SPS nochmal in Run und du siehst die Werte. Willst du auf temp schreiben? Dann machs mal so

T LW [AR1,P#2.0]

Ich hatte da schon Phänomene!


MfG
André Räppel
 
Ach du grüne Neune!

t LW ! natürlich!

Das MUSS der Fehler sein! ansonsten schrebst er mir ja jedesmal wieder was aufs paw.

Das werd ich nächste woche gleich ausprobieren..


EDIT--> Sorry, aber ich weiss nicht mehr so recht:

der pointer zeigt ja auf dp_e also auf den temporären bereich oder?
und dann schreibt er die daten in dp_e.xXX
 
Zuletzt bearbeitet:
der Pointer zeigt nur auf die Adresse, welchen Datenbereich du damit beschreibst gibst du vor der eckigen Klammer an...

T LW [ar1,P#0.0] <--- Lokaldaten

T DBW [ar1,P#0.0] <---Datenwort des aktuell aufgeschlagenen DBs

usw...

Auszug Hilfe:

L <Operand>

Operand Datentyp Speicherbereich Quelladresse
<Operand> BYTEWORDDWORD E, A, PE, M, L, D, Pointer, Parameter 0...655350...655340...65532
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@sps-concept
T LW [AR1,P#2.0]
das muss aber nicht unbedingt hier sein. kann auch eines der folgenden sein. ;)

L P##dp_e //was steht denn hier für ein pointer drin ? wenns PAW924 sind, führt folgender T-befehl zu dem fehler.
LAR1
...
...
L PEW [#EA_Addr] //temp
T W [AR1,P#2.0] // <--- aus obigen würde folgen T PAW[AR1,P#2.0] also T PAW926
 
dp_e ist ein temporärer STRUCT.
darin enthalten:


Messung 1 (int)

Messung 2 (int)

Messung 3 (int)

status (struct)
ok (bool)
fehler (bool)
nicht bereit (bool)
...
 
temp

Hallo,

und ich hatte auch schon das Problem das beim Laden eines Zeigers auf eine Tempvariable ins Adressregister nicht der Speicherbereich drinstand, sondern nur die Adresse.

MfG
André Räppel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zu klären wäre mal, ob

L PEW [#EA_Addr]

dieser Ausdruck nicht auch das AR1 benutzt und es auf die Adresse #EA_Addr setzt.Wie soll er denn sonst auf die Adresse zugreifen?
Wenn das so ist, würde jedesmal des AR1 mit #EA_Addr als Basiswert geladen und bei anschleißenden

T W [AR1,P#6.0]

knallt es.
 
Zurück
Oben