# CoDeSys 2.3 Variablen Sprung zwischen Unterprogrammen



## Michael68 (2 Juni 2011)

Hallo,

wie übernehme ich Variablen der Ausgänge in andere Unterprogramme?! 

z.B. wenn ich:

Fb_Stromstoss.xAktor 

in   

DALI(PRG) 

benutzen möchste ... wie mache ich das? 

HILFE!


----------



## PeBi (2 Juni 2011)

"Globale Variable" heisst das Zauberwort


----------



## StructuredTrash (2 Juni 2011)

PeBi schrieb:


> "Globale Variable" heisst das Zauberwort


Nein, das ist ein böses Wort. Globale Variablen braucht man nur zum Datenaustausch zwischen mehreren Tasks.

Ich würde im PLC_PRG eine Variable "Output_to_DALI" deklarieren und sie an den Ausgang "xAktor" des FB's hängen. Im DALI dann eine Variable "Input_from_PLC_PRG" deklarieren. DALI aus PLC_PRG heraus aufrufen und dabei "Output_to_DALI" mit dem DALI-Eingang "Input_from_PLC_PRG" verbinden.


----------



## Michael68 (2 Juni 2011)

Hallo,

"Global" war mir klar das es nicht geht 


@StructuredTrash:  Geht nicht, habe die VAR angelegt aber der wert wird nicht übernommen ... wieso nicht?
Was fehlt?!


----------



## StructuredTrash (3 Juni 2011)

Michael68 schrieb:


> @StructuredTrash: Geht nicht, habe die VAR angelegt aber der wert wird nicht übernommen ... wieso nicht?
> Was fehlt?!


Gute Frage. Ein paar Screenshots von den entsprechenden Stellen im Programm wären hilfreich.


----------



## Paule (3 Juni 2011)

Michael68 schrieb:


> @StructuredTrash: Geht nicht, habe die VAR angelegt aber der wert wird nicht übernommen ... wieso nicht?
> Was fehlt?!


 


StructuredTrash schrieb:


> DALI aus PLC_PRG heraus aufrufen und dabei "Output_to_DALI" mit dem DALI-Eingang "Input_from_PLC_PRG" verbinden.


Was wurde aus dem alten DALI aufruf?


----------



## Michael68 (5 Juni 2011)

Hier die Shots, geht nicht


----------



## rheumakay (5 Juni 2011)

hallo,
wo hast du denn die beiden Variablen
Input_from_PLC_PRG mit Output_to_Dali miteinander verbunden ??

sollte in ST so aussehen: Output_to_Dali:=Input_from_PLC_PRG;

aber warum sollte man nicht eine Variable Global anlegen..dafür ist´s doch da ??


----------



## Michael68 (5 Juni 2011)

Hallo,

das war doch meine Frage?! Mir war nicht klar wie ich die Globale-VAR Deklariere. Habe es jetzt aber raus gefunden:

Variablen Liste - das hatte ich nicht gesehen / War mir dich bewust.








Also geht:







Also schliesse ich das Thema und sage Danke für die Dankanstöße!


----------



## StructuredTrash (6 Juni 2011)

Und wieder eine Seele, die für eine ordentlich strukturierte Programmierung verloren ist. 
Ich erkläre aber trotzdem den Fehler im ersten Versuch. Die Variable "Input_from_PLC_PRG" muss im "DALI" als "VAR_INPUT" deklariert werden, damit man ihr aus dem aufrufenden Programm heraus einen Wert übergeben kann.


----------



## Michael68 (7 Juni 2011)

keine Sorge ich habe schon den Kopf in ST gesteckt und werde da jetzt auch mehr machen ...


----------



## bike (7 Juni 2011)

Michael68 schrieb:


> keine Sorge ich habe schon den Kopf in ST gesteckt und werde da jetzt auch mehr machen ...



Sorgen mache ich mir meist um anderes.
Aber was dir StructuredTrash schreiben wollte ist, dass wenn es funktioniert, es nicht immer der richtige Weg ist.

Es gibt nichts schlimmeres, als schlechte Angewohnheiten wieder zu vergessen.


bike


----------



## StructuredTrash (7 Juni 2011)

Michael68 schrieb:


> keine Sorge ich habe schon den Kopf in ST gesteckt und werde da jetzt auch mehr machen ...


Na, dann besteht ja vielleicht noch Hoffnung.
Wobei ich einen Umstieg auf ST nicht von vornherein als Zeichen dafür werte. Ich habe zwar schon oft die Meinung gehört, dass eine vernünftige Strukturierung der Daten nur mit einer Hochsprache möglich wäre, aber das ist Blödsinn. Zum Einen sieht eine saubere Datenübergabe zwischen aufrufendem und aufgerufenem FB oder PRG mit Hilfe von "VAR_INPUT/VAR_OUTPUT" auch in FUP sehr übersichtlich aus, zum Anderen ist der Mehraufwand gegenüber der Quick and Dirty-Lösung "Globale Variable" in ST genauso hoch. Es ist unabhängig von der Sprache schlicht und einfach eine Frage der Disziplin.



bike schrieb:


> Es gibt nichts schlimmeres, als schlechte Angewohnheiten wieder zu vergessen.


War das jetzt wirklich so gemeint, oder ist es eher so etwas wie NOT NOT?


----------



## bike (8 Juni 2011)

StructuredTrash schrieb:


> War das jetzt wirklich so gemeint, oder ist es eher so etwas wie NOT NOT?



So ein Mist 

Da hab ich den Gedanken völlig falsch in die Tasten gehauen, Asche auf mein Haupt.
Natürlich meinte ich, dass es schwer ist schlechte Angewohnheiten wieder zu vergessen.


bike


----------



## Flo (8 Juni 2011)

Michael68 schrieb:


> Hallo,
> 
> wie übernehme ich Variablen der Ausgänge in andere Unterprogramme?!
> 
> ...


 
Thema ist zwar schon durch, aber bei mir würde so eine abfrage im Programm DALI(wenn auf die Variable nur lesend zugegriffen wird) so aussehen:

In Programm DALI:
"PLC_PRG.Taster_Tech_1.xAktor" in der OR Verknüpfung

Ist zwar nicht jedermanns Sache aber, ich persönlich finde diese Art der Abfrage übersichtlicher (na ja, jedem seine Meinung...)

mfg,
Flo


----------



## Michael68 (8 Juni 2011)

Flo schrieb:


> In Programm DALI:
> "PLC_PRG.Taster_Tech_1.xAktor" in der OR Verknüpfung
> 
> Ist zwar nicht jedermanns Sache aber, ich persönlich finde diese Art der Abfrage übersichtlicher (na ja, jedem seine Meinung...)
> ...



Junge, junge Ihr geht noch mal richtig zum Thema ab 

"PLC_PRG.Taster_Tech_1.xAktor" finde ich sehr gut, gerade wenn ich wieder nach länger Zeit rein schaue, ist es klar wo es her kommt. Werde ich auch so machen da ich den Kram nochmal grundliegend neu aufbaue. Ist immer noch ein Versuchsfeld und das muss hier die nächsten Wochen aufhören. Habe extra noch einen Controller zugelegt um eine zweite für Tests aufzubauen ... 

Allen Danke für die Ideen!


----------



## StructuredTrash (9 Juni 2011)

Michael68 schrieb:


> "PLC_PRG.Taster_Tech_1.xAktor" finde ich sehr gut, gerade wenn ich wieder nach länger Zeit rein schaue, ist es klar wo es her kommt.


Wenn Du es denn wiederfindest. Dem DALI sieht man ja dann gar nicht an, dass es eine Variable aus PLC_PRG verwurstet. Wenn ich in die Versuchung gerate, in einem PRG auf eine Variable aus einem anderen PRG zuzugreifen, frage ich mich, wozu ich überhaupt zwei PRG's habe, zumindest aber, ob ich die Trennlinie zwischen den beiden an der richtigen Stelle gezogen habe.


----------



## Michael68 (10 Juni 2011)

Hallo,

 das hat den Grund das ich ein Tastersignal / Ergebnis aus einem anderem Program übergangsweise brauche. Wie ich schon schieb es sind einige Experimente im Program - laufen aber gut - das es die ganze Anlage zwar in Betrieb ist aber ist trotzdem mein Experimentierfeld.


----------

