S5: FB mehrfach verwenden; "lokale Variablen"

burner

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

ich versuche mich gerade an ner Rollosteuerung auf ner S5-115U 943. Hab vorher meist S7 oder Möller programmiert. Mein Ziel ist es einen FB zu schreiben der für das Heben und Senken zuständig ist und den dann für jedes einzelne Rollo zu parametrieren. Nun muss ich aber inerhalb des FB mit Merkern und Timern arbeiten und die gelten ja global. So was wie lokale Variablen gibt es nicht in S5,was?
Könnte ich villeicht am Bausteinanfang immer einen (den selben) DB öffnen, dort reinschreiben und beim nächsten Bausteinaufruf wieder überschreiben? Das wär doch praktisch so wie lokal, oder? Wie Schreibe ich ein VKE in nen DB?
Oder komm ich nich drum herum für jedes Rollo neue Merker im jeweiligen DB zu verwenden?

Viele Grüße
burner
 
Hi,

ich mach das immer mit einem HilfsDB und die benötigten DW.
Beides wird beim Aufruf des FB's angegeben. Du musst allerdings für jeden Aufruf anderer DW benützen, sonst sind ja alle deine Daten beim nächsten Aufruf weg.
Wenn du wirklicj so was wie temporäre Variablen benötigst, dann nimm einfach die Merker über 200, diese Merker haben sich als "Schmiermerker" eingebürgert.

Gruß Centi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nein in s5 gibt es keine lokalen variablen.

du kannst das mit dw's machen.
siemens benutzt für solche geschichten mw's als schmiermerker. wenn ich das richtig im kopf habe, sind das die merker ab 220.
 
Hmm, dann werd ich wohl oder übel für jeden FB unterschiedliche Merker benutzen müssen. Da lob ich mit die IEC konforme Programmierung, da muss man sich nicht mit Datenbereichen rumschlagen und kann ein und den selben FB beliebig oft unter anderm Namen verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Datenbereiche und deren Remanenz Merker (6ES7 211-0AA23-0XB0)

- Anzahl 32 Byte 32 Byte 32 Byte 32 Byte
- Remanenz einstellbar Ja; M0.0 bis M31.7 Ja; M0.0 bis M31.7 Ja; M0.0 bis M31.7 Ja; M0.0 bis M31.7
- davon remanent mit Batterie 0 bis 255, über Hochleistungskondensator oder Batterie, einstellbar
- davon remanent ohne Batterie 0 bis 112 in EEPROM, einstellbar
 
burner schrieb:
Hmm, dann werd ich wohl oder übel für jeden FB unterschiedliche Merker benutzen müssen.

wieso unterschiedliche? lokalvariablen sind doch auch nur für den aufruf gültig. wenn du intern mit merkern arbeitest ist das doch das gleiche.
die in/out variablen übergibst du ja beim aufruf.

es sei denn du meinst instanzdatenvariablen. dann gehts damit natürlich nicht.
 
Guten Morgen

Wieso übergibts du die die Merker bzw Timer nicht einfach denn FB.
Dann kannst du bei jeden aufruf andere Merker angeben und du hast keine Probleme mehr
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

@Volker: Wie, ich kann zB Merker 200 in dem einen FB verwenden und der hat keine Auswirkungen auf die anderen? Glob ich nich.

@kpeter: Daran hab ich auch schon gedacht, spart zwar nich die Tipperei aber ist ein wenig komfortabler.

Danke :D
 
mw 200 ist nur eine temporäre variable in dem fb und deshalb auch nur für diesen aufruf nutzbar.
wenn ich eine temp-var in s7 anlege ist das genau das gleiche

ein simples beispiel
Code:
FB 0                                 
Netzwerk 1
Name :TEST
Bez  :IN        E/A/D/B/T/Z: E  BI/BY/W/D: W
Bez  :OUT       E/A/D/B/T/Z: A  BI/BY/W/D: W

     :L   =IN
     :L   KF +100
     :+F
     :T   MW 200

     :L   MW 200
     :T   =OUT
     :
     :BE

Code:
Netzwerk 2
     :AWL
     :L   KF +100
     :T   MW 100
     :L   KF +200
     :T   MW 104
     :
     :SPA FB   0
Name :TEST
IN   :    MW 100
OUT  :    MW 102
     :
     :SPA FB   0
Name :TEST
IN   :    MW 104
OUT  :    MW 106
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin!

Also ichmach das immer so, wegen der "lokalen" Variablen.
Ich benutze in FBs generell Schmiermerker...

Code:
A DB x
L DW 0
T MW 200
L DW 1
T MW 202
L DW 2
T MW 204


...dann kommt das eigentliche Programm


und am Ende dann...

L MW 200
T DW 0
L MW 202
T DW 1
L MW 204
T DW 2

Damit kann ich die Schmiermerker wie ganz normale Merker benutzen...

mfg

DNA909
 
Cool, danke so hab ich es jetzt auch gemacht. Ganz infach wenn man weiß wie es geht!

Danke Vielmals!
 
Zurück
Oben