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

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

Thema: Flex - mehrere Textlisten -> 1 Anzeigefeld ?

  1. #1
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    kann man in WinCC flexible einem symbolischen E/A Feld mehrere (falls 32 Bit nicht ausreichen) Textlisten zuweisen ?

    Die Antwort ist NEIN - ich weiß, aber was gibt es sonst für Möglichkeiten ?

    Vielleicht übereinander legen und transparent machen oder so was ähnliches ?

    Ich habe auch gesehen daß der Textliste statt Bit 0..31 ein Bereich (... - ...) vorgegeben werden kann - allerdings streikt hierzu die Hilfe ein wenig.

    Wo würde dieser Bereich definiert ?

    Also konkret: Mein Problem ist daß ich in einem Symbolischen E/A Feld eine Textliste anzeigen will die 64 Einträge umfasst. Die 64 Bits dazu liegen in einem DB (fortlaufend).

    Falls wer nen Tip hat...
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________
    Zitieren Zitieren Flex - mehrere Textlisten -> 1 Anzeigefeld ?  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Du kannst doch bei symbolischen Textlisten (wie auch in ProTool) mit Dezimalwerten arbeiten. Jeder Text hat einen Dezimalwert (1, 2, 3, ...) und ja nachdem, welcher Dezimalwert anliegt wird der dazugehörige Text eingeblendet. Wenn ich mehrere Teile benötige, dann teile ich das auf,

    Hier mal für ProTool 1 Byte High, 1 Byte Low.
    Für Low ergeben sich 255 Texte.

    Also

    1. Block: High = 0, Low = 1..255
    2. Block: High = 1, Low = 256-511
    3. Block: High = 2, Low = 512-767

    usw.

    Mit dem High-Wert wähle ich den Block, mit dem Low-Wert dann die Textnummer.

    Leider ist das in ProTool ziemlich anstrengend, da man die Textnummer dezimal vorgeben muß und keine Symboltexte imortieren/exportieren kann.
    Aber WinCCFlex ist da ja bestimmt besser !

    PS: Aber für 64 Texte fortlaufend ist das eigentlich nicht das Hauptproblem, du mußt das Ganze nur umrechnen. In deinem Feld darf ja immer nur ein Bit gesetzt sein, also Bit-Nummer 1 bis Bit-Nummer 64, das kannst du z.Bsp. per Schleife durchlaufen lassen, bis zum ersten gesetzten Bit, der Zählwert kommt an die Symbolliste.
    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

  3. #3
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Aber WinCCFlex ist da ja bestimmt besser !
    Ja Ja -> Ärger mich halt (ich habe ProTool nie ernsthaft kennengelernt - daher bin ich als "Unbefangener" wahrscheinlich der "etwas tolerantere Flexible-User")
    PS: Aber für 64 Texte fortlaufend ist das eigentlich nicht das Hauptproblem, du mußt das Ganze nur umrechnen. In deinem Feld darf ja immer nur ein Bit gesetzt sein, also Bit-Nummer 1 bis Bit-Nummer 64, das kannst du z.Bsp. per Schleife durchlaufen lassen, bis zum ersten gesetzten Bit, der Zählwert kommt an die Symbolliste.
    Kannst du das bitte noch ein wenig "anders" erklären ?

    Du meinst mit "Schleife durchlaufen lassen" eine kleine FC die jeweils das gesetzte Bit rausfiltert und die Zahl daraus bildet ?

    Ich bin dummerweise erst im Zuge einer Erweiterung an diese "Hürde" gestossen sonst hätte ich das von Anfang an vielleicht anders gemacht - z.B. statt eines Bit zu setzen eine INT-Zahl in immer die selbe Variable schreiben...

    Ich habe auch gerade etwas experimentiert und habe 2 Felder übereinander gelegt und mit einem Bit das darüberliegende sichtbar/unsichtbar gemacht -> gefällt mir aber nicht so da eben in der Projektierung das darunterliegende leicht (vor allem später mal) übersehen werden kann...
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    Ja Ja -> Ärger mich halt (ich habe ProTool nie ernsthaft kennengelernt - daher bin ich als "Unbefangener" wahrscheinlich der "etwas tolerantere Flexible-User")
    Das konnte ich mit glatt nicht verkneifen !

    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    Kannst du das bitte noch ein wenig "anders" erklären ?

    Du meinst mit "Schleife durchlaufen lassen" eine kleine FC die jeweils das gesetzte Bit rausfiltert und die Zahl daraus bildet ?

    Ich bin dummerweise erst im Zuge einer Erweiterung an diese "Hürde" gestossen sonst hätte ich das von Anfang an vielleicht anders gemacht - z.B. statt eines Bit zu setzen eine INT-Zahl in immer die selbe Variable schreiben...

    Ich habe auch gerade etwas experimentiert und habe 2 Felder übereinander gelegt und mit einem Bit das darüberliegende sichtbar/unsichtbar gemacht -> gefällt mir aber nicht so da eben in der Projektierung das darunterliegende leicht (vor allem später mal) übersehen werden kann...
    Es darf ja auch für das jetzige Textfeld, daß jeweils mit einem Bit aus 32 einen Text aufruft, nur immer ein einziges gesetztes Bit enthalten.

    Du nimmst ein DBD und läßt es in einer LOOP bitweise durchlaufen (indirekte Adressierung muß hier leider sein). Für jede Null eins hochzählen und weiter, bei einer 1 eins hochzählen und raus aus der Loop. Ist das 1. DBD leer gehst du in das nächste und zählst das durch. So bekommst du die Nummer der Bits, das gesetzt ist. Diese legst du dann an die Symbolliste als Textnummer an.

    Hatte Volker nicht einen Baustein auf seiner HP???, Weiß nicht mehr genau, kannst ja mal nachschauen.
    Geändert von Ralle (17.04.2007 um 21:06 Uhr)
    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

  5. #5
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Danke schon mal. Es wird sich zwischen 2 Lösungen entscheiden.

    1.) Dein Vorschlag mit den Bits zählen (was ich noch genauer recherchieren muß)

    -> Vorteil: Der biterzeugende Baustein muss nicht geändert werden.

    2.) Umbau des biterzeugenden Bausteins auf "Zahl in INT schreiben"

    -> Vorteil: keine zusatzprogrammierung (wenn dann mal geändert) notwendig / Nachteil: wahscheinlich mehr Aufwand

    Gemeinsamer Nachteil: Umstellung der Liste in Flex (aber da komme ich ja bei mehr als 32 Einträgen sowieso nicht drum rum)

    Ich schau jetzt noch kurz bei Volker vorbei, dann iss gut für heute...
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  6. #6
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Hallo RS,

    ist doch alles nicht soo schlimm. Wenn du die entsprechenden Bits schon hast, kannst du die Textausgabe auch wie folgt steuern:

    Code:
     
    //*** 1 == Störung
          L     1
          U     #SM_PUMPE
          SPB   STPU
    //*** 5 == Betrieb
          L     5
          U     #K_PUMPE
    //    U     #PUMPE_TAGBETRIEB
          SPB   STPU
    //*** 4 == AUS
          L     4
          UN    #K_PUMPE
          SPB   STPU
    //*** Textausgabe "???"
          L     0
    STPU: T     #P.HMI.OUT.STATUS_PUMPE
    Der Vorteil ist, du kannst die Priorität anhand der Reihenfolge festlegen. Je nach Anwendung kann das von Vorteil sein. Meistens ist es von Vorteil.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  7. #7
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Ok, nach ner Nacht drüber schlafen sehe ich das so:

    Code:
    FC "HMI_Statuszeile"
     
    DB Nr. mit den Bits übergeben
     
    AUF DB[DB_Nr]
    L 0
    CLR
     
    U DBX4.0
    INC 1
    SPB exit
     
    U DBX4.1
    INC1
    SPB exit
     
    ...
     
    exit: nop 0
    T "HMI_Statuswort"
    BE
    So bald das Bit mit "1" erreicht wurde gehts zum Ausgang. Bis dahin wird immer um 1 inkrementiert und an exit der Akku reinkopiert. Ich muß nachher nur noch schnell schauen ob der erste Listeneintrag 0 oder 1 ist - wenn 0 dann muss ich bei der ersten Und Abfrage das INC weglassen...

    Das wäre in einem Rutsch erledigt (Ohne Schleife - das habe ich jetzt sowieso noch nicht verstanden wofür die gewesen wäre, aber die Inspiration war goldrichtig...)

    @ Onkel Dagobert: Dein Vorschlag bestätigt das, nur in meinem Fall ist es einfacher nur hochzuzählen da die Stuktur der Bits bereits festgelegt ist - ich brauche also nur die passende "Zeilennummer scharf machen"...
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    Ok, nach ner Nacht drüber schlafen sehe ich das so:

    Code:
    FC "HMI_Statuszeile"
     
    DB Nr. mit den Bits übergeben
     
    AUF DB[DB_Nr]
    L 0
    CLR
     
    U DBX4.0
    INC 1
    SPB exit
     
    U DBX4.1
    INC1
    SPB exit
     
    ...
     
    exit: nop 0
    T "HMI_Statuswort"
    BE
    So bald das Bit mit "1" erreicht wurde gehts zum Ausgang. Bis dahin wird immer um 1 inkrementiert und an exit der Akku reinkopiert. Ich muß nachher nur noch schnell schauen ob der erste Listeneintrag 0 oder 1 ist - wenn 0 dann muss ich bei der ersten Und Abfrage das INC weglassen...

    Das wäre in einem Rutsch erledigt (Ohne Schleife - das habe ich jetzt sowieso noch nicht verstanden wofür die gewesen wäre, aber die Inspiration war goldrichtig...)

    @ Onkel Dagobert: Dein Vorschlag bestätigt das, nur in meinem Fall ist es einfacher nur hochzuzählen da die Stuktur der Bits bereits festgelegt ist - ich brauche also nur die passende "Zeilennummer scharf machen"...
    Code:
          AUF   DB[DB_Nr]
    
          L     P#0.0
          L     #Start_DW                   // Startnummer des 1. Datenwort, als INT in IN deklariert
          ITD                               // 16 Bit in 32Bit
          SLD   3                           // ins Pointer-Format
          +D                                // dazurechnen
          T     #pointer_1                  // als DWord in Temp deklariert
    
          L     0                           // Ergebnis vorbelegen mit Null
          T     #ergebnis
    
          L     64                          // Anzahl zu zählender Bits
    SC01: T     #zaehler                    // als Int in Temp deklariert
    
          U     DBX [#pointer_1]            // Datenbit
          SPB   RAUS                        // Bit ist 1, also rausspringen aus der Schleife
          L     #ergebnis                   // bei Bit = 0, Ergebnis
          L     1                           // um 1 erhöhen
          +I    
          T     #ergebnis
    
          L     #pointer_1                  // Zeiger erhöhen auf nächstes Bit
          L     P#0.1
          +D    
          T     #pointer_1
    
          L     #zaehler
          LOOP  SC01                        // Schleife solange, bis #zaehler auf 0
    
          L     0                           // wenn die Loop-Schleife ohne Sprung
          T     #ergebnis                   // verlassen wurde, ist kein Textbit gesetzt
          SPA   KTXT
    
    RAUS: L     #ergebnis                   // wenn über "RAUS" hierhergesprungen wurde
          L     1                           // nochmal um 1 erhöhen, weil das gesetzte Bit
          +I                                // noch nicht gezählt wurde
          T     #ergebnis
    
    KTXT: NOP   0
    
          L     #ergebnis
          T     #Textnummer                 // als Int in OUT deklariert
    Mit der Schleife könnte das so gehen, probiers mal.
    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

  9. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    rs-plc-aa (20.04.2007)

  10. #9
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Danke Ralle...

    Ohne daß ich es jetzt schon testen konnte würde ich sagen das geht.
    Die FC ist fertig !

    Jetzt habe ich aber den dumpfen Verdacht daß mir jetzt alle Texte falsch angezeigt werden da die Liste die aus den 2*32 Bits zu einer verschmolzen ist so sortiert ist wie es von ProTool her auch schon üblich war -> nicht Bit für Bit ab der Startadresse sondern High/Low Wort mäßig

    Kann ich jetzt bedenkenlos die Sortierung linearisieren oder habe ich jetzt irgendwas noch übersehen ?

    edit: Im Prinzip wäre es sogar ein Segen nun endlich eine fortlaufende Liste zu haben ...
    Geändert von rs-plc-aa (18.04.2007 um 14:13 Uhr)
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  11. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Es wäre auch kein Problem vor dem Zählen, die Bytes zu vertauschen, so daß es paßt, aber wie du schon angemerkt hast, hat alles eine Für und Wider!
    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

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 17.12.2010, 01:05
  2. Antworten: 10
    Letzter Beitrag: 13.09.2010, 11:33
  3. Antworten: 4
    Letzter Beitrag: 05.02.2009, 22:09
  4. WINCC FLEX 2007 dynamsiche Textlisten
    Von SPSOS im Forum HMI
    Antworten: 3
    Letzter Beitrag: 19.01.2009, 19:53
  5. Antworten: 19
    Letzter Beitrag: 16.09.2007, 20:13

Lesezeichen

Berechtigungen

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