SCL Baustein Pointer

taucherd

Level-2
Beiträge
61
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
habe nicht wirklich eine Hilfe im SCL Handbuch oder Netz gefunden zur Pointerbearbeitung in SCL.

Da ich gerne einen Baustein Erstellen möchte wo ich 16Worte von einem Slaveteilnehmer lese und schreibe.
Am Baustein sollte ich nur die Startadressen für die Ein/Ausgänge angegeben werden.
Wenn jemand einen Lösungsansatz hat wäre ich dankbar.
 
In SCL gibt es den Pointer, wie du ihn von AWL her kennst nicht ...
Was hast du genau vor ? Wie willst du den Übergabebereich angeben ?
Wenn frei, dann bleibt dir nur der ANY-Pointer, den du dann in SCL zerlegen müßtest ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hört sich nach einer Applikation für die SFC 14/15 an, konsistentes Lesen/Schreiben auf einem DP-Slave.
Standardbibliothek öffnen, in SystemFunctionBlocks / Blocks den SFC14 oder 15 anklicken und F1 drücken.
Denke, der macht was Du brauchst.
 
Hallo,

wie gesagt es werden 16 Wörter lesend / schreibend bearbeitet.
die ersten 3 lese,- Schreibwörter sollen in Bit zerlegt werden und die restlichen werden im Wordbereich gehandelt.

ich möchte einen DB dazu erstellen mit Array[0..15] of Word für In und Out und beim Aufruf sollte nur die Startadresse eingetragen werden.

Beispiel:
VAR_INPUT
Anfangsadresse_Input: POINTER;
END_VAR

VAR_OUTPUT
// Anfangsadresse_Output: POINTER; :confused: //funktioniert nicht
END_VAR

VAR
erstes_InputWord: ARRAY[0..15] OF word;
erstes_OutputWord: ARRAY[0..15] OF word;
END_VAR

sonst muss ich das in AWL machen, was mir aber nicht gefallen würde.
 
Hört sich nach einer Applikation für die SFC 14/15 an, konsistentes Lesen/Schreiben auf einem DP-Slave.
Standardbibliothek öffnen, in SystemFunctionBlocks / Blocks den SFC14 oder 15 anklicken und F1 drücken.
Denke, der macht was Du brauchst.

Es ist kein Siemens Slave sondern ein Omron Slave der mit einer S7 kommuniziert.
Und ich möchte im Baustein gleich die Abhandlung von diesem Slave machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mal davon abgesehen, daß JEDES Byte, Wort, Doppelwort aus Bits besteht, welche unter Step7 IMMER angesprochen werden können; wo ist das Problem?

Du baust eine Struktur bestehend aus 48 BOOL und 13 Worten und legste diese als Bytepointer an den SFC14/15:

Code:
DATA_BLOCK DB 1
TITLE =
VERSION : 0.1
 
  STRUCT  
   Bools : ARRAY  [1 .. 48 ] OF BOOL ; 
   Worte : ARRAY  [1 .. 13 ] OF WORD ; 
  END_STRUCT ; 
BEGIN
END_DATA_BLOCK
FUNCTION FC 1 : VOID
TITLE =
VERSION : 0.1
 
VAR_TEMP
  SFC_Stat : INT ; 
END_VAR
BEGIN
NETWORK
TITLE =
      CALL "DPRD_DAT" (
           LADDR                    := W#16#400,
           RET_VAL                  := #SFC_Stat,
           RECORD                   := P#DB1.DBX0.0 BYTE 32);
NETWORK
TITLE =
 
      CALL "DPWR_DAT" (
           LADDR                    := W#16#400,
           RECORD                   := P#DB1.DBX0.0 BYTE 32,
           RET_VAL                  := #SFC_Stat);
END_FUNCTION
 
Beispiel:
VAR_INPUT
Anfangsadresse_Input: POINTER;
END_VAR

VAR_OUTPUT
// Anfangsadresse_Output: POINTER; :confused: //funktioniert nicht
END_VAR

Die Anfangsadresse_Output ist doch auch ein Eingangs-Parameter ... oder willst du die mit dem Baustein festlegen ...? Doch wohl von Aussen vorgeben und dann im Baustein verwenden ...

Gruß
LL
 
Was mir noch so einfällt ...

Warum liest du die Daten nicht direkt mit dem FB ein und gibst sie über die E/A-Schnittstellen des FB direkt aus ...?
 
Zurück
Oben