Unterschied zwischen UC und Call

Bitverbieger

Level-2
Beiträge
280
Reaktionspunkte
29
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Experten,
kann mir mal jemand erklären anhand eines Beispiels wann man UC anstatt
Call benutzt. die Hilfe in Step7 ist etwas kurz.

Vielen Dank im Voraus

Bitverbieger
 
Ganz sicher bin ich mir auch nicht, aber es liegt an der Variablenübergabe.

Mit UC kann ich einen Baustein aufrufen aber keine Variablen übergeben.
CALL kann das.

Beispiele

UC FC 1



CALL FC1
IN: Var_1
OUT: Var_2


Also das mit dem IN und OUT kann UC nicht

Wie gesagt. So habe ich das verstanden aber nie ausprobiert. Ich nehme immer CALL.
 
Beispiel 1

UC FC6 //Rufe die Funktion FC6 auf (ohne Parameter).


Beispiel 2


UC SFC43 //Rufe die Systemfunktion SFC43 auf (ohne Parameter).

:ROFLMAO: :ROFLMAO:

Da gibst sonst nichts. Das ist völlig unspecktakulär.

Zu CC könnte man eher was schreiben. Aber auch das ist schnell erschöpft.
:D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Uc

Hallo,

ein entscheidender Unterschied ist dass man mit UC einen FB ohne Insatnz-DB aufrufen kann. Manche programmieren (warum auch immer) in FB ohne IN, OUT, INOUT und statische Variablen zu nutzen. Hier wäre auch der Instanz-DB nutzlos. Mit UC kann man sich diesen sparen.

André
 
Das kommt bestimmt noch aus den "alten" S5-Zeiten. Da hat man ja gern mal nen FB oder SB als Ersatz für Programmbausteine verwendet, wenn die Grenze von 255 Bausteinen schon erschöpft war... ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für die CPU gibt es keinen Call, sondern nur den UC xx.
Der Call wird durch den AWL-Editor in zahlreiche AWL-Anweisung umgewandelt die für die Parameterübergabe benötigt werden.
Demzufolge: Wenn es schnell gehen soll und man keine Parameter braucht:
UC xx

MfG
 
Re: Uc

Hallo, ich sehe das anders :
(immer in AWL):

UC == Unconditionierter Call == absoluter Aufruf


CC == conditionierter Call == Aufruf abhängig von VKE.

liege ich da richtig ?

Gruss Fileplayer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
was siehst du denn jetzt anders als er?

was du zu UC und CC sagst stimmt, aber Longbow sagt das der befehl Call in UC umgebaut wird und zusätzlich die parameter dran gehangen werden

Hallo,

ich bin mir nicht wirklich sicher, auf welchen Eintrag "Fileplayer" geantwortet hat. Aber UC und CC sind auch in der CPU (MC7) eigene Befehle. Wobei
es für CC und UC ja auch keine Parameterübergabe gibt!
Wobei der S7-Editor es sogar zulässt einen solchen Baustein aufzurufen.

Gruß
 
Hallo!

Wie in der Hilfe steht können keine Parameter bei einem UC aufruf übergeben werden.
Habe da mal ein wenig herumprobiert und bin draufgekommen das es doch geht aber mit dem Vorteil das man die Parameter überall übergeben kann! :-D

Habe hier einen Multiinstanzaufruf mit den UC Befehl Programmiert.
(Ist aber ein deutlich höherer aufwand als mit den CALL Befehl :???: )

Code:
FUNCTION_BLOCK FB 3
TITLE =
VERSION : 0.1
 
VAR
  Testvariable : BYTE ; 
  Timer_TON : SFB 4; 
END_VAR
BEGIN
NETWORK
TITLE =
 
//Einschaltbedienung für Timer
      U     M    220.0; 
      =     #Timer_TON.IN; 
 
//Time für Timer
      L     T#2S; 
      T     #Timer_TON.PT; 
 
//Timeraufruf
      L     P##Timer_TON; //Lade Pointer von Variable
      L     2#111111111111111111111111; 
      UD    ; //Maskiere Byte 0 von Pointer aus
      L     2#10000100; 
      SLD   24; 
      XOD   ; //Maskiere Pointer auf DB
      LAR2  ; //Pointer muss an das AR2 übergeben werden wegen Multiinstanz
      UC    SFB    4; //Bausteinaufruf
 
//Setze AR2 auf Operandenbereich DB und 0ffset von 0.0 weil die weiteren Variablen wie Timer_TON.ET auch mit dem AR2 arbeiten!
      L     P#0.0; 
      L     2#10000100; 
      SLD   24; 
      XOD   ; //Maskiere Pointer auf DB
      LAR2  ; 
 
//Lade Restliche Zeit
      L     #Timer_TON.ET; 
 
//Ausgabe von Timer
      U     #Timer_TON.Q; 
      CLR   ; 
 
END_FUNCTION_BLOCK

godi
 

Ja das mit der Übergabe eines Schmiermerkerbereiches finde ich nicht so gut da es dann doch nicht wirklich übersichtlich ist und bei SFB/SFC funktionierts auch nicht.

Obwohl das was ich da jetzt Programmiert habe war ja im Prinzip nur blöde spielerei und ist auch net Übersichtlich.
Wo man es eventuell brauchen könnte ist wenn man viele Input/Outputvariablen nicht belegt und die was man belegt gleich ins Programm integrieren will.

godi
 
Hallo,
hab mich verdrückt ausgekehrt. Ich meinte nicht den Schmiermerkerteil sondern den indirekten Aufruf von Bausteinen, der mit Deiner Spielerei vervollkomnet wird.

Thomas
 
Zurück
Oben