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

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

Thema: Array an DWORD übergeben (SCL)

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... das mußt du natürlich nicht so machen - es geht auch so wie bei dir.
    Mein Beispiel erzeugt nur einen wesentlich geringeren Code und damit verbundene Bearbeitungszeit. Außerdem halte ich ihn für etwas übersichtlicher

    Ist im Prinzip wie in AWL. Du kannst es so machen :
    Code:
    U E100.0
    S M10.0
    UN E 100.0
    R M10.0
    oder so :
    Code:
    U E100.0
    = M10.0
    Gruß
    LL

  2. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    MatthiasH24 (15.12.2008)

  3. #12
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Ok. So ist es mir klar !

    Werde es nochmal neu einspielen und schauen was passiert.

  4. #13
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    So also testen kann ich es heute nicht mehr die Kollegen kämpfen gerade mit der Visualiserungssoftware... (benutzt nie ZENON!)

  5. #14
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Guten Morgen,

    an Larry also dein Tip mit dem AT Befehl funktioniert soweit. nur habe ich jetzt das Problem da wo die lokale Variable übergeben wird es in der Form 16#0000000 gemacht ich bräuchte es aber in der Form 2#00000000000000000000000000000000 also als Bitmuster.

    Kennst du einen Befehl in SCL der mir das umwandeln kann!?

    Grüßle

  6. #15
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo Matthias,
    das ist keine Umwandlung sondern eine Darstellung.
    2#1111 ist das gleiche wie w#16#F oder 15.
    Ich kenne keinen Weg, wie man SCL dazu veranlassen kann, in der Beobachten-Status-Anzeige das Anzeige-Format zu ändern.
    WORD's und DWORD's werden hier in hex dargestellt,
    INT und DINT in dezimal,
    BOOL als true oder false ...

    Du müßtest hier also die Variablen-Tabelle für das DWORD im I-DB zu Hilfe nehmen ...

    Gruß
    LL

  7. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    MatthiasH24 (16.12.2008)

  8. #16
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    na wär ja auch zu einfach gewesen wenn es an dem problem liegt !

    Danke für die Info werde es mir gleich mal im dazugehörigen Db anschauen.

  9. #17
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    So also habe mein problem gefunden wieso es nicht ging. Das mit dem AT befehl von dir larry hat einwandfrei gepasst. Das Problem war nur die "Ablage" im DWORD die Bits waren bei 16#0XX0000 sie müssen aber bei 16#00000XX sein also die letzten 2 stellen belegt. Für die die es interessiert hier die Code zeile in SCL
    Code:
     Syn_temp_2 := SHR(IN:=Syn_temp, N:= 24 );
    vielen dank für eure Hilfe. Mal schauen ob ich es jetzt ohne Probleme umgebaut bekomme.

  10. #18
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    ja Also das mit dem Schieben funktioniert leider nur wenn ich nur 1byte an eingängen angeschlossen habe. habe die vermutung das, dass High und Lowbyte getauscht werden müssen.

    Weiß jemand wie das in SCl geht?

    Genauer ist es im moment so das ich die Bity in der Form:
    2#hhhhggggffffeeeeddddccccbbbbaaaa benötige sie aber durch das Programm so abgelegt werden
    2#bbbbaaaaddddccccffffeeeehhhhgggg

    und so kann ich sie leider nicht verarbeiten weiß aber grad echt nicht wie ich das machen soll

  11. #19
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo Matthias,
    so wie ich das sehe mußt du in den Worten (des DWORD) die Bytes vertauschen. Das kannst du entweder bei der Zuweisung machen oder nachträglich, wenn du die weitere AT-Sicht generierst :
    Code:
       word_array_Status AT dw_Status: Array [0..1] of word ;
    das könnte dann in der Konsequenz so aussehen :
    Code:
     word_array_Status[0] := ROL (IN:= word_array_Status [0] , n:=8) ;
     word_array_Status[1] := ROL (IN:= word_array_Status [1] , n:=8) ;
    versuch das mal ...

  12. #20
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ok

    das klingt nicht unlogisch . Weiß jetzt nur nicht wie ich es dann mit dem schreiben machen soll. Also wo ich die Variablen einbinde.

    im mom ist der Code so: (wie du siehts habe ich dein vorschlag angenommen ohne die If Abfragen)

    Code:
    FUNCTION FC9 : Void
    VAR
        // temporäre Variablen
    Syn_temp : DWORD;
    Syn_temp_2 :DWORD;
    Syn_Status_temp  AT Syn_temp  : ARRAY[0..31] OF BOOL;
    syn_Word AT syn_temp_2: ARRAY [0..1] OF WORD;
    END_VAR
     
        "P_Systemdaten".Anl_Synoptik.Syn_Aktiv[0] := TRUE;
        "P_Systemdaten".Anl_Synoptik.Syn_Aktiv[1] := TRUE;
        "P_Systemdaten".Anl_Synoptik.Syn_Aktiv[2] := TRUE;
        "P_Systemdaten".Anl_Synoptik.Syn_Aktiv[3] := TRUE;
        "P_Systemdaten".Anl_Synoptik.Syn_Aktiv[4] := TRUE;
        "P_Systemdaten".Anl_Synoptik.Syn_Aktiv[5] := TRUE;
        "P_Systemdaten".Anl_Synoptik.Syn_Aktiv[6] := TRUE;
        "P_Systemdaten".Anl_Synoptik.Syn_Aktiv[8] := TRUE;
    (* Initialisierung ----------------------------------------------------- *)
    (* Anzeige ------------------------------------------------------------- *)
    (* Anpassung durch den Programmersteller *)
    "P_Systemdaten".Anl_Synoptik.Syn_Uebersicht_Index :=0;
    "P_Systemdaten".Anl_Synoptik.Syn_Uebersicht_Aktiv[0] :=True;
    (*Variablenüberprüfung*)
    Syn_Status_temp[0]   := "P_I=0+S0-F04:14";
    Syn_Status_temp[1]   := "P_I=00+S00-X31:703";
    Syn_Status_temp[2]   := "P_I=00+S00-B33.3:4";
    Syn_Status_temp[3]   := "P_I=00+S00-0F1:14";
    Syn_Status_temp[4]   := "P_I=00+S00-F3:14";
    Syn_Status_temp[5]   := "P_I=00+S00-F40:14";
    Syn_Status_temp[6]   := "P_I=0+S0-0F22:14";
    Syn_Status_temp[8]   := "P_I=00+S00-K15:1";
      
    (* Anpassung durch den Programmersteller *)
    (* usw *)
    (* Anzeige ------------------------------------------------------------- *)
    (*Schiebefunktion*)
    (*Syn_temp_2 := SHR(IN:=Syn_temp, N:= 20 ); *)
    syn_Word[0] := ROL (IN:= syn_word [0] , n:=8) ;
    syn_Word[1] := ROL (IN:= syn_word [1] , n:=8) ;
    "P_Systemdaten".Anl_Synoptik.Syn_Status := Syn_temp_2;
    (* Anzeige Übersichtsseite --------------------------------------------- *)
    "P_Systemdaten".Anl_Synoptik.Syn_Uebersicht_Status := "P_Systemdaten".Anl_Synoptik.Syn_Status = "P_Systemdaten".Anl_Synoptik.Syn_Ansicht ; (* Synoptik Uebersicht *)
        
    END_FUNCTION
    Geändert von MatthiasH24 (16.12.2008 um 10:24 Uhr)

Ähnliche Themen

  1. Dword auf Bit Array übertragen
    Von SCM im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 22.07.2011, 14:22
  2. Antworten: 5
    Letzter Beitrag: 24.06.2010, 10:18
  3. DWord to Array
    Von kai86 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 02.03.2010, 13:05
  4. ARRAY an FC übergeben
    Von klauserl im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 10.11.2008, 11:38
  5. Array mit Char an FC übergeben?
    Von Ingo im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 15.12.2007, 16:07

Lesezeichen

Berechtigungen

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