Step 5 -Parametrierbare FB

Ludewig

Level-2
Beiträge
873
Reaktionspunkte
159
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe eine Frage zu Step 5. Ich habe jetzt die Betreuung einer für mich neuen Anlage übernommen. Dort werden in einer S95 U komplexere Funktionsbausteine mehrfach verwendet. Der ursprüngliche Programmierer hat die Bausteine mehrfach angelegt, und dann jeweils die Merkeradressen manuell neu vergeben. Das hat zwei Nachteile. Erstens: Man muss jede Änderung in jeder "Instanz des Bausteins" einzeln durchführen. Zweitens: Man sieht nichts im OB1.

Ich Komme von Sucosoft und Codesys. Dort schreiben wir unsere Programme so, dass ich im Hauptprogramm (sozusagen OB1) die einzelnen FBs mit Parameterschablone aufrufe und dann dort direkt im Status sehen kann, was in jeden Baustein rein geht und wieder rauskommt.

Unter Step 7 (zumindest lite) lässt sich dies in vergleichbarer Weise realisieren, man muss lediglich darauf achten, dass alle Ausgänge notfalls mit Dummies beschaltet sind, damit ich sie im Online-Status auch beobachten kann.

Habe jetzt die Step 5 Doku gelesen und den Eindruck, dass man dieses System mit parametrierbaren FBs nachahmen könne sollte.

Allerdings gibt es einen fundamentalen Unterschied, Ich muss mich bei Step 5 um Speicherplatz selbst kümmern und kann auch nicht einfach statische Variablen deklarieren.

Wie ging man da früher vor, um einmal statische Merker und anderseits statische Variablen für Timer und Werte zu haben?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, die S95-U soll es können. Habe die Idee direkt aus dem zugehörigen Systemhandbuch, aber es wird dort nichts zu dem Speicherthema ausgesagt. Für eine Funktion, die nur temporäre Variablen nutzt, ist es ja auch egal, aber nicht wenn ich die Ergebnisse im nächsten Zyklus wieder brauche.
 
Hallo Ludewig,
parametrierbare FB's kann die S5 schon, Instanzen aber nicht. Du wirst in dem Fall nicht darum herum kommen, dir für deinen FB den zugehörigen DB selber zu bauen und zu verwalten, wenn du halbwegs aus dem Globaldaten-Bereich heraus bleiben willst.
Wie ging man da früher vor, um einmal statische Merker und anderseits statische Variablen für Timer und Werte zu haben?
Sehr gerne wurde (vor allem bei Siemens-FB's) irgendwo im Handbuch erwähnt, dass der Baustein FB xyz noch zusätzlich den Merkerbereich MW"abc" bis MW"def" benutzt und das man seine eigenen Sachen aus dem Bereich tunlichst heraus lassen sollte ...

Gruß
LL
 
Schmiermerker

Hallo,
bei der S5 wurde zumeist die MB 200 - 255 als "Schmiermerker" genommen.
Dann ist allerdings eine sauberer Programmierung notwendig (sichern und rücksichern der Merker). Sonst gibt es zwangsläufig Fehlfunktionen
Die Sicherung bzw. Rücksicherung wurde dann zumeist in einen DB gelegt.

Einen direkten Instanzaufruf gibt es bei S5 nicht

mfg
Mitchih
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei der S5 wurde den FBs als Parameter immer ein "FGDB" mitgegeben. Diese war die Nummer des "Istanddatenbausteins".

Diesen DB musste man natürlich selber anlegen.

Der Zugriff auf DBs war bei der S5 noch nicht so komfortabel wie beid er S7 und auf einzelen Bits konnten nur wenige CPU zugreifen - die 945er z.B.


Dehalb wurden am Anfang der FB die Daten indirekt aus dem FGDB in die Schmiermerker kopiert (Wortweise).

Im FB wurde mit den Schmiermerkern gearbeitet und am Ende wurde diese wierder in den FGDB zurückgeschrieben - indirekt.


FGDB = Funktionsgruppen DB

Kann dir mal ein Projekt schicken wo das so gemacht ist, möchte es aber nicht hier allen zugänglich machen...

meistens wurden die FBs so gamacht das man die FGDB Nummer in Format "001,123" oder "000,123" übergeben konnte.

"001,123" stand für DX123
"000,123" stand für DB123

DX-Bausteine sind erweiterte Bausteinadressen bei großen CPU.

Bei der indirekten Adressierung wurde dann ausgewertet ob es sich um einen DB oder einen DX handelt, bei der DX vorher noch ein spezieller OB aufgerufen der auf DX-Adresseirugn umschaltete...
 
@Markus:
Das interessiert mich aber jetzt doch ... handelt sich dabei um eine System-Funktion der S5 oder um einen Programmiertrick in dem FB, der bewirkt, das der parametrierte DB quasi indirekt aufgerufen wird, so a la :
Code:
B MW 200
A DB 0    // den DB aufrufen, dessen Nummer im MW200 hinterlegt ist ...

Gruß
LL
 
jep, aber es heißt:

B FGDB // der parameter am baustein
A DB0

natürlich noch grezwertüberwachung und auswertung ob dx oder nicht mit dazu...
 
@Ralle:
warum nicht ? Ich kenne jetzt den kompletten Befehlssatz nicht mehr ...
Aber bei der 95U hat man ja auch noch ein Problem mit dem Programm-Speicher. Da sollte man sich unnötiges Daten-Schaufeln ggf. verkneifen ...

Gruß
LL
 
Also vom Handbuch her müsste es gehen, die Befehle sind in der 95er CPU offenbar implementiert.

Ich danke Euch erst einmal für die Erklärungen und gehe über Ostern damit in Klausur.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
schnittstelle:

Code:
;Antriebsmotor. 1 Richt. 2 Geschw
NAME: AM-1R2G 
BEZ : FGDB DKY
BEZ : EINR EBI
BEZ : AUTO EBI
BEZ : FREI EBI
BEZ : FRSV EBI
BEZ : QUIT EBI
BEZ : AVOR EBI
BEZ : SCH  EBI
BEZ : LAZE EBI
BEZ : TVOR EBI
BEZ : TSCH EBI
BEZ : SMS0 EBI
BEZ : VOR  ABI
BEZ : LANG ABI
BEZ : SCHN ABI
BEZ : BR2P ABI
BEZ : STOE ABI
 ***


Code:
;Datenbaustein DB/DX aufschlagen
 LW =FGDB ;FGDB Kennung und Nummer
 L KH 00FF
 UW
 T MW 250 ;FGDB Nummer
 !=F
 SPB =M001 ;Typ Datenbaustein
 L KF +24
 SPA OB 250 ;DX aufschlagen
 L KH 0000
 !=F
 SPB =M002
 STP  ;Prozessor in Stop
M001: B MW 250 ;DB aufschlagen
 A DB 0
M002: LW =FGDB ;DB Typ und DB Nummer in FGDB
 T DW 19 ;eintragen
 ***



Code:
;Daten aus FGDB laden
 L DR 28
 T MB 200 ;Sammelmeldungen 1
 L DL 28
 T MB 201 ;Sammelmeldungen 2
 L DW 31
 T MW 202 ;Zustandsmerker 1
 L DW 35
 T MW 208 ;HM Interne Stoerungen
 L DW 33
 T MW 212 ;Zustandsmerker 3
 L DW 39
 T MW 216 ;STATUS LAUFZEITEN T1..T4
 L DW 29
 T MW 210 ;Interne Stoerungen
 L DW 36
 T MW 218 ;HM Externe Stoerungen
 L DW 30
 T MW 220 ;Externe Stoerungen
 ***


hier das programm...

Code:
;Daten in FGDB speichern
 L MB 200 ;Sammelmeldungen 1
 T DR 28
 L MB 201 ;Sammelmeldungen 2
 T DL 28
 L MW 202 ;Zustandsmerker 1
 T DW 31
 L MW 208 ;HM Interne Stoerungen
 T DW 35
 L MW 212 ;Zustandsmerker 3
 T DW 33
 L MW 216 ;STATUSBITS LAUFZEITEN T1..T4
 T DW 39
 L MW 210 ;Interne Stoerungen
 T DW 29
 ***
 
Zuletzt bearbeitet:
... Klasse ...

Ist schon schön zu sehen, welche Arbeit man sich heute (G-s-D) nicht mehr machen braucht ... Und die Struktur kommt gleich freiwillig mit ...:-D

...
 
Noch @ Ralle.

Wenn ich Bausteine parametrierbar mache, anstatt sie zu multilplizieren, sollte die Gesamtmenge an Code doch sinken, und der "Datenplatz" ist doch bei S5, anders als bei einer Moeller-Steuerung, eh' fest vergeben, steht also gar nicht fürs Programm zur Verfügung. Ergo sollte ich dadurch allenfalls Probleme mit der Geschwindigkeit bekommen, aber die stören in meinen Wasserbauanwendungen überhaupt nicht, da wird auch schon 'mal 5 Minuten gewartet, bis der Regelkreis antwortet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin zwar nicht Ralle, aber ich glaube die Sache mit dem Speicherplatz kam auch von mir ...

Wenn du die DB's beim Start der SPS mit "E DB" erzeugst, dann fallen sie dir im Programmspeicher nicht zur Last. Zykluszeit ist als Problem (glaube ich auch) sekundär. Ansosnsten kannst du ja auch bei der 95U die Überwachung hoch schalten (BS 97 ?).
Ich hatte den Einwand deshalb gebracht, weil in "meiner" Firma viele Automaten mit einer 95U bestückt sind und diese funktionell nur deshalb am Ende sind, weswegen wir jetzt bei den Umsatzträchtigen so nach und nach die Steuerung austauschen. Hätte man gleich ein bißchen überlegt, dann wäre das nicht unbedingt nötig gewesen (obwohl es so für mich natürlich auch bequemer geworden ist ...:-D ).

Viel Erfolg
LL
 
Ja Larry, das kam nicht von mir.

Mir war nur der FBDG neu, aber nun seh ich, daß das nur eine Bezeichnung ist und kein Befehl.

Der Bearbeite-Befehl funktioniert natürlich auch bei einer 95U.

Wozu hier einen Begriff wie FBGD einführen? Das bringt doch nur jemanden durcheinander, oder?

Hab ich das nun richtig gerafft?
 
Richtig, ich habe euch verwechselt.

Also ich hatte FGDB dank des Beispiels sofort als Platzhalter (auf Siemens BEZ) interpretiert, und das Akronym gefällt mir. Da man nur 4 Zeichen hat, muss man sich da ja 'was einfallen lassen im Gegensatz zu S7 oder Codesys.


Das mit dem Programmspeicher und den Datenbausteinen habe ich aber offenbar noch nicht verstanden. Wobei es ab Version ...MA3 (ich habe eine ...MA4) der 95U einen technischen Unterschied geben muss.

Aber es ging mir jetzt erst einmal um das Prinzip.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1. es heist FGDB (Funktionsgruppen DB) und nicht FDGB

2. habe ich diese Bezeichnung bei 3 völlig verschiedenen Maschinenbauern aus völlig verschiedenen Branchen gesehen. (Gut möglich dass die zu der Zeit alle von Siemens direkt programmieren liessen). Somit gehe ich von einer Art Standard aus...

Ein FGDB ist im Prinzip der Vater des IDB (Instanzdatenbaustein)
 
1. es heist FGDB (Funktionsgruppen DB) und nicht FDGB

Gröl, FDGB, die dritte Schreibweise hatte ich glatt unterschlagen :ROFLMAO: !

2. habe ich diese Bezeichnung bei 3 völlig verschiedenen Maschinenbauern aus völlig verschiedenen Branchen gesehen. (Gut möglich dass die zu der Zeit alle von Siemens direkt programmieren liessen). Somit gehe ich von einer Art Standard aus...

Ein FGDB ist im Prinzip der Vater des IDB (Instanzdatenbaustein)

Nie gehört oder gesehen, aber nach dem Codebeispiel war klar, daß es nur ein Bezeichner ist. Aber das hatten wir schon immer so, jeder FB hatte seinen DB, wenn überhaupt einer nötig war ;) .
 
Aber das hatten wir schon immer so, jeder FB hatte seinen DB, wenn überhaupt einer nötig war ;) .

und wie wurde der bezeichner genannt?
also vieleicht ist es ja zufall, aber ich kenne diesen immer als FGDB, eben bei verschiedenen firmen.

also dachte ich man darf die bezeichnung als "standard" bezeichen und die meisten wissen was ein FGDB ist...
 
Zurück
Oben