TIA Anfänger, Analogwert umwandeln funktioniert nicht

Saufautomat

Level-2
Beiträge
45
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo allerseits,

ich bin neu hier und arbeite gerade an meinem ersten Projekt. Bisher lief es auch ganz gut, nur jetzt komme ich gar nicht mehr weiter. Vielleicht könnt ihr mir helfen.
Meine CPU geht bei der Simulation sofort in Stopp. Es lief auch mal fehlerfrei aber ich weiß nicht, warum das jetzt nicht mehr der Fall ist.

Habt ihr eine Idee was da los ist?


4.jpg
Da lande ich wenn ich den Editor öffne:

5.jpg


6.PNG
 

Anhänge

  • 1.jpg
    1.jpg
    131,7 KB · Aufrufe: 20
Was für eine Baugruppe ist an der E-Adresse 272? Ist die einem Prozessabbild zugeordnet? (Gerätekonfiguration)
Wie groß hast Du in den CPU-Eigenschaften das Prozessabbild der Eingänge eingestellt?

Welche CPU genau hast Du? 6ES7 315-2.......... Firmware V......

Wie sieht das Netzwerk 1 vor dem Aufruf des FB2 aus?

Kannst Du Dich erinnern was Du geändert hast?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

das wäre die Hardware:
7.jpg Firmware 3.3

Ich habe mittlerweile so viel herumgedoktort, dass sich leider nicht mehr genau sagen lässt, wo das Problem los ging. Vermutlich war es, als ich statt dem 0-10V Signal ein 4-20 mA Signal verwenden wollte. Das habe ich wieder umgestellt.

Vor dem FB2 wird die Schrittkette aufgerufen. In der Schrittkette wird je nach Füllstand weitergeschaltet. Das hat auch schon mal funktioniert.

Zu dem Fehler sagt mir TIA folgendes:
Ursachen:

  • Der durch die Zugriffsadresse adressierte Wert liegt außerhalb oder nicht vollständig innerhalb des zulässigen Operandenbereiches (CPU-spezifische Größe).
  • Durch eine fehlerhafte Adressberechnung ist der adressierte Wert > 65535. Bei indirekter Adressierung kann durch fehlerhafte Berechnung ein Adresswert größer 65535 auftreten. Dieser Wert ist in der Detailinformation des Ereignisses nicht mehr korrekt eintragbar. Als Zugriffsadresse wird dann bei S7-300 eine 0 und bei S7-400 der berechnete Wert modulo 65535 eingetragen und angezeigt
Behebung:

  • Wählen Sie die Zugriffsadresse so, dass der adressierte Wert vollständig im jeweils zulässigen Operandenbereich liegt.
  • Überprüfen Sie Ihr Anwenderprogramm.

 
Die CPU ist also projektiert als V3.3? OK, spielt kaum eine Rolle weil der Fehler mit PLCSIM passiert.
Und nochmal: wie ist die Größe des Prozessabbilds der Eingänge eingestellt?
Eigentlich kann bei Zugriff auf %IW272 kein Bereichslängenfehler auftreten, höchstens wenn die Adresse (oder Baugruppe) halb im Prozessabbild und halb außerhalb liegt. Doch das hätte beim Übersetzen der Hardware angemeckert werden sollen/müssen. Mysteriös Dein Fehler!

Hast Du mal TIA und PLCSIM alles beendet und neu gestartet? Und nochmal "Hardware komplett" übersetzt und in CPU geladen?
Welches TIA und welche Windows-Version hast Du? Genaue Versionsnummern bitte!

Harald
 
Ich bin mir nicht ganz sicher, ob das das ist, was du wissen wolltest:
9.PNG
Wenn das nur bis I127,7 geht und ich den I272 nutze kommt mir das komisch vor^^ Ist das vielleicht das Problem?

Ich habe alles hundert mal neu gestartet und übersetzt, inkl. Windows.

Ich verwende
Win 10 Pro, 6.3.9600.0
TIA Portal V16.0
10.PNG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank Harald :)

12.jpg
Läuft :)

Für alle die auf das gleiche Problem stoßen:
Ich habe die Anfangsadresse auf 72 geändert, alles neu übersetzt und jetzt geht es.
11.jpg

Warum das aber davor funktioniert hat wird wohl ein Rätsel bleiben. Die Adresse war von Anfang an die 272.
 
Wenn das Adresse nicht in Prozessabbild liege sollte Sie hinten das Adresse oder der Symb. Name :P eingeben. z.b. %IB272:P oder "Name":P
 
Ich bin mir nicht ganz sicher, ob das das ist, was du wissen wolltest:
Anhang anzeigen 49225
Wenn das nur bis I127,7 geht und ich den I272 nutze kommt mir das komisch vor^^ Ist das vielleicht das Problem?
Das ist zwar ein Problem, aber nicht die Ursache für den Bereichslängenfehler.

Die 315-2AH14 hat einen Speicherbereich der Eingänge von 2048 Byte (E0.0 .. E2047.7), davon sind voreingestellt 128 Byte (E0.0 bis E127.7) für das automatische OB1-Prozessabbild der Eingänge (PAE). Das PAE kann/darf bis zur kompletten Größe von 2048 Byte vergrößert werden. Vor Aufruf des OB1 aktualisiert das Betriebssystem das PAE automatisch, indem es die Eingangsdaten der zugehörigen Baugruppen in den Speicherbereich der Eingänge kopiert - aber nur bis zur eingestellten Grenze/Größe des PAE. (die E-Adressen außerhalb des PAE können wie Merker verwendet werden)

Wenn das Prozessabbild PAE auf 128 Byte eingestellt ist, dann liefert der Lesezugriff %IW272 (standardmäßig) immer 0, weil die Adresse außerhalb des PAE liegt, und deshalb die Eingangsdaten der Baugruppe nicht in %IW272 kopiert wurden. Der Lesezugriff löst aber keinen Bereichslängenfehler aus, weil die Adresse %IW272 im Speicherbereich der Eingänge existiert.
Will man auf Eingangsadressen außerhalb des PAE zugreifen, dann muß man direkt auf die Periepherie (die Baugruppe) zugreifen: %IW272:P, dann erhält man die aktuellen Eingangsdaten der Baugruppe vom Zeitpunkt des Lesezugriffs. Peripheriezugriff wird durch ":P" hinter der Adresse bzw. dem Variablenname gekennzeichnet.
Alternativ kann man das PAE so vergrößern, daß die gewünschten Eingangs-Adressen im PAE liegen, dann liefert auch ein Lesezugriff auf %IW272 die Eingangsdaten der Baugruppe, vom Zeitpunkt kurz vor Start des OB1 als das PAE aktualisiert wurde.

So, das alles hat noch nichts mit Deinem Problem des Bereichslängenfehlers zu tun. Die Ursache dafür muß eine falsche Hardware-Einstellung, ein Fehler von TIA oder ein Fehler von PLCSIM sein. Es besteht theoretisch die Möglichkeit, die Grenze des PAE mitten in eine Baugruppe zu legen (dann könnte/dürfte sich die CPU bei einem Zugriff darauf beschweren) - doch dieser Projektierungsfehler sollte/muß beim Übersetzen der Hardware angemeckert werden. Und jetzt wird es Zeit, daß du mal in den Eigenschaften Deiner CPU nachschaust was da eingestellt ist: "Eigenschaften > Allgemein > Zyklus" (siehe Bild)

Möglicherweise liegt es auch am TIA: ich habe schon mehrmals gelesen, daß manche Hardwarekonfig von TIA unter Windows 10 nicht korrekt in Baugruppen geladen wird.


Empfehlung: Auch wenn Du nichts verstellen willst, so solltest Du mal "interessehalber" den gesamten Eingenschaften-Baum Deiner Baugruppen durchgehen, was man da alles einstellen kann. Dann bekommt man bei Problemen manchmal einen Geistesblitz "da war doch was..." ;)

Gerätehandbuch S7-300 CPU 31xC und CPU 31x: Technische Daten mit den technischen Daten Deiner CPU
siehe auch TIA Hilfe "Zugriff auf Peripherieadressen", "Prozessabbilder"

Harald
 

Anhänge

  • Einstellung_PAx.png
    Einstellung_PAx.png
    73,3 KB · Aufrufe: 22
Vielen Dank für die sehr ausführliche Antwort Harald und danke auch Thomas.

13.PNG

So war es eingestellt. Ich habe jetzt mal testweise die Adresse I172 verwendet und der Fehler war wieder da. Danach habe ich die Größe des Prozessabbilds auf 256 erhöht und der Fehler war wieder weg :)
 
Die Meldung "Bereichslängenfehler beim Lesen von %IW272" bedeutet, daß auf nicht vorhandenen Speicher zugegriffen wurde. PLCSIM verhält sich so, daß Speicher größer als das eingestellte Prozessabbild der Eingänge/Ausgänge nicht vorhanden ist.

PLCSIM simuliert die Speicherbereiche der Eingänge und Ausgänge nicht in der in der projektierten CPU tatsächlich vorhandenen Größe, sondern nur in der Größe des eingestellten Prozessabbildes.
"Baugruppenzustand > Leistungsdaten > Operandenbereiche" meldet die in HW Konfig in den CPU-Eigenschaften eingestellte Größe der Prozessabbilder.

Eine echte CPU 315-2AH14 verhält sich anders. Die Speicherbereiche der Eingänge und Ausgänge sind immer in der für die Prozessabbilder maximal einstellbaren Größe vorhanden. Die freien Bereiche oberhalb der eingestellten Größe der Prozessabbilder können als zusätzlicher Speicher (wie Merker) verwendet werden.
"Baugruppenzustand > Leistungsdaten > Operandenbereiche" meldet immer die eingebaute Größe des Speicherbereichs der Eingänge (2048 Byte) als maximale Größe des Prozessabbildes. Unabhängig von der tatsächlich eingestellten Größe des Prozessabbildes (standardmäßig 128 Bytes). siehe Bild

Durch das von der realen CPU abweichende Verhalten können mit PLCSIM solche Programme nicht direkt simuliert werden, wo der freie Bereich der Speicherbereiche der Eingänge und Ausgänge als zusätzlicher Speicher/Merker benutzt wird. Man könnte nur für die Simulation temporär die Größe der PAE/PAA größer einstellen, das ist aber manchmal nicht so einfach möglich, z.B. wenn ein CP343-1 LEAN 343-1CX10 vorhanden ist. Dessen EA-Adressen müssen zwingend außerhalb des Prozessabbildes liegen.

Fazit
So macht man es richtig: Auf E/A-Adressen außerhalb des Prozessabbildes immer mit Peripheriezugriffen (%I..:P, %Q..:P) oder DPRD_DAT/DPWR_DAT zugreifen.
In PLCSIM werden Zugriffe in die Speicherbereiche der Eingänge/Ausgänge (%I.., %Q..) jenseits der Prozessabbilder als Fehler gemeldet - das ist auch gut so. Eine reale CPU läßt solche Zugriffe zwar ohne Fehlermeldung zu, liefert aber ebenfalls nicht die Eingangsdaten der Baugruppe.


Frage mal Siemens, ob die Lust haben, das von realen CPU abweichende Verhalten von PLCSIM irgendwie anzupassen.
Als ich mal Fehler von PLCSIM an Siemens gemeldet hatte, lautete die abschließende Antwort von Siemens so:
Das Verhalten ist schon viele Jahre in PLCSIM drin und bisher noch nicht aufgefallen. Es besteht kein akuter Bedarf, den Fehler zu korrigieren.

Antwort vom Siemens Industry Technical Support
Aktuell ist keine neuere Version von PLCSIM Klassik geplant. Die Entwicklung nimmt dieses Thema allerdings auf, sollte es doch noch zu einer neueren Version kommen, um dies nachzupflegen.


PS: Ich habe nicht getestet wie realitätsnah PLCSIM Speicher von Teilprozessabbildern (TPA..) simuliert.

Harald
 

Anhänge

  • Leistungsdaten_315-2AH14.png
    Leistungsdaten_315-2AH14.png
    38 KB · Aufrufe: 16
Zurück
Oben