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

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

Thema: Multiplexer ansteuern

  1. #1
    Registriert seit
    19.04.2007
    Beiträge
    26
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    ich habe erstmalig ein analoges Eingangsmodul an einer SPS in VErwendung und mittels eines PT1000/0-10V-Umwandlers eine Temperatur gemessen. Nun möchte ich mit dem Multiplexer von Rink 16 PT1000 ansteuern.
    Für die Daten habe ich schon in einem FC geschrieben, dass wenn die 4 Merker für die Ausgänge entsprechend geschaltet sind, die Ergebnisse der Messungen in einen entsprechenden DB geschrieben werden.
    Merker und Ausgänge habe ich gleichgesetzt.
    Dies waren dann mal eben 16 Netzwerke. Jetzt möchte ich diese 4 Merker zyklisch schalten lassen, um automatisch, z.B. sekündlich, die einzelnen Temperaturen abfragen und in den entsprechenden DB schreiben zu können. Hier suche ich nach einer möglichst kleinen Lösung.
    Mir ist hier nur eingefallen mit Timern zu arbeiten und jeweils mit ODER Funktionen zu arbeiten, aber das würde ja auch wieder eine Reihe von Netzwerken bedeuten.
    Eine weitere Variante, die ich mir vorstellen könnte, wäre einfach das Byte der 4Merker durchlaufend zu verändern, Also MB26 =1, nächster Zyklus =2 etc. Aber :
    erstens weiss ich nicht, wie ich das Byte direkt schreiben kann und zweitens könnte ich dann die 4 verbleibenden Merker bzw. Ausgänge nicht mehr anderweitig verwenden.

    Aber wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht mehr...

    Vielen Dank für Eure Hilfe

    bastelfrosch
    Zitieren Zitieren Multiplexer ansteuern  

  2. #2
    Registriert seit
    05.10.2005
    Beiträge
    2.373
    Danke
    321
    Erhielt 296 Danke für 266 Beiträge

    Standard

    Ein Baum wäre, in dem du einen Merker aus dem Taktmerkerbyte (in HW-Config bei der CPU angelegt) benutzt um ein Byte hochzuzählen.

    Na gut, 4 direktzuweisungen aus nem Merkerbyte/Datenwort heraus auf die Ausgänge , kann mann schon machen.
    Thomas

  3. #3
    Registriert seit
    13.04.2008
    Ort
    Großraum KA
    Beiträge
    963
    Danke
    52
    Erhielt 128 Danke für 112 Beiträge

    Standard

    Programmiere Dir einen 1 sec Zykluswisch (ein Wisch je sekunde ).
    Dann zähle mit jedem Wisch 1 hoch ( ein Datenwort).
    wenn 5 erreicht setze sofort auf 1. Somit zählt das Ding immer von 1-4
    (ausser im allerersten Zyklus).

    Code:
    UN M #Wischnerker
    L S5t#1s
    se T1
    
    U T1
    = M #Wischmerker
    
    
    UN #Wischmerker
    spb n1
    L #Zähldatenbaustein
    L 1
    +I
    T #Zähldatenbaustein
    
    L #Zähldatenbaustein
    L 5
    <>I
    SPB n1
    
    L 1 
    T #Zähldatenbaustein
    
    n1: NOP 0
    
    
    L #Zähldatenbaustein
    L 1
    ==I
    = M #Wert1
    
    L #Zähldatenbaustein
    L 2
    ==I
    = M #Wert2
    
    usw.
    gibts dann die Verschaltungsmerker

    peter(R)
    Geändert von peter(R) (24.11.2008 um 07:57 Uhr)

  4. #4
    Bastelfrosch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.04.2007
    Beiträge
    26
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Zusammen,

    ich habe es nun glaube ich ganz kompliziert hinbekommen:

    U M 100.7
    ZV Z 1
    BLD 101
    NOP 0
    NOP 0
    U "M120.4Reserviert"
    R Z 1
    L Z 1
    T "MW119"
    NOP 0
    NOP 0
    hiermit zähle ich das MW 119 hoch

    CALL "Byte_to_Bits" , "MUX1 Daten Zähler"
    IN:="MB120"
    B0:="AM MultiplexerTemp1A1"
    B1:="AM MultiplexerTemp1A2"
    B2:="AM MultiplexerTemp1A3"
    B3:="AM MultiplexerTemp1A4"
    B4:=
    B5:=
    B6:=
    B7:=
    NOP 0
    Danach zerlege ich da MB120 wieder in Bits und weise die Bits den Merkern für die Ausgänge zu.

    U "AM MultiplexerTemp1A1"
    = "MultiplexerTemp1A1"
    U "AM MultiplexerTemp1A2"
    = "MultiplexerTemp1A2"
    U "AM MultiplexerTemp1A3"
    = "MultiplexerTemp1A3"
    U "AM MultiplexerTemp1A4"
    = "MultiplexerTemp1A4"
    Hier verbinde ich die Merker mit den Ausgängen

    UN #Merker0
    UN #Merker1
    UN #Merker2
    UN #Merker3
    SPBNB _001
    L #MeasuredValue
    T #DB_Ziel_0
    _001: NOP 0
    Hier habe ich dann 16 Netzwerke mit den Bitstellungen zur Transferierung in einen DB geschrieben

    Dieses Verfahren hat zwei mir bekannte Nachteile
    1. Ich habe das komplette MW119 dafür belegt
    2. so ca. alle 60Min. kommen die Werte kurzzeitig versetzt an, also habe ich die Temperatur von Fühler 1 auf eimal auf dem Eingang von Fühler 2.

    Wenn ich den Taktmerker auf 10Hz setze, kommt der Fehler ca. im Minutentakt.
    Sicherlich kann man das ganze viel einfacher und eleganter lösen, ohne bei den Ausgangsmerkern die restlichen Bits (4-7) einzubüßen. Leider weiss ich nicht wie.

    Wer hat den den Multiplexer auch im Einsatz und wie habt Ihr das Problem gelöst?

    Vielen Dank im Voraus

    bastelfrosch
    Zitieren Zitieren Multiplexer ansteuern  

  5. #5
    Registriert seit
    20.12.2006
    Beiträge
    275
    Danke
    20
    Erhielt 29 Danke für 27 Beiträge

    Standard

    Wie wäre es denn bei dieser benötigten Funktion mit dem Rotierbefehl?
    MFG
    Bitverbieger

    Gelingt Dir etwas auf Anhieb, so lass Dir Deine Verblüffung nicht anmerken.

  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

    kannst du mal kurz erklären, wie der multiplexer angesteuert wird. schaltet er mit einem signal um oder sendest du ein bitmuster?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    Registriert seit
    05.10.2005
    Beiträge
    2.373
    Danke
    321
    Erhielt 296 Danke für 266 Beiträge

    Standard

    es schein dieses Teil zu sein:
    http://www.rinck-electronic.de/rinck..._D_MUX-U16.PDF
    Thomas

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

    ausgehend von einem bitmuster:

    Code:
    *
    VAR_INPUT
      xTrigger : BOOL
      iSignalMax : INT
      iPEWByNumber : INT
      bdDB : BlockDB
    END_ VAR
    
    VAR_TEMP
      rTemp : REAL
    END_VAR
    
    VAR_INOUT
      xHelpFlag : BOOL
      iSignal : INT
    END_VAR
    
    VAR_OUT
      xSwitch1 : BOOL
      xSwitch2 : BOLL
    END_VAR
    
    
          U     #xTrigger
          FP    #xHelpFlag
          SPBN  none
          
          L     #iSignal
          +     1
          T     #iSignal
          L     #iSignalMax
          =I
          SPBN  none
          L     0
          T     #iSignal
    
    none: LAR1  P##iSignal
          U      [AR1,P#0.0]
          =     #xSwitchOut1
          U      [AR1,P#0.1]
          =     #xSwitchOut2
          
          L     #iPEWByNumber
          SLD   3
          LAR1
    
          L     PEW [AR1,P#0.0]
          ITD
          DTR
          L     1.000000e+001
          /R
          T     #rTemp
          
          L     #iSignal
          SLD   5
          LAR1
    
          AUF   #bdDB
          L     #rTemp
          T     DBD [AR1,P#0.0]
    
          SET
          SAVE
    ...liest allerdings den wert zyklisch bis zum nächsten trigger ... dazu kommt, dass er ungetestet und nur im editor erstellt ist
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #9
    Bastelfrosch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.04.2007
    Beiträge
    26
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo vierlagig,

    ich bin da nicht so fit. Ich nehme an, das ist in scl geschrieben.
    Habe versucht das zu übersetzen, bekomme aber immer eine Warnung angezeigt
    W: Z00001 S :00001 Ungültige Zeichen bis Zeile 62
    ergebnis: 0Fehler, 1 Warnung.

    Deine Variante regelt nur die Ausgabe des Bitmusters, richtig?
    Danach müsste also noch irgendwas kommen, um eine Pause einzubauen, bevor die Daten in den DB geschrieben werden

    Vielen Dank

    bastelfrosch

  10. #10
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Bastelfrosch,

    der Analogeingang braucht eine gewisse Wandlungszeit. Du musst zu Beginn deines Taktes den aktuellen Messwert abspeichern. Unmittelbar danach setzt du die Ausgänge auf die nächste Adresse.


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

Ähnliche Themen

  1. RGB - LED mit SPS ansteuern
    Von creation im Forum Sonstige Steuerungen
    Antworten: 4
    Letzter Beitrag: 05.09.2010, 22:02
  2. Multiplexer
    Von chivas im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 17.02.2009, 19:30
  3. Software Multiplexer
    Von dieter1953 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.05.2008, 12:11
  4. Multiplexer Pt100
    Von MichaelHuf im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 25.12.2007, 10:42
  5. Temperatursensor auswählen mit Multiplexer?
    Von sashluc im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 13.02.2006, 11:08

Lesezeichen

Berechtigungen

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