db und pointer

fbeine

Level-2
Beiträge
134
Reaktionspunkte
3
hallo zusammen,

ich habe ein problem mit pointern, habe schon viel gelesen, aber irgendwie klappt das bei mit nicht.

ich möchte in den DBX1.3 eine "1" schreiben. DBX1.3 übergebe ich an einen FC.

Der FC sieht folgender massen aus:
Code:
      U     #bQSstart                   // Querschnitt start 
//      U     #bBVfertig                  // Bildverarbeitung fertig
//      U     #bBViO_niO                  // Bildverarbeitung Blatt ist kein Ausschuß
      SPBN  M001
      AUF   "KAM Ausschuss"             // Datenbaustein öffnen DB21
      L     P##pAdresse                 // zum Beipiel DBX1.3 für Bahn 1
      LAR1                              // Lade Adreßregister 1 mit Inhalt von AKKU 1
      S      [AR1,P#0.0]                // zum Beipiel DBX1.3 für Bahn 1
M001: NOP   0

wo liegt mein fehler ??

vielen dank
frank
 
Hallo
Probier mal "S dbx[AR1,P#0.0]" damit das Programm weiß welcher Operand verwendet wird.

Gruß

Andreas
 
hallo andreas,

halben erfolg habe ich.

ich übergebe beim aufruf des FCs als pointer-variable dbx1.3

mit der zeile: "S dbx[AR1,P#0.0]" schreibt er in meinen db aber in "dbx2.0"

ich gestehe, dass ich ein wenig verwirrt bin ...

gruß frank
 
Was schreibst du ausßen an den FC bei der Übergabe des DBX1.3?
 
Hallo Frank,

L P##Basisadresse // Basisadresse z.B. DB20.DBX1.2
LAR1
L W [AR1,P#0.0] // DB Nummer ermitteln u. aufschlagen
T #temp_w
AUF DB [#temp_w]
L D [AR1,P#2.0] // Adresse in
LAR1 // Adressregister 1 laden

und dann wie gehabt.

MfG
Daniel
 
hi ralle,

ich schreibe von aussen DBX1.3 in den aufzurufenden FC.

im aufgerufenden FC ist sie als input-variable von typ pointer deklariert.

gruss frank
 
hi d. albinus

als was muss ich denn "#temp_w" deklarieren ??

gruss frank
 
Hallo Frank,

temp_w muss vom Typ WORD sein.

MfG
Daniel
 
pointer

tach frank,

wieso machst du aus der eingangsvariable nicht einfach ein Bool ?

Gruß stricky
 
Dein Beispiel - überarbeitet

Moin Frank;

hier Dein Beispiel:

U #bQSstart // Querschnitt start
// U #bBVfertig // Bildverarbeitung fertig
// U #bBViO_niO // Bildverarbeitung Blatt ist kein Ausschuß
SPBN M001
AUF "KAM Ausschuss" // Datenbaustein öffnen DB21
L P##pAdresse // Lade Anfangsadresse vom Pointer LAR1 // Lade Adreßregister 1 mit Inhalt von AKKU 1 L D[ar1,p#2.0] // Lade die letzten 4 Byte vom Pointer (DBX1.3)
LAR1 // Adresse in ADR1 laden
SET // VKE auf 1 setzen
S [AR1,P#0.0] // zum Beipiel DBX1.3 für Bahn 1
M001 // bereichsübergreifende Indirekte Adressierung

Schönen Gruss
 
guten morgen alle zusammen,

neue woche neues glück, inzwischen fange ich an zu verzweifeln, aber es muß doch zum laufen zu bringen sein.

ich füge eine grafik bei, wie mein derzeitiger stand ist.

ich übergebe an in meinen FC nun folgende any-variable: DB21.DBX1.3
er soll in den DB21.DBX1.3 eine feste "1" schreiben.

eine "1" schreibt er aber immer in DBX2.0

ich hoffe, ihr greift mit noch mal unter die arme.

vielen dank
frank
 

Anhänge

  • pointer.JPG
    187,3 KB · Aufrufe: 21
Moin,

was steht denn immer von aussen an diesen Eingang ? Immer ein anderes Bit aus einem DB ? Wieso musst du denn Wissen in Welchen DB ?

Gruß Christian
 
ach noch was ....

beim status füge mal eine Spalte DB hinzu ... dann kannste direkt sehen welcher DB offen ist

gruß christian
 
hallo christian

von aussen füge ich db21.dbx1.3 hinzu, schreibe es in eine IN-Variable, die als any deklariert ist.

in den richtigen db schreibe ich, der db 21 ist offen, aber ich schreibe nicht an die richtige stelle, sprich dbx1.3 sondern in dbx2.0, und das kann ich nicht verstehen ...

gruss
frank
 
mach es so ...

U #start
SPBN m000

L P##adresse // zum Beipiel DBX1.3 für Bahn 1
LAR1 // Lade Adreßregister 1 mit Inhalt von AKKU

L W [AR1,P#4.0]
T #dbnummer

AUF DB [#dbnummer]

L D [AR1,P#6.0]
LAR1


SET
S [AR1,P#0.0]

m000: NOP 0

Gruß christian
 
Hallo Frank,

L D[AR1,P#6.0]
SLD3
LAR1

SET
S DBX[AR1,P#0.0]

usw.

MfG
Daniel
 
ich versteh nur noch nicht, wieso Du das mit nem Pointer machen möchtest ?

Geht doch anders viel einfacher oder hast Du noch mehrere Bits die Du von deinem Baustein ansprichst ?
 
christian,

ich möchte den FC nachher 7mal aufrufen und jeweils in den dbx1.3, dbx3.3, dbx5.3 bis dbx13.3 bei bedarf eine fest "1" schreiben,

das angehängte bild ist das ergebnis deines scriptes, leider klappt es auch nicht richtig.


daniel,
wenn ich dein script versuche schreibe ich in dbx11.0 eine feste "1"

gruß frank
 

Anhänge

  • pointer1.JPG
    169,7 KB · Aufrufe: 11
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…