# WinCC Flexible: Bereichszeiger symbolisch



## Markus (5 Juli 2008)

hallo,

wie lassen sich Bereichszeiger symbolisch anbinden?

In der SPS habe ich z.B. die Struct "Steuerungsauftrag" angelegt, darin sind die Variablen für Auftragsnummer, parameter-1, Parameter-2 und Parameter-3


WinCC flexible will aber nicht an die Struct angebunden werden, gehe ich eine Ebene tiefer auf die Auftragsnummer, dann meckert es weildie Varibale zu kurz ist.

Habe das also bisher immer direkt gemacht, aber das muss doch auch irgendwie symbolisch gehen!

Was mache ich schon wieder falsch?


----------



## Larry Laffer (5 Juli 2008)

... ich kann jetzt nicht für Flex sprechen ...

aber hast du beachtet, das dieser Bereichszeiger 4 Worte (8 Byte) groß ist ?

Gruß
LL


----------



## Markus (5 Juli 2008)

Larry Laffer schrieb:


> ... ich kann jetzt nicht für Flex sprechen ...
> 
> aber hast du beachtet, das dieser Bereichszeiger 4 Worte (8 Byte) groß ist ?
> 
> ...


 
ja, wie meinst du das jetzt?



> In der SPS habe ich z.B. die Struct "Steuerungsauftrag" angelegt, darin sind die Variablen für Auftragsnummer, parameter-1, Parameter-2 und Parameter-3


----------



## Larry Laffer (5 Juli 2008)

... das habe ich gelesen ...
Wie sieht denn die Struct aus bei dir ?

```
OP_Auftragsfach    : STRUCT         // OP-Auftragsfach für Daten-Austausch
                   Res : BYTE ;         // Res.
                 JobNr : BYTE ;         // Job-Nr.
            Parameter1 : STRUCT         // Parameter 1
                         L : BYTE ;    
                         H : BYTE ;    
                         END_STRUCT ;    
            Parameter2 : STRUCT         // Parameter 2
                         L : BYTE ;    
                         H : BYTE ;    
                         END_STRUCT ;    
            Parameter3 : STRUCT         // Parameter 3
                         L : BYTE ;    
                         H : BYTE ;    
                         END_STRUCT ;
```
so ist das bei mir aufgebaut und zumindestens ProTool schluckt das so. Warum dann nicht auch Flex ...?

Gruß
LL


----------



## Markus (5 Juli 2008)

im prinzip auch so, aber die parameter sind word, nicht h-byte und l-byte.

an protool kann ich mich mehr genau erinnern, aber ich glaube da ging es.
nur bekomme ich das mit flex nicht hingebogen...


----------



## Larry Laffer (5 Juli 2008)

Hast du ggf. noch weitere Bereichszeiger definiert ? Vielleicht gibt es da eine Überlappung ?


----------



## Martin Glarner (5 Juli 2008)

*SCL mit AT*

Hallo
Symbolisch muss mit Arrays gearbeitet werden, darum habe ich dieses Problem mit SCL gelöst.
Befehl AT siehe auch FAQ: http://support.automation.siemens.com/CH/view/de/21946854


```
VAR
  BeZe_Steuerungsauftrag                         : ARRAY [1..4] OF WORD;  //an HMI: Bereichszeiger Steuerungsauftrag
  AT_Steuerungsauftrag AT BeZe_Steuerungsauftrag : STRUCT                 //Datensicht auf Steuerungsauftrag an HMI
     s_I_AuftrNr                                 : INT;                   //Steuerungsauftrag an HMI: Auftrags-Nr.
     s_I_Para1                                   : INT;                   //Steuerungsauftrag an HMI: Parameter 1
     s_I_Para2                                   : INT;                   //Steuerungsauftrag an HMI: Parameter 2
     s_I_Para3                                   : INT;                   //Steuerungsauftrag an HMI: Parameter 3
                                                   END_STRUCT;            
  BeZe_Bildnummer                                : ARRAY [1..5] OF WORD;  //von HMI: Bereichszeiger Bildnummer
  AT_Bildnr AT BeZe_Bildnummer                   : STRUCT                 //Datensicht auf Bereichszeiger Bildnummer vom HMI
     s_I_Bildtyp                                 : INT;                   //Aktueller Bildtyp (1=Grundbild;4=Permanentfenster)
     s_I_Bildnr                                  : INT;                   //Aktuelle Bildnummer (1 bis 65535)
     s_I_Res1                                    : INT;                   //Reserve
     s_I_Feldnr                                  : INT;                   //Aktuelle Feldnummer (1 bis 65535)
                                                   END_STRUCT;            
  BeZe_Datum_Uhrzeit                             : ARRAY [1..6] OF WORD;  //von HMI: Bereichszeiger Datum/Uhrzeit
  AT_Datum_Uhrzeit AT BeZe_Datum_Uhrzeit         : STRUCT                 //Datensicht auf Bereichszeiger Datum/Uhrzeit vom HMI
     s_B_Res1                                    : BYTE;                  //Reserve
     s_B_Stunde                                  : BYTE;                  //Uhrzeit vom HMI: Stunde [BCD, 0-23]
     s_B_Minute                                  : BYTE;                  //Uhrzeit vom HMI: Minute [BCD, 0-59]
     s_B_Sekunde                                 : BYTE;                  //Uhrzeit vom HMI: Sekunde [BCD, 0-59]
     s_B_Res2                                    : BYTE;                  
     s_B_Res3                                    : BYTE;                  
     s_B_Res4                                    : BYTE;                  
     s_B_Woch_Tag                                : BYTE;                  //Datum vom HMI: Wochentag [BCD, 1-7, 1=So]
     s_B_Tag                                     : BYTE;                  //Datum vom HMI: Tag [BCD, 1-31]
     s_B_Monat                                   : BYTE;                  //Datum vom HMI: Monat [BCD, 1-12]
     s_B_Jahr                                    : BYTE;                  //Datum vom HMI: Jahr [BCD, 80-99/0-29]
                                                   END_STRUCT;            
  BeZe_Koordinierung                             : WORD;                  //von HMI: Bereichszeiger Koordinierung
  AT_Koordinierung AT BeZe_Koordinierung         : STRUCT                 //Datensicht auf Koordinierungsdaten vom HMI
     s_B_Res1                                    : BYTE;                  //Reserve
     s_X_Anlaufbit                               : BOOL;                  //Das HMI setzt das Bit kurzeitig während dem Anlauf auf log.0
     s_X_Betriebsart                             : BOOL;                  //Betriebsart HMI (0=Online;1=Offline)
     s_X_Lebensbit                               : BOOL;                  //Lebensbit HMI (invertiert im 1 Sek. Takt)
                                                   END_STRUCT;            
END_VAR
```


----------

