Kleine Sektflaschen Hochzeit
Mal angenommen Du möchtest einen Button sowohl als Hardware als auch auf einer Visu anlegen, so lege ich normalerweise einmal den physikalischen Eingang an z. B: I_x_Eingang1 AT%IX0. 0:BOOL; (* Taster S0. 0, Maschine start *) Zusätzlich lege ich für die Visu eine Variablenliste an, darin hieße der entsprechende Eintrag dann Visu_x_Button1:BOOL; (* Visu-Taster xyz, Maschine start *) <- das xyz ist dann natürlich ein eineindeutiger Bezeichner Im Programm kannst Du nun beide "sauber" ver-odern und hast lesbaren Code. Das hilft auch beim Fehlersuchen wenn Du so unterscheiden kannst, ob Dein Signal jetzt vom Eingang oder von der Visu kommt. Grüße Christian #4 Hallo Ihr beiden, danke für die Hilfe. SPS Adressierung. Werde es so machen wie von Euch beschrieben. Benno
Für einige Anwendungen ist das Verfahren der speicher-indirekten-Adressierung nicht flexibel genug. Daher gibt es in der CPU zwei spezielle Register (AR 1 und AR2, Adressregister 1 u. 2. ), mit deren Hilfe der Index erst während des Zugriffs berechnet wird. Vor der ersten Benutzung der Adressregister müssen diese mit einem Zeiger auf einen Operanden geladen werden. Wenn Sie auf den Operanden E 5. 6 zugreifen wollen, programmieren Sie: LAR1 P#5. 6 // Lade Pointer auf "irgendwas" 5. 6 in AR1 Jetzt steht die Adresse 5. 6 im Adressregister 1. Den Eingang fragen Sie nun mit folgender Operation ab: U E[AR1, P#0. 0] Wollen Sie aber die Adresse E 5. 7 abfragen, so programmieren Sie: U E[AR1, P#0. 1] Der Pointer nach dem Komma wird zu dem Wert im Adressregister 1 addiert und das Resultat als Byte- und Bit-Nummer des Eingangs interpretiert. Indirekte adressierung sps e. Dabei wird berücksichtigt, dass Bytes nur 8 Bits haben, Bit 5. 9 wird daher zu Bit 6. 0. Wenn Sie jetzt U E[AR1, P#0. 2] programmieren, wird der Eingang 6. 0 abgefragt.
#10 @dtsclipper Ich habe da leichte Zweifel, dein MW hat nicht das korrekte Pointerformat, hast du das mal getestet? Oder kann man das so machen, ich hab das in dieser Weise noch nie verwendet?! @Andreas Verwende besser SLD 3 statt SLW 3, da das sonst bei sehr großen Adressen nicht funktioniert, der Pointer hat ja 4 Byte! #11 @ RALLE: Mach mich nicht schwach... Laut Handbuch sollten es Doppelwörter sein... Ich jags mal fix durch den Simulator und melde mich dann... dtsclipper #12 Welcher Gaul hat mich da blos geritten... Habs geändert. #13 Hallo zusammen ich, ich bin gerade dabei mich auch mal an indirekter Adressierung zu versuchen. S5-135U indirekte Adressierung - SPS-Treff.de. Habe leider annähern keine Erfahrung mit AWL programmierung, nur leider geht es ja nicht anders. Ich habe mir den Zitierten Ausschnitt nun erstmal geschnappt und den einfach in mein Netzwerk eingefügt. Natürlich leichte Adressen Anpassungen. Nun bekomme ich immer die Meldung: FC konnte nicht kopiert werden. Unter "Details" steht dann: (D280) Fehler bei der Übersetzung eines Bausteins in S7-300 CPU.
EW 0 = EB 0 und EB 1 EW 2 = EB 2 und EB 3 EW 4 = EB 4 und EB 5 Du könntest aber auch die Bytes 1 & 2 ansprechen und das würde das Eingangswort 1 ergeben wobei ungerade Zahlen eher unüblich sind. Hoffe ich konnte deine Frage beantworten und wenn nicht las es mich Wissen. mit freundlichen Grüßen Rene Dorian sagt: Hallo Rene, ich habe eine Frage und zwar wie komm man darauf, wen man EW 0 und EW 2 hat auf ED 0 nimmt man immer die kleinere Zahl oder die Gerade Zahl, weil im zweiten Beispiel gibt es ein EW 8 und EW 10 diese Zahlen sind beide gerade. Nach was muss ich gehen? Indirekte adressierung s7 1200 beispiel. MfG, Dorian Rene sagt: Hallo Dorian, man kann sich das nicht ganz aussuchen, was man nimmt:). Es ist so das ein Doppelwort (z. B. ED0) eine Gesamtdatenbreite von 32 einzelnen Bit hat. Wenn du aber nur die ersten 16 Bit dieses Doppelwort betrachtest, wäre es das Eingangswort 0. Die nächsten 16 Bit sind dann folglich das EW2 weil die ersten 16 Bit ja schon "verwendet" werden. Im Prinzip hast du aber schon gut erkannt, das du die niedrigere Zahl betrachtest.