TIA Unterschied Array [1 .. 20] of Byte bzw. Char --> Konvertierung ?

Hesse

Level-2
Beiträge
933
Reaktionspunkte
170
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
was ist der Unterschied zwischen einem

Array [1 .. 20] of Byte

und
Array [1 .. 20] of Char ? (1)


Beide sind doch "je Stelle" ein Byte,

und im Array [1 .. 20] of Char steht doch zum Beispiel für ein „A“ =65 derselbe Ascii Code wie im

Array [1 .. 20] of Byte auch stehen würde

Wo ist mein Gedanken Fehler? (2)


Wie bekomme ich ein Array [1 .. 500] of Char in eine Array [1 .. 500] of Byte gewandelt oder kopiert ?
Muss ich da jede Stelle einzeln mit Konvertierung Char CHAR_TO_BYTE bearbeiten? (3)

"Overlay" oder "AT" gibt es für Datenbausteine offensichtlich nicht , oder doch ? (4)




S7-1200 / Tia13 CPU1215C
 
Zuletzt bearbeitet:
Für die SPS ist alles nur "Strom fließt" oder "Strom fließt nicht", also 1 oder 0.
Erst durch die Deklaration als Char weiß die SPS, dass der Wert als ASCII-Code zu interpretieren ist.

Im DB gibt's auch kein CHAR_TO_BYTE. ;)
Die Umwandlung mittels At must Du also analog dazu auch in einem Programmbaustein machen und nicht im DB.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im DB gibt's auch kein CHAR_TO_BYTE. ;)
Die Umwandlung mittels At must Du also analog dazu auch in einem Programmbaustein machen und nicht im DB.

Das ist mir klar das die Umwandlung dann in einem Programbaustein erledigt werden muss.
Stehle aber doch irgendwie auf dem Schlauch.
Ich finde nicht mal CHAR_TO_BYTE (FUP bei der 1200er)

Das bedeutet der Weg geht dann auch nur über "AT" in der Baustein Schnittstelle ?
Es gibt kein Befehlt
Array [1] of Char --- > CONVERT --- > Array [1] of Byte


EDIT:
Char ---- > Convert -----> USint gibt es wohl ..... mal sehen
 
Zuletzt bearbeitet:
Ein Byte ist eine Speichergröße, welche 8 Bit aufnehmen kann. Ein Char ist eine Interpretation des Inhalts eines Bytes als Datentyp Char.

Wofür brauchst Du denn die Konvertierung von Byte zu Char? Kann man in TIA nicht einfach von Byte zu Char MOVEn?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich braue es andersrum, von Char zu Byte und das ging per move bei mir nicht.
Mag sein das dies auch per Char zu USint geht, daran habe ich am WE erst ich gedacht.
Kann es erst später testen.

Gelöst habe ich das schon mal aber mir gefällte es so noch nicht.
(Mache es jetzt in einer Schleife jedes Byte einzeln und brauch den Doppelten Speicherbereich)
Brauche tu ich das ganze für dem Anhang am Tmail_C Baustein der will kein
Array [1 .. 20] of Char akzeptieren obwohl es nach meinem Verständnis, kein unterschied fürs Versenden macht zu Array [1 .. 20] of Byte .
 
Ich kenne mich mit der aktuellen TIA nicht im Detail aus aber Char bezeichnet einen einzelnen Buchstaben und der muss nicht zwangsläufig ein Byte sein.

Auf dem PC hatte man sich auch lange damit rumgeärgert, dass man mit 256 verschiedenen Buchstaben nicht die ganze Welt mit allen ihren Sprachen bedienen kann. So sind in fast allen PC Programmen heute die Buchstaben 16 Bit breit.

Da Siemens ja auch nicht nur hier verkaufen will, hat man zumindest im Compiler schon mal die Sperre in TIA eingebaut.

Übrigens in Codesys wird der feine Unterschied so vollzogen, wie ich meine mich zu erinnern. In 'Hallo hier bin ich' ist der einzelne Buchstabe 8 Bit, in "Hallo hier bin ich" ist der Buchstabe 16 Bit.
 
Ich kenne mich mit der aktuellen TIA nicht im Detail aus aber Char bezeichnet einen einzelnen Buchstaben und der muss nicht zwangsläufig ein Byte sein.

Auf dem PC hatte man sich auch lange damit rumgeärgert, dass man mit 256 verschiedenen Buchstaben nicht die ganze Welt mit allen ihren Sprachen bedienen kann. So sind in fast allen PC Programmen heute die Buchstaben 16 Bit breit.

Da Siemens ja auch nicht nur hier verkaufen will, hat man zumindest im Compiler schon mal die Sperre in TIA eingebaut.

Übrigens in Codesys wird der feine Unterschied so vollzogen, wie ich meine mich zu erinnern. In 'Hallo hier bin ich' ist der einzelne Buchstabe 8 Bit, in "Hallo hier bin ich" ist der Buchstabe 16 Bit.

Dann musst du mir erklären in welchen Sprachen ein Char 16bit hat? Ich kenne nämlich keine einzige, bin jedoch sehr neugierig welche es sind...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann musst du mir erklären in welchen Sprachen ein Char 16bit hat? Ich kenne nämlich keine einzige, bin jedoch sehr neugierig welche es sind...

Jetzt nicht gerade eine typische Sprache für SPS aber Java wäre ein Beispiel
aus http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html:

char: The char data type is a single 16-bit Unicode character. It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive).
 
Hier die Seite von Microsoft

Hier ist die Entwickler Seite von Microsoft

char.jpg


Sogar Visual Basic gehört dazu.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sobald Unicode ins Spiel kommt haben die Zeichen immer 16 Bit...
Aus http://unicode.org/faq/utf_bom.html

Q: Is Unicode a 16-bit encoding?
A: No. The first version of Unicode was a 16-bit encoding, from 1991 to 1995, but starting with Unicode 2.0 (July, 1996), it has not been a 16-bit encoding. The Unicode Standard encodes characters in the range U+0000..U+10FFFF, which amounts to a 21-bit code space. Depending on the encoding form you choose (UTF-8, UTF-16, or UTF-32), each character will then be represented either as a sequence of one to four 8-bit bytes, one or two 16-bit code units, or a single 32-bit code unit.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da ist so nicht richtig! In Utf-16 hat jedes zeichen mindestens 16bit, (kann aber auch mehr), in utf-8, hat jedes zeichen mindestens 8 bit! visual basic nutzt utf-16, das heist aber nicht das ein zeichen immer nur 16 bit hat!
 
Zurück
Oben