FB für Motorsteuerung

M

Max

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo ,

benötige einen FB für eine Motorsteuerung der mehrmals aufgerufen wird,
der jedoch nur einen DB benötigt. Der DB soll seine Datenlänge entsprechend der Anzahl der FB-Aufrufe automatisch ändern.

lg MAX
 

Rayk

Well-known member
Beiträge
299
Punkte Reaktionen
31
Hallo,
meinst du eine Multiinstanz?
Einfach in der STEP7 Hilfe unter "Verwendung von Multiinstanzen" nachschalgen, da wird dir geholfen.... :D

mfg. Rayk
 

Zottel

Well-known member
Beiträge
2.299
Punkte Reaktionen
277
Zuviel Werbung?
->Hier kostenlos registrieren
Dem Wortlaut nach meint er das genaue Gegenteil einer Multiinstanz; er will ja ausdrücklich denselben DB verwenden .-)
Ohne daß ich sehen könnte, wozu das gut ist:
Um das wirklich so zu machen, müsste dein FB im DB einen Aufrufzähler mitführen. Da Aufrufe in jedem Zyklus wieder stattfinden, muss dieser am Zyklusbeginn rückgesewtzt werden.

Das folgende gilt für den 1. Zyklus:
Am Anfang eines DB Aufrufs müsste ein (temporärer) DB erzeugt werden, der um soviel länger las der vorhandene DB ist, wie der FB Platz braucht. Dann würde der alte DB in den neuen kopiert und der neue zum laufenden erklärt. Da man eine DB-Nummer nicht ändern kann kommt noch ein Schritt dazu: Alten DB löschen, mit neuer Länge neu erzeugen, Inhalt des temporären DB's darauf kopieren.

Auf einer S5 ging das alles wirklich, aber ich weiß nicht mehr ob dazu Tricks (Kenntnis von Adresse und Aufbeu der internen DB-Tabelle nötig gewesen wären).
Das Ganze mag gehen, wird auch in ernsthafter Computersoftware so oder ähnlich gemacht, aber für ein Steuerungsprogramm ist es ziemlich seltsam.
 
OP
M

Max

Guest
Hallo,

in meiner Anlage befinden sich ~60 Motore und ~100 Ventile, möchte jedoch jeweils nur einen DB verwenden.
(Es handelt sich um eine S7-Steuerung).
Habt ihr vielleicht eine Beispiel.

lg MAX
 

sps-concept

Well-known member
Beiträge
2.235
Punkte Reaktionen
251
Multiinstanz

Hallo Zottel,

das besondere an einer Multiinstanz ist, dass nur 1 DB verwendet wird! Also ich weiss nich wofür die ganze Sache sein soll. Dynamisch aus dem Programm wird sich die Anzahl der Aufrufe nicht ändern - also warum den DB automatisch anpassen? Wieso dann keine Multiinstanz? Ist das einfachste.

MfG
André Räppel
 

Markus

Administrator
Teammitglied
Beiträge
5.246
Punkte Reaktionen
1.287
Zuviel Werbung?
->Hier kostenlos registrieren
naja dann wären das eben 60 db&s? was ist so schlimm drann, willst du alle 60motoren in einen db packen?


wenn ja dann man einen udt mit den benötigten variablen, und rufe den im db 60 mal auf (array).

den fb für die steuerung erweiterst du um eine weiter eingangsvariable, welcher abhängig vom ort des aufrufes ne andere konstante oder variable übergeben wird welche im fb als startpointer dient...
 

sps-concept

Well-known member
Beiträge
2.235
Punkte Reaktionen
251
Multiinstanz

Hallo,

ihr scheint noch nichts mit Multiinstanzen gemacht zu haben. Eine Multiinstanz benötigt auch bei 60 FB-Aufrufen nur einen (!) DB. Man lege zB einen FB1 an (Motoransteuerung). Normalerweise benötigt jeder Aufruf einen Instanz-DB. Nehme ich aber beispielsweise den FB10 und lege 60 statische Variablen an mit jeweils FB1 als Typ, so kann ich anstatt den FB1 im Programm aufzurufen auch diese Multiinstanzen aufrufen. Die Instanzen aller 60 Aufrufe befinden sich im Instanz-DB des FB10.

MfG
André Räppel
 

Balou

Well-known member
Beiträge
221
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
DB

So wie ich Ihn verstehe will er sich eine FB Basteln und in dem DB die dazugehörigen DATEN jedes einzelnen Motors ablegen (Merker für Flanken etc.).

Da er aber nicht 60 DB,s anlegen will (verständlich) will er alle Daten in einen DB Packen.

Ich würde mir einen FC schreiben mit all den Funktionen und im Bereich der in_out Variablen einen STRUCT definieren in den ich alle Hilfsvariablen schreiben würde.
Dieser Struct lässt sich dann so im Programm definieren das er Immer einem DB zugeordnet werden kann (Fortlaufend).

Somit hat jeder Motor seine eigenen Datensatz, man kann den Baustein in allen OB's und FC' aufrufen und man hat nicht das CHaos von 60 DB's.

Ich gebe zu bedenken das es keinen sinn macht sich einen FB zu schreiben ihn mehrmals aufzurufen und immer mit dem selben DB zu bestücken da man ja dort Motor-FB spezifische dinge stehen die evtl. auf den nächsten Motor nicht mehr zutreffen.

Wenn ichs mir genau Überleg sind 60 DB's für die Mot. und evtl. 100 DB's für die Ventile schon zu viel für ne 300er

MfG
Balou

P.S. bei RF Mail
 
OP
A

Anonymous

Guest
Ja Ja

Hallo Max,

wäre schön, wenn du mal etwas genauer beschreibst was du tun möchtest.

zB.: Was soll an daten für die motoren und ventile abgelegt werden?

Balou, wie auch ich denken, daß in jedem Fall ein FC in dem du ein und den selben FB 60 mal aufrufst und in mit den jeweiligen dazugehörigen Daten für Motor 1 bis 60 fütterst, das richtige wäre.
Dazu brauchst du auch nur einen DB. Und zwar den Instanz-DB für den FB den du im FC 60 mal aufrufst.

Aber beschreib doch dein vorhaben etwas genauer.
 
Oben