Vergleicher an Zählerausgang KOP S7

DI87

Level-1
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe eine Anfängerfrage, ich möchte vergleichen ob der Zählerausgang von Z_VORW im WORD Format gleich NULL ist.
Die Vergleicher die ich in der Bibliothek finde erfordern aber INT DINT oder REAL.
Gibt es einen Vergleicher den ich direkt an den Zähler hängen kann der muß ich irgendeinen Wandler benutzen?
Wäre für Hilfe sehr dankbar !

Gruß Norbert
 
In KOP/FUP muß man den Zählerwert per MOVE auf eine (temporäre) INT-Variable übertragen und kann dann vergleichen.

Spezialfall Vergleich auf == 0 oder <> 0 : man kann direkt den Q-Ausgang des Zählers verknüpfen.
Hilfe zu KOP: Z_VORW schrieb:
Der Signalzustand am Ausgang Q ist "1", wenn der Zählwert größer als Null ist, und "0", wenn der Zählwert gleich Null ist.

PS: genaugenommen werden Zähler niemals NULL ...

Harald
 
http: //de.wikipedia.org/wiki/Nullwert
Nullwert schrieb:
Als Nullwert (kurz NULL, NIL oder ()) bezeichnet man in der Informatik einen Zustand, der das Fehlen eines Wertes anzeigen soll.
[...]
Der Nullwert ist verschieden von [...] der Zahl 0, da diese einen Wert, also eine Information repräsentieren.
Ein Zähler kann ganz normal einen Wert = 0 (Null) haben, aber nicht NULL.

Harald
 
In Excel "ISTLEER". :)

Aber ehrlich gesagt, ist mir dieser Zustand in der SPS-Logik noch gar nicht über den Weg gelaufen (vlt. weil ich hier noch nichts mit Strings gemacht habe?), deshalb hätte ich das so nicht assoziiert. Ich hatte die Vermutung, das die Betonung auf "werden" liegt.
Ansonsten haben ja die (meisten?) Werte mit der Deklaration auch immer einen Wert, auch wenn dieser oft Null ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, in Bezug auf die Frage des TE war mein PS zu NULL Korinthenkakerei. Doch das "NULL" hat mich so angesprochen ... ich konnte mir die Bemerkung nicht verkneifen. ;) wenigstens ganz kleingedruckt ...

In SPS gibt es auch NULL-Zustände, z.B. wenn ein Pointer noch keine Adresse enthält. In SCL heißt ein Nullpointer NIL.

Harald
 
Der TE hat bereits seine Antwort.

Weiter OT:
Eine Adresse 0 gibt es normalerweise nicht. Bei S7: wo soll die Adresse 0.0 (P#0.0) ohne Bereichsangabe sein?

Bei PC-Programmen in C wird zum Beispiel der Anfang des Datensegmentes ab Adresse 0 überwacht. Da befinden sich niemals Anwender-Datenobjekte. Wenn sich der Inhalt in diesen Speicheradressen ändert, dann wird das so interpretiert, daß ein nichtinitialisierter Pointer wild im Speicher rumschreibt und das Programm wird angehalten mit einem Runtime-Error wegen NULL-Pointer.

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei S7: wo soll die Adresse 0.0 (P#0.0) ohne Bereichsangabe sein?
Die Bereichsangabe steht für mich ja vor dem eigentlichen Pointer (gehört natürlich zu diesem).
Wenn ich also z.B. schreibe:
Code:
[LEFT][COLOR=#333333]L     DBB [AR1,P#0.0][/COLOR][/LEFT]
ohne vorher irgendwas ins AR1 zu schreiben, greift er nicht auf die Adresse 0.0 im geöffnetem DB zu?
PS: Mir fällt gerade kein anderes Pointer-Beispiel ein. Vlt. könntest Du mir mal eins posten, wo der Pointer noch nicht definiert (also NULL) ist?



Bei PC-Programmen in C wird zum Beispiel der Anfang des Datensegmentes ab Adresse 0 überwacht. Da befinden sich niemals Anwender-Datenobjekte. Wenn sich der Inhalt in diesen Speicheradressen ändert, dann wird das so interpretiert, daß ein nichtinitialisierter Pointer wild im Speicher rumschreibt und das Programm wird angehalten mit einem Runtime-Error wegen NULL-Pointer.
PC-Programme sind ja keine SPS-Programme. :ROFLMAO:
 
Zuletzt bearbeitet:
Bereichsübergreifende registerindirekte Adressierung
Es wird erwartet, daß das AR-Register eine Bereichskennung enthält. Wenn die Bereichskennung B#16#0 ist, dann wird wegen Zugriffsfehler der OB122 ausgelöst oder die CPU geht in STOP.
Beim NIL-Pointer ist die Bereichskennung B#16#0. Zulässige Bereichskennungen sind alle >= B#16#80
Code:
//Sicherstellen, daß die AR-Register keine Bereichskennung enthalten
L 0
LAR1  
LAR2 P#0.0

//Beispiele für bereichsübergreifende registerindirekte Adressierung
U [AR1, P#0.0]
= [AR2, P#1.1]

L W [AR1, P#0.0]
T D [AR2, P#0.0]

Harald
 
Code:
[LEFT][COLOR=#333333]L     DBB [AR1,P#0.0][/COLOR][/LEFT]
Bereichsinterne registerindirekte Adressierung
Die in der Operation enhaltene Bereichskennung (hier DBB) "überschreibt" die Bereichskennung des AR-Registers. Eine eventuell im AR-Register enthaltene Bereichskennung wird vollkommen ignoriert bzw. ausgeblendet.

Harald
 
Zurück
Oben