Step 7 Analogausgang gibt nichts aus

Alpini

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

ich habe ein merkwürdiges Problem mit einem SM332 Analogausgang. Ich habe einen Funktionsbaustein (FB) programmiert, welcher die Rampenfunktion eines Frequenzumrichters übernimmt (langsam anfahren, Drehzahl halten, abbremsen). Dieser FB gibt den Drehzahlwert als Int zurück, der dann direkt auf ein Ausgangswort geschrieben wird. Der SM332 Analogausgang ist auf Spannungausgabe 0-10V parametriert. In meinem Testsystem (S7-300 CPU 315F-2 PN/DP) schreibe ich den Wert auf das "AW4" und kann am Analogausgang mit dem Multimeter messen, wie der Wert von 0 auf 10 V langsam ansteigt, dort funktioniert alles prima.

Dieses Ausgangsmodul habe ich, da nur eins vorhanden ist, danach in unser Produktivsystem geschraubt und die Hardwarekonfiguration entsprechend geändert. Leider bleibt dort der entsprechende Analogausgang immer auf 0 V stehen. Die einzigen mir Unterschiede, die mir zum Testsystem einfallen, sind die höhere Ausgangsadresse (AW272 statt AW4), dass die Produktiv-CPU keine "F" CPU ist, und dass im Produktivsystem der Ausgang über Profibus an einem IM153 hängt und nicht direkt hinter die CPU gesteckt ist.

Hat jemand eine Idee, was ich falsch machen könnte?

Viele Grüße,

Stefan
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Leuchtet die rote LED SF an der CPU? Hast Du Zugriffsfehler?
Wenn die Ausgangsadresse 272 nicht im Prozessabbild liegt, dann gibt es kein AW272 und eigentlich müsste die CPU auf Stop gehen, es sei denn Du hast einen OB122 in der CPU. Dann sollte man aber auch regelmäßig mal nach dem CPU-Baugruppenzustand schauen.

Oder ist die Adresse AW272 falsch, d.h. nicht die Adresse des gewünschten Analogausgangs? Oder Verdrahtungsfehler oder Parametrierfehler?

Harald
 
Wenn die Ausgangsadresse 272 nicht im Prozessabbild liegt, dann gibt es kein AW272 und eigentlich müsste die CPU auf Stop gehen, es sei denn Du hast einen OB122 in der CPU. Dann sollte man aber auch regelmäßig mal nach dem CPU-Baugruppenzustand schauen.
Eben nicht.

Ich hab hier ne 2EH14 ohne EA neben mir stehen. Wenn ich in die nackte CPU (Nur OB1 drin) ein "T AW272" in den OB1 schreibe, passiert gar nichts.
Keine LED, kein Eintrag im Diagnosepuffer. Erst wenn ich "T PAW272" schreibe geht die CPU auf Stopp.

Auch ein "L EW2000" wird ignoriert.

Die Mechanik im Betriebssystem, welche das Prozessabbild behandelt, scheint sich wenig darum zu scheren, ob man versucht auf etwas zuzugreifen das außerhalb des Bereichs ist.
 
Zuletzt bearbeitet:
Tatsächlich? Passt Siemens jetzt die Firmware der CPUs an die unfähigen Programmierer an? Ala "blos keine unwichtigen Fehler melden"? ;)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Diese Besonderheit gibt's schon länger.
Ist schon ein paar Jahre her, aber als ich das erste Mal auf das Problem reingefallen bin, war es bei ner Bestandsanlage mit ner 315 älteren Semesters.
Dort kam ein I/O-Knoten dazu und ich war mit der IBN schon halb durch als ich feststellte dass sich die Ausgänge der letzten 3/4 Ausgangskarten nicht vom Programm aus beeinflussen ließen. Keine Fehler / Kein Stopp. Nach ewigem Suchen bin ich dann draufgekommen dass die besagten Karten außerhalb des Peripherieabbildes waren. Das liegt sicher schon 3/4 Jahre zurück. Seitdem bin ein wenig sensibilisiert auf das Thema. :cool:

Nun ja, Siemens hat ja im Moment genug mit den Fehlern der eigenen Software zu tun. Da können schon ein paar bei untergehen... :rolleyes:

[EDIT]
Unfähig ist in dem Fall ein wenig hart... ;)
Grad bei der 315, wenn man es nicht weiß, ist die Standardeinstellung nur auf 128Byte Abbildgröße.
Wenn man den "versteckten" Einstellwert nicht kennt und die CPU netterweise sich auch nicht meldet, sucht man sich zum Deppen.
 
Zuletzt bearbeitet:
danke Leute, das war es - ich hatte mittlerweil schon testweise dem Analogmodul eine niedrigere Adresse zugewiesen, und es funktionierte auf einmal - nun weiß ich dank euch auch warum.:oops: Ich glaube den Fehler macht man auch nur einmal :ROFLMAO:

Die CPU hatte übrigens auch bei mir keinen Fehler im Diagnosepuffer (OB122 ist nicht vorhanden)

V. G.

Stefan
 
Zuletzt bearbeitet:
Wenn die Ausgangsadresse 272 nicht im Prozessabbild liegt, dann gibt es kein AW272 und eigentlich müsste die CPU auf Stop gehen, es sei denn Du hast einen OB122 in der CPU.
Eben nicht.

Ich hab hier ne 2EH14 ohne EA neben mir stehen. Wenn ich in die nackte CPU (Nur OB1 drin) ein "T AW272" in den OB1 schreibe, passiert gar nichts.
Keine LED, kein Eintrag im Diagnosepuffer. Erst wenn ich "T PAW272" schreibe geht die CPU auf Stopp.

Auch ein "L EW2000" wird ignoriert.

Die Mechanik im Betriebssystem, welche das Prozessabbild behandelt, scheint sich wenig darum zu scheren, ob man versucht auf etwas zuzugreifen das außerhalb des Bereichs ist.
Ich habe mal etwas recherchiert. Es ist tatsächlich so. Und es ist kein Bug sondern ein Systemverhalten.
Meine Aussage stimmt nur für CPU mit fester Größe des Prozessabbildes. Außerdem wird der OB121 angefordert, nicht der OB122.

Bei den S7-300-CPUs, wo die Größe der Prozessabbilder einstellbar ist, ist der Speicherbereich der Eingänge E... und der Speicherbereich der Ausgänge A... immer so groß wie das Prozessabbild maximal sein könnte (z.B. bis EB2047 und AB2047). Es kann ohne Fehler auf alle E/A-Adressen im gesamten Speicherbereich lesend und schreibend zugegriffen werden, egal wie groß das Prozessabbild eingestellt ist und ob da eine Baugruppe projektiert ist oder nicht.

Wird die Größe des Prozessabbildes kleiner eingestellt, dann verhalten sich die Speicherbereiche E und A größer als die Prozessabbildgrenze genauso wie man es auch von den Bereichen kleiner der Prozessabbildgrenze gewohnt ist: ist den Adressen keine Baugruppe zugeordnet, dann werden die E-Adressen nicht aktualisiert und die A-Adressen ignoriert.
(Man kann die unbenutzten E/A-Adressen als zusätzliche Merker nutzen.)

Die Prozessabbildgrenze bestimmt lediglich, bis zu welchen E/A-Adressen das Betriebssystem automatisch die Peripherieeingänge in den E-Speicherbereich kopiert und welchen A-Speicherbereich automatisch auf die Peripherieausgänge schreibt. Um die Ein- und Ausgänge größer als die Prozessabbildgrenze muß man sich selber kümmern.

(Versucht man per PEW oder PAW auf nicht vorhandene Baugruppen direkt zuzugreifen, dann wird wie erwartet "Peripheriezugriffsfehler" gemeldet und OB122 angefordert, egal ob die Adresse größer oder kleiner als die PA-Grenze ist.)


PLCSIM beachtet die tatsächliche Größe der Speicherbereiche der Eingänge und Ausgänge allerdings nicht :roll: und wertet alle Zugriffe auf die E-/A-Speicherbereiche hinter die Prozessabbildgrenzen als Programmierfehler und meldet "Bereichslängenfehler", fordert den OB121 an und geht in Stop, falls es den nicht gibt.

Harald
 
Zurück
Oben