TIA Multiplexer

Bierboot

Level-1
Beiträge
44
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute

ich bin neu hier und hab ein Frage.

Ich habe eine S7 1200 und möchte mit der einige Temperaturen erfassen.
Das soll über einen Rinck Multipler + passen der MEssumformer + ca. 10 PT1000 passieren.
Mein Problem ist, dass ich das Ansteuerprogramm für den Multiplexer nicht hin bekomme.

Gibt es ein Beispiel? das ich mal einspeilen kann ?

Danke für euere Hilfe
 
Ich habe so etwas mal in einer S7-300 mit 5.5 gemacht.

Daher folgender Vorschlag
- benutze SCL
- schalte deine DO alle x ms weiter
- baue eine Totzeit vor dem Einlesen des Messwertes ein
- schreibe die Werte in einen DB, der deine 10 Messstellen abbildet

Habe kein TIA zur Hand, aber so würde ich ansetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja so ähnlich hab ich das auch schon versucht, hat aber nicht geklappt.

Das Sing haben doch schon einige verbaut hat den keiner ein kleines Beispielprogramm (am besten in FUP) zur Hand?
 
Ja so ähnlich hab ich das auch verucht hat aber leider nicht geklappt.

Der Multiplexer von Rinck haben doch schon einige verbaut, hat den keiner mal ein kleines Beispielprogramm zur Hand? (am besten in FUP)
 
Im Anhang ein Beispiel wie man so etwas mit zwei Kanälen in FUP umsetzen könnte. Es sollte relativ einfach auf mehrere Kanäle erweiterbar sein.

Den In-Parameter Ain beschaltest du mit deinem PEW. Mit der Zeit Tnext wird zwischen den einzelnen Kanälen umgeschaltet.
Die Kanäle werden durch digitale Kontakte an den Ausgängen SelCh1 und SelCh2 aktiviert.

Als erstes wird die Messung eines Kanals mit den digitalen Ausgängen aktiviert. Ist die Zeit Tnext abgelaufen, wird der aktuell anstehende Wert an Ain auf den Kanal durchgeschaltet und auf den nächsten Kanal weitergeschaltet. Sind alle Kanäle durchgelaufen wird wieder mit Kanal 1 begonnen.
 

Anhänge

  • AinMux.pdf
    91,6 KB · Aufrufe: 91
Hallo Thomas

ich habe deinen Vorschlag umgesetzt. Funktioniert auch sehr gut!
Leider kann ich mit diesem Programm z.b. mit dem DO1 nur den Kanal 1 am Muxer beschalten und mit dem DO2 nur den Kanal 2.

Ich möchte(muss) das ganzen aber mithilfe der Wahrheitstabelle realisieren, um alle 16 Kanäle am Muxer mit nur 4 DO beschalten zukönnen.

Vielleicht kannst du mir nochmal einen keinen Tipp geben.

Danke

Anhang anzeigen AN_B391_2_D_MUX_PT1000_Anschluss.PDF
 
Da gibt es mehrere Möglichkeiten. Aber in FUP ist man da etwas eingeschränkt.

Du könntest aber folgendes machen:
Du änderst erstmal das Programm so, dass Channel von 0 bis 15 zählt.

Dann deaktivierst du in den Eigenschaften des FBs (rechte Maustaste auf den Baustein, dann Eigenschaften wählen) die IEC-Prüfung.
Damit ist der Zugriff auf einzelne Bits auch von Ganzzahl-Variablen möglich.

Vor die 4 digitalen Ausgänge (SelCh1 würde ich dann zu A0 bis A3 umbenennen) setzt du dann:
#Channel.x0 -> A0
#Channel.x1 -> A1
#Channel.x2 -> A2
#Channel.x3 -> A3

Mit dem Adressierungszusatz .x0 bis .x3 greifst du auf die einzelnen Bits der Variable Channel zu.

Beispiel:
Hat Channel den Dezimalwert 5 ist die Dualdarstellung 0000 0101. Somit würden die Ausgänge A0 und A2 auf true, A1 und A3 auf false gesetzt. Das erste Bit von rechts ist .x0, das zweite .x1 usw.

Edit:
Du kannst auch die IEC-Prüfung aktiviert lassen, dann musst du nur eine zusätzliche Variable (temp reicht aus) vom Datentyp Word anlegen (z.B. ChannelWord). Mit einer CONV-Box (Int nach Uint) kopierst du Channel auf ChannelWord, und fragst dann bei den Ausgängen #ChannelWord.x0 usw. ab.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab das Problem versucht sehr einfach zu lösen.

Ich habe die ersten 4 DO genommen und sie programmiert soll heißen,
wenn ich Temperaturkanal 0 ansteueren will setze ich am
DO 0 0
DO 1 0
DO 2 0
DO 3 0
Test Kanal

Will ich Temperaturkanal 1 ansteueren setzt ich

DO 0 1
DO 1 0
DO 2 0
DO 3 0

Will ich Temperaturkanal 3 ansteuren setzt ich

DO 0 1
DO 1 0
DO 2 1
DO 3 0

und so weiter mann so kann ich die Ausgänge schalten und die Kanäle weiterschalten!

Danke für die Hilfe :)Kanal3.PNG
 
Das würde mich aber wundern wenn das funktioniert.

Du schreibst in Netzwerk 8 und in Netzwerk 9, und wahrscheinlich noch in weiteren Netzwerken mehrmals auf Q0.1. Wirklich am Ausgang der SPS erhältst du aber nur den Signalzustand den Q0.1 am Ende vom OB1 besitzt, denn dann wird das Prozessabbild auf die Ausgänge übertragen. Das heißt nur die letzte Zuweisung ist gültig.

Du kannst das natürlich auch mit dem Vergleichen der Kanal-Nummer machen, nur hast du dann vor DO0 8 Oder-Verknüpfungen (alle ungeraden Zahlen: 1, 3, 5, 7, 9, 11, 13, 15), vor DO1 (2, 3, 6, 7, ...). Funktioniert durchaus, sieht aber etwas unelegant aus.
 
Hallo, im Anhang unser Mux-Baustein.
Am FB15 musst du den Eingang eingeben und den Takt, mit welchem du die Ausgänge schalten willst, um den MUX zu steuern.
Du kannst am FB die Anzahl der einzulesenden Analogwerte festlegen.
Vielleicht hilft er dir.

mfg
kassla
 

Anhänge

  • Mux8.zip
    34,8 KB · Aufrufe: 29
Zuviel Werbung?
-> Hier kostenlos registrieren
@kassla
Er muss leider mit TIA rummachen :(
Wobei es in TIA für die 1200 auch in FUP eine sehr schöne indirekte Adressierung auf Arrays mittels Index gibt, da vermisst man das Adressregistergefrickel der S7 kaum.

Deine FB hat aber einen Fehler. Wenn man den FB als Multiinstanz aufruft funktioniert er nicht mehr. Und die hartcodierten Adressoffsets fliegen einem auch bei der kleinsten Änderung um die Ohren. Ich würde auch noch ein paar andere Dinge anders lösen, aber es tut ja.
 
Hallo Thomas,

hast recht, doch dieser Baustein ist mal vor einiger Zeit während einer Inbetriebnahme entstanden und für den Anfang oder zum Verstehen tut's der auch ...
Optimieren und verbessern geht immer...wenn man nur die Zeit hätte...
 
Hallo Thomas,

du hast recht es funktioniert nicht.


Kannst du mir ein kleines Schaltbild deiner "uneleganten" Lösung aufzeichnen?

Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst du mir ein kleines Schaltbild deiner "uneleganten" Lösung aufzeichnen?

Du hast die Lösung doch schon fast.
Folgendermaßen müssen die Ausgänge für die entsprechenden Kanalnummern gesetzt werden:

Kanal NummerDO3DO2DO1DO0
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
101010
111011
121100
131101
141110
151111

Nun musst du vor jedem DO in FUP ein ODER mit einer entsprechenden Anzahl an Eingängen setzen, und an diese jeweils ein Vergleicher auf die Kanalnummer bei der in der Spalte für den DO eine 1 steht.
DO0 bei 1, 3, 5, ...
DO1 bei 2, 3, 6, ...
DO2 bei 4, 5, 6, ...

usw.

Da das genau der Binärdarstellung eines Ganzahlwertes entspricht, kann man das eben auch lösen indem man direkt auf die einzelnen Bits der Variable #Channel im Speicher zugreift. Das geht bei der 1200 mit der Endung .x0, x1, usw.
Ich habe das Programm mal angehängt wie man das mit dieser Methode machen könnte.
 

Anhänge

  • AinMux16.pdf
    157,4 KB · Aufrufe: 34
Zurück
Oben