TIA Bit und Byte Nummern innerhalb von Words

RucksackSepp

Level-2
Beiträge
22
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

zu dem Thema hab ich bereits einige Beiträge gefunden, allerdings nicht die Antwort gefunden, welche ich darauf sicher anwenden kann. Zumal muss ich mir über mein Handeln sicher sein, da ich im Moment aus anderen Gründen die Software nicht testen kann.

Um einen Umrichter über PN zu Steuern bzw. seinen Status abzufragen habe ich jeweils einen Datentyp, wobei diese in ein reines Word fließen sollen.
Hier jeweils die beiden:
1713274034063.png1713274058197.png

Mit einem Slice-Zugriff sollen die Bits ausgelesen werden. Wenn ich die Datentypen oder stattdessen die Words in den Variablen mit einer Adresse Deklariere, sind dann die Bits 0..15 genauso wie hier auch beschriftet, oder ist es von oben nach unten .%X0..15.
zu Links:
Code:
Word.%X0..15
oder
Word.%X8..15,0..7

zu Rechts:
Wäre dann das Byte "bit8_15_ErrorCode" dann Byte 0 oder Byte 1? Demnach müssten dann die anderen Bits 0..7 oder 8..15 heißen.
Code:
Word.%B0, Word.X8..15
oder
Word.%B1, Word.%X0..7

CPU 1511-1PN (..AL03..)
TIA V18 Upd. 3
Bosch Rexroth EFC5610 mit PN Schnittstelle

Dankeschön und Viele Grüße!
 
Hast du optimierte Bausteine? Wenn ja, dann gibt es keine direkte Adresse sondern nur einen symbolischen Zugriff.

Ob die Daten dann im Intel- oder Motorolaformat kommen, dass müsstest du ausprobieren oder im Handbuch nachlesen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ganze wird in einem Instanz FB verarbeitet, welcher direkt an der Schnittstelle die IOs bekommt. Der FB arbeitet als optimierter Baustein. Format sollte Motorola sein. Allerdings bin ich mir mit dem hin und her schieben der Nummerierungen wie Bytes von links nach rechts und Bits genau anders rum sehr unsicher. Das Handbuch ist etwas mager mit den Informationen. Bei Bosch Rexroth überhaupt eins zu finden war schon Herausforderung genug :rolleyes:
Vielleicht kann mir jemand meine Annahme demnach bestätigen.
 
Mit einem Slice-Zugriff sollen die Bits ausgelesen werden. Wenn ich die Datentypen oder stattdessen die Words in den Variablen mit einer Adresse Deklariere, sind dann die Bits 0..15 genauso wie hier auch beschriftet, oder ist es von oben nach unten .%X0..15.
zu Links:
Code:
Word.%X0..15
oder
Word.%X8..15,0..7

zu Rechts:
Wäre dann das Byte "bit8_15_ErrorCode" dann Byte 0 oder Byte 1? Demnach müssten dann die anderen Bits 0..7 oder 8..15 heißen.
Code:
Word.%B0, Word.X8..15
oder
Word.%B1, Word.%X0..7
Ich würde einfach mal alles 1:1 zuweisen und schauen wie am FU die Signale ankommen.
 
Lässt sich ja aber schnell in einem Datentyp anpassen. Die Struktur der Steuer und Zustandsdaten geht ja immer aus dem Handbuch des Herstellers hervor ist ja einfaches abtippen und ggf. Die bytes tauschen.

Handbuch

Ab Seite 384 stehen die Prozessdaten.

Scheint ja mittlerweile sehr schwer mal das Handbuch aufzuschlagen und was nachzulesen. Dachte das würde mit dem Internet besser das die Handbücher immer verfügbar sind, was der Fall ist, aber selbst lesen und interpretieren scheint unmöglich geworden zu sein.

Viel Spaß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde das Status-Wort mit SCATTER in eine Struktur mit den 16 Bits kopieren. Die Anordnung der Bits müsste so passen. Falls nicht, müssen die Bits in den beiden Bytes nur in der Struktur getauscht werden, was während der IBN schnell gehen sollte.
 
Scheint ja mittlerweile sehr schwer mal das Handbuch aufzuschlagen und was nachzulesen. Dachte das würde mit dem Internet besser das die Handbücher immer verfügbar sind, was der Fall ist, aber selbst lesen und interpretieren scheint unmöglich geworden zu sein.
Im ersten und dritten Beitrag von mir ist doch ersichtlich, dass ich dass Handbuch benutzte, wie hätte ich sonst die Datentypen aufstellen sollen? Meine Aufgabe soll es nur eben sein, dass mit einem Slice-Zugriff und somit Datentyplos zu gestalten. Und genau da liegt mein anfangs beschriebenes Problem, welches Bit und Byte ist genau welches. Beide Varianten schrieb ich ja bereits dazu. Kann mir das bitte jemand bestätigen, welche Annahme von mit stimmt? Weil nur Bits mir in diesem Fall nicht weiterhelfen. Der Fehlercode ist z.B. ein Byte, da helfen mir die einzelnen Bits nicht weiter.
Anhang anzeigen 77262Anhang anzeigen 77263
zu Links:
Code:
Word.%X0..15
oder
Word.%X8..15,0..7

zu Rechts:
Wäre dann das Byte "bit8_15_ErrorCode" dann Byte 0 oder Byte 1? Demnach müssten dann die anderen Bits 0..7 oder 8..15 heißen.
Code:
Word.%B0, Word.X8..15
oder
Word.%B1, Word.%X0..7
 
In diesem Beitrag wurde folgende "Zeichnung" zur Veranschaulichung benutzt, welche sich mit der Beschreibung im Handbuch nicht ganz deckt.
Code:
|<-------- BYTE 0 -------->|<-------- BYTE 1 -------->|<-------- BYTE 2 -------->|<-------- BYTE 3 -------->|<-------- BYTE 4 -------->|<-------- BYTE 5 -------->|<-------- BYTE 6 -------->|<-------- BYTE 7 -------->|
|  7  6  5  4  3  2  1  0  |  7  6  5  4  3  2  1  0  |  7  6  5  4  3  2  1  0  |  7  6  5  4  3  2  1  0  |  7  6  5  4  3  2  1  0  |  7  6  5  4  3  2  1  0  |  7  6  5  4  3  2  1  0  |  7  6  5  4  3  2  1  0  |

|<--------------------- WORD 0 ---------------------->|<--------------------- WORD 2 ---------------------->|<--------------------- WORD 4 ---------------------->|<--------------------- WORD 6 ---------------------->|
| 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  |

                           |<--------------------- WORD 1 ---------------------->|<--------------------- WORD 3 ---------------------->|<--------------------- WORD 5 ---------------------->|
                           | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  |

|<------------------------------------------------ DWORD 0 ------------------------------------------------>|<------------------------------------------------ DWORD 4 ------------------------------------------------>|
| 31 30 29 28 27 26 25 24  | 23 22 21 20 19 18 17 16  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  | 31 30 29 28 27 26 25 24  | 23 22 21 20 19 18 17 16  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  |

                           |<------------------------------------------------ DWORD 1 ------------------------------------------------>|
                           | 31 30 29 28 27 26 25 24  | 23 22 21 20 19 18 17 16  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  |

                                                      |<------------------------------------------------ DWORD 2 ------------------------------------------------>|
                                                      | 31 30 29 28 27 26 25 24  | 23 22 21 20 19 18 17 16  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  |

                                                                                 |<------------------------------------------------ DWORD 3 ------------------------------------------------>|
                                                                                 | 31 30 29 28 27 26 25 24  | 23 22 21 20 19 18 17 16  | 15 14 13 12 11 10  9  8  |  7  6  5  4  3  2  1  0  |

1713333709667.png
Damit wäre es ja eher Bit 7..1; 0; 15; 14; 13; 12; 11; 10; 9; 8

EDIT:
Ich denke ich habs verstanden...
Der Slice Zugriff auf die Bits wäre hier Word.%X15..0 wie in der Tabelle auch. Wenn ich das Byte mit Bit 15..8 haben möchte wäre es Byte 0.
Wäre das so korrekt?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin RucksackSepp,

doch, es deckt sich.
nehmen wir das Word 0. Da ist das High-Byte das Byte 0 und das Low-Byte das Byte 1.

Hier die Adressen und Word-Bits mal von "oben nach unten":
Code:
High-Byte (0)
0.0 = Word-Bit 08
0.1 = Word-Bit 09
0.2 = Word-Bit 10
0.3 = Word-Bit 11
0.4 = Word-Bit 12
0.5 = Word-Bit 13
0.6 = Word-Bit 14
0.7 = Word-Bit 15

Low-Byte (1)
1.0 = Word-Bit 00
1.1 = Word-Bit 01
1.2 = Word-Bit 02
1.3 = Word-Bit 03
1.4 = Word-Bit 04
1.5 = Word-Bit 05
1.6 = Word-Bit 06
1.7 = Word-Bit 07
 
Wenn du einen Datentyp anlegst und auf die Startadresse legst sieht man doch was wo ist.
Wenn die Reihenfolge nicht passt muss man halt High -und Lowbyte tauschen.

Dafür im Umrichter schauen was er selbst als Status hat und dann sieht man doch ob sich das deckt.
Steuerrichtung kann man auch gut sehen, in dem man schaut ob das Bit Führung durch PLC an der richtigen stelle im FU ankommt.
 
Gibts denn einen mathematischen/informationstechnischen Hintergrund wieso man eingeführt hat, von rechts nach links zu inkrementieren/lesen/schreiben?
An sich ist es nachvollziehbar, von rechts nach links die Stellen zu benennen, so wie @Peter Wahlen oben schon beschrieben hat. Was meiner Meinung nach den Wurm rein bringt, ist das von links nach rechts durchnummerieren der Bytes/Words/DWords... Wobei das glaube ich die High Byte/Low Byte Sache bei Motorola ist. Nehme ich zumindest an.
 
Zurück
Oben