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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: Scl problem

  1. #11
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hat jemand hier mal ein paar Beispiele für SCL, ich rechne viel in SCL. Jetzt will ich ein paar FB Routinen in SCL schreiben. Ich suche speziell DB Aufrufe und Timer Aufrufe.

    Danke.

  2. #12
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Achtung, es geht keine Sicht auf eine Input-Variable ...
    Naja ... ich hatte es bei einem FB ausprobiert - da geht das auch auf IN und OUT ... ich muss allerdings gestehen, dass ich nicht mit einem FC getestet habe ...

    Gruß
    Larry

  3. #13
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Naja ... ich hatte es bei einem FB ausprobiert - da geht das auch auf IN und OUT ... ich muss allerdings gestehen, dass ich nicht mit einem FC getestet habe ...

    Gruß
    Larry
    Ah ja, Recht hast du natürlich, ich hab das in einem FC ausprobiert.
    Menno, ich finde das reichlich abartig von Siemens, daß FC und FB da immer wieder unterschiedliche Eigenschaften haben.
    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

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Zitat Zitat von paula23 Beitrag anzeigen
    Ich suche speziell DB Aufrufe und Timer Aufrufe.
    Dazu einfach mal die Siemens-Hilfe von SCL benutzen. Da steht das Alles und sogar auch sehr gut beschrieben drin.
    Ansonsten habe ich persönlich immer ein bißchen Probleme mit "pauschalen" Fragen - also lieber konkret zu etwas fragen ... dann bekommst du auch konkrete Antwort.

    Gruß
    Larry

  5. #15
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    jetzt habe ich eine nicht "pauschale" Frage,

    (hab noch nicht in die Hilfe geschaut)

    habe einen Wert der nur jede Minute aktualisiert wird, habe auch einen Minutentrigger, möchte jetzt eine Mittelwertbildung machen, über 5 Minuten! In AWL würde ich den Wert immer ein Register weiterschieben im DB und dann den Mittelwert der Register nehmen.

    Wie sieht das nun in SCL aus? (speziell mit dem Zugriff auf den DB?)

    Servus.

  6. #16
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hallo,
    wenn du mit einem "externen DB" arbeitest im Grunde genauso, wie in AWL. Damit umgehst du allerdings komplett die hier doch sehr brauchbaren Fähigkeiten von SCL.
    Ich würde hierfür einen FB erstellen und den fraglichen Datenbereich als Array im STAT-Bereich desselben anlegen. Nun kannst du die einzelnen Elemente des Array's über die Indexierung in einer Schleife ansprechen bzw. den Index zum Reinschreiben einfach erhöhen.
    Schau einfach mal in der SCL-Hilfe unter "FOR .. TO" etc. nach.

    Gruß
    Larry

  7. #17
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Ich habe mal was schrieben, wie ich denke, können kommentierungen fehlen,


    VAR_INPUT
    Min_Trigger: BOOL;
    Menge_1: REAL;
    END_VAR
    VAR_OUTPUT
    5min_Mittelwert: REAL;
    END_VAR

    VAR
    I: INT;
    Mittelwert: ARRAY[1..5] OF REAL;
    END_VAR

    IF Min_Trigger THEN
    I := I + 1;
    Mittelwert[I] := Menge_1;
    END_IF;

    IF I = 5 THEN
    Messwertsumme := 0;
    FOR K := 1 TO 5 DO
    5min_Mittelwert := Mittelwert / 5;
    END_FOR;
    I := 0
    END_IF;

    END_FUNCTION_BLOCK

  8. #18
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Naja ... du mußt den Index natürlich in dein Programm mit integrieren ...
    Außerdem solltest du beim Beschreiben des Array's auf jeden Fall verriegeln, dass du nicht über die Grenzen hinaus adressierst ...

    Ich habe deine Code mal ein bißchen modifiziert ...
    Code:
    IF Min_Trigger THEN
       I := I + 1; 
       if I <= 5 then 
          Mittelwert[I] := Menge_1; 
       end_if ;
    END_IF;
    
    IF I >= 5 THEN
       Messwertsumme := 0;
       FOR K := 1 TO 5 DO
          Messwertsumme := Messwertsumme + Mittelwert[I] ;
       END_FOR; 
       5min_Mittelwert := Messwertsumme / 5.0 ;
       I := 0
    END_IF; 
    
    END_FUNCTION_BLOCK
    Wenn du die rot markierten Passagen so übernimmst dann sollte es m.E. funktionieren ...

    Gruß
    Larry

  9. #19
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Ich habe noch ein paar Fragen,

    also das mit dem trigger lasse ich lieber, ich glaube ich bilde mir eine Flanke wenn ich Sekunden vergleiche.

    Das K von der FOR Schleife wird nicht verwendet, ist das ok?

    Das Ganze brauche ich für 30 Werte, kann man das jetzt noch optimieren oder muss die Logic 30 mal anlegen mit 30 Ein/Ausgängen, Arrays, etc.

    Danke, Servus.

  10. #20
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von paula23 Beitrag anzeigen
    Ich habe noch ein paar Fragen,

    also das mit dem trigger lasse ich lieber, ich glaube ich bilde mir eine Flanke wenn ich Sekunden vergleiche.

    Das K von der FOR Schleife wird nicht verwendet, ist das ok?

    Das Ganze brauche ich für 30 Werte, kann man das jetzt noch optimieren oder muss die Logic 30 mal anlegen mit 30 Ein/Ausgängen, Arrays, etc.

    Danke, Servus.
    Das k wird für die FOR_Schleife verwendet. Es wird 5 mal die Schleife abgearbeitet.
    Wenn du einen FB machst, dann kannst du den Baustein 30 mal aufrufen mit verschiedenen Eingangsparameter.

    bike

Ähnliche Themen

  1. OPC Problem routen problem
    Von kpeter im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 25.08.2010, 19:54

Lesezeichen

Berechtigungen

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