Formal- und Aktualparameter in CoDeSys

visu90

Level-2
Beiträge
139
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
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??? :confused:
 
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
 
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
 
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 SchreibenForum Instanz codesys.JPG
 
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 ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
Zurück
Oben