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

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

Thema: Massig Eingänge gleichzeitig abfragen - wie?

  1. #11
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von vierlagig Beitrag anzeigen
    die nummer der DB in dem das Vergleichsmuster abgelegt ist
    zu benutzen mit AUF DB[#iDBNumber]
    Kann es sein, dass ich für diese Aktion keine Eingangsvariablen verwenden kann?
    Der Syntax AUF DB[#iDBNumber] wird als falsch markiert.
    Wenn ich ihn vorher in eine temporäre Variable transferiere funktioniert es aber.

  2. #12
    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

    Zitat Zitat von sk1rie Beitrag anzeigen
    Kann es sein, dass ich für diese Aktion keine Eingangsvariablen verwenden kann?
    Der Syntax AUF DB[#iDBNumber] wird als falsch markiert.
    Wenn ich ihn vorher in eine temporäre Variable transferiere funktioniert es aber.
    ja, is mgl. im FC ...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #13
    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

    Kann man eine Variable, die das Byte als Zahl bereits enthält, auch in einer Bitabfrage verwenden?

    Sinngemäß:
    U DBX[#iDBB].0

    Wie oben geschrieben funktioniert es leider nicht.

    Oder muss ich dann mit echten Adressen wie L10.0 arbeiten?

  4. #14
    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

    Zitat Zitat von sk1rie Beitrag anzeigen
    Kann man eine Variable, die das Byte als Zahl bereits enthält, auch in einer Bitabfrage verwenden?

    Sinngemäß:
    U DBX[#iDBB].0

    Wie oben geschrieben funktioniert es leider nicht.

    Oder muss ich dann mit echten Adressen wie L10.0 arbeiten?
    stell mal ein, was du schon hast
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #15
    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

    Meinen geistigen Erguss möchte ich hier nur ungern preisgeben

    Gehts auch anders?

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

    Zitat Zitat von sk1rie Beitrag anzeigen
    Meinen geistigen Erguss möchte ich hier nur ungern preisgeben

    Gehts auch anders?
    dann kannst du nicht erwarten, dass jemand anders seine geistigen leistungen zur verfügung stellt...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Recht hast Du wohl. Wie wollen andere sonst auch helfen können?

    vergleich.pdf

  8. #18
    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

    Hab da grad ne Idee:

    Würde es funktionieren, wenn ich das Komma der Bytenummer um 3 Stellen nach Rechts schiebe, die Zahlen 0-7 dazu addiere und das Ergebnis jeweils als Bitadresse nutze?

  9. #19
    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

    da ich mit deinem pdf wenig anfangen kann, da sich der code darin schwer debuggen lässt habe ich mir mal 10minuten zeit genommen, den groben entwurf von gestern in einen baustein zu pressen

    Code:
    *
    FUNCTION "InputDB_Compare" : VOID
    TITLE =Input-DB-Compare
    //compares a input range defined by start and length (DWORD) with a DB-range 
    //starting at 0.0
    //
    //DATE:    02.12.2011
    //VERSION: 0.1
    //AUTHOR:  4L
    AUTHOR : '4L'
    VERSION : 0.1
    
    
    
    
    VAR_INPUT
      xCompare : BOOL ;    
      iSourceStart : INT ;    
      iSourceLength : INT ;    
      iDBNumber : INT ;    
    END_VAR
    VAR_OUTPUT
      xEqual : BOOL ;    
      xError : BOOL ;    
      dDeviation : DWORD ;    
    END_VAR
    VAR_TEMP
      iDBNumberTemp : INT ;    
      dAR1Temp : DINT ;    
      dAR2Temp : DINT ;    
      iLoopCounter : INT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
    
          U     #xCompare; 
          SPBN  end; //start
          L     #iDBNumber; 
          T     #iDBNumberTemp; 
          AUF   DB [#iDBNumberTemp]; //open DB
          L     DBLG; 
          L     #iSourceLength; 
          <I    ; //get save, the DB is long enough
          =     #xError; 
          R     #xEqual; 
          SPB   end; 
    
    
          TAR1  #dAR1Temp; //save adress registers
          TAR2  #dAR2Temp; 
    
    
          L     #iSourceStart; //set adresses
          SLD   3; 
          LAR1  ; 
          L     L#0; 
          LAR2  ; 
    
    
          L     #iSourceLength; 
    next: T     #iLoopCounter; //compare DWs
          L     ED [AR1,P#0.0]; 
          L     DBD [AR2,P#0.0]; 
          ==D   ; 
          SPBN  notE; 
          +AR1  P#4.0; 
          +AR2  P#4.0; 
          L     #iLoopCounter; 
          LOOP  next; 
          SET   ; 
          =     #xEqual; 
          L     L#0; 
          T     #dDeviation; 
          SPA   end; 
    notE: CLR   ; 
          =     #xEqual; 
    
    
          L     32; 
    nex2: T     #iLoopCounter; //compare BITs
          U     E [AR1,P#0.0]; 
          X     DBX [AR2,P#0.0]; 
          SPB   dev; 
          +AR1  P#0.1; 
          +AR2  P#0.1; 
          L     #iLoopCounter; 
          LOOP  nex2; 
    dev:  TAR1  ; 
          T     #dDeviation; 
          LAR1  #dAR1Temp; 
          LAR2  #dAR2Temp; 
    
    
    end:  SET   ; 
          SAVE  ; 
    
    
    END_FUNCTION
    Geändert von vierlagig (02.12.2011 um 14:30 Uhr) Grund: dDeviationTemp aus entwicklung über geblieben -> entfernt
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  10. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    sk1rie (02.12.2011)

  11. #20
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke. Leider bin ich nun etwas im Stress.
    Schau mir das Montag mal genau an.
    Auf den ersten Blick hab ich aber schon gesehen, dass Du das genau so machst, wie ich mir das jetzt auch schon überlegt hatte.

    Schönes Wochenende

Ä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
  •