Step 7 DB...DBB Auswerten

Siagluk

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus...ich habe seit Tagen versucht ein BDE Ticket auszuwerten. Mit den sonstigen DBs habe ich keine Probleme da diese nur True/False als Signal setzen.
Jetzt stehe ich aber vor dem Problem das ich eine Bauteil Variantenabfrage integrieren muss, dieses wird im DB aber leider mit den Werten 1/2 und 3 angegeben.

Beispiel: BDE Fahrzeugtyp ('1','2' oder '3')
Zu finden ist dieses dann unter DB64.DBB82

Egal was ich versucht habe ich kann so keine Weiterverarbeitung realisieren in dem ich sage 1+Sensor True i.O
Ich muss also den DB64.DBB82 irgendwie als Merker gesetzt bekommen.

Mein letzter Ansatz war das dies über AWL umzusetzen wäre, ich bin was das angeht aber gar nicht Fit, was sämtliche AWL
Anweisungen angeht.

Ich hatte gedacht das dies als Ansatz vielleicht so aussehen würde:

L DB64.DBB82
SPBNB _1
S M99.1
SPBNB _2
S M99.2
SPBNB _3
S M99.3

Auch wenn der ein oder andere grad Lacht :D, da ich denke ich liege total daneben.
Hat da jemand einen Tip? Danke im Vorraus!
 
Hallo
Wenn ich dich nicht total missverstehe braucht du doch nur dein Byte mit 1,2 oder 3 vergleichen
Wenn Byte = 1 ist M99.1
Wenn Byte = 2 ist M99.2
Wenn Byte = 3 ist M99.3

Geht doch sogar in Fup mit Vergleichern.

der_iwan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss gestehen, so weit bin ich in die Materie auch noch nie eingedrungen.
Für kleinere Anpassungen und Verbesserungen hatte es immer gereicht.

In wie fern meinst du das mit dem Vergleichen?

L db64.dbb82
L 1
==I
= M99.1

Meinst du das ich Vergleichsfunktionen für INT-Zahlen benutze, also In1: db64DBB82 und In2 dann 1/2/3 schreibe.
Oder wie soll ich dies dann schreiben?
 
Zuletzt bearbeitet:
In wie fern meinst du das mit dem Vergleichen?

L db64.dbb82
L 1
==I
= M99.1

Meinst du das ich Vergleichsfunktionen für INT-Zahlen benutze
Genau so kannst Du das in AWL machen. "==I" und "<>I" funktionieren auch mit Bytes.
Es gibt keine Byte-Vergleichs-Anweisungen, und in FUP geht das so nicht, da müßtest Du zunächst das Byte in eine INT-Variable umkopieren.

Harald
 
Nö das geht nicht, du müsstest zuvor das DBB mit einer MOVE-Box auf eine temporäre Variable vom Typ Integer schreiben (oder ein Merkerwort oder einen Integer in einem DB). Diesen kannst du dann mit der Vergleicherbox verarbeiten. Lg


Hast du dazu ein Beispiel, wie man aus dem DB ein auswertbares Signal für den Vergleich bekommt im FUP?
Der DB64.DBB ist im Typ CHAR angegeben. Funktioniert das AWL Beispiel dann trotzdem?
 
Zuletzt bearbeitet:
Hast du dazu ein Beispiel, wie man aus dem DB ein auswertbares Signal für den Vergleich bekommt im FUP?
Code:
           +--------+
           |  MOVE  |
       ...-|EN      |
           |     OUT|-#temp_Int
DB64.DBB82-|IN      |
           |     ENO|-
           +--------+

           +--------+
           | CMP==I |
 #temp_Int-|IN1     |    M99.1
           |        |   +-----+
         1-|IN2     |---|  =  |
           +--------+   +-----+
temp_Int ist eine INT-Variable, deklariert in TEMP


Der DB64.DBB ist im Typ CHAR angegeben. Funktioniert das AWL Beispiel dann trotzdem?
Ja, funktioniert - allerdings: sollte im DBB das ASCII-Zeichen '1', '2' oder '3' enthalten sein, dann mußt Du auf den ASCII-Code (49, 50, 51) der Zeichen vergleichen:
- '1' = B#16#31 = 49 dezimal
- '2' = B#16#32 = 50 dezimal
- '3' = B#16#33 = 51 dezimal


Kann man also nicht einfach in FUP dieses tun?
Anhang anzeigen 39076
Deine ==I-Box sieht so ungewöhnlich aus - Welche Programmiersoftware in welcher Version verwendest Du? Welche CPU hast Du?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Deine ==I-Box sieht so ungewöhnlich aus - Welche Programmiersoftware in welcher Version verwendest Du? Welche CPU hast Du?

Harald

Das war nur schnell mit Paint zusammen gesetzt, hatte um ein Beispiel zu posten WinSPS als Trail auf dem PC.

temp_Int ist eine INT-Variable, deklariert in TEMP

Harald


Muss ich dafür noch etwas anpassen oder ist das von Step7 vorgegeben?
Einfach nur temp INt oder wie meinst das genau?
 
Zuletzt bearbeitet:
Kleine Rückmeldung.
Hat funktioniert mit '1' im Vergleicher in FUP. Hab nur den ausgegebenen Merker als SR gesetzt das nach jedem Zyklus auch der Merker zurück gesetzt wird. Danke für die hilfreichen Tips.
 
Hab nur den ausgegebenen Merker als SR gesetzt das nach jedem Zyklus auch der Merker zurück gesetzt wird.
:confused: Das klingt ziemlich überflüssig/aufwendig?
Bei einer "="-Zuweisung wird der Merker automatisch zurückgesetzt bzw wird ihm FALSE zugewiesen sobald die Bedingung/Verknüpfung nicht mehr TRUE ergibt.

Harald
 
Dann ist unser pg wohl zu lahm. Die Merker waren immer aktiv. Obwohl die vergleicher keine werte oben angezeigt haben.
"Obwohl die vergleicher keine werte oben angezeigt haben" :confused: Du schreibst ziemlich rätselhaft...
Kann es sein, daß der Programmcode mit den Vergleichern nicht in jedem OB1-Zyklus aufgerufen wird? Dann bleibt in den Merkern der Wert der letzten Zuweisung.

Harald
 
Zurück
Oben