Datenbaustein richtig anlegen

BastiMG

Level-1
Beiträge
266
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

wie lege ich einen Datenbaustein richtig an?

Ich habe folgenedes Problem, ich muss zwei Werte vergleichen. Einmal das MW30 und den Wert 10 den ich in einem Datenbaustein hinterlegen muss und der dort dann auch geändert werden kann!

Mein Programm lautet

L MW30
L DB1.DBB 0
>=10
=M10.1

Nur leider schreibt mir dann die CPU um Simulationsmode mit PLCSIM das die Aweisung nicht bearbeitet wird.
Wenn ich allerdings den LDB1.DBB 0 gegen einen festen Wert L 10 ersetzten läuft alles wunderbar. Hab ich den Datenbaustein Falsch angelegt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
servus

zuerstmal ein Wort würde ich immer mit einem Wort vergleichen, einfach weils dann den gleichen Maximalwert haben kann.

falsch

L MW30
L DB1.DBB 0
>=10 <--- kann mich gar nicht erinnern das es so überhaupt funktioniert...
=M10.1

eigentlich richtig:

L MW30
L db1.dbb0
>=I
= m10.1

ganz richtig:

L MW30
L db1.dbw0
>=I
= m10.1


geh mal mit dem Curser auf den Befehl >=I was der macht beschreibt dann die Hilfe(F1)
 
@stma77
>=10 <--- kann mich gar nicht erinnern das es so überhaupt funktioniert...

das habe ich glatt übersehen. ;)
>=I ist natürlich richtig
 
>=I, sorsy so stehts auch im Programmtext!

Der Wert soll 10 sein, den ich im DB1 hinterlegt habe!

Wie leg ich den richtig an?
 
Kann das sein, dass man dies garnicht mit PLCSIM testen kann? Ich muss ja auch die Eingänge von PEW auf EW ändern!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

wie lege ich einen Datenbaustein richtig an?

Ich habe folgenedes Problem, ich muss zwei Werte vergleichen. Einmal das MW30 und den Wert 10 den ich in einem Datenbaustein hinterlegen muss und der dort dann auch geändert werden kann!

Mein Programm lautet

L MW30
L DB1.DBB 0
>=10
=M10.1

Nur leider schreibt mir dann die CPU um Simulationsmode mit PLCSIM das die Aweisung nicht bearbeitet wird.
Wenn ich allerdings den LDB1.DBB 0 gegen einen festen Wert L 10 ersetzten läuft alles wunderbar. Hab ich den Datenbaustein Falsch angelegt?

Hallo BasiMG
falls du schon den Datenbaustein angelegt hast mit dem DBB 0
dann sollte dein Programm folgendermaßen aussehen
L 10
T db1.dbb0
L MW30
L DB1.DBB0
>=I
= M10.1

Das müßte funtionieren
 
Du hast recht, so läuft es. ich will aber die 10 nicht als festen Wert im Programm haben. Der Wert muss im DB veränder bar sein.
 
Definition

Und wieso definierst du in nicht ersteinmal als Startwert im DB?

Ich gehe mal davon aus, der soll spaeter ueber ein HMI geandert werden koennen.

Als Alternative kannst du auch den Wert in einer Variablentabelle eingeben.

Gruss Mathias
 
Jetzt zeit der bei beiden den selben Wert an!
D1 0.0 Anfangaswert 10 und Aktualwert auch 10. Nur wenn ich den im Programm laden steht dort 0. Zwischendruch hatte ich allerdings auch mal ganz komische Zahlen dort stehen! Z.B. 2780
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Brauch ich einen FB ??

quatsch.

das ist doch nun wirklich nicht schwierig einen vergleicher zu benutzen. :???:

awl-quelle
Code:
DATA_BLOCK DB 1
TITLE =
VERSION : 0.1

  STRUCT  
   dbb0 : BYTE ; 
  END_STRUCT ; 
BEGIN
   dbb0 := B#16#0; 
END_DATA_BLOCK
FUNCTION FC 2 : VOID
TITLE =
VERSION : 0.1
BEGIN
NETWORK
TITLE =
      L     DB1.DBB    0; 
      L     MW    10; 
      >=I   ; 
      =     M      2.0; 
END_FUNCTION
 
Mein Programm lautet

L MW30
L DB1.DBB 0
>=10
=M10.1

In Deinem DB1 schreibst Du Deinen Wert 10 in das DBW0. Das DBW0 besteht nun aus einem DBB0 und einen DBB1. Dein Wert 10 steht aber im DBB1 und nicht im DBB0. Du musst also folgendes schreiben:

L MW30
L DB1.DBB 1
>=I
=M10.1

Oder Du arbeitest gleich mit dem DBW0 und schreibst:

L MW30
L DB1.DBW 0
>=I
=M10.1

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schade das ich das jetzt erst lese, aber sauber ist es nicht wenn du Word mit Byte vergleichst, sauber ist es immer die selben Typen zu vergleichen schon weil ein Byte ja maximal den Wert 255 annehmen kann und ein Word 65535
 
Zurück
Oben