Sonstiges S5 Adressierung -> S7 Adressierung

Nico770

Level-1
Beiträge
41
Reaktionspunkte
0
Guten Tag

Beim einlesen in die Übersetzung einer Steuerung von einer S5 auf eine S7 komme ich an einem Punkt nicht weiter.
Soweit ich weiß sind in der S5 die DB´s Wortweise "gestaffelt", bei der S7 Byteweise.
Nun habe ich in der S5 einen DB mit 494 Wörtern. Dieser DB wurde in der S7 identisch einfach mit 494x dem Datentyp WORD aufgefüllt.
Nun wird in der S5 die Bitadresse 175.1 und 175.2 aufgerufen. In der S7 werden im gleichen Programmabschnitt die Bitadressen 351.1 und 351.2 aufgerufen.
Wie komme ich auf diese neue Adresse? Bei jeder Berechnung die ich angestellt habe, komme ich auf die Adressen 350.1 und 350.2, also ein Byte zu wenig.
Ich habe mir eine Excel Tabelle erstellt, wo ich mir eine Formel eingetragen habe, die die Wortadresse auf die Byteadresse umrechnet bei dir ich mir nach einigen Tests relativ sicher war, dass sie fehlerfrei ist. Bloß ich gelange auf Teufel komm raus nicht auf den Wert.

Die Adressen sind in zwei Zellen eingetragen, eine Zelle das Wort, die andere das entsprechende Bit.
Und so lautet die Formel für die ByteAdresse: =GANZZAHL((WORTADRESSE*16+BITADRESSE)/8)
und die Formel für die BitAdresse: =REST((WORTADRESSE*16+BITADRESSE);8).
Im Endeffekt multiplitziere ich also einfach die Wortadresse mit 16 und addiere die Bitadresse, so dass ich die gesamte Bitanzahl habe. Diese Teile ich dann durch 8 in eine Ganzzahl was mir die ByteAdresse geben sollte, und der Rest ist die BitAdresse.

Wie kommt der Programmierer also auf das letzte, mir fehlende Byte?
Vielleicht raucht mein Kopf auch einfach gerade zu sehr, und ich übersehe etwas zu offensichtliches...
Vielen Dank schonmal
 
Wort 175 in S5 ist in S7 Byte 350 und 351.

Die Bytes sind von S5 zu S7 getauscht.
 
Zuletzt bearbeitet:
Nun wird in der S5 die Bitadresse 175.1 und 175.2 aufgerufen. In der S7 werden im gleichen Programmabschnitt die Bitadressen 351.1 und 351.2 aufgerufen.
Wie komme ich auf diese neue Adresse? Bei jeder Berechnung die ich angestellt habe, komme ich auf die Adressen 350.1 und 350.2, also ein Byte zu wenig.l
351.1 und 351.2 sind richtig, denn DW 175 (S5) entspricht DW 350 (S7). Aber die BitNummern bei S5-DatenWorten gehen von 0 bis 15.
Die niederwertigen Bits 0 bis 7 des Wortes 350 stehen im DatenByte 351 und die höherwertigen Bits 8 bis 15 des Wortes 350 entsprechen den DatenBits 0 bis 7 in DatenByte 350.

Gruss, Heinileini
 
Denk zie in S5 ein DB habe mit welche grösser ist dann 256 Word stimmt die Adressierung in das oberste Bereich nicht mehr. In S5 kann man ein Passwort bis Adress 255 normal adressieren um das Bereich oben dw255 zu adressieren wurde OB180 angerufen .Wenn Mann diese OB Anruf wurde dass Bereich in der aktuellen DB verschoben mit mit der werd in Akku 1.
z.b.
AUF DB 99
L KF 256
SPA OB 180
L DB 0 //DW 0 = DW256 IN DB 99
T MW250
L KF 0
SPA OB180
AUF DB 99
L MW 250
T DW 0
Mit diese Code ist die Inhalt von DW 256 in DW 0 übertragen.

EDIT : diese beispiel ist false seihe beitrag 9

Joop
 
Zuletzt bearbeitet:
. . . um das Bereich oben dw255 zu adressieren wurde OB180 angerufen .
Davon habe ich noch nie gehört :oops:.
Gab es das als Lösung von Siemens und Siemens hat vergessen, mich darüber zu informieren?
Mitte der 80er Jahre hatte ich mit Siemens über die Adressierung von DL, DR, DW und DD > 255 "diskutiert" und vorgeschlagen, das BeSy dahingehend aufzubohren, dass die "indirekte" Adressierung per
B MW x
L DW 0
bzw.
B DW x
L DW 0
auch mit DW-Nrn > 255 in "MW x" bzw. "DW x" genau das tut, was man erwarten würde.
Aber das war anscheinend zu viel verlangt und über den (viel zu umständlichen) WorkAround per OB180 haben die mich dennoch nicht aufgeklärt.

Oder ist das eine Lösung eines S5-geschädigten ProgrammierKollegen, der sich einen OB180 gestrickt hat, der die von Dir beschriebene Eigenschaft hatte?
WorkArounds gab es - allerdings auch umständlich und unter Verwendung von SystemBefehlen, die natürlich nicht von CPU-Typ zu CPU-Typ portierbar waren.
Diese SystemBefehle konnte man aber als "normaler" Anwender nicht in OBs verwenden. Also kam diese Lösung vermutlich doch von Siemens?

Gruss, Heinileini

PS:
ParameterÜbergaben im Akku an einen Baustein à la
L KF 256
SPA OB 180
waren eigentlich nicht "Siemens-typisch". Sie funktionierten bei manchen CPUs zwar verlässlich, aber eben nicht bei allen - da konnten "unerklärliche" nicht sperrbare Interrupts dazwischenfunken.
 
Zuletzt bearbeitet:
Bei ein 115u mit ein cpu bis 944 kann man die DB max bis DW255 deklariere. Bei der 945 weiß ich nicht habe ich nie mit gearbeitet Aber bei ein 135U mit ein928B CPU hab man die OB180 und die Adressierung zu verschieben.

ich habe das handbuch nogmal runtergeladen. https://cache.industry.siemens.com/dl/files/940/1085940/att_1155/v1/pa928b.pdf
und ich muste meine beitrage #7 etwas korrigieren. Nach anruf von OB180 wurde das adress bereich verschoben mit der inhalt von akku 1 L aber um das adres bereich wieter von DW 0 zu haben muste man die DB erneut aufslagen.

AUF DB 99
L KF 256
SPA OB 180
L DB 0 //DW 0 = DW256 IN DB 99
[FONT=Verdana, Arial, Tahoma, Calibri, Geneva, sans-serif]AUF DB 99[/FONT]
T DW 0
Mit diese Code ist die Inhalt von DW 256 in DW 0 übertragen.

 
Zuletzt bearbeitet:
Danke, Joop, für die "intere-müsante" pdf-Datei!
Anscheinend hat Siemens doch ein gewisses Mass an HandlungsBedarf erkannt und eine "OBiginelle" Lösung geliefert.
Ich hatte einmal mit einer 155U zu tun. Ich glaube, die kannte auch diverse solcher OB-Lösungen. Leider hatte ich aber damals keine Zeit, sie genauer zu studieren.
Ironischerweise war das ausgerechnet die Maschine, bei der ich einen Siemens-FB für die WF470 knacken musste, der DW > 255 benutzt hat.

Gruss, Heinileini
 
Zurück
Oben