Siemens SPS Step7 - Zähler?

2 Antworten

Hallo,

Integer ist eine 16-Bit Festpunktzahl. Der DEZ-Ausgang gibt den aktuellen Zählerwert BCD-codiert aus. Es ist also nun eine reine Darstellungssache, wie der Wert betrachtet wird. Ist beim Beobachten Dezimal eingestellt, wird auch der Wert als Dezimalzahl dargestellt ... also in dem Fall 16.

Wenn du auch in AWL programmierst, kannst du dass auch einfacher testen:

LC Z[Zählernummer] ... der Zahlenwert wird BCD-codiert in Akku 1 geladen

L Z[Zählernummer] ... der Wert wird als 16-Bit Ganzzahl in Akku 1 geladen

Nach ein bisschen Recherche...

Der DEZ gibt den Wert BCD-Codiert aus, ich denke aber, du gibst ihn als Integer wieder, oder? Da wird dann der tatsächlie Zählerwert 16 angezeigt. (Also BCD decodiert)... Dual gibt den Wert als Hexadezimal aus.

Dabei entspricht Hex 00 auch Dezimal 0; Hex 09 entspricht Dezimal 9. Hex zählt dann weiter wie folgt:

00 = 0 .... 09 = 9 ; 0A = 10 ; 0B = 11 ; 0C = 12 ; 0D = 13 , 0E = 14 ; 0F = 15 ; 10 = 16 ; 11 = 17 ; 12 = 18 usw bis FF = 255...


Freaky3851 
Beitragsersteller
 15.10.2019, 19:41

Was genau bedeutet Integer? Wenn ich die ansicht bei dual aber auf Dez stelle, zeigt er mir die Zahl 10 an. Das klappt bei Dez aber nicht. Warum berechnet der bei Dez nicht auf die Dezimalzahl aus der Dualzahl

0
RareDevil  15.10.2019, 19:55
@Freaky3851

Ist fast 20 Jahre her mit SPS, leider nicht so viel hängen geblieben... Integer ist ein Datentyp, auch int abgekürzt.. Meine eben was bei meiner Suche über Integer gelesen zu haben... Zumindest hieß es da, dass der Wert BCD-Codiert ist. Eig bekommst Du also nur einen BCD-codierten Binärwert (0 oder 1) ausgegeben, aber die SPS-Software wandelt den dann in den dezimalen Wert um. Dual ist eben Hex-Codiert und gibt den Wert als solchen wohl auch aus. Was passiert denn, wenn Du 15 als Wert hast? Dann müsste HEX ja 0F zeigen... Ka, wie genau Step7 das umwandelt und als was es den Wert anzeigt... Hab gerade weder ne SPS noch Step7 zur Hand. Ist alles auf Arbeit... Und die Handbücher zu studieren (eines hat tatsächlich sogar über 19000 Seiten^^, die anderen zumindest um die 200-600 Seiten) ist mir gerade zu viel Arbeit. Bin froh, das ich das Handbuch gefunden habe, wo drin stand, wie der Werte ausgegeben werden... Da steht aber leider nichts von den Anzeigemode bei...

1
Freaky3851 
Beitragsersteller
 15.10.2019, 20:13
@RareDevil

Danke für deine Hilfe! 19.000 Seiten, das ist ja mal ein dickes Buch, da kommt selbst Harry Potter nicht ran ;D

Mit Integer kann man doch Ganzzahlen mit entsprechendem Vorzeichen darstellen lassen, 16 Bit und das 15Bit wird für das Vorzeichen genutzt, negative Zahlen haben dort eine 1, positive Zahlen hingegen eine 0.

Ich kann mir in der Variationstabelle die Wert in unterschiedlichen Zahlensystem anzeigen lassen. Wenn ich bis 10 zähle mit meinem Vorwärtszähler, dann passiert folgendes:

DUAL-Ausgang: 0000_0000_0000_1010 (BIN) oder im A (HEX)

DEZ-Ausgang: 0000_0000_0001_0000 (BIN), das ist ja BCD-Codiert, warum zeigt er mir dann in der Darstellungsart DEZ 16 an, er müsste es doch schaffen aus dem BCD-Code einen gleichwertigen Binär-Code zu erstellen und daraus die entsprechende Dezimalzahl. Weil 16 entspricht nicht dem tatsächlichen Ergebnis.

0
RareDevil  15.10.2019, 20:53
@Freaky3851

Ah, ich glaub ich habs... Er checkt anscheinend NICHT, das es BCD ist... 00010000 Binär wäre dann tatsächlich eig 16 Dezimal. Nur BCD ist es 10.. Er decodiert es also nicht richtig und geht vom Binärsystem aus. Du musst also ggf einen BCD-Decoder dahinter bauen und diesen Wert auslesen... ^^

0
Freaky3851 
Beitragsersteller
 15.10.2019, 20:58
@RareDevil

Ja, da hast du vollkommen Recht. Komisch, das die SPS das nicht selber checkt ;D

0
RareDevil  15.10.2019, 21:02
@Freaky3851

Naja, BCD gibt ja auch nur einen Binärcode aus. Und anscheinend wird nicht auf die Art des Ausgang geschaut, sondern rein der binäre Code Stumpf ausgewertet... Ist halt Siemens, warum einfach, wenn es auch umständlich geht... ^^ Sie werden sich wohl auch was dabei gedacht haben... Nur was, weiß nur Siemens... ^^

0