Step 5 S5 nach S7 (B U Befehl)

b_operation-jpg.9437



Quelle
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also quasi M204.0 && M0.0?
Nein, im MW steht eine Adresse


Ich weiß nicht mehr aus dem Kopf, wie genau man die Bitadresse angeben mußte, mit Bits hab ich das nie gemacht, immer nur mit Worten.
Bei Worten wäre es eine 100 für MW100, wenn man das laden wollte.
Für Bits findest du das sicher in den Berechnungen davor, die wir nicht sehen.
Bei Bits wird dann nicht M0.0 genommen, sonderen M100.0.
Wenn dann das Bit M100.0 True ist, wird zur Sprungmarke M002 gesprungen.

Das war bei S5 so eine Art indirekte Adressierung.
Be S7 läuft das über Pointer. Suche mal in der Hilfe von Step7 nach "indirekte Adressierung".
 
dann entspricht die abfrage nach dem B-Befehl
U M 1230.0
also 0.x wird ersetzt durch 1230.x

genauso geht das auch mit Byte oder Word
B MW204 <---1230
L MB0 <--- wäre L MB1230
L MW0 <--- wäre L MW1230

geht natürlich auch andersrum
= M0.0 <- 1230.0
T MB0 <-1230
T MW0 <-1230
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab die betreffende Seite im Handbuch der 115 gefunden:
(https://www.manualslib.de/manual/277301/Siemens-S5-115U.html?page=252#manual)

8.2.9

Bearbeitungsoperation​

Mit der Operation "B" können STEP 5 - Anweisungen "indiziert" bearbeitet werden. Sie haben da-
durch die Möglichkeit, den Parameter eines Operanden während der Bearbeitung des Steuerungs-
programms zu ändern. Die Operation wird in Tabelle 8.19 und anhand eines Beispiels beschrieben.
Tabelle 8.19 Übersicht der Bearbeitungsoperation
Operation
Operand
B
Kennzeichen
MW
DW
Bearbeitung
Die Anweisung "Bearbeite Merker- oder Datenwort x" ist eine 2-Wort-Anweisung, die unab-
hängig vom VKE ausgeführt wird.
Sie besteht genauer gesagt aus zwei zusammengehörenden Anweisungen:

In der ersten Anweisung steht die Bearbeitungsoperation und die Angabe eines Merker- oder
Datenwortes.

In der zweiten Anweisung legen Sie die Operation und das Operandenkennzeichen fest, die
vom Steuerungsprogramm bearbeitet werden sollen. Als Parameter müssen Sie hier 0 oder 0.0
eingeben.
Hinweis
Wird bei CPU 944 ein anderer Wert als 0 oder 0.0 angegeben, wird dieser Wert durch 0
oder 0.0 substituiert!
Das hier ist besonders interessant:
Das Steuerungsprogramm arbeitet dann mit dem Parameter, der in dem Merker- oder Daten-
wort abgelegt ist, das von der ersten Anweisung aufgerufen wurde. Sollen binäre Operationen,
Eingänge, Ausgänge oder Merker indiziert werden, so geben Sie im High-Byte dieses Wortes die
Bitadresse, und im Low-Byte die Byteadresse an.

In allen anderen Fällen muß der High-Byte "0" sein.

1230 dez = 04CE hex
CE hex = 206 dez
04 hex = 04 dez

Also sollte das M206.4 sein.

@Kevin3005

Du mußt nun aber schauen, was die eingtlich in Step5 machen wollen, das verstehen und das in Step7 "nachbauen".
Also mußt du auch herausbekommen, in welchem Bereich sie insgesamt arbeiten, denn es muß ja noch andere Merker geben, die sie so adressieren, sonst bräuchte es den Bearbeite-Befehl nicht.
U.U. ist es sogar sinnvoller das Stück komplett neu zu programmieren, weil es in Step7 in anderer Weise vielleicht viel einfacher umsetzbar ist.
 
Zuletzt bearbeitet:
oh ja. jetzt wo du das erwähnst.
ich habe das was dunkel im kopf.
ich habe vor laaaanger zeit mal das problem gehabt, dass ich versucht habe einen bytebereich über 125 anzusprechen.
das ging nicht. aber so genau kann ich mich nicht mehr erinnern. ist min 20 jahre her
 
1230 dez = 04CE hex
CE hex = 206 dez
04 hex = 04 dez

Also sollte das M206.4 sein.
Ich glaube das passt nicht, kann ich morgen evtl. mal testen was dabei rauskommt da ich leider keine S5 mehr Zuhause hab;)
Was wäre denn wenn statt 04h da eine 09h steht?

Meiner Meinung nach musst du das Bitmuster (KM) betrachten, das entsprechende Bit X.0 müsste abgefragt werden. Aber kein Gewehr auf mich richten denn ich gebe keine Gewähr darauf...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann nur oben auf den Text aus dem Handbuch der 115 verweisen, da steht es ja eigetlich klar drin:

Sollen binäre Operationen,
Eingänge, Ausgänge oder Merker indiziert werden, so geben Sie im High-Byte dieses Wortes die
Bitadresse, und im Low-Byte die Byteadresse an.
Wenn eine 09 drin steht kommt höchstwahrscheinlich Mist raus, es dürfte nur 0 bis 7 erlaubt sein.
 
Hallo zusammen,

ich hänge derzeit an folgendem Programmausschnitt aus dem ich nicht ganz schlau werde:

B MW 204 ;BITADRESSE
U M 0.0 ;STOERSPEICHERBIT
SPB =M002
SPA =M003


Hoffe jemand kann mich "erleuchten"

Ich kenne sonst nur die Bearbeitungen mit darauffolgendem L DW etc...
Hab mal schnell WinSPS heruntergeladen und "gespielt". So wie ich das sehe wird der M 0.0 garn nicht beeinflusst. Ist der M 0.0 "1" wird an der Marke M002 weiter gearbeitet sonst an der Marke M003.
Um das zu sehen was da passiert, wird mindestens das ganze Netzwerk oberhalb B MW 204 betrachtet werden...
 

Anhänge

  • 1230.png
    1230.png
    38,5 KB · Aufrufe: 25
  • FFFF.png
    FFFF.png
    38,4 KB · Aufrufe: 24
Ich kann nur oben auf den Text aus dem Handbuch der 115 verweisen, da steht es ja eigetlich klar drin:


Wenn eine 09 drin steht kommt höchstwahrscheinlich Mist raus, es dürfte nur 0 bis 7 erlaubt sein.
Wäre dann M206.9 nicht entsprechend M207.1?


@rar-101 Ich habe das ganze mal für KF24 simuliert. Die Adresse die abgefragt wird wäre M207.7 wenn ich das Bit vorher setze wird auch die Bedingung TRUE

Simuliere ich das ganze für die Zahl 12 würde das Bit M206.11 abgefragt werden. Im MW206 steht 0BCE, das 11. Bit ist "1" und die Bedingung ist TRUE
 
Zuletzt bearbeitet:
Ich kann nur oben auf den Text aus dem Handbuch der 115 verweisen, da steht es ja eigetlich klar drin:


Wenn eine 09 drin steht kommt höchstwahrscheinlich Mist raus, es dürfte nur 0 bis 7 erlaubt sein.
Hier sollte man dann vor der Bearbeite-Funktion auf Plausibilität prüfen, so dass nur Werte von 0-7 im Byte stehen können
 
In den vorherigen Berechnungen hat MW204 am Ende den Wert 1230 dezimal
1230 dezimal ist 04CE hexadezimal. 04 (das höherwertige Byte) ist die BitNummer 4 und CE (das niederwertige Byte = 206 dezimal) die "ByteNummer" 206.
Maximal möglich als "ByteNr" ist 255, egal, ob ByteNr (bei E, A, M oder S) oder WortNr (bei D, DL, DR, DW, DD) oder ZählerNr. oder TimerNr. oder BausteinNr.

Edit:
Statt L KF 1230 könnte man besser lesbar L KY 4, 206 schreiben.

Bezüglich der S-Merker hatte ich anscheinend gelogen - sorry.
 
Zuletzt bearbeitet:
Zurück
Oben