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

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

Thema: scl sfc1 parameter

  1. #1
    Registriert seit
    07.02.2016
    Beiträge
    21
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen! Ich möchte mir in scl mit sfc1,fc6/7/8 die Uhrzeit auf eine bcd- Anzeige legen. Die Daten liegen im db1 (oder geht auch var_temp?). irgendwas klappt da aber nicht mit cdt & ret_val. Fehler liegt in der Parameterzuweisung. Hat jemand bitte ein Beispiel für mich, seit Wochen ist da nämlich ein knoten in meinem knopf. Dankeschööön!
    Zitieren Zitieren Gelöst: scl sfc1 parameter  

  2. "SCL-Hilfsfunktion zum Einfügen von Bausteinaufrufen:
    Einfügen > Bausteinaufruf... > Einstieg:Bibliothek / Name:Standard Library > System Function Blocks > Blocks > SFC1

    Beispiel SFC1 Uhrzeit in DATE_AND_TIME-Variable einlesen und auf Einzelkomponenten zugreifen:
    Code:
    VAR_TEMP
      iResult : INT;
      tmp_Byte : BYTE;
      tmp_CDT : DT;
      sCDT AT tmp_CDT : STRUCT
        Year : BYTE;
        Month : BYTE;
        Day : BYTE;
        Hour : BYTE;
        Minute : BYTE;
        Second : BYTE;
        MS1 : BYTE;
        MS2WeekDay : BYTE;
      END_STRUCT;
    END_VAR
    
    iResult := READ_CLK(CDT := tmp_CDT);
    
    tmp_Byte := sCDT.Hour;
    tmp_Byte := sCDT.Minute;
    tmp_Byte := sCDT.Second;
    Harald"


  3. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.200
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    SCL-Hilfsfunktion zum Einfügen von Bausteinaufrufen:
    Einfügen > Bausteinaufruf... > Einstieg:Bibliothek / Name:Standard Library > System Function Blocks > Blocks > SFC1

    Beispiel SFC1 Uhrzeit in DATE_AND_TIME-Variable einlesen und auf Einzelkomponenten zugreifen:
    Code:
    VAR_TEMP
      iResult : INT;
      tmp_Byte : BYTE;
      tmp_CDT : DT;
      sCDT AT tmp_CDT : STRUCT
        Year : BYTE;
        Month : BYTE;
        Day : BYTE;
        Hour : BYTE;
        Minute : BYTE;
        Second : BYTE;
        MS1 : BYTE;
        MS2WeekDay : BYTE;
      END_STRUCT;
    END_VAR
    
    iResult := READ_CLK(CDT := tmp_CDT);
    
    tmp_Byte := sCDT.Hour;
    tmp_Byte := sCDT.Minute;
    tmp_Byte := sCDT.Second;
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Iwan_74 (05.06.2016)

  5. #3
    Iwan_74 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.02.2016
    Beiträge
    21
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald! Danke für Deine Hilfe, 0Fehler, 0 Warnungen! Nur noch ein paar Verständnisfragen: Wofür steht MS1&MS2 und warum in den letzten Zeilen tmp_byte := sCDT.hour/minute/second aufführen? Gruß Iwan��

  6. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.200
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    MS1+MS2WeekDay sind die Bytes mit den Millisekunden und dem Wochentag (die brauchst Du für Deine Uhrzeitausgabe vermutlich nicht).
    Schau Dir das Format des Datentyps DATE_AND_TIME an, z.B. in der Step7 Hilfe auf "Index > DATE_AND_TIME > Format des Datentyps DATE_AND_TIME"

    tmp_byte:=sCDT.hour/minute/second: Das ist als Beispiel gedacht, wie Du die für Deine Uhrzeitausgabe relevanten Komponenten Stunde/Minute/Sekunde aus dem mit READ_CLK gelesenen DATE_AND_TIME auslesen kannst. Statt in das (Dummie-)tmp_Byte mußt Du natürlich an Deine BCD-Anzeige ausgeben. Für den komfortablen Zugriff auf die Komponenten habe ich der DATE_AND_TIME-Variable eine Struktur überlagert (siehe SCL Hilfe zu "AT").

    Harald
    Geändert von PN/DP (05.06.2016 um 12:32 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #5
    Iwan_74 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.02.2016
    Beiträge
    21
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Harald!wieso wird bei der bcd Ausgabe für den wochentag an erster stelle die letzte ziffer von millisekunden übernommen, selbst wenn ich eine wortgröße frei lasse?
    Zitieren Zitieren wochentag  

  8. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.200
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Du mußt die Bits der Millisekunden "weg"maskieren, so daß nur die Bits des Wochentags übrig bleiben.
    Laut Beschreibung des Datentyps DATE_AND_TIME in der Step7/SCL-Hilfe sind nur die unteren 4 Bits (4 LSB) der Wochentag 1..7
    Code:
    Weekday := sCDT.MS2WeekDay AND 2#0000_1111;  // 2#0000_1111 = 16#0F = 15
    Ich maskiere aber lieber nur die unteren 3 Bits, damit garantiere ich, daß das Ergebnis nur 0..7 sein kann:
    Code:
    Weekday := sCDT.MS2WeekDay AND 2#0000_0111;  // 2#0000_0111 = 16#07 = 7
    
    //oder kürzer:
    Weekday := sCDT.MS2WeekDay AND 7;
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #7
    Registriert seit
    15.03.2017
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo!

    Ich mache ungerne ein neues Thema deswegen auf, aber ich habe den Code von PN/DP wirklich 1:1 direkt eingefügt, und bekomme nach wie vor immer wieder gleichen Fehler mit der SFC1 Funktion:

    Code:
    F: Z 000094 S 00020: Funktion nicht definiert.
    Ergebnis: 1 Fehler, 1 Warnung(en)
    Wenn ich die Funktion über Einfügen->Bausteinaufruf selbst einfüge und parametriere bekomme ich exakt den gleichen Fehler.

    Hat jemand eine Idee, wieso diese Funktion "nicht definiert" ist ?

    Gruß

  10. #8
    Registriert seit
    25.02.2016
    Beiträge
    284
    Danke
    19
    Erhielt 59 Danke für 51 Beiträge

    Standard

    Hallo ist der Sfc 1 in deinem S7 Programm vorhanden ( also in deinem Basteincontsiner) hat er auch in der Syboltabelle genau die angegebene Bezeichnung? Gruß Tia

  11. #9
    Registriert seit
    15.03.2017
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo, Ja. Die ganzen SFC's und SFB's sind alle vorhanden. Der SFC1 ist in der Symboltabelle mit Symbol "READ_CLK" unter der Adresse SFC 1 und Datentyp SFC 1 gespeichert.

    Ich sollte vielleicht noch erwähnen, dass ich über den OB1 ganz Problemlos drauf zugreifen kann mit einem AWL-Code und auch die Zeiten auslesen kann.

    Code:
          CALL  "READ_CLK"
           RET_VAL:=#Error_CLK
           OUT0   :=#DateTime
    
          LAR1  P##DateTime
          L     W [AR1,P#6.0]
          SRW   4
    Das gibt mir die Millisekunden heraus. Ich bräuchte das ganze aber in SCL mit dem Funktionsaufruf. Die ganzen Werte hin- und her zu transferieren macht keinen Sinn, wenn es auch im SCL so einfach geht.

  12. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielleicht ist der SFC1 ja gar nicht dein Problem.
    Was steht den in Zeile 94 Spalte 20 deines SCL-Scriptes ganz genau ? (Manchmal ist es hilfreich, doch den Code, auch wenn 1:1 kopiert, mit zu posten ...)

    Gruß
    Larry

Ähnliche Themen

  1. Step 7 SCL String Parameter Übergabe
    Von martinpr im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 30.12.2015, 13:20
  2. Step 7 SCL - ANY als Out-Parameter
    Von Löwensenft im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 01.04.2015, 10:25
  3. ANY als Parameter in SCL
    Von Züttu im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 08.01.2013, 19:43
  4. Aufruf in SCL SFC1
    Von Carsten77 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.05.2011, 11:38
  5. SCL FB Parameter ANY Pointer
    Von _pi_ im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 30.04.2008, 12:38

Lesezeichen

Berechtigungen

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