Pointer in SCL

broesel

Level-1
Beiträge
29
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Tag auch!

In einem FB möchte ich mir ein Array anlegen in dem ich
mit Hilfe einer Funktion Adressen reinschreibe bzw. entferne.

Dazu möchte ich einen Pointer zur Hife nehmen, damit ich immer weiß
an welcher Stelle ich mich im Array befinde.

Jetzt weiß ich nicht so genau wie ich so einen Pointer in der Funktion
und im FB anlegen soll.
Hat vielleicht einer ein kleines Beispiel, von dem ich mir den Umgang mit
einem Pointer in einem solchen Fall abgucken kann?

Wie gesagt es ist halt in SCL.

Danke für alle Anworten.
 
Wenn du in SCL auf ein ARRAY indiziert zugreifen willst, kannst du daß mit einem einfachen Index machen.

Beispiele aus der SCL-Hilfe von Step7:

Code:
STATUS_1:= DB11.DW[ZAEHLER]; 
STATUS_2:= DB12.DX[WNR, BITNR]; 
STATUS_1:= Datenbasis1.DW[ZAEHLER]; 
STATUS_2:= Datenbasis2.DX[WNR, BITNR];  
STATUS_1:= WORD_TO_BLOCK_DB(INDEX).DW[ZAEHLER];
Die Indizierung muss den folgenden Regeln entsprechen:
  • Bei einem Zugriff, der vom Datentyp BYTE, WORD oder DWORD ist, müssen Sie genau einen Index verwenden. Der Index wird als Byteadresse interpretiert. Die Zugriffsbreite wird durch das Größen-Präfix festgelegt.
  • Bei einem Zugriff, der vom Datentyp BOOL ist, müssen Sie zwei Indizes benutzen. Der erste Index spezifiziert die Byteadresse, der zweite Index die Bitposition innerhalb des Bytes.
  • Jeder Index muss dabei ein arithmetischer Ausdruck vom Datentyp INT (0 - 32767) sein
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK Ralle ich werde es mal auf diesem Weg probieren!

Vielleicht kannst du mir noch die filgenden zwei Fragen beantworten:

1.Ein Feld des Arrays bzw. den Inhalt lösche ich doch, in dem ich es auf Null setze oder?

2.Wie schreibe ich in einen globalen Datenbaustein DB1 die Adresse eines anderen Globalen Datenbausteins DB2 ( DB2.4 zum Beispiel)?


Danke Ralle!
 
1. Ja, schreibst eine Null rein oder bei Bool setzt das Bit zurück.
2. Wenn du das in SCL wieder auslesen willst würde ich es wie folgt machen:

1 DWord: 1.Byte --> DB-Nummer
2. Byte --> Byte-Nummer
3. Byte --> Bit-Nummer

Das ganze dann mit den oben beschriebenen Mechanismen zusammenboseln.

Hier noch ein anderer Link:

http://www.sps-forum.de/showthread.php?t=13001&highlight=Pointer+SCL
 
Zurück
Oben