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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Function Call in Step 7

  1. #1
    Registriert seit
    19.02.2013
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    ich bin anfaenger in SPS Programmierung. Ich habe ein kleine Funktion programiert und getestet. Das programm ist in Anhang. Kann jemand mir erklaeren, warum wenn ich presse I0.0 oder I1.0 oder I0.3 alle Ausgaenge Q0.0, Q1.0, Q5.0=1
    Ich moechte eigentlich wie foglt
    press I0.0 dann Ausgang Q0.0=1
    press I1.0 damm Q1.0=0
    Press I0.3 dann Q5.0=0

    Wie kann ich korrigieren?

    Danke
    Angehängte Dateien Angehängte Dateien
    Geändert von motorguru (21.02.2013 um 09:13 Uhr)
    Zitieren Zitieren Function Call in Step 7  

  2. #2
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Guten Morgen (zumindestens hier in Deutschland ist es gerade früh am Morgen).

    Du hat einen klassischen Fehler im Umgang mit den temporären Variablen gemacht.
    Temporäre Variable (TEMP) können ihren Zustand nicht von einem Bausteinaufruf bis zum nächsten Speichern, dass heißt, sobald man eine TEMP verwendet, muss man sie erst zuweisen, bevor man sie zuverlässig verwenden kann. Wenn man sie verwendet, bevor man sie zugewiesen hat, haben sie einen zufälligen Zustand.
    Das kommt daher, dass TEMP nur für die Verwendung innerhalb eines Bausteins gedacht sind. Nach dem Bausteinaufruf wird der jeweilige Speicherbereich wieder freigegeben und der nächste Baustein verwendet ihn für seine TEMP. Aus diesem Grund sind TEMP ungeeignet für Variablen, deren Zustand im nächsten Aufruf vor einer Zuweisung wieder benötigt werden und aus dem gleichen Grund sind sie auch für SR-Glieder nicht verwendbar.

    Die Varible "OUTPUT" in Deinem FC2 ist von außen im FC1 mit einer TEMP beschaltet, diese TEMP kann ihren Zustand nicht in den nächsten Aufruf mitnehmen, was dazu führt, dass der Zustand zufällig ist. Das ist ziemlich sicher der Grund für Dein Problem. Hier musst Du einen anderen Variablentyp verwenden. Entweder weichst Du auf einen Merker oder ein Datenbausteinbit aus oder Du machst aus dem FC1 einen FB und verwendest eine STAT-Variable.

    Noch etwas Off-Topic: Angesichts der Kommentare in Deine Bausteinen würde mich interessieren, woher Du kommst. Ich tippe auf Südostasien.
    Gruß
    Michael

  3. #3
    motorguru ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.02.2013
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke M-Ott fuer deine schnelle Antwort. Ich arbeite gerade mit SPS seit 4 Tage. Ich kenne nur mit KOP, wenn es geht und du Zeit haette, can du mir eine korrekte version korrigieren?
    Danke

    @ du hast recht ich komme aus Vietnam

  4. #4
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Kann ich machen, kann aber etwas dauern, ich habe gerade selbst viel zu tun.
    Gruß
    Michael

  5. #5
    motorguru ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.02.2013
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    das waere mir sehr hilfreich !

    Ich arbeite im moment mit dem Ding, aber leider es funktioniert immer noch nicht richtig

  6. #6
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Ich habe mir das Programm gerade nochmal genauer angeschaut.
    Es ist doch mehr Arbeit, als ich dachte, und ich glaube nicht, dass ich in nächster Zeit dazu komme. Sorry.
    Es sind noch mehr Fehler in Zusammenhang mit den TEMP-Variablen.

    Für die SR-Glieder und die Flankenauswertungen können auch keine TEMP verwendet werden. Es wird am besten sein, wenn Du FB daraus machst und die entsprechenden Variablen in den STAT-Bereich legst.
    Aus einer FC einen FB zu machen geht am einfachsten, indem Du einen neuen FB erstellst, dann den entsprechenden FC und den neuen FB öffnest und dann zuerst den Variablendeklarationsteil und dann Netzwerk für Netzwerk von der FC in den FB kopierst.

    Wenn Du Probleme oder Fragen hast, bekommst Du hier natürlich Hilfe.
    Gruß
    Michael

  7. #7
    motorguru ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.02.2013
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich habe das programm einfacher gemacht, kannst du mir in FB umschreiben (siehe Anhang in Fkt_On_Off_V1.Rar) , ich weisse nicht wie ich FB mit formal Para aufrufe, es braucht irgendwie noch DB Block??

  8. #8
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Der DB, den Du beim Aufruf eines FB angeben musst, ist der Instanz-DB. Wenn Du einen FB-Aufruf programmierst (CALL FBxx, DBxx), muss der Baustein noch nicht vorhanden sein. Du wirst dann darauf hingewiesen, dass der Datenbauistein nicht existiert und gefragt, ob er erzeugt werden soll. Hier musst Du mit "Ja" antwrtoen. Der Instanz-DB wird dann automatisch erzeugt. Du musst für jeden FB-Aufruf eine andere DB-Nummer angeben.
    Gruß
    Michael

  9. #9
    motorguru ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.02.2013
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hi ich habe die Funktion in Funktion Block umgewandelt, wie du gesagt hast, es lauefe aber leider auch nicht richtig. Siehe Anhang
    Angehängte Dateien Angehängte Dateien
    Geändert von motorguru (21.02.2013 um 10:18 Uhr)

  10. #10
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du musst noch verschiedene Variable vom TEMP-Bereich in den STAT Bereich verschieben: Alle, von den SR-Gliedern und den und den Flankenauswertungen "-(N)-" und "-(P)-" müssen vom TEMP in den STAT Bereich. Anschließend musst Du noch die Instanz-DBs neu erzeugen. Du erkennst die nicht aktuellen DBs daran, dass die DB-Nummer (-Name) auf dem FB in rot geschrieben ist. Du musst kurz dorthin klicken. Anschließend erklärt Dir das Programm, dass der DB nicht aktuell sei und ob er neu erzeugt werden soll. Hier musst Du mit "Ja" antworten.
    Gruß
    Michael

Ähnliche Themen

  1. hide Action in Function block
    Von PeterT im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 31.01.2012, 15:27
  2. CoDeSys Visu: Execute Function.
    Von Neals im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 20.01.2011, 07:04
  3. Call-by-Function (BlOCK_FC/FC) und UC / CC
    Von Potenzial im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 07.07.2010, 14:03
  4. WinCC Function Trend Control
    Von tarzipan7 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 14.05.2009, 08:34
  5. call-by-call im ausland
    Von Markus im Forum Stammtisch
    Antworten: 11
    Letzter Beitrag: 16.10.2004, 14:30

Lesezeichen

Berechtigungen

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