# unterschied zw. word und int



## prinz1978 (2 Juli 2007)

hallo
bin ein anfänger bitte nicht lachen aber was ist der unterschied zw.integer und word ? wenn ich programmiere 
l 9999 
t aw 4 
zeigt mir meine steuerung das ergebnis und wenn ich im windows rechner die zahl 9999 in binäre umwandle dann bekomme ich ein anderes bit muster warum ?
im rechner 10011100001111 und die steuerung 1110010011110000 ??????.
mfg


----------



## da_kine (2 Juli 2007)

Ein WORD sind 16 Bit ohne Vorzeichen, und ein INT sind 16 bit mit Vorzeichen. Falls du in deiner Steuerung einen INT wert hast der so 1000 0000 0000 0001 aussieht bedeutet das -1. Wenn du aber ein WORD hast, das so aussieht bedeutet das 32769.

In deinem Beispiel hat die Zeichenfolge aus deinem Rechner z.B. auch nur 14! Stellen, wohingegen die aus der Steuerung 16 hat.


----------



## Kai (2 Juli 2007)

prinz1978 schrieb:


> l 9999
> t aw 4
> im rechner 10011100001111 und die steuerung 1110010011110000


 
Das kann ich nicht nachvollziehen.  

L 9999
T AW 4

Dann bekomme ich in der Steuerung:

INT 9999
BIN 0010_0111_0000_1111

Gruß Kai


----------



## prinz1978 (2 Juli 2007)

hallo
danke für deine antwort wie müsste ich dann programmieren um den gleichen wert anzuzeigen?


----------



## Larry Laffer (2 Juli 2007)

da_kine schrieb:


> Falls du in deiner Steuerung einen INT wert hast der so 1000 0000 0000 0001 aussieht bedeutet das -1.


 
Nur für die Voillständigkeit ...
1111 1111 1111 1111 entspricht -1
das oben genannte entspricht -32767 ...


----------



## da_kine (2 Juli 2007)

Hast ja recht...


----------



## vladi (2 Juli 2007)

*Darstellungen*

Hi,
Stichwort Zweierkomplement..

SPS/Binärzahlen/Umwandlungen: da ist schon eine Menge Mathe drin, 
Jungs..

Gruss: Vladi


----------



## prinz1978 (2 Juli 2007)

?????????????????????????    jetzt kenne ich mich überhaupt nicht aus .


----------



## Kai (2 Juli 2007)

prinz1978 schrieb:


> hallo
> danke für deine antwort wie müsste ich dann programmieren um den gleichen wert anzuzeigen?


 
Einfach nur:

L 9999
T AW 4

INT 9999
BIN 0010_0111_0000_1111

Gruß Kai


----------



## Ralle (2 Juli 2007)

Stimmt doch alles???
Es ging ja nicht um negative Zahlen, sonder rein um die Darstellung, was für einen "Rechner" nimmst du denn zum anzeigen?


----------



## vladi (2 Juli 2007)

*Anzeige/Rechner*

Hi,
vielleicht nimmt er LINUX oder sowas..    ..

Vladi


----------



## prinz1978 (2 Juli 2007)

ja aber wieso leuchten die ausgänge anders? müste ja gleich wie am bild leuchten oder bin ich falsch ? von oben gesehen leuchtet 1110 0100 1111 0000.


----------



## Ralle (2 Juli 2007)

prinz1978 schrieb:


> ja aber wieso leuchten die eingänge anders?  müste ja gleich wie am bild leuchten oder bin ich falsch ? von oben gesehen leuchtet 1110 0100 1111 0000.



Schau dir mal das Anschlußbild der Baugruppe an!


----------



## prinz1978 (2 Juli 2007)

so nun ein bild ich hoffe ihr könnt was erkennen 

mfg


----------



## Kai (2 Juli 2007)

Es ist schon alles richtig.  


```
[B]Bits in der Steuerung:[/B]
 
           AW 4
 
   AB 4           AB 5
 
[B]A4.7 - A4.0    A5.7 - A5.0[/B]
 
 0010 0111      0000 1111
```
 

```
[B]Ausgänge der Karte:[/B]
 
   AB 4           AB 5
 
[B]A4.0 - A4.7    A5.0 - A5.7[/B]
 
 1110 0100      1111 0000
```
 
Gruß Kai


----------



## Larry Laffer (2 Juli 2007)

Vielleicht sollte man den Beitrag von Kai mal in die FAQ-Rubrik übernehmen. Das Problem taucht ja anscheinend wohl häufiger auf ...


----------



## prinz1978 (2 Juli 2007)

ok jetzt ist mir alles klar    man mus nur richtig lesen am bild ist es auch richtig immer   von unten ab 4 = 00100111 dan ab 5 von unten 00001111 zusammen 0010 0111 0000 1111 = die zahl 9999 binär. :-D 

mfg


----------



## Steve81 (2 Juli 2007)

Und der Rechner schneidet eben die 2 Nullen vorne ab. Deshalb 14 statt 16 Stellen. Hab aber auch schon öfters die Bytes verdreht und mich über das Resultat gewundert.


----------



## prinz1978 (2 Juli 2007)

danke erstmal für eure bemühungen es ist halt nicht leicht einen anfänger etwas klarzumachen nebenbei eine frage da ihr ja mein sps trainer gesehen habt :???: was könnte ich noch einbauen damit ich word eingabe und word ausgabe eventuell noch analog eingabe und ausgabe üben kann ?
mfg


----------



## prinz1978 (2 Juli 2007)

Und der Rechner schneidet eben die 2 Nullen vorne ab. Deshalb 14 statt 16 Stellen. Hab aber auch schon öfters die Bytes verdreht und mich über das Resultat gewundert.


das war ja auch mein problem glaube ich am anfang.


----------



## Kai (2 Juli 2007)

```
[B]Bits in der Steuerung:[/B]
 
           AW 4
 
   AB 4           AB 5
 
[B]A4.7 - A4.0    A5.7 - A5.0[/B]
 
 0010 0111      0000 1111
```
 
Der Vollständigkeit halber habe ich die Zuordnung der Ausgänge noch einmal in das Foto der Steuerung eingetragen.  

Gruß Kai


----------



## röhrengertl (20 Juli 2017)

Und was ist der Unterschied dann in TIA14 bei WORD und INT und dann noch UINT (unsigned)? 
Ich Frage mich wie wir das Jahrelang ohne UINT geschafft haben! Und dann noch USInt; LInt; Uint


----------



## Blockmove (20 Juli 2017)

röhrengertl schrieb:


> Ich Frage mich wie wir das Jahrelang ohne UINT geschafft haben! Und dann noch USInt; LInt; Uint



Tja, du wirst es wahrscheinlich nicht glauben, aber ich bin froh über die neuen Datentypen und nutze sie auch.
Was mich angeht, dürfte die Typüberprüfung und das Verhalten bei Zahlenüberlauf in Step 7 ruhig noch strenger sein.


----------



## hucki (20 Juli 2017)

prinz1978 schrieb:


> was ist der unterschied zw.integer und word ?


BIT, BYTE, WORD, DWORD sind Angaben zur Speichergröße. Die Speichergröße gibt keinerlei Auskunft, wie der Inhalt zu interpretieren ist.

INT, UINT, DINT, Real usw. sind Formatangaben, wie der Inhalt einer bestimmten Speichergröße zu interpretieren ist.


----------



## GUNSAMS (20 Juli 2017)

hucki schrieb:


> BIT, BYTE, WORD, DWORD sind Angaben zur Speichergröße. Die Speichergröße gibt keinerlei Auskunft, wie der Inhalt zu interpretieren ist.
> 
> INT, UINT, DINT, Real usw. sind Formatangaben, wie der Inhalt einer bestimmten Speichergröße zu interpretieren ist.



Sehe ich etwas anders. WORD und DWORD sind zweideutig auszuwerten. Ein Mal als Angabe der Speichergröße (16 oder 32 Bit), oder im Fall als Datentyp, nämlich als vorzeichenloses Zahlenformat.


----------



## hucki (20 Juli 2017)

GUNSAMS schrieb:


> WORD und DWORD sind zweideutig auszuwerten. Ein Mal als Angabe der Speichergröße (16 oder 32 Bit), oder im Fall als Datentyp, nämlich als vorzeichenloses Zahlenformat.


WORD und DWORD haben keinerlei Formatangaben. Sie enthalten einfach nur ein Bitmuster.

Vorzeichenlose Zahlenformate sind U(nsigned)INT bzw. UDINT.

Ein DWORD kann z.B. auch das gleiche Bitmusters eines REALs enthalten.
Ein WORD kann z.B. auch das Bitmuster eines DATE enthalten.

Man weiß es ohne die Formatangabe einfach nicht.
Alles Interpretationssache, über dass nur das Format und nicht die Speichergröße Auskunft gibt.


----------



## Heinileini (20 Juli 2017)

Moin röhrengertl!
Auf Deinem 3. Bild (word.png) steht "BCD | C#0 bis C#*999* | ...".
Was ist denn das für eine Beschreibung??? 
Sollte es nicht "C#0 bis C#9999" heissen, erst recht, wenn laut Hinweis "der DatenTyp WORD nicht auf grösser oder kleiner verglichen werden" *kann*?
Die genannten Vergleiche (als sie noch nicht verboten waren) waren mal der Grund dafür, das Maximum mit C#999 festzulegen (und natürlich der Missbrauch der höchstwertigen Tetrade bei S5-Timern - aber das Argument zieht hier ja wohl nicht!?)!
Gruss, Heinileini
PS: Die Beschreibung auf int.png ist ja wohl auch für die Füße ...
Das erinnert mich an gewisse SiemensStandardFBs, die eine Konvertierung von DUAL in GRAY und umgekehrt verweigerten, sobald Bit15=1 war.


----------



## GUNSAMS (20 Juli 2017)

hucki schrieb:


> WORD und DWORD haben keinerlei Formatangaben. Sie enthalten einfach nur ein Bitmuster.
> 
> Vorzeichenlose Zahlenformate sind U(nsigned)INT bzw. UDINT.
> 
> ...



Dann interpretiert Siemens in WinCC bei Ein-/Ausgabefeldern also willkürlich. Viele Logo-User fallen da nämlich regelmäßig auf die Schnauze. Bei der Auswahl des Datentyps kann nämlich zwischen WORD (vorzeichenlos) und INT gewählt werden (ist auch bei einigen App-Anbietern auch so).
Da den meisten der Begriff WORD als 16Bit Speichergröße (2Bytes) bekannt ist, wählen viele den Datentyp WORD (vorzeichenlos) statt INT (vorzeichenbehaftet) und wundern sich, warum sie keine negativen Werte angezeigt bekommen.
Letztendlich enthält alles nur ein Bitmuster......


----------



## hucki (20 Juli 2017)

Nein, WinCC interpretiert nicht willkürlich.

Die Ein-/Ausgabefelder haben unter den allgemeinen Eigenschaften eine Formatvorgabe, wie der Wert zu interpretieren ist.
Die Standardvorgaben, die insbesondere von Neulingen kaum verändert werden, sind bei formatlosen WORD und formatbehafteten INT-Variablen einfach unterschiedlich.

Bei WORD/DWORD sind jedoch wesentlich mehr als nur die oben von Dir angegebenen 2 Interpretationen möglich.


----------



## GUNSAMS (20 Juli 2017)

Laut deiner Angabe gibt es aber nur eindeutig, nämlich nur die Speichergröße betreffend.
Damit widersprichst du dir doch selber.....


----------



## Blockmove (20 Juli 2017)

GUNSAMS schrieb:


> Laut deiner Angabe gibt es aber nur eindeutig, nämlich nur die Speichergröße betreffend.
> Damit widersprichst du dir doch selber.....



Tja willkommen in der Welt der Zahlenfomate.
Wenn man mit Fremdsystemen koppelt wird es noch lustiger.
Da hat dann ein Int eben 32Bit.
Bei Real wirds dann noch lustiger.
Dazu gibts dann noch gedrehte Bytefolgen.

Gruß
Blockmove


----------



## GUNSAMS (20 Juli 2017)

Hallo Blockmove,

da du mich zitierst:

Ich habe mich nur auf die Themenüberschrift bezogen, und da geht es um "Unterschiede zwischen Word und INT".
Was man mit Word oder DWord noch alles anstellen kann, ist mir auch klar.

Was aber das Zahlenformat betrifft (und darum geht es meiner Meinung nach von Themenüberschrift her), ist WORD ein vorzeichenloses Zahlenformat von 0-65535 und INT ein vorzeichenbehaftetes Zahlenformat von -32768 bis 32767.

Das man mit WORD bzw. DWord alles auslegen kann, was man möchte (BCD, Dualzahl, HEX usw.) ist mir auch klar.


----------



## hucki (20 Juli 2017)

GUNSAMS schrieb:


> Damit widersprichst du dir doch selber.....



WORD sagt doch auch nur eindeutig, das es 16Bit sind. Mehr nicht.

INT sagt eindeutig, dass das Bit 16 des WORDs als -32.768 zu interpretieren ist.
UINT sagt eindeutig, dass das Bit 16 des WORDs als +32.768 zu interpretieren ist.
BCD sagt eindeutig, dass das Bit 16 des WORDs als +8 der 4. BCD-Stelle zu interpretieren ist.
Immer das gleiche Bitmuster des WORDs, nur unterschiedliche Formate.
WORD kann auch ein Bitmuster enthalten, das gar nicht interpretiert werden soll, weil es z.B. einfach nur zufällig nebeneinander befindliche Digitaleingänge sind.

UINT ist halt nur eine in der Vergangenheit recht häufige Interpretation des WORDs, weil in den älteren und zum Teil auch aktuellen Programmierumgebungen die Formatangabe UINT im Gegensatz zu INT nicht spezifisch verfügbar war/ist.


----------



## Blockmove (20 Juli 2017)

GUNSAMS schrieb:


> IWas aber das Zahlenformat betrifft (und darum geht es meiner Meinung nach von Themenüberschrift her), ist WORD ein vorzeichenloses Zahlenformat von 0-65535 und INT ein vorzeichenbehaftetes Zahlenformat von -32768 bis 32767.



Nimmt man es genau, dann ist WORD überhaupt kein Zahlenformat.
Wenn du einen Compiler mit strenger Typprüfung hast, dann kannst du mit WORD keine Rechenoperationen durchführen.
Mit WORD gehen nur logische Operationen.

Gruß
Blockmove


----------



## Thomas_v2.1 (20 Juli 2017)

GUNSAMS schrieb:


> Was aber das Zahlenformat betrifft (und darum geht es meiner Meinung nach von Themenüberschrift her), ist WORD ein vorzeichenloses Zahlenformat von 0-65535 und INT ein vorzeichenbehaftetes Zahlenformat von -32768 bis 32767.



Da es hier um Simatic S7 geht: Die S7-300/400 besitzt keine Rechenoperationen für vorzeichenlose Integerzahlen, weder für 16 noch für 32 Bit.

Du kannst ja mal das Ergebnis von

```
L W#16#EA60 // 60000
L W#16#2
/I
```

oder

```
L DW#16#B2D05E00 //3000000000
L DW#16#2
/D
```
ansehen.

Im Anhang die Definition der Datentypen in der IEC-Norm. Streng nach Norm kannst du mit Typen aus der ANY_BIT Klasse (BOOL, BYTE, WORD, DWORD) keine Rechenoperationen ausführen. Wenn die Sprache das zulässt, dann nur mit einer impliziten Typwandlung.


----------



## hucki (20 Juli 2017)

GUNSAMS schrieb:


> ist WORD ein vorzeichenloses Zahlenformat von 0-65535


Nein, das vorzeichenlose Zahlenformat von 0-65535 ist UINT.


----------

