S5 Datenbaustein verwendung

CZach001

Level-1
Beiträge
65
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
gibt es bei der S5 die möglichkeit Einzelne Bit´s eines Datenbausteins anzusprechen?

Bei der S7 funtioniert das so oder?

L 1
T Db0.dbx0.0

Gibt es diese möglichkeit bei der S5 Auch, oder kann ich nur Bereich wie Byte, Wörter oder Doppelwörter in dem Datenbaustein beschreiben.

Mfg
CZach
 
Hallo,
bei der S7 funktioniert das so :
Code:
U M1.1
= DB10.DBX0.0
und bei den S5-Steuerungen ist das von der CPU abhängig.
Genau weiß ich das auch nicht mehr kann man aber ggf. nachlesen. Pauschal würde ich mal sagen : S5-115U ab CPU944 und S5-135U ab CPU928. Das ist aber so aus der Hüfte geschossen ...

Die Syntax ist dann auch etwas anders ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo CZach,

Dein Bsp. ist so leider nicht richtig, Du kannst Lade und Transfer-Operationen nicht bei Bits verwenden.
Du kannst Bits Setzen oder Rücksetzen oder Zuweisen:
Code:
U M 0.0
S DBX0.0
R DBX0.1
= DBX0.2

In der S7 kannst Du in dem Du DB0. vors DBX schreibst das Bit im DB direkt ansprechen.

Das geht bei der S5 nicht. Da musst Du zwingend vorher den DB öffnen mit:
Code:
A DB 2

AX DX 3

DB's oder DX's kleiner als 2 solltest Du in der S5 nicht benutzen, sie sind für Systemfunktionen reserviert.

Ein Bit spricht man in der S5 so an:
Code:
U M 0.0
= D 0.0
S D 0.1
R D 0.2

Zu beachten ist hier auch noch, dass in der S5 DB's wortweise organisiert sind.

Grüße
Gebs
 
Hallo,
ich kenn das so:

A DB15 //Aufruf Datenbaustein
L DW1 //Lade Datenwort
T MW200 //Transfer nach Merkerwort

U M200.0 //usw. Merker auswertbar

Gruß Imudo
 
Das bedeutet, wenn ich in S5 einen Ein VKE in einen Datenbaustein Schreiben will:

A DB10

U M0.0
= D0.0

Bedeutet das Bit 0.0 des DB10 nimmt den gleichen zustand an wie der Merker 0.0


Oder ?????
 
Zurück gehts das so:

S M 200.0
L MW 200

A DB 0
T DW 0

war das deine Frage?

Übrigens MW 200 besteht rechts aus Byte 201 und links Byte 200.
 
S M 200.0
L MW 200

A DB 0
T DW 0
Hier wäre noch der Byteversatz zu beachten:
Code:
S M 200.0
[FONT=Courier New]          Byte 200 | Byte 201[/FONT]
[FONT=Courier New]L MW 200 : 00000001 00000000[/FONT]
[FONT=Courier New]A DB 0[/FONT]
[FONT=Courier New]T DW 0 :   00000001 00000000[/FONT]
[FONT=Courier New]     Bit: 15      8 7      0[/FONT]
In dem Beispiel hättest du das Bit 8 vom Datenwort 0 gesetzt.
Für das Bit 0 müsstest du den Merker 201.0 setzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
gibt es bei der S5 die möglichkeit Einzelne Bit´s eines Datenbausteins anzusprechen?
Ach ja zur Kernfrage:

Gebs Beispiel gilt nur für S5-135 aufwärts.

S5-100 bis 103 kein direkter Zugriff möglich ( nicht gesichert )

ab S5-95U + S5-115U
Code:
   AUF DB 10
   P D 0.0  // Entstpricht einem Und > Muss aber immer eine Erstabfrage sein
 
   PN D 0.0 // Entstpricht einem Und Nicht > Muss aber immer eine Erstabfrage sein
 
   SU D 2.9 // Enstpricht einem "Setzen"
 
   RU D 2.15 // Enstpricht einem "Rücksetzen"
 
Ach ja zur Kernfrage:

Gebs Beispiel gilt nur für S5-135 aufwärts.

S5-100 bis 103 kein direkter Zugriff möglich ( nicht gesichert )

ab S5-95U + S5-115U
Code:
   AUF DB 10
   P D 0.0  // Entstpricht einem Und > Muss aber immer eine Erstabfrage sein
 
   PN D 0.0 // Entstpricht einem Und Nicht > Muss aber immer eine Erstabfrage sein
 
   SU D 2.9 // Enstpricht einem "Setzen"
 
   RU D 2.15 // Enstpricht einem "Rücksetzen"

Ergänzung:
SU : Setze Unbedingt, also VKE ist egal
RU : RückSetze Unbedingt, VKE ebenso egal

Manche späteren S5-115 können jedoch auf D x.y lesend und schreibend zugreifen:
U D 1.2
= D 4.15
welche das sind kann man dem Tabellenheft entnehmen oder ausprobieren. AG-Stop: dann gehts nicht.

Deshalb die Lösung (wie weiter oben)
L DW oder DL oder DR
T MW oder MB
bit schubsen
M wieder in D schreiben.

Weiterer Grund für die Merkerlösung:
SU, RU, P D und PN D können je nach CPU echt lange(!) dauern.
 
Ergänzung:
SU : Setze Unbedingt, also VKE ist egal
RU : RückSetze Unbedingt, VKE ebenso egal

Manche späteren S5-115 können jedoch auf D x.y lesend und schreibend zugreifen:
U D 1.2
= D 4.15
welche das sind kann man dem Tabellenheft entnehmen oder ausprobieren. AG-Stop: dann gehts nicht.

Deshalb die Lösung (wie weiter oben)
L DW oder DL oder DR
T MW oder MB
bit schubsen
M wieder in D schreiben.

Weiterer Grund für die Merkerlösung:
SU, RU, P D und PN D können je nach CPU echt lange(!) dauern.

Und zwar wirklich lange !!
Ausserdem müssen die SU/RU-Befehle umsprungen werden, wenn sie nicht ausgeführt werden sollen (nicht VKE-abhängig) und sind nur in FBs nutzbar.

Die Merkerlösung ist da besser.
Allerdings wurde zu S5-Zeiten mangels Temp-Variablen oft der Merkerbereich ab 200 als "Schmiermerker" eingesetzt.
Dies war eine ungeschriebene Regel, selbst Standard-FBs vom grossen S waren damit geschrieben.
Also vor Benutzen der Merker diese erst versorgen (wie Temp in S7).

Gruß Roland
 
Zurück
Oben