Step 7 Analogausgang programmieren

jenson

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine S7-300 CPU 315 AO 2x12BIT SM332
ich habe da ein kleines problem. Und zwar will ich einen Analogausgang programmieren und komme nicht weiter.
Ich will das aus mehreren Markern (z.B. M0.0 - M3.7) ein Analogausgang skaliert wird.
Es soll für Merker M0.0 ein Stomwert von 4mA ausgegeben werden
Für Merker M0.1 4,5mA
usw. bis M3.7 19,5mA

Wie bekomme ich jetzt die Umwandlung von Digitalwert zu Analogwert hin?

Vielen Dank für eure Hilfe und Mühe!

Mfg Jenson
 
... in dem du, abhängig von deinem Merker, einen bestimmten Zahlenwert auf das PAW des Analog-Ausgangs schreibst.
In der Beschreibung der Karte findest du auch eine Tabelle, die dir sagt, welche Zahlenwerte welches Ergebnis bewirken würden ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine schnelle Antwort.
Kannst du mir bitte mal ein Beispiel dazu machen wie genau das aussehen soll? (z.B. M0.0 auf 4mA
Ich bin leider noch ziemlicher Laie auf dem Gebiet der Analogwertverarbeitung

Gruß Jenson
 
Nimm in FUP oder KOP eine MOVE-Box.
An -|EN schreibst Du Deinen Steuermerker M0.0 (M0.1 .. M3.7)
An -|IN schreibst Du Deinen mA-Zahlenwert
An OUT|- schreibst Du eine temporäre Variable

(Jetzt kannst Du die Ansicht auf AWL umstellen, falls Du in AWL programmieren willst.)

Das ganze machst Du so oft nacheinander wie Du Merker hast.
Zum Schluß skalierst Du den Wert der temporären Variable, so daß sich aus 4..20 (oder 0..20 ? oder 40..200 oder ...) --> 0..27648 ergibt und gibst das Ergebnis an Deinen Analogausgang PAW aus.
Zum Skalieren zu 0..27648 kann man einfache Mathematik oder den FC106 UNSCALE verwenden. (Standard Library / TI-S7 Converting Blocks)
Je nachdem wie Du am Ende Skalieren willst ergibt sich, welchen Datentyp Du für die temporäre Variable nimmst (INT oder REAL) und ob Du 40, 45, .. 195 oder 4.0, 4.5, .. 19.5 oder 0..100 %-Werte oder sonstwas zuweist.
Du kannst auch direkt sofort den erforderlichen Wandlerwert 0..27648 an die MOVEs schreiben und das Skalieren am Ende weglassen, dann mußt Du halt die 32 Werte per Hand ausrechnen.

(KOP schematisch)
Code:
|--------- 0 -[MOVE]- #temp_int
|-|M0.0|- 40 -[MOVE]- #temp_int
|-|M0.1|- 45 -[MOVE]- #temp_int
| ...
|-|M3.7|- 195 -[MOVE]- #temp_int

Was soll passieren, wenn kein Merker aktiv ist?
Was soll passieren, wenn mehrere Merker aktiv sind?

Falls es einen linearen Zusammenhang zwischen Deinen Merkern und der Sollwert-Ausgabe gibt, dann könnte man auch das höchste gesetzte Bit ermitteln und einfach mit einem Faktor multiplizieren.

Harald
 
Was soll passieren, wenn kein Merker aktiv ist?
Was soll passieren, wenn mehrere Merker aktiv sind?

Normalerweise ist immer nur ein Merker aktiv.

Wie bekomm ich dann die temporären Variablen in den Analogausgang?
Das war doch was mit PAW und PEW oder so ähnlich?
 
Hallo,
ich hab noch ein Frage zu dem Thema

ich habe mir jetzt die Werte alle einzeln ausgerechnet. Ich bin mir aber nicht ganz sicher ob das so stimmt.
Sind 4mA = 0 oder ist 0mA = 0 ??
Und 20mA = 27648 oder?

Das ausrechenen habe ich über einen normalen Dreisatz gemacht
 
Was für einen Ausgabebereich hast Du in HW Konfig für den Analogausgang eingestellt? Auf diesen Bereich bezieht sich das 0..27648 (bzw. -27648..0..+27648).

Schau Dir mal in diesem Handbuch S7-300 Baugruppendaten das Kapitel "5 Grundlagen Analogbaugruppen" und die Beschreibung Deiner Baugruppe (vermutlich) Kapitel "6.15 SM 332; AO 2 x 12 Bit; (6ES7332-5HB01-0AB0)" an.

Harald
 
Zuletzt bearbeitet:
Hallo,

ich habe das Programm jetzt so geschrieben:

Move Baustein
EN: M0.0-M3.7
IN: erforderlichen Wandlerwert 0..27648
Out: PAW 304

leider kommt aber kein Stromsignal aus der Ausgangskarte
Hardware wurde meiner Meinung nach richtig konfiguriert und die Karte richtig eingestellt auf 4-20mA
 
Zuviel Werbung?
-> Hier kostenlos registrieren
der eingang des Bausteins, der da bezeichnet ist mit "EN" (Enable), lässt den baustein sperren, sofern er false ist. Ist er unbeschaltet, ist er True. Mit anderen Worten: da MD0 müsste an den Eingang "In" des Bausteins. Dann wirst du Probleme bekommen, weil du ein Doppelwort statt eines Wortes benutzt hast. Aber das ist ein anderes Thema

Edit: Fragestellung falsch verstanden, bitte löschen
 
Zuletzt bearbeitet:
Zurück
Oben