TIA Wo in der Doku findet man Infos welcher I/O welchen Point_Adr Wert hat?

Beiträge
6.195
Reaktionspunkte
1.387
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
in der TIA Doku steht zum OB40, dass man die Infos welcher Eingang welchen Point_Adr Wert liefert in der Beschreibung der Baugruppe findet. Entweder ich bin blind, oder es steht da nicht. Ich habe in der Doku zur S7-1511C geschaut, aber nichts gefunden. Hat hier einer eine Ahnung wo das steht und wonach man da suchen muss. Interessant wäre auch wo das bei "normalen" Eingangsmodulen das steht.
 
Vorweg:
Ich selber habe das bis dato noch nicht genutzt.
Aber mich interessiert sowas auch, daher habe ich mal geschaut, was ich mir an Infos zusammen klauben könnte.


Wenn ich mir z.B. dieses Handbuch SIMATIC S7-1500/ET 200MP Digitaleingabemodul DI 32x24VDC HF ansehe, dann
ist dies wohl die gesuchte Info:
1682448738404.png

Das Tolle bei Siemens ist mal wieder, dass das Symbol PointAddr in dieser Beschreibung nicht einmal auftaucht.
Dagegen wird die Lokaladresse angegeben, die bei der standardmäßigen Optimierung des Bausteinzugriffs gar nicht sichtbar ist.
Ist wohl noch einfach von den S7-300 Baugruppen kopiert.

Erst nach der Deaktivierung des optimierten Bausteinzugriffs in den Bausteineigenschaften und min. einmaligen Übersetzen des Bausteins erscheint dann die Lokaladresse (bzw. eigentlich der Offset) und ändert "nebenbei" das Symbol zu POINT_ADDR:

1682448954647.png
 
Zuletzt bearbeitet:
Bei S7-300-Digitalbaugruppen ist OB40_POINT_ADDR ein 32-Bit-DWORD, wo der Eingang = 1 ist, der den Alarm ausgelöst hat.
Welcher Eingang den Alarm ausgelöst hat, muß durch Ausmaskieren des Bits aus OB40_POINT_ADDR ermittelt werden, weil es könnten auch mehrere Bits gleichzeitig gesetzt sein, wenn mehrere Eingänge gleichzeitig einen Alarm auslösen.

Hier ein Beispiel für einen OB40 in S7-300:
OB40 Beispiel

Hier jetzt der komplette OB40-Code (allerdings nicht getestet)
wenn E124.0 nur bei steigender Flanke einen Prozessalarm auslöst:
Code:
//OB40
//prüfen, ob E124.0 den Prozessalarm ausgelöst hat
      L     #OB40_IO_FLAG
      L     B#16#54                     //Eingangsbaugruppe PE...
      <>I  
      SPB   ENDE

      L     #OB40_MDL_ADDR
      L     124                         //PEW124
      <>I  
      SPB   ENDE

      L     #OB40_POINT_ADDR
      UD    DW#16#1                     //00000000_00000000_00000000_00000001 = E124.0
      SPZ   ENDE

//E124.0 hat den Alarm ausgelöst
//Wasserzähler um 1 Einheit erhöhen
      L     DB10.DBD    0               //alter Zählerstand
      +     L#1                         //Zähleinheit addieren
      L     L#1_000_000_000             //max Zählumfang
      MOD                               //Wrap zu 0
      T     DB10.DBD    0               //neuer Zählerstand

ENDE: NOP   0

Für welche Baugruppe(n) suchst Du die Information? (Ich habe gerade keinen Zugriff auf meine Handbuch-Sammlung)

PS: suche mal nach OB40_POINT_ADDR oder POINT_ADDR mit Doppel-D ;)

Harald
 
PS: suche mal nach OB40_POINT_ADDR oder POINT_ADDR mit Doppel-D
:unsure:
Ich vermute mal, das hat Oli auch mit richtiger Schreibung getan und dann das hier gefunden:
1682455031020.png
in der TIA Doku steht zum OB40, dass man die Infos welcher Eingang welchen Point_Adr Wert liefert in der Beschreibung der Baugruppe findet.

Ist ja auch toll, dass das genau genommen 2 verschiedene Symbole und optimiert im Input vs. nicht optimiert im Temp zu finden sind.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
in der TIA Doku steht zum OB40, dass man die Infos welcher Eingang welchen Point_Adr Wert liefert in der Beschreibung der Baugruppe findet. Entweder ich bin blind, oder es steht da nicht. Ich habe in der Doku zur S7-1511C geschaut, aber nichts gefunden.
Es ist alles so wie hucki schon in #2 und #3 schrieb. Inklusive der Inkonsistenz der Doku, die alles absolut adressiert beschreibt und deshalb nicht so ganz zur TIA Hilfe passt. Oft versteht man die Doku der S7-1x00 und von TIA fast nur, wenn man die S7 schon vor TIA kannte. Da fallen auch die Fehler der Doku nicht so gravierend auf, weil man noch weiß, wie etwas eigentlich gemeint ist, und weil die alte Doku einfach besser und detaillierter war. 🤷‍♂️

Für die aktuelle CPU 1511C dieses Handbuch:
6.2.3 Alarme und Diagnosen der digitalen Onboard-Peripherie
Prozessalarm


Welcher Kanal den Prozessalarm ausgelöst hat, wird in der Startinformation des Organisationsbaustein eingetragen. In dem folgenden Bild finden Sie die Zuordnung zu den Bits des Lokaldaten-Doppelworts 8
Lokaldaten-Doppelwort 8 = LD8 = POINT_ADDR
Hat bei der Onboard-Peripherie den gleichen Aufbau wie bei dem Digitaleingangsmodul.
In LB10 (#POINT_ADDR.%B1 bzw. #POINT_ADDR.%X8..X12) steht die Nummer des auslösenden Digitaleingangs-Kanals 0..15

Harald
 
Zuletzt bearbeitet:
Vorweg:
Ich selber habe das bis dato noch nicht genutzt.
Aber mich interessiert sowas auch, daher habe ich mal geschaut, was ich mir an Infos zusammen klauben könnte.


Wenn ich mir z.B. dieses Handbuch SIMATIC S7-1500/ET 200MP Digitaleingabemodul DI 32x24VDC HF ansehe, dann
ist dies wohl die gesuchte Info:
Anhang anzeigen 68477

Das Tolle bei Siemens ist mal wieder, dass das Symbol PointAddr in dieser Beschreibung nicht einmal auftaucht.
Dagegen wird die Lokaladresse angegeben, die bei der standardmäßigen Optimierung des Bausteinzugriffs gar nicht sichtbar ist.
Ist wohl noch einfach von den S7-300 Baugruppen kopiert.

Erst nach der Deaktivierung des optimierten Bausteinzugriffs in den Bausteineigenschaften und min. einmaligen Übersetzen des Bausteins erscheint dann die Lokaladresse (bzw. eigentlich der Offset) und ändert "nebenbei" das Symbol zu POINT_ADDR:

Anhang anzeigen 68478
Den Teil gibt es, wie ich dank @PN/DP jetzt weiß auch im Handbuch der S7-1511C.
 
Bei S7-300-Digitalbaugruppen ist OB40_POINT_ADDR ein 32-Bit-DWORD, wo der Eingang = 1 ist, der den Alarm ausgelöst hat.
Welcher Eingang den Alarm ausgelöst hat, muß durch Ausmaskieren des Bits aus OB40_POINT_ADDR ermittelt werden, weil es könnten auch mehrere Bits gleichzeitig gesetzt sein, wenn mehrere Eingänge gleichzeitig einen Alarm auslösen.

Hier ein Beispiel für einen OB40 in S7-300:


Für welche Baugruppe(n) suchst Du die Information? (Ich habe gerade keinen Zugriff auf meine Handbuch-Sammlung)

PS: suche mal nach OB40_POINT_ADDR oder POINT_ADDR mit Doppel-D ;)

Harald
Für die onboard I/Os der S7-1511C, in den anderen Beiträgen steht aber schon die Lösung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist alles so wie hucki schon in #2 und #3 schrieb. Inklusive der Inkonsistenz der Doku, die alles absolut adressiert beschreibt und deshalb nicht so ganz zur TIA Hilfe passt. Oft versteht man die Doku der S7-1x00 und von TIA fast nur, wenn man die S7 schon vor TIA kannte. Da fallen auch die Fehler der Doku nicht so gravierend auf, weil man noch weiß, wie etwas eigentlich gemeint ist, und weil die alte Doku einfach besser und detaillierter war. 🤷‍♂️

Für die aktuelle CPU 1511C dieses Handbuch:

Lokaldaten-Doppelwort 8 = LD8 = POINT_ADDR
Hat bei der Onboard-Peripherie den gleichen Aufbau wie bei dem Digitaleingangsmodul.
In LB10 (#POINT_ADDR.%B1 bzw. #POINT_ADDR.%X8..X12) steht die Nummer des auslösenden Digitaleingangs-Kanals 0..15

Harald
Obwohl ich (endlich) dazu komme von Mo.-Do. jeden Tag mit der S7-1X00 zu üben bin ich noch sehr unerfahren. Das Handbuch habe ich, aber auf die Idee nach dem Wort Prozessalarm zu suchen bin ich leider nicht gekommen.
 
point
Lokaldaten-Doppelwort 8 = LD8 = POINT_ADDR
Hat bei der Onboard-Peripherie den gleichen Aufbau wie bei dem Digitaleingangsmodul.
In LB10 (#POINT_ADDR.%B1 bzw. #POINT_ADDR.%X8..X12) steht die Nummer des auslösenden Digitaleingangs-Kanals 0..15
:unsure:
Sind dann optimiertes PointAddr und nicht optimiertes POINT_ADDR von unterschiedlicher Funktion?

Bei Letzterem steht ja was von Bitfeld und Harald maskiert es in seinem Beispiel auch entsprechend:
L #OB40_POINT_ADDR
UD DW#16#1 //00000000_00000000_00000000_00000001 = E124.0
SPZ ENDE

In der Beschreibung der S7-1500 Baugruppe steht dagegen, man findet den Kanal nicht als einzelnes Bit sondern als Dezimalzahl im Byte LB10/%B1:
In LB10 (#POINT_ADDR.%B1 bzw. #POINT_ADDR.%X8..X12) steht die Nummer des auslösenden Digitaleingangs-Kanals 0..15
1682488476248.png


Oder ist da einfach mal wieder nur die vermutlich nur von der S7-300 kopierte TIA-Hilfe für die S7-1500 falsch?
 
Sind dann optimiertes PointAddr und nicht optimiertes POINT_ADDR von unterschiedlicher Funktion?
Nein. Ich gehe davon aus, daß in beiden Variablen dieselbe Struktur drin ist.

Bei Letzterem steht ja was von Bitfeld und Harald maskiert es in seinem Beispiel auch entsprechend:


In der Beschreibung der S7-1500 Baugruppe steht dagegen, man findet den Kanal nicht als einzelnes Bit sondern als Dezimalzahl im Byte LB10/%B1:
Bei den S7-300-Baugruppen werden halt ressourcenschonend alle 32 Bits für bis zu 32 Eingänge genutzt und wenn mehrere Eingänge im selben IO-Zyklus eine Flanke haben, dann im selben Alarm parallel gemeldet. Die S7-1500 ist ja viel schneller und kann es sich anscheinend leisten, daß für jeden Eingang ein eigener Alarm ausgelöst wird. (Wenn das TIA nicht zufällig gerade zuguckt und die CPU mit Kommunikation belästigt ;)
Vermutlich wird da auch manchmal beim Anwenderprogramm der Anschein erweckt, daß ein Eingang ein paar Nanosekunden früher ein Ereignis hatte als ein anderer, schließlich wurde dessen Ereignis ja früher gemeldet als das des anderen Eingangs... Wie die zeitliche Auflösung/Unterscheidbarkeit der Reihenfolge der nicht-Gleichzeitigkeit ist, weiß ich nicht. Vielleicht steht dazu auch was in Handbüchern.

Harald
 
Zurück
Oben