Befehlsabschnitt S7

geduldiger

Level-1
Beiträge
285
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo kann mir jemand vielleicht diesen befehlsabschnitt ins deutsch übersetzen bzw erläutern? also damit meine ich jetzt nicht was jeder einzelne befehl macht sondern eher die gesamtfunktion.

die einzelnen befehle versteh ich so:

AUF DB 13 // db aufruf
T #conv_akku1 //lade temp variable
L STW // statuswort laden
T #conv_stw // lade temp. variable
L MB 153 // lade Merkerbyte
SLW 4 // schiebe nach links im akkuu, oder so
LAR1 // lade adressregister von akku 1
L #conv_stw // usw
T STW // usw
L #conv_akku1 //usw
L DBW [AR1,P#0.0] // irgendwas mit pointer
AUF DB 10
T DBW 42

so jetzt hab ich aber leider die gesamtfunktion von dem ding net kapiert?:confused:

mfg
 
Der Baustein schreibt den Inhalt von DB13DBW [WORT- Adresse im MB153] in den DB10DBW42

Ansonsten werden Akkuinhalt und STW gerettet und zurückgeschrieben.
Da wollte einer ganzsicher gehen dass "sein" Baustein nichts anrichtet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
gekürzt mit (im prinzip) selber Funktion:
Code:
AUF DB 13 // db aufruf 
L MB 153 // lade Merkerbyte
SLW 4 // schiebe nach links im akkuu, oder so
LAR1 // lade adressregister von akku 1 
L DBW [AR1,P#0.0] // irgendwas mit pointer
T DB10.DBW 42
godi
 
Interessieren würde mich aber noch was der gute Mann sich dabei:

Code:
AUF DB 13 // db aufruf 
L MB 153 // lade Merkerbyte
[B] SLW 4 [/B]// schiebe nach links im akkuu, oder so
LAR1 // lade adressregister von akku 1 
L DBW [AR1,P#0.0] // irgendwas mit pointer
T DB10.DBW 42

gedacht hat. Als SLW3 wäre es an dieser Stelle OK, aber warum 4?

Mfg
Manuel
 
Warum SLW 4?
Somit ist die Adresse das doppelte. Hier wird ein Wort Adressiert und somit brauch er nur immer 1 im MB hochzählen.
Wert 0 -> Adresse 0.0
Wert 1 -> Adresse 2.0
Wert 2 -> Adresse 4.0
usw...

Das kann ich mir vorstellen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum SLW 4?
Somit ist die Adresse das doppelte. Hier wird ein Wort Adressiert und somit brauch er nur immer 1 im MB hochzählen.
Wert 0 -> Adresse 0.0
Wert 1 -> Adresse 2.0
Wert 2 -> Adresse 4.0
usw...

Das kann ich mir vorstellen.

Genau so ist es , SLW 1 multipliziert Wert (siehe Godi) mit 2
und SLW 3 überführt das Ganze ins Pointer-Format.
Daraus kann man auch gleich SLW 4 machen.
Da kann man mal sehen, das eine erklärende Notiz hinter
solch einem Ausdruck viel Arbeit und Kopfzerbrechen
sparen würde. :ROFLMAO:

PS: SLW1 bewirkt das Selbe wie:

L Wert
L 2
*I
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein weil da hats indirekte adressierung in diesem ausmaße nicht gegeben.
Da hats nur den befehl B gegeben der im prinzip wie jetzt die speicherindirekte adressierung ist. (glaube ich halt ;) )

Ja sicher aber die Adressierung war da IMMER wortweise....
Da gabs genauso Schleifen

B MB153
L DW0

hat dasselbe gemacht
 
Mit der Vermutung von borromeus, es wär einmal ein S5 programm gewesen, liegt er völlig richtig. Das programm wurde von mir konvertiert;)

der alte code lautete:

:A DB 13
:B MW 152
:L DW 0
:A DB 10
:T DW 21

Die Konvertierung an sich lief über das Programm "S5 Datei konvertieren".
 
Zuletzt bearbeitet:
Mit der Vermutung von borromeus, es wär einmal ein S5 programm gewesen, liegt er völlig richtig. Das programm wurde von mir konvertiert;)
Die Konvertierung an sich lief über das Programm "S5 Datei konvertieren".

Ok! Ich gebe mich geschlagen! :rolleyes:
Da sind halt 3,5 Jahre SPS Erfahrung im selbsstudium doch zu wenig! :ROFLMAO:

godi
 
Zurück
Oben