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

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

Thema: TIA_SCL in FUP

  1. #1
    Registriert seit
    01.11.2012
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,

    ich bin neu in SPS TIA
    wie kann ich von SCL in FUP schreiben.

    IF ("DB_EA_ST1".Scannen.I_gelesen=FALSE AND "I_Read Complete"=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN

    // Start rücksetzen
    "DB_EA_ST1".Scannen.Q_Start := FALSE;
    END_IF;
    IF ("Q_Cam_Read_Request"=FALSE AND "DB_EA_ST1".Scannen.Q_Start=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN
    // String löschen
    #t_RetVal:=FILL(BVAL:="DB_EA_ST1".Scannen.Fill_0 , BLK=>"DB_EA_ST1".Scannen.RD_Dat);
    END_IF;

    "DB_EA_ST1".Scannen.I_gelesen := "I_Read Complete";
    "DB_EA_ST1".Scannen.I_Fehler := "I_Read_Error";
    IF "DB_EA_ST1".Scannen.I_gelesen = TRUE AND "I_Read Complete" = TRUE AND "DB_EA_ST1".Scannen.Q_Start=FALSE THEN
    // String lesen
    #t_RetVal:=DPRD_DAT(LADDR:=w#16#266, RECORD=>"DB_EA_ST1".Scannen.RD_Dat);
    END_IF;
    IF "DB_EA_ST1".Scannen.I_gelesen = TRUE THEN
    // Reset rücksetzen
    "DB_EA_ST1".Scannen.Q_Reset := FALSE;
    END_IF;

    "Q_Cam_Read_Request" := "DB_EA_ST1".Scannen.Q_Start;
    "Q_Cam_Completion_Clear" := "DB_EA_ST1".Scannen.Q_Reset;

    Danke in voraus
    Zitieren Zitieren TIA_SCL in FUP  

  2. #2
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.636
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Erstens ist das kein sauber geschriebenes SCL. Der Code sollte in CodeTags, dann isser leichter zu lesen.

    Zum Vorgehen. Einfach von Oben nach unten durchgehen und in Fup zusammenbasteln (wozu auch immer).

    z.B. erste IF verknüpfung:
    angefangen mit der Klammer. Welches ein UND ist. Also in FUP ein UND einfügen. erste Variable mit Invertierung anbinden (in SCL wäre das ein NOT "DB_EA_ST1".Scannen.I_gelesen), Zweite variable ohne. Am Ausgang ein Oder anhängen zweiten oder Eingang mit Q_Reset beschalten.
    Da ein IF nur auf Erfüllung abfragt und bei nicht erfüllter Abfrage die Anweisung einfach nicht bearbeitet. das Ergebnis des Oder ist darum ein R. Das heisst, Zuweisung reinziehen und auf R umstellen und da "DB_EA_ST1".Scannen.Q_Start hindeklarieren .

    Fill wird z.B. nur ausgeführt wenn das Enable true ist. Kann also direkt an eine Verknüpfung zu dem du das IF umgeschrieben hast angehängt werden und wird nur bei Erfüllung ausgeführt.

    mfG René
    Geändert von vollmi (21.06.2016 um 10:31 Uhr)

  3. #3
    vladmen ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.11.2012
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Rene,

    Erst mal Danke für die schnelle Antwort.

    ich habe fertige Baustein bekommen und muss in FUB schreiben.
    ich bin Anfänger in SPS Programmieren.

    MFG Vladi

  4. #4
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.636
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von vladmen Beitrag anzeigen
    ich habe fertige Baustein bekommen und muss in FUB schreiben.
    ich bin Anfänger in SPS Programmieren.
    Ist das eine Schulaufgabe?

    Und kommst du jetzt weiter oder wo hängst du jetzt genau?

    mfG René

  5. #5
    vladmen ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.11.2012
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So ist Richtig???

    IF ("DB_EA_ST1".Scannen.I_gelesen=FALSE AND "I_Read Complete"=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN

    // Start rücksetzen
    "DB_EA_ST1".Scannen.Q_Start := FALSE;
    END_IF;
    ----------------------------------------------------------------

    ON "I_Read Complete"
    O "DB_EA_ST1".Scannen.Q_Reset
    = "DB_EA_ST1".Scannen.I_gelesen

    U "DB_EA_ST1".Scannen.I_gelesen
    = "DB_EA_ST1".Scannen.Q_Start

    Mfg Vladi

  6. #6
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.636
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Nein. Wie gesagt = ist eine Zuweisung die immer ausgeführt wird. Entweder schreibt = 0 oder 1 je nach VKE.

    Und das was du da machst ist kein FUP sondern AWL.

    mfG René

  7. #7
    Registriert seit
    27.07.2007
    Beiträge
    223
    Danke
    17
    Erhielt 42 Danke für 40 Beiträge

    Standard

    Auf den ersten Blick nein.
    Die Anweisung bei IF wird nicht permanent ausgeführt, sondern nur wenn die Bedingung erfüllt ist (wurde vorhin schon mal erwähnt).
    Geändert von Hohlkörper (21.06.2016 um 12:29 Uhr)

  8. #8
    vladmen ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.11.2012
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    IF ("DB_EA_ST1".Scannen.I_gelesen=FALSE AND "I_Read Complete"=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN

    // Start rücksetzen
    "DB_EA_ST1".Scannen.Q_Start := FALSE;
    END_IF;

    wie kann man in FUP schreiben???

  9. #9
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.636
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    In AWL wäre dein Code so:
    Code:
    UN "DB_EA_ST1".Scannen.I_gelesen
    U "I_Read Complete"
    O "DB_EA_ST1".Scannen.Q_Reset
    R "DB_EA_ST1".Scannen.Q_Start
    Eine Klammer ist nicht nötig. Da UND eh vor Oder kommt. Also entweder ist das "Oder" erfüllt oder die beiden U führen zu einem VKE true.
    Spricht aber IMHO nix gegen Klammern um auch fremden schnell die Intention zu zeigen.

    mfG René

  10. #10
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.862
    Danke
    78
    Erhielt 805 Danke für 548 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wie schon vorschreiber erwähnt haben ist das falsch.

    Code:
    IF ("DB_EA_ST1".Scannen.I_gelesen=FALSE AND "I_Read Complete"=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN
     // Start rücksetzen
        "DB_EA_ST1".Scannen.Q_Start := FALSE;
     END_IF;
    ----------------------------------------------------------------
    UN "DB_EA_ST1".Scannen.I_gelesen
    U  "I_Read Complete"
    O  "DB_EA_ST1".Scannen.Q_Reset
    R  "DB_EA_ST1".Scannen.Q_Start
    über den rest denk mal selber nach.


    EDIT:
    OK ich war zu langsam
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. Step 7 Programmierhilfe FUP
    Von EMZ im Forum Simatic
    Antworten: 97
    Letzter Beitrag: 20.07.2015, 15:31
  2. Sonstiges FUP Programmiersprache
    Von blurry333 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 04.05.2015, 20:21
  3. AWL in FUP
    Von mr.erks im Forum Programmierstrategien
    Antworten: 5
    Letzter Beitrag: 19.05.2009, 18:15
  4. Fup -> As
    Von Fenriz im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 11.11.2006, 14:19
  5. AWL vs. FUP
    Von Pimsti im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 13.06.2006, 16:12

Lesezeichen

Berechtigungen

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