CoDeSYS Unterprogramme VAR übernehme?

Michael68

Level-1
Beiträge
116
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

CoDeSYS und WAGO 750

Habe das Hautprogramm in Unterprogramme zerlegt und nehem die Signalausgänge mit in die anderen Unterprogramme ... Jetzt kommen Fehlermeldungen ...

Wie übernehme ich die Signalausgänge in die anderen Unterprogramme?!

Beispiel: Aufgang Blinker_1.Q gibt einen Melderimpuls und befindet sich im Unterprogramm BLINKER(PRG)

Soll auch im PLC_PRG(PRG) verfügbar sein .... wie geht? :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ne ist nicht so, jedes Unterprogramm hat seine eigene VAR Deklaration.

Fehler 4001: Tech_Tast (6): Variable 'BLINKER_1' nicht deklariert

Da die Variablen Deklaration nur im Program 'Blinker' vorhanden ist.
Kann es aber nirgend umtellen und die VAR steht auf Globale_Variable.

Wenn ich die per Hand auch in die anderen Unterprogramme Eintrage?!
Kann aber nicht normal sein oder?

PROGRAM Blinker
VAR
Blinker_1: TP;
Blinker_2: TP;

Hilfe! :)
 
Fehler 4001: Tech_Tast (6): Variable 'BLINKER_1' nicht deklariert

Da die Variablen Deklaration nur im Program 'Blinker' vorhanden ist.
Kann es aber nirgend umtellen und die VAR steht auf Globale_Variable.

Wenn ich die per Hand auch in die anderen Unterprogramme Eintrage?!
Kann aber nicht normal sein oder?
Wenn Du die Variablen in den Ressourcen "Globale Variablen" einträgst, dann sind sie allen Unterprogrammen bekannt.
Wenn Du sie im Unterprogramm als VAR_GLOBAL einträgst, dann sind sie nur allen Instanzen dieses Unterprogramms bekannt.

Harald
 
Hallo,

hab hier mal ein kleines Beispiel, falls ich dein Problem richtig Verstanden habe.

Code:
PROGRAM BLINKER
VAR_INPUT
   Blink_Start:BOOL;
END_VAR
VAR
   BLINKER_1:TP;
END_VAR
 
BLINKER_1( IN:=  Blink_Start,
    PT := t#2s);

 
PROGRAM PLC_PRG
VAR
 test:BOOL;
END_VAR
 
IF BLINKER.BLINKER_1.Q THEN     (*Abfrage BLINKER_1.Q*) 
 test := TRUE;     
ELSE
 test := FALSE;    
END_IF
 
BLINKER();

Der Timer BLINKER_1 ist im PRG BLINKER deklariert. Wird dort durch irgend eine Variable gesetzt. Bei mir ""Blink_Start". Im PLC_PRG wird Abgefragt ob der Ausgang von BLINKER_1 = true ist ober nicht. Wenn Ausgang true denn Test auch true. Sonst Test = false.

Vielleicht hilft dir das ja weiter.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

nee irgendwie nicht ... Unterprogramme sind zu sehen auf dem Bild Blinker(PRG) etc.
Der FB Trigger_Neustart: R_TRIG kommt aus dem Programteil Tech_Tast(PRG) und ich brauche den Ausgang Q im PLC_PRG(PRG).
Egal ob ich die Deklaration im Unterprogram setzte, wie CoDeSYS es auch macht oder Global ins PLC_PRG(PRG) es geht nicht.
Das Programm startet zwar aber die Unterprogramme sind grau und laufen nicht ....


Glob-var1.jpg



Nachdem das Programm übertragen wurde und Läuft:

Glob-var2.jpg
 
Die Programme muss man auch aufrufen!

Einfach einen Kasten in PLC_PRG malen und den Namen reinschreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Um mich selbst noch etwas zu korrigieren: Man kann die Programme über PLC_PRG aufrufen, es gibt aber auch noch andere Wege dies zu tun.

Die meisten (oder alle?) Plattformen sind Multitasking fähig und man kann über die Taskkonfiguration die Programme auch anstoßen.

Im vorliegenden Fall würde ich aber die Programme wie bereits erwähnt aus dem PLC_PRG heraus aufrufen.

Wobei mir die Struktur im den kreuz und quer verlaufenden Zugriffen nicht besonders gefällt. Aber für Projekte in der Größenordnung ist es schon ok.
 
Ja ist eigentlich schon besser wenn man auch das komplette Programm abarbeitet :). Mit dem hab ich natürlich nicht gerechnet.

Der Aufruf von BLINKER ist in meinem Beispiel eigentlich ja auch zu sehen :).

Aber wenns jetzt Funktioniert ist ja gut.

Gruß
 
Hallo,

es scheind das die Unterprogramme jetzt gehen aber jetzt habe ich ein neues Problem!
Ich bekomme keine Zeit von der WAGO geliefert - AHHHHHH

unterprg.jpg


SysRtcGetTime gibt nicht mehr raus ... wie kommt denn das jetzt? Steht auf 1970 ....



Keinezeit.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

klar hat es Funktioniert ... und die Wago hat auch eine Echtzeituhr :)
Komischer weise geht es wieder ... habe irgendwie zu viele Baustellen zurzeit.
Werde heute Abend mal Schritt für Schritt alle Funktionen überprüfen und einige Module raus schmeißen - Danke für die Hilfe.
 
Läuft wieder und alles ist gut ....

Bekomme aber immer noch nicht die Variablen von den Unterprogrammen in das Hauptprogramm oder umgekehrt. Also habe ich alles Zusammenhängende in das Hauptprogramm zurückkopiert und es geht erst mal wieder ...

Wenn jemand noch einen Tipp hat gerne :)
 
Zurück
Oben