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

Ergebnis 1 bis 5 von 5

Thema: Wiederholte Ausführung

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich muss in SCL ein Programm schreiben und weiss nicht wie ich anfangen soll. Währe sehr sehr dankbar wenn ihr mir behilflich sein könntet!

    Also:

    - Es ist ein Programmablauf was sich 10x hintereinander wiederholt. Das was sich im Ablauf dann unterscheidet sind diese Variablen.
    z.B.:

    var
    Summe : INT := 0;
    FesterWert : INT := 2;
    end_var;

    var_input
    Temp1 : INT;
    Temp2 : INT;
    Temp3 : INT;
    // bis
    Temp10 : INT;
    end_var;

    nehmen wir an es soll folgendes machen:

    begin

    Summe := Temp1 + FesterWert + Summe;
    Summe := Temp2 + FesterWert + Summe;
    Summe := Temp3 + FesterWert + Summe;
    //bis
    Summe := Temp10 + FesterWert + Summe;

    end_function_block;

    Wie kann ich das ganze Programmieren, damit ich mir die Tiparbeit sparen kann ( Temp1, Temp2, ... ) ?

    Für eine schnelle Antwort währe ich euch sehr dankbar!

    LG HusoX81
    Zitieren Zitieren Wiederholte Ausführung  

  2. #2
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    indem du die Variablen Temp1, Temp2...usw. als Array übergibst, so kann man dan Temp[1], Temp[2] ansprechen, in einer Schleife: for i = 0 to 10: Temp[i]:= bla bla.

    V.
    ______________________________________
    relax, take it easy

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    ich sehe da für dich nur die Alternative, es so zu machen, wie von Vladi vorgeschlagen (hier kannst du allerdings deinem Baustein dann nur einen Datenbereich als Pointer übergeben und keine Werte mehr absolut) oder du bleibst bei dem, wie du es bislang gemacht hast ...

    Gruß
    LL

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    das ist mal wieder ein klassisches beispiel:

    SCL ist nicht die eierlegende wollmilchsau, ebenso wenig wie AWL, aber mit AWL könnte man wenigstens indirekt adressieren, wäre also in diesem fall erste wahl, gefolgt von SCL und dann auf den billigen plätzen KOP und FUP

    merke:

    man kann eine automatisierungslösung zwar in nur einer darstellung umsetzen aber muß sich dafür meistens verbiegen

    ...schönen tag auch ...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    08.09.2008
    Beiträge
    57
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also Problem gelöst!

    VAR_INPUT
    // Eingangsparameter
    TEMP1
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP2
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP3
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP4
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP5
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP6
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP7
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP8
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP9
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    TEMP10
    {S7_m_c := 'true'; S7_param := 'false'} :INT := FALSE;
    Engine_Speed
    {S7_m_c := 'true'; S7_param := 'false'} :REAL := FALSE;
    END_VAR

    VAR
    TEMPn : ARRAY[1..10] OF INT;
    I : INT := 0;
    END_VAR

    BEGINN
    // Variablen Zuweisung an ARRAYs
    TEMPn[1] := TEMP1;
    TEMPn[2] := TEMP2;
    TEMPn[3] := TEMP3;
    TEMPn[4] := TEMP4;
    TEMPn[5] := TEMP5;
    TEMPn[6] := TEMP6;
    TEMPn[7] := TEMP7;
    TEMPn[8] := TEMP8;
    TEMPn[9] := TEMP9;
    TEMPn[10] := TEMP10;

    FOR I := 0 TO 9 BY 1 DO
    IF TEMPn[I] < TBW_LIM_VALUE_BREAK THEN
    IF TEMPn[I] > TKS_LIM_VALUE_SHORT THEN
    QUANTITY := QUANTITY + 1;
    SUM_MEASURED_DATA := SUM_MEASURED_DATA + TEMPn[I];
    END_IF;
    END_IF;
    END_FOR;


    END_FUNCTION_BLOCK


    Vielen Dank für eure Hilfe !!!!

Ähnliche Themen

  1. Beckhoff-Modbus praktische Ausführung ?
    Von cas im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 18.05.2010, 20:44
  2. Einmalige Ausführung pro Zyklus
    Von Neals im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 09.03.2010, 08:12
  3. OP77A Wiederholte Eingabe sperren
    Von IceBear im Forum HMI
    Antworten: 4
    Letzter Beitrag: 23.09.2007, 00:21

Lesezeichen

Berechtigungen

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