# Formal- und Aktualparameter in CoDeSys



## visu90 (12 Januar 2012)

Hallo.
Ich hab in meinem CoDeSys-Programm FBs die ich in PLC_PRG aufrufe.
Jetzt nur folgendes Problem. Ich habe einen Integer-Aktualparameter auf den Formalparameter (auch integer) des FBs gelegt.
 Nehmen wir mal an der Aktualparameter hat eine 4 in seinem Integer stehen, zeigt mir der zugehörige Formalparameter eine 0 an. Und das immer mal, völlig unabhängig welche Zahl im Aktualparameter auftaucht. Der Formalparameter bleibt immer auf 0. 
Es ist zwischen den zwei Paramtern nichts programmiert oder verknüpft, sie sind direkt miteinander verschalten. Wie kann es dann sein, dass der eine Parameter was anderes anzeigt, als der andere???


----------



## teftulli (12 Januar 2012)

Hast du den Formalparameter im FB als Var_Input oder Var_IN_Out deklariert und 
im PLC_PRG deinen FB auch aufgerufen und den Aktualparameter übergeben


----------



## visu90 (12 Januar 2012)

Ja es ist als Var_Input deklariert und der Aktualparameter ist übergeben


----------



## teftulli (12 Januar 2012)

Wie wird die Instanz aufgerufen ?
So
fb_Test; (* Aufruf FB*)
fb_Test.Val := varMain; (* Übergabe Wert *)
oder
fb_Test(Val := varMain); (* Aufruf FB und Übergabe Wert *)


habe beides getestet 
bei mir wird der Wert übergeben


----------



## visu90 (12 Januar 2012)

teftulli schrieb:


> Wie wird die Instanz aufgerufen ?


So:     Out_Inst: Befehlsausgabe_auto;


----------



## teftulli (13 Januar 2012)

Das schaut so aus als stünde das im Deklarationsteil
Out_Inst: Befehlsausgabe_auto; 

Out_Inst und  die Übergabe des der Variabeln soll dann im Anweisungteil erfolgen


----------



## visu90 (13 Januar 2012)

Freilich ist das aus dem Deklarationsteil.
Schau mal, hier ist ein Screen-Shot von meinem PLC_PRG, dann siehst du gleich was sache ist
Das eingekreiste ist das worüber wir hier Schreiben


----------



## KvT (16 Januar 2012)

Hi,

Problem gelöst?

Am häufigsten bekommt man das, wenn das SPS Programm noch nicht gestartet ist ; )

Oder wenn eine der beiden Variablen im Programm überschrieben wird.
Dabei ist die Reihenfolge der Aufrufe entscheidend ...


----------



## Werner29 (17 Januar 2012)

Noch nicht gestartet ist natürlich die einfachste Möglichkeit.
Grundsätzlich zeigen die dargestellten Werte immer den Zustand nach einem ganzen Zyklus an.
Also kann es schon sein, dass der Formalparameter oder der Aktualparameter nach der Zuweisung verändert werden.
Wenn du dir nicht erklären kannst was da passiert, dann geh mal mit Einzelschritten durch und schau dir an wann welcher
Wert verändert wird.


----------



## visu90 (21 Januar 2012)

Also danke für eure Hilfe.
Ich glaube herausgefunden zu haben woran das liegt. Und zwar ist das eine Übung aus der Berufsschule und diese Datei habe ich schon vorgefertigt bekommen und habe nur den Befehlsausgabebaustein selber schreiben müssen, der schon leer in der Datei erstellt war.
Jetzt habe ich diesen leeren Baustein gelöscht wieder neu erstellt. Und siehe da, jetzt funktioniert es!
Die Datei muss irgendwie beschädigt worden sein (vermute ich).
Aber meiner Meinung nach darf das einfach nicht Passieren, weil das Industriesoftware ist. Die muss doch einfach zuverlässig sein, damit man damit vernünftig arbeiten kann.
Was meint ihr?


----------



## KvT (23 Januar 2012)

Software, die zuverlässig funktioniert? 

Wenn Du eine gefunden hast, dann meld Dich bitte!


----------



## Werner29 (23 Januar 2012)

Mal davon abgesehen das CoDeSys natürlich Fehler hat wie alle andere Software auch, kann ich das einfach nicht glauben.
Wenn du das originale Projekt mit dem Fehler noch hast, dann hänge es doch einfach mal hier an, dann schaue ich mir das an.

Ausserdem: wie stellst du dir das so vor mit der Software-Entwicklung? Weil das Industrielle Software ist, machen wir mal lieber keine Fehler rein?
Und Bürosoftware muss man nicht testen?


----------

