Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Aufruf von Methoden wie in C

  1. #1
    Registriert seit
    05.07.2010
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein paar Probleme damit bereits bekannte Programmiermethoden von C auf CoDeSys zu übertragen. Ich weiß nicht ob ich mich einfach nur vertippe, oder ob es so überhaupt nicht geht.

    Am besten beschreib ich erstmal was ich in C machen würde:

    Code:
    function (temp_a a, temp_b b)
    {
    Mach irgendwas mit temp_a und temp_b;
    }
    
    
    int main ()
    {
    int a;
    int b;
    function (a, b);
    return 0;
    }
    Als Beschreibung: Ich will einer Funktion zwei Werte übergeben die irgendwie verarbeitet werden sollen.

    Jetzt kommen aber die Methoden ins Spiel.


    Meine Main Datei sieht nun so aus:
    Code:
    PROGRAM main_prog
    VAR
    t1 : standard;
    temp : ARRAY[1 .. 4] OF functions := [t1];
    a : INT := 1;
    b : INT := 2;
    END_VAR
    
    temp[1].test_methode(var1 := a, var2 := b);
    
    END_PROGRAM
    Die Methode (und Interfacekopf) sieht so aus:

    Code:
    METHOD test_methode : BOOL
    VAR_INPUT
    var1 : INT;
    var2 : INT;
    END_VAR
    VAR
    temp1 : INT := 0;
    temp2 : INT := 0;
    END_VAR
    
    temp1 := var1;
    temp2 := var2;
    
    END_METHOD
    Eigentlich müsste in temp1 jetzt 1 und temp2 2 stehen aber es steht in beiden 0. Warum ist das so? Wo ist mein Fehler?


    Vielen Dank an den der mich mit dem Geistesblitz trifft! Ich hoffe das wird wie ein 4 zu 0 gegen Argentinien .
    Zitieren Zitieren Aufruf von Methoden wie in C  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hallo,
    wie wäre es, wenn du statt mit TEMP-Variablen mit einer OUT-Variable arbeitest und darin zum Beipiel die Summe deiner beiden Einzel-Variablen abbildest ?
    TEMP ist möglicherweise auch bei Codesys temporär ...

    Gruß
    Larry

  3. #3
    zergi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Huhu,

    genau genommen arbeite ich garnicht mit Temp Variablen sondern mit nem Struct. Ich hab nur bei dem Beispiel temps eingeführt damits übersichtlicher wird.

    Was ich aber vergessen habe im Anfangspost zu schreiben ist das Ergebnis des Simulationsmodus.

    Wenn ich (nach Aktivieren der Simulation) die Methode öffne sieht sie wie folgt aus:
    Code:
    temp1 0 := var1 ???;
    temp2 0 := var2 ???;

    Und die main so:
    Code:
    temp[1].test_methode(var1 := a 1, var2 := b 2);
    Es wird also die 1 und 2 übergeben, es kommt aber nichts an.
    Der Fehler muss also irgendwo am Syntax der Methode liegen.. oder kann man evt. keine Variablen an Methoden übergeben?

  4. #4
    Registriert seit
    08.01.2007
    Beiträge
    54
    Danke
    1
    Erhielt 10 Danke für 8 Beiträge

    Standard

    Ich denke die werte kommen schon an, jedoch arbeitest du mit Funktionen (Methoden) würdest du aus deiner Methode einen FB machen dann sollte es gehen.
    Die Funktion wird nur bei Ausführung initialisiert und sie besitzt eigentlich keinen Wertbereich.
    Alle Werte der Funktion stehen nach der Ausführung nicht mehr zu Verfügung
    das ist eigentlich in jeder Programmiersprache so.

  5. #5
    Registriert seit
    08.01.2007
    Beiträge
    54
    Danke
    1
    Erhielt 10 Danke für 8 Beiträge

    Standard

    Zitat Zitat von zergi Beitrag anzeigen
    Huhu,

    Wenn ich (nach Aktivieren der Simulation) die Methode öffne sieht sie wie folgt aus:
    Code:
    temp1 0 := var1 ???;
    temp2 0 := var2 ???;
    das muss so sein weil du die Funktion nicht als instanz aufrufen kannst, denn es gibt kein Instanz derer.

    nach deinem Ansatz müsstest du ja über Twincat ein Auswahl bekommen welches Objekt du dir anzeigen lassen möchtest..
    Doch gibt dir TwinCat dies nicht weil es dieses Objekt nicht als Instanz gibt
    Geändert von soma (05.07.2010 um 14:03 Uhr)

  6. #6
    zergi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von soma Beitrag anzeigen
    nach deinem Ansatz müsstest du ja über Twincat ein Auswahl bekommen welches Objekt du dir anzeigen lassen möchtest..
    Doch gibt dir TwinCat dies nicht weil es dieses Objekt nicht als Instanz gibt
    Bekomm ich aber. Die Abfrage welche der 4 Objekte ich den ansehen will.
    Alle 4 zeigen mir das gleiche an. Wobei 2-4 mir ja auch nix anzeigen sollten, nur im ersten müssten die Werte anders sein.


    Dein erstes Post versteh ich nicht. Wenn es die Funktion nicht mehr geben sollte, wieso stehen dann Werte in den Variablen? Nur nicht die Übergebenen.
    Edit: Nach nem großen Stück Schokolade habe ich deinen Post jetzt doch verstanden. Er betrifft mich aber nicht, da ich, im zweiten Post, als Antwort auf Larry geschrieben habe das ich mit einem struct arbeite wo alle Werte drin gespeichert werden. Das die Function/Methode nach dem Aufruf "abgearbeitet" wird und nicht mehr da ist ist klar, deshalb speicher ich ja auch woanders.
    Geändert von zergi (05.07.2010 um 14:28 Uhr)

  7. #7
    Registriert seit
    08.01.2007
    Beiträge
    54
    Danke
    1
    Erhielt 10 Danke für 8 Beiträge

    Standard

    poste doch mal bitte deinen code für die Function

    der bezeichner Method exsistiert bei mir garnicht.
    temp : ARRAY[1 .. 4] OF functions := [t1];
    was ist functions

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von soma Beitrag anzeigen
    poste doch mal bitte deinen code für die Function

    der bezeichner Method exsistiert bei mir garnicht.
    temp : ARRAY[1 .. 4] OF functions := [t1];
    was ist functions
    Vielleicht testet er ja Codesys V3?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. #9
    Registriert seit
    30.08.2005
    Beiträge
    280
    Danke
    41
    Erhielt 96 Danke für 66 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    es geht wohl um Codesys 3.
    Zergi: eine Methode ist ziemlich ähnlich wie eine Funktion, d.h: jeder Input, jeder Output und jede lokale Variable sind nur temporäre Daten, die bei jedem Aufruf initialisiert werden und anschliessend wieder zerstört werden.
    Anschauen kann man sich die Werte dann nur wenn man in den Aufruf reinsteppt oder wenn man einen Breakpoint in der Methode setzt.
    Willst du Variablen haben, die zwischen Aufrufen erhalten bleiben, dann musst du diese beim Funktionsblock deklarieren.
    Dein Projekt kann aber wohl nicht übersetzbar sein:
    Code:
    t1 : standard;
    temp : ARRAY[1..4] OF functions := [t1];
    was ist standard für ein Typ und was ist functions für ein Typ? Bei diesem Codestück ist mir schon gar nicht klar was du erreichen willst.
    Du legst eine Variable t1 vom Typ Standard an (ein Funktionsblock?) dann einen Array mit basistyp functions (ein anderer Funktionsblock?) dann initialisierst du das erste Element des Array mit der vorher definierten Variable (das ist ein memcopy! Willst du das?).
    Zu welchem Funktionsblock gehört nun die Methode?

    Bernhard

Ähnliche Themen

  1. FB Aufruf in S7 SCL
    Von Starter im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.10.2011, 14:16
  2. OB3 Aufruf
    Von Higgi im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.04.2010, 11:52
  3. FB-Aufruf
    Von S7 Frischling im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 10.10.2009, 11:52
  4. OB 82 Aufruf
    Von peltzerserbe_ im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 02.06.2006, 20:37
  5. [WinCC] Objekt-Methoden in C-Skript
    Von vido im Forum HMI
    Antworten: 0
    Letzter Beitrag: 14.03.2006, 14:33

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •