Hilfe zu Datenbaustein

blitzer81

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hab da mal ne Frage zu Datenbausteinen. Hab mich noch nicht so viel mit DB's beschäftigt. Gibt es da noch ne andere Möglichkeit diese aufzurufen außer mit "AUF DB...".

mfg Blitzer81
 
joah, klar

z.b.:

Code:
U DB100.DBX3.7
U M12.9
= A 4.2

also: X kennzeichnet ein bit, dann hätten wir da noch B, W und D ...
 
Danke erstmal für die Posts.
Mein Problem ist eigentlich folgendes.
Ich habe ein Programm im FB geschrieben. Die Daten soll er sich aus verschiedenen DB's holen. Das Ganze ist an eine HMI gekoppelt. Die Auswahl des Datenbausteins soll mit Hilfe von verschiedenen Schaltflächen und einer Auswahlliste geschehen.
Wie kann man sowas programmieren?

Danke
Blitzer81
 
Du könntest folgendes machen:

Code:
FUNCTION FC 50 : VOID
TITLE =
VERSION : 0.1
 
VAR_INPUT
  DB_NUMMER_INT : INT ; 
END_VAR
VAR_TEMP
  DB_NUMMER_WORD : WORD ;   
END_VAR
BEGIN
NETWORK
TITLE =
      L     #DB_NUMMER_INT; 
      T     #DB_NUMMER_WORD;
      AUF   DB [#DB_NUMMER_WORD]; 
END_FUNCTION

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du willst also die Datenbausteinnummer im HMI auswählen und dann diesen DB in S7 öffnen.
Gucke die mal das Beispiel im Anhang an, dort ist die DB-Nummern Übergabe an FCs/FBs angegeben. Habe ich irgendwo von der Siemens Website heruntergeladen
 

Anhänge

  • Example.zip
    31 KB · Aufrufe: 11
Und hier noch einmal der Aufruf der Funktion FC50 im OB1:

Code:
FUNCTION FC 50 : VOID
TITLE =
VERSION : 0.1
 
VAR_INPUT
  DB_NUMMER_INT : INT ; 
END_VAR
VAR_TEMP
  DB_NUMMER_WORD : WORD ;   
END_VAR
BEGIN
NETWORK
TITLE =
 
      L     #DB_NUMMER_INT; 
      T     #DB_NUMMER_WORD; 
 
      AUF   DB [#DB_NUMMER_WORD]; 
 
END_FUNCTION
 
 
ORGANIZATION_BLOCK OB 1
TITLE = "Main Program Sweep (Cycle)"
VERSION : 0.1
 
VAR_TEMP
  OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
  OB1_SCAN_1 : BYTE ;   //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
  OB1_PRIORITY : BYTE ; //Priority of OB Execution
  OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
  OB1_RESERVED_1 : BYTE ;   //Reserved for system
  OB1_RESERVED_2 : BYTE ;   //Reserved for system
  OB1_PREV_CYCLE : INT ;    //Cycle time of previous OB1 scan (milliseconds)
  OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
  OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
  OB1_DATE_TIME : DATE_AND_TIME ;   //Date and time OB1 started
END_VAR
BEGIN
NETWORK
TITLE =
 
      CALL FC    50 (
           DB_NUMMER_INT            := 10);
 
NETWORK
TITLE =
 
      CALL FC    50 (
           DB_NUMMER_INT            := MW    10);
 
END_ORGANIZATION_BLOCK

Gruß Kai
 
Interessant wäre was du für eine HMI hast, ich dachte grad so an Interne- und Multiplexvariable die es bei einigen HMIs gibt :)
 
Zurück
Oben