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

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

Thema: TIA V13 Word to Bool

  1. #1
    Registriert seit
    07.08.2011
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    ich hab ein mittleschweres Problem mit dem TIA Portal.
    Und zwar möchte ich eine Word Variable wieder in Bool's zerlegen.
    Zur genaueren Erklärung handelt es sich dabei um Steuer- /Statuswörter, jedes Bit hat seine eigene Funktion. Im FC wird dieses Wort dann in den Lokaldatenbereich kopiert wo es als Bool vorliegt.
    Zu 300er Zeiten war es recht einfach:

    L DBxy.DBWxy
    T LW x

    fertig aus Word mach Bool.
    Im TIA alles ein wenig komplizierter, ich weiß ich könnte per Slice drauf zugreifen dann geht aber die Symbolik der einzelnen Bits verloren.
    Ich könnte auch Strukturen/UDTs anlegen und die kopieren dann kommt aber wieder die HMI dazwischen wo ich dann für jedes BIT ein Powertag verbrauchen müsste.
    Es sei erwähnt, dass sich das Problem nur auf den "optimierten Bausteinzugriff" bezieht.
    Diesen würde ich aber schon gerne nutzen weil ich denke, dass diese "Reise" in Zukunft in diese Richtung geht und der Perfomrancevorteil ja auch vorhanden ist.
    Zitieren Zitieren TIA V13 Word to Bool  

  2. #2
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Moin,

    kannst du nicht die AT Sicht machen? Ich hab mir dazu ein Baustein in SCL gemacht.

    Code:
    FUNCTION_BLOCK "Word_to_bool_AT"
    VERSION : 0.1
       VAR_INPUT 
          "IN_WORD" : Word;
       END_VAR
    
       VAR_OUTPUT 
          Einschaltbereit { S7_HMI_Visible := 'False'} : Bool;
          Betriebsbereit { S7_HMI_Visible := 'False'} : Bool;
          "Betrieb freigegeben" { S7_HMI_Visible := 'False'} : Bool;
          "Störung wirksam" { S7_HMI_Visible := 'False'} : Bool;
          "OFF2 aktiv" { S7_HMI_Visible := 'False'} : Bool;
          "OFF3 aktiv" { S7_HMI_Visible := 'False'} : Bool;
          "Einschaltsperre aktiv" { S7_HMI_Visible := 'False'} : Bool;
          "Warnung aktiv" { S7_HMI_Visible := 'False'} : Bool;
          Drehzahlabweichung { S7_HMI_Visible := 'False'} : Bool;
          "Führung gefordert" { S7_HMI_Visible := 'False'} : Bool;
          "Vergleichsdrehzahl erreicht oder überschritten" { S7_HMI_Visible := 'False'} : Bool;
          "I, M oder P erreicht" { S7_HMI_Visible := 'False'} : Bool;
          "Haltebremse offen" { S7_HMI_Visible := 'False'} : Bool;
          "Warnung Übertemperatur Motor" { S7_HMI_Visible := 'False'} : Bool;
          "0= Motor dreht rückwärts, 1= Motor dreht vorwärts" { S7_HMI_Visible := 'False'} : Bool;
          "thermische Überlast Leistungsteil" { S7_HMI_Visible := 'False'} : Bool;
       END_VAR
    
       VAR_TEMP 
          temp_Word : Word;
          AT_of_Bool AT temp_Word : Array [0..15] of Bool;
       END_VAR
    
    
    BEGIN
        //AT von IN_WORD zu Temp
        #temp_Word:=#IN_WORD;
        
        //Von Temp Bit zum Out Bit
        #Einschaltbereit:=#AT_of_Bool[8];
        #Betriebsbereit:=#AT_of_Bool[9];
        #"Betrieb freigegeben":=#AT_of_Bool[10];
        #"Störung wirksam":=#AT_of_Bool[11];
        #"OFF2 aktiv":=#AT_of_Bool[12];
        #"OFF3 aktiv":=#AT_of_Bool[13];
        #"Einschaltsperre aktiv":=#AT_of_Bool[14];
        #"Warnung aktiv":=#AT_of_Bool[15];
        #Drehzahlabweichung:=#AT_of_Bool[0];
        #"Führung gefordert":=#AT_of_Bool[1];
        #"Vergleichsdrehzahl erreicht oder überschritten":=#AT_of_Bool[2];
        #"I, M oder P erreicht":=#AT_of_Bool[3];
        #"Haltebremse offen":=#AT_of_Bool[4];
        #"Warnung Übertemperatur Motor":=#AT_of_Bool[5];
        #"0= Motor dreht rückwärts, 1= Motor dreht vorwärts":=#AT_of_Bool[6];
        #"thermische Überlast Leistungsteil":=#AT_of_Bool[7];
        
    END_FUNCTION_BLOCK
    Hier zB um die Status Bits eines FUs zu haben
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  3. #3
    ElJupo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2011
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich denke das würde gehen aber nur für "standard Bausteine" ich würde aber gerne die optimierten benutzen.

    *EDIT*
    Nach ausführlichen Tests musste ich feststellen, dass der "Slice Zugriff" schwer auf die Performance drückt.
    Folgendes Testszenario:

    1.
    2 Dwords auf In/Out Paramter eines FCs
    64 Bit in Temp des FCs
    Per Slice Dword auf Bits kopiert und wieder zurück.
    Diesen Baustein habe ich 100 aufgerufen (CPU 1515).
    -->Zykluszeit 10ms

    2.
    UDT mit 64 Bit auf In/Out Paramter eines FCs
    64 Bit in Temp des FCs
    Per Zuweisung von In/Out in Temp und wieder zurück.
    Diesen Baustein habe ich 100 aufgerufen (CPU 1515).
    -->Zykluszeit 2ms

    Alles mit "optimierten Bausteinen".
    Faktisch machen beide Versuche genau das selbe nur 1. dauert viel länger 2.
    Hat jemand ähnliche Erfahrung?
    Geändert von ElJupo (10.10.2014 um 14:14 Uhr)

  4. #4
    Registriert seit
    25.01.2011
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi,

    habe das gerade mal mit deinem Baustein ausprobiert. Damit die AT Deklaration im Temporären Bereich funktioniert, muss dort aber auch der "optimierte Bausteinzugriff" deaktiviert sein.

    http://support.automation.siemens.co...ad=treecontent

    Gruß NSC2001

  5. #5
    ElJupo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2011
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die Antwort,

    aber dann müsste ich auf den "optimierten Zugriff" verzichten und wenn ich "standard Zugriff" benutze könnte ich ja auch einfach mit:
    L DBxy.DBDx
    T LD x
    die Dword's kopieren.
    Ich hätte dann zwar in dieser Anweisung keine Symbolik für den Tempbereich würde mir aber die AT-Deklaration sparen.

  6. #6
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von ElJupo Beitrag anzeigen
    1.
    2 Dwords auf In/Out Paramter eines FCs
    64 Bit in Temp des FCs
    Per Slice Dword auf Bits kopiert und wieder zurück.
    Diesen Baustein habe ich 100 aufgerufen (CPU 1515).
    -->Zykluszeit 10ms
    100 mal aufgerufen und gleich 10ms .... das ist was faul ...
    Grüße Frank

  7. #7
    ElJupo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2011
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von IBFS Beitrag anzeigen
    100 mal aufgerufen und gleich 10ms .... das ist was faul ...
    Das will ich nicht ausschließen aber was sollte "faul" sein? Vielleicht kann das jemand reproduzieren. Ich bin der Ansicht, dass ich keinen Fehler gemacht habe.

  8. #8
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    I will mir garnicht die Langsamkeit der Steuerung ausmalen müssen, wenn schon so eine Funktion die CPU zu 10ms treibt.
    Grüße Frank

  9. #9
    ElJupo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2011
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Tja das sind immerhin 12800 Bitoperationen.

  10. #10
    ElJupo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2011
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hätte nicht gedacht, dass mein Vorhaben so speziell ist. Benutzt denn keiner Words um Powertags in der HMI zu sparen usw. ?

Ähnliche Themen

  1. Step 7 Word in Bool temporär umsetzen
    Von daudel im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 08.08.2014, 09:47
  2. Antworten: 10
    Letzter Beitrag: 01.08.2014, 06:17
  3. Antworten: 17
    Letzter Beitrag: 16.07.2014, 12:28
  4. Antworten: 2
    Letzter Beitrag: 11.05.2014, 08:14
  5. BOOL to WORD
    Von giro im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 10.07.2011, 16:49

Lesezeichen

Berechtigungen

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