# Erzeugung mehrerer paralell laufender programme



## gizmo (28 März 2007)

hallo

meine frage bezieht sich auf den aufruf von programmen.Ist es möglich einen programm baustein
mehrmals zu erzeugen(50 - 100) und dann die einzelelnen programme einzeln anzusteuern bzw paralell 
laufen zu lassen.Würd gern auch die adress zuteiung der einzelenen globalen variablen in einem 
algorithmus vorgeben d.h. je nach anzahlt der lüfter werden die belegungen automatisch erzeugt.
Ist dies überhaupt möglich ?

hoffe auf baldige antwort MFG BOLLe


----------



## Unregistrierter gast (28 März 2007)

gizmo schrieb:


> hallo
> 
> meine frage bezieht sich auf den aufruf von programmen.Ist es möglich einen programm baustein
> mehrmals zu erzeugen(50 - 100) und dann die einzelelnen programme einzeln anzusteuern bzw paralell
> laufen zu lassen.



Ja.



gizmo schrieb:


> laufen zu lassen.Würd gern auch die adress zuteiung der einzelenen globalen variablen in einem
> algorithmus vorgeben d.h. je nach anzahlt der lüfter werden die belegungen automatisch erzeugt.
> Ist dies überhaupt möglich ?
> 
> hoffe auf baldige antwort MFG BOLLe



Auch ja.


----------



## gizmo (28 März 2007)

danke für die schnelle und ausführliche antwort=)))
du hast nich zufällig a beispielprogramm fuer sowas.theoretisch isses mir klar aber praktisch weiss ich net so ganz wie ichs anfangen soll?welche befehle benötige ich dafür???????


----------



## Unregistrierter gast (28 März 2007)

gizmo schrieb:


> danke für die schnelle und ausführliche antwort=)))
> du hast nich zufällig a beispielprogramm fuer sowas.theoretisch isses mir klar aber praktisch weiss ich net so ganz wie ichs anfangen soll?welche befehle benötige ich dafür???????



Uppss...??

Vielleichts solltest du erstmal die S7 "erste Schritte" durcharbeiten.

Stichwort ist: Parametrierbare Funktionen (FC) und Funktionsbausteine (FB).

Wenn du dich damit mal auseinander gesetzt hast (z.B. Formaloperanden versorgen), dann darfst du dich ans automatische Adressverteilen begeben.

Eins nach dem anderen.


----------



## gizmo (28 März 2007)

Hi 

Also wie man einen einzelnen baustein in ST aufruft(CALL "Bausteinname")is

 klar und wie ich dem parametrier(zeit1:=t#3s) is auch klar, aber wie mach ich

 des das ich sag das er vom baustein BSP1  30stck erzeugen  soll, wovon 20 

die parameter und die 30  anderen ,andere parameter haben sollen.

MFG


----------



## Unregistrierter gast (28 März 2007)

gizmo schrieb:


> Hi
> 
> Also wie man einen einzelnen baustein in ST aufruft(CALL "Bausteinname")is
> 
> ...



Die Bausteien müssen über Formaloperanden verfügen.
Diese kannst du bei Aufruf versorgen.

Beispiel SCL:


```
FUNCTION Blutiger_Anfaenger : VOID

VAR_INPUT
    
  RealInput       : REAL ;    // Kann als Gleitpunkt bei Aufruf versorgt werden
  
END_VAR


VAR_OUTPUT

  RealOutput   : REAL ;    // Wird vom FC beschrieben
  
END_VAR
```


----------



## gizmo (28 März 2007)

Also entweder ich steh auf dem Schlauch oder wir reden aneinander vorbei.

ich hab bereits ein fertiges programm das auf die globalen variablen so reagiert 

wies soll. Jetzt will ich , je nach eingabe am bedienterminal( es wird die anzahl 

der verschiedenen gruppen an lüftern sowie die anzahlt der lüfter innerhalb 

einer gruppe angegeben)so und so viele lüfterprogramme erzeugen und mit 

verschiedenen gruppenabhängigen zeitparametern ausrüsten.Wie gesagt einen Baustein zu prametrieren von wegen VAR_INPUT oder VAR_OUTPUT is klar aber 

ich will ja 50 stck von denen erzeugen und dann erst parametrieren.


wer nicht fragt bleibt bloed.

MFG Blutiger Anfänger


----------



## Unregistrierter gast (28 März 2007)

gizmo schrieb:


> Also entweder ich steh auf dem Schlauch oder wir reden aneinander vorbei.
> 
> einer gruppe angegeben)so und so viele lüfterprogramme erzeugen und mit
> 
> MFG Blutiger Anfänger




Du willst "lüfterprogramme erzeugen" ?

was meinst du damit ??

Ein SPS - Programm dass sich selber schreibt ?

Gabs bei der S5, bei der S7 nicht mehr.


----------



## gizmo (28 März 2007)

das sps prog soll die angabe kriegen es gibt 2 lüfter gruppen von der die eine aus 20 und die andere aus 30 lüftern besteht.So

Jetzt soll des prog 20 mal die lueftereinheit_gr1_1.........lueftereinheit_gr1_20 und 30mal die lueftereinheiten Lueftereinheit_gr2_21.........Lueftereinheit_gr2_50
erzeugen und ,vielleicht nich den einzelnen lüftern aber zumindest den  kompletten gruppen, die (einschaltzeit1_1 ,einschaltzeit1_2 ,Trudelzeit1_1 ,Trudelzeit1_2 etc.)Zeitkonstanten vorgeben 

Während gruppe 2 mit den paramtern(einschaltzeit2_1 ,einschaltzeit2_2 ,Trudelzeit2_1 ,Trudelzeit2_2 etc.)versorgt werden soll.

Und jetzt will ich diese ingesamt 50 lüfter gleicht zeitig mit eingangsignalen versorgen d.h wenn von der steuerung stufe1 verlangt wird sollen alle 50 lüfter unter einhaltung der parameter(einschaltzeit1_1 für gruppe1 und einschaltzeit2_1 für gruppe2)die stufe 1 hochfahren.

ich hoffe es ist jetzt klar worauf ich raus will

übrigens benutz ich keine siemens sps sondern ein wago system mit der CoDeSys software


----------



## volker (28 März 2007)

das geht so wie du dir das denkst nicht.
die sps kann ihren eigenen code nicht generieren.

ich sehe aus dem stand 2 möglichkeiten.
1. du rufst den baustein sooft auf wieviel maximal lüfter laufen können.
  abhängig davon welche laufen sollen versorgst du die mit parametern und bearbeitest diese. die anderen baustein nicht bearbeiten.

2. du rufst den baustein in einer schleife auf und versorgst alle lüfter mit den nötigen parametern.


----------



## Unregistrierter gast (28 März 2007)

volker schrieb:


> das geht so wie du dir das denkst nicht.
> die sps kann ihren eigenen code nicht generieren.



na, vielleicht glaubt er dir ja...


----------



## gizmo (28 März 2007)

ahoi

wenn dann ist die erste variante sinnvoll fuer mich. ist es bei variante 1 möglich  die lüfterprogramme gleichzeitig laufen zu lassen, so das die einzelnen zeiten gleichzeitig ablaufen koennen???das sps programm soll nämlich alle lueftereinheiten  gleichzeitig steuern

wenn ich des nämlich in einer schleife realisier können sie ja nich gleichzeitig laufen oder? 

MFG gizmo


----------



## gizmo (28 März 2007)

Unregistrierter gast schrieb:


> na, vielleicht glaubt er dir ja...



hätte es dir auch geglaubt .war mir nur net sicher ob wir nicht an einander vorbeireden.

gizmo


----------



## Werner54 (28 März 2007)

*mal was neues*



gizmo schrieb:


> das sps programm soll nämlich alle lueftereinheiten gleichzeitig steuern... und so viele lüfterprogramme erzeugen...


Hallo,
das heißt ja wohl im Umkehrschluß: Für alle Lüfter, die ausgeschaltet werden sollen, wird der zugehörige Baustein gelöscht...
Eine interessante Methode, wäre mir aber zu stressig.


----------



## gizmo (28 März 2007)

hi Werner

Wie würdest du des dann machen?
bin für jede anregung dankbar nachdem mein einziger lösungsansatz übern haufen geworfen wurde 

MFG gizmo


----------



## volker (28 März 2007)

mal abgesehen davon ob das eine schöne lösung wäre.
klar geht das auch in einer schleife. dazu musst du aber mit pointer und evtl anyzeigern vertraut sein. für so eine lösung solltest du aber profi sein.

parametriere deine fc für jeden lüfter, also 50 stück. über copy/paste sollte das kein prob sein.
was für parameter du der fc übergibst....
nun ja. du kannst alle parameter übergeben oder nur einen zeiger auf den datenanfang im db. in der fc arbeitest du dann mit pointern.


----------



## gizmo (28 März 2007)

volker schrieb:


> mal abgesehen davon ob das eine schöne lösung wäre.
> 
> Fällt dir auf die schnelle ne bessere Lösung ein???
> (bin momentan am verzweifeln)
> ...


----------



## kpeter (28 März 2007)

Also ich versteh noch nicht was ihr vorhabt

habt ihr eine variabele anzahl von lüftern die an der anlage hängen

oder sollen nur eine variable anzahl von lüftern laufen

zum 1 das wäre eine riesieger aufwand und verdrahtungsmässiger unsinn

zum 2 alle programmieren und mit freigaben die einzelen freigeben


----------



## Unregistrierter gast (28 März 2007)

gizmo schrieb:


> Also ,alle die das hier lesen ,bin für jeden vorschlag offen !!!*VERZWEIFEL*



Bitte gern, les dir ->DAS<- doch mal durch !


----------



## gizmo (28 März 2007)

gizmo schrieb:


> das sps prog soll die angabe kriegen es gibt 2 lüfter gruppen von der die eine aus 20 und die andere aus 30 lüftern besteht.So
> 
> Jetzt soll des prog 20 mal die lueftereinheit_gr1_1.........lueftereinheit_gr1_20 und 30mal die lueftereinheiten Lueftereinheit_gr2_21.........Lueftereinheit_gr2_50
> erzeugen und ,vielleicht nich den einzelnen lüftern aber zumindest den  kompletten gruppen, die (einschaltzeit1_1 ,einschaltzeit1_2 ,Trudelzeit1_1 ,Trudelzeit1_2 etc.)Zeitkonstanten vorgeben
> ...



das soll des prog machen-
das des generiern nicht funzt hab ich  verstanden


----------



## volker (28 März 2007)

grundsätzlich geh so vor. 

schreibe den baustein für 1 lüfter. benutze in dem baustein keine absoluten adressen sondern temporäre variablen.

übelege dir welche parameter jeder lüfter benötigt. diese definierst du als ein/ausgangsvariablen. 
ein in-parameter heisst freigabe.

diesen baustein rufst du für jeden lüfter auf.
in etwa so


```
CALL  FC    14
       freigabe   :=M1.0                //freigabe 1
       drehzahl   :=1400
       Luefter_Ein:=A0.0                //schütz 1
 
      CALL  FC    14
       freigabe   :=M1.1                //freigabe 2
       drehzahl   :=1400
       Luefter_Ein:=A0.1                //schütz 2
```


----------



## gizmo (28 März 2007)

ich glaub ich weiss worauf du raus willst .ich lad praktisch die maximale anzahl(max anzahl abhängig vom speicher der SPS) von lüftern auf die sps
und geb sie über die  variable "freigabe" frei.
also den baustein für einen 2 stufigen lüfter hab ich schon.Der macht auch des was ich will(hält alle einschaltzeiten, zur vermeidung von gleichzeitigen Stromspitzen, und trudelzeiten ein).
Aber kann ich mit dieser Aufrufmethode alle zeiten gleichzeitig laufen lassen.Der springende punkt is der das an der anlage mehr als 30 lüftern hängen wovon keiner gleichzeitig mit einem anderen angeschaltet werden darf d.h. jeder einzelne lüfter muss zu einem anderen zeitpunkt eingeschaltet werden.welche eingangsvariablen und ausgangsvariablen die lüftereinheit hat weiss ich schon.stufeneingänge fuer die schaltung der 2 stufen und dazu noch Eingänge fuer die zeit konstanten fuer einschalt- und trudelzeiten

Ich häng einfach mal die bis jetzt geschriebene lüftereinheit als anhang dazu vielleicht wirds dann klarer.

(Mit "keine absoluten variablen"meinst du wohl globale variablen oder?)


----------

