Step 7 Lösungsansatz DB mit BOOL Array auf DB mit Word Array Aufs richtigte BOOL

taucherd

Level-2
Beiträge
61
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich bräuchte einen Lösungsansatz für folgende Aufgabenstellung:

Es gibt mehrere SFC51 die das PN System auf ausfall, vorhanden usw... abfragen, jeder Aufruf hat einen eigenen DB indem die Daten abgelegt werden.
Beispiel:
SFC51 ausfall schreibt in eine Bool Array die Teilnehmer von 0-255, wenn der Teilnehmer 1 ausfällt dann ist das Bit im Array[1] high usw...

Jetzt muss ich folgendes machen:
Das Bit[1] muss jetzt in einem StörmeldungsDB mit folgender Struktur übertragen werden -> auf das BIT 2 und für alle andern Teilnehmer und Bit's derselbe Ablauf.
Teilnehmer[1].sfc_12 := FALSE;
Teilnehmer[1].ausfall := FALSE;
Teilnehmer[1].stoerung_wartung := FALSE;
Teilnehmer[1].fehler_soll_istausbau := FALSE;
Teilnehmer[1].fehler_baugruppenparamte := FALSE;
Teilnehmer[1].i_device_ausfall_modul := FALSE;
Teilnehmer[1].i_device_fehler_konfig := FALSE;
Teilnehmer[1].reserve0 := FALSE;
Teilnehmer[1].reserve1 := FALSE;
Teilnehmer[1].reserve2 := FALSE;
Teilnehmer[1].reserve3 := FALSE;
Teilnehmer[1].reserve4 := FALSE;
Teilnehmer[1].reserve5 := FALSE;
Teilnehmer[1].reserve6 := FALSE;
Teilnehmer[1].reserve7 := FALSE;
Teilnehmer[1].reserve8 := FALSE;

Der StörmeldungsDB hat auch eine Struktur für 255 Teilnehmer.

Meine Frage ist ob das mit Pointer machbar ist, da ich im Ziel einen Offset für das BIT brauche und dann noch einen Offset für die Teilnehmer.
Die Abarbeitung würde ich mit einer Schleife machen.

Bitte um Anregungen
 
Deine Frage kann man relativ einfach mit "Ja, Pointer ist das Mittel der Wahl" beantworten.
Warum hat das noch keiner getan? Oo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe es so ausgeführt, aber ein kleines Problem der Anypointer. beim BLKMOV habe ich die Meldung: 8123 Bereichlängenfehler beim lesen. Was ich mir nicht erklären kann.

Fc115.JPG
 

Anhänge

  • Fc115.JPG
    Fc115.JPG
    175,5 KB · Aufrufe: 23
ich hab noch nicht so ganz verstanden, was Du eigentlich kopieren möchtest.
Jeweils das Bit "Teilnehmer[n].Ausfall" in eine Fortlaufende Struktur Teilnehmer[0].Ausfall; Teilnehmer[1].Ausfall; ... Teilnehmer[n].Ausfall?
 
Ja das stimmt, der Programmteil mit dem umkopiren der Bits funktioniert schon. Es geht jetzt um den Anypointer damit ich die Daten von Quell-DB in den temp Bereich bekommen. Die Structur im Temp. Bereich ist die die gleiche wie im Quell-DB. Nur der Annypointer funktiert nicht. Wenn ich beim BLKMOV DB100.daten (DB100.DBX4.0) angebe dann wird der BLKMOV ohne Fehler ausgeführt. Allso muss es am zusammenbau des Anypointer liegen.
 
Der BKLMOV hat den Fehler, da der Anypointer der im Netzwerk 3 zusammgebaut wird einen Fehler hat und ich komme nicht drauf. Kann ich den FC Online stellen?
 
Statt umständlich
Code:
      L     6
      SLD   3
      T     LD     6
      L     B#16#86     //Bereichskennung Lokaldaten
      T     LB     6
kann man besser schreiben:
Code:
      L     P#L 6.0     //16#86000030: enthält die Bereichskennung 16#86 
      T     LD     6
Da muß man sich nicht um die korrekte Kodierung der Bereichskennung kümmern. Die wird automatisch richtig erzeugt.

Wenn ein Pointer auf einen DB-Speicherbereich DB*.DBX4.0 gewünscht ist, kann man einfach schreiben:
Code:
      L     P#DBX 4.0   //16#84000020
      T     LD     6

Harald
 
Zurück
Oben