Komisches Netzwerk

veritas

Level-1
Beiträge
207
Reaktionspunkte
14
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Step-Profis,

dieses Netzwerk ist aus einer S7-214, kann mir ma einer
sagen was das machen soll?

img.php



Das Eingangsbyte 1 ist der vorpanner für eine Zeit,
sprich ist E 1.0 belegt dann geht der Timer 1 sek.,
ist E1.1 belegt 2sek., ist E 1.2 belegt dann 4 sek. usw....


Kann mir ma einer sagen was das Netzwerk macht ?

lg
 
Also EB1 wird in MB24 geschoben, da MUL keine MBs annimmt, wird MB24 nach MW20 geschoben (SHR_B) und dann mit 10 multipliziert. Warum da SHR_B steht und nicht SHR_W weiss ich nicht. Kenne mich mit S7-200 nicht aus, ich habe nur gerade das Handbuch gelesen.
Wenn jetzt
nur E1.0 hoch ist, steht eine 1 in MW20
nur E1.1 hoch ist, steht eine 2 in MW20
usw.
 
Code:
      U     M     15.0                  //wenn der hier is
      SPBN  _001
      L     EB     1                    //wird das EB 1
      T     MB    24                    //ins MB 24 geladen

      L     W#16#8                      //anzahl der zu schiebenden stellen
      L     [B]MW[/B]    24                    //und das zu schiebende WORD
      SRW   
      T     MW    20                    //byte vertauschtes WORD in MW20 ablegen
      SET   
      SAVE  
      CLR   
      L     10                          //eine 10
      L     MW    20                    //mit dem vertauschten WORD
      *I                                //multiplizieren
      T     [B]MD[/B]    22                    //und ins MD 22 speichern
_001: NOP   0
der speicherübergreifende zugriff muß jetzt nur noch irgendwie sinn machen ... :rolleyes:

also: EB1 wird MB24 geschrieben, MW24 um 8 rechts [STRIKE]rotiert, das heißt MB24 hat den wert des vorangegangenen zykluses, diese vertauschten bytes, also in MB24 alter, in MB25 neuer wert des EB1[/STRIKE] [EDIT]geschoben und die frei werden stellen mit nullen gefüllt, also steht EB1 in MB25 und[EDIT] wird ins MW20 geschrieben - mit 10 multipliziert und in das MD 22, bestehend aus MB22 MB23 MB24 MB25 geschrieben, aber die integer-zahl belegt doch nur MW22, oder, so dass MB24 und MB25 davon unberührt bleiben :confused:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Es wird mit 10 multipliziert, da wahrscheinlich ein Timer mit einer Auflösung von 100 ms genommen wurde
bei TON T37 bis T63 oder T101 bis T255
bei TONR T5 bis T31 oder T69 bis T95
 
hallo,
im ersten baustein wird eb1 nach mb24 verschoben, danach wird mw 24 (da ist mb24 drinn) um 8 stellen verschoben damit eine vernüftige zahl bei raus kommt, mw20
danach wird mw20 mit 10 multipliziert, das ergebniss steht in md 22.
so denk ich:confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also Jungs tut mir ja leid, aber irgendwie kann ich euch nicht ganz folgen.

Vor allem bei folgenden Detail:
Der SHR_B - Befehl KANN so nicht funktionieren, weil nämlich VWs dranstehen,
was von Microwin beim übersetzen aber eindeutig als Fehler gemeldet wird.
Oder kann man das neuerdings irgendwo abschalten?

Ansonsten würde ich mit euch ja mehr oder weniger konform gehen!

Mfg
Manuel
 
Also Jungs tut mir ja leid, aber irgendwie kann ich euch nicht ganz folgen.

Vor allem bei folgenden Detail:
Der SHR_B - Befehl KANN so nicht funktionieren, weil nämlich VWs dranstehen,
was von Microwin beim übersetzen aber eindeutig als Fehler gemeldet wird.
Oder kann man das neuerdings irgendwo abschalten?

Ansonsten würde ich mit euch ja mehr oder weniger konform gehen!

Mfg
Manuel
Hatte ich hier ja auch schon vermutet
...Warum da SHR_B steht und nicht SHR_W weiss ich nicht. Kenne mich mit S7-200 nicht aus, ich habe nur gerade das Handbuch gelesen.
...

Aber die 200er sind nicht meine Welt:)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
erstmal Danke für eure Teilnahme.
Also ich sehe es genauso wie ihr,
nur das komische an dem Code ist
das dass MW als PT für einen TON
genutzt wird.
Wenn also EB = 1 ist welchen Wert
hat eurer Meinung nach das MW 24 ?


lg
 
hallo,
@ msb: mw nicht vw

Meinetwegen auch MW, ändert aber am Problem nicht, das der SHR_B.yte an den IN bzw. OUT-Parametern Byte erwartet.

@veritas
Wenn EB1 = 1, dann MW24 = 10, bedeutet also je nach Timernummer 1Sekunden, 0,1 Sekunde oder 0,01 Sekunde.

MD22 wird verwendet weil MUL ein Doppelwort am OUT erwartet,
MW24 ist somit dann das Low-Word des MD22.


Ändert aber nichts daran das das SHR_B da nicht sein kann, bzw. darf,
wenn dann schon SHR_W!


Also ich gehe jetzt mal von SHR_W aus:
EB1 -> MB24
Das SHR bewirkt unterm Strich:
MB24 -> MB21 (Low-Byte von MW20)

Dann MW20 * 10 = MD22, solange bei der Multiplikation ein Wert < 65535 rauskommt steht das Ergebnis in MW24 und MW22 ist "0".

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
und Mist, ich habe jetzt keine CPU da, sonst hätt ichs gleich mal simuliert - müßt ich nochmal hoch in die Werkstatt. Aber Microwin stößt bereits bei der Syntaxprüfung auf das erste Problem, mal ganz davon abgesehen das man für sowas ohnehin besser den Variablenbereich nutzt, da der Merkerbereich meines Wissens nach nur 30 Merkerbytes umfaßt. Wozu sone Trennung (Variablen/Merkerbereich) gut ist, erschließt sich mir genausowenig wie FBs und PBs bei einer S5.

Soweit mein Senf dazu.
Mario
 
hallo,
@ msb: hast recht, deshalb waren die wörter ja unterstrichen, geht so nicht.
mario muss uns das mal genauer erklären, weil er hat geschrieben der code würde aus einer 214er stammen:confused: :confused:
 
Hallo,
ich denke nicht, das die Büchse mit diesem Programm überhaupt anläuft, auch wenn man gerade in der Mathematik der 200er viel Bockmist verzapfen kann. Mal sehen ob ich mich heute abend mit meinem Beamer beschäftigen kann, wenn nicht probiere ich das mal mit einer 224, was außerdem auffällig ist - am ersten Baustein wird mb 24 schon angemeckert obwohl ich dazu erstmal keinen Grund sehe. Mein Programmiersystem (V4.0 SP2) im übrigen auch nicht.

Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
EB 1
0000 0001 ist 1
0000 0010 ist 2
0000 0011 ist 3
...
1111 1111 ist 255

MB 24 ist genaues abbild dessen

MW 24 sieht bei z.B. 4 so aus: MB 24: 0000 0100 MB25: xxxx xxxx

durch die verschiebung um acht stellen nach rechts und den transfer nach MW 20 sieht dieses MW 20 so aus: MB 20: 0000 0000 (ehemals MB 25 imt undefinierten zuständen) MB 21: 0000 0100

also hat MW 20 den DEZ-wert 4

mit 10 multipliziert macht 40s

sprich:
EB1 -> MD22
0000 0001 ist 1 -> 10s
0000 0010 ist 2 -> 20s
0000 0011 ist 3 -> 30s
...
1111 1111 ist 255 -> 2550s

oder kurz gesagt:
da für die multiplikation mit 10 ein wort benötigt wird, schiebt man die binärcodierte zahl vom EB ins lowbyte des zu multiplizierenden MW und füllt den rest mit nullen

veritas weiß das schon ... aber vielleicht interessiert es den rest der beitragsbeteiligten und -lesenden noch
 
Zurück
Oben