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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Massig Eingänge gleichzeitig abfragen - wie?

  1. #1
    Registriert seit
    05.09.2008
    Beiträge
    108
    Danke
    13
    Erhielt 4 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!

    Ich suche nach einer guten Strategie/Lösung, ca. 256 digitale Eingänge gleichzeitig abzufragen und darauf hin zu überprüfen, ob das 0-1-Muster dem entspricht, wie es sein soll.
    Hinzu kommt, dass das Ganze für 200-500 verschiedene Zustände getan werden soll.

    Hat sowas schonmal jemand gemacht und kann mir nen guten Tipp dazu geben, den Aufwand dafür möglichst gering zu halten?
    Zitieren Zitieren Massig Eingänge gleichzeitig abfragen - wie?  

  2. #2
    Registriert seit
    29.04.2010
    Beiträge
    72
    Danke
    15
    Erhielt 11 Danke für 8 Beiträge

    Standard

    ich vermute mal, dass das 0-1-Muster einer Information entspricht die einer Zahl oder einer Zeichenkette oder sonst irgendetwas entspricht, daher würde ich diese Innformation in einem Datenbaustein mit 200-500 Datenfächern ablegen und dann über einen Pointer aufrufen und mit den Eingängen vergleichen.

  3. #3
    Registriert seit
    26.01.2010
    Beiträge
    181
    Danke
    5
    Erhielt 30 Danke für 25 Beiträge

    Standard

    Das Abfragen ist ja kein Problem. Das macht jede SPS mit (manche schaffen über 32 000 Eingänge). Vergleichen kannst du aber immer nur 32 auf einmal. Evtl mit Schleife arbeiten. Kommt natürlich auch drauf an, wie dein Vergleichsmuster aussieht

  4. #4
    sk1rie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Beiträge
    108
    Danke
    13
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Dem Muster können eigentlich keine weiteren Informationen entnommen werden. Es kommt also später kein Wort oder Text raus, sondern tatsächlich nur der Zustand der Eingänge.
    Alle erlaubten Zustände in einem DB abzulegen war eigentlich auch mein Gedanke, aber das Problem daran ist, dass jeder Zustand nur mit 256 Bit beschrieben werden kann.
    Letztlich interessiert auch tatsächlich das Bitmuster. Wenn also auch nur ein einziger Eingang abweicht, so gilt es, herauszufinden, welcher es ist um dann weitere Schritte einzuleiten.

  5. #5
    sk1rie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Beiträge
    108
    Danke
    13
    Erhielt 4 Danke für 3 Beiträge

    Standard

    @Dr.M:
    sehe ich aus so. Die Abfrage selbst stellt natürlich keine Herausforderung dar, sondern das möglichst effiziente Auswerten der ganzen Sache, um den Arbeitsaufwand zu minimieren.
    Wie das Vergleichsmuster aussieht, ist derzeit leider noch nicht bekannt. Ich gehe davon aus, dass es chaotisch sein wird.

  6. #6
    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

    FC...

    INPUT:
    xCompare : BOOL
    iSourceStart : INT
    iSourceLength : INT
    iDBNumber : INT

    OUTPUT:
    xEqual : BOOL
    iDeviation : DINT //ausgabe der ersten Abweichung im Pointerformat

    FUNCTION
    adressen vorbereiten
    schleife über iSourceLength
    DW-weise vergleichen
    bei unterschied schleifenzähler speichern und schleife verlassen
    /schleife

    unterschied:
    entsprechend schleifenzähler DW laden und bitweise untersuchen
    im pointer-format ausgeben

    ...so könnte ich mir das vorstellen...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    Registriert seit
    12.12.2006
    Ort
    Wehringen
    Beiträge
    1.471
    Danke
    248
    Erhielt 190 Danke für 155 Beiträge

    Standard

    Hallo,

    Zitat Zitat von sk1rie Beitrag anzeigen
    Letztlich interessiert auch tatsächlich das Bitmuster. Wenn also auch nur ein einziger Eingang abweicht, so gilt es, herauszufinden, welcher es ist um dann weitere Schritte einzuleiten.
    NUr mal so spasseshalber: was wird denn das?

    MfG

  8. #8
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    Zitat Zitat von sk1rie Beitrag anzeigen
    Dem Muster können eigentlich keine weiteren Informationen entnommen werden. Es kommt also später kein Wort oder Text raus, sondern tatsächlich nur der Zustand der Eingänge.
    Alle erlaubten Zustände in einem DB abzulegen war eigentlich auch mein Gedanke, aber das Problem daran ist, dass jeder Zustand nur mit 256 Bit beschrieben werden kann.
    Letztlich interessiert auch tatsächlich das Bitmuster. Wenn also auch nur ein einziger Eingang abweicht, so gilt es, herauszufinden, welcher es ist um dann weitere Schritte einzuleiten.
    Aber wenn du 200 - 500 "gute" Zustände hast, wie willst du Abweichungen feststellen. Wenn du nun annimmst das aktuelle Muster stimmt mit keinem der erlaubten Muster überein. Zu welchem Muster musst du die Differenz prüfen und die weiteren Schritte einleiten ?

    Jedenfalls bietet sich für sowas immer XOR an, da genau die Bits welche unterschiedlich sind schon eine "1" ergeben...

    bg
    bb

  9. #9
    sk1rie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Beiträge
    108
    Danke
    13
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Danke für Eure kreativen Hinweise
    Die Bitmuster folgen einer festen Reihenfolge. Soll bedeuten, dass zu jeder Zeit klar ist, wie die Eingänge tatsächlich stehen sollten.
    Theoretisch wird sich Soll und Ist auch nicht groß unterscheiden. Es werden maximal 1-2 Bit abweichen. Welche das sind, ist dabei jedoch völlig offen.
    Ich werd mich dann gleich mal dran machen, die Sache zu programmieren, mal sehen, wie es läuft.

    Eigentlich ist das ja auch nicht besonders schwer, jedoch ist hier die Masse an Eingängen und Bitmustern das, was das Handling schwierig macht.

    @vierlagig:
    was sagt denn Deine Variable iDBNumber?

  10. #10
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von sk1rie Beitrag anzeigen
    @vierlagig:
    was sagt denn Deine Variable iDBNumber?
    die nummer der DB in dem das Vergleichsmuster abgelegt ist
    zu benutzen mit AUF DB[#iDBNumber]
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. SoftSPS, OPC Eingänge/Ausgänge direkt abfragen
    Von xcompile im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 02.11.2010, 13:56
  2. Antworten: 6
    Letzter Beitrag: 06.05.2008, 23:20
  3. Merker gleichzeitig 1 und 0
    Von dresel im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 04.04.2008, 19:15
  4. Betriebsmeldungen 145 GLEICHZEITIG ???
    Von mr__mines im Forum HMI
    Antworten: 2
    Letzter Beitrag: 19.09.2007, 22:21
  5. OP an AG und PC gleichzeitig über MPI
    Von mark11 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 26.08.2007, 23:25

Lesezeichen

Berechtigungen

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