Letzte Wiegung anzeigen?

petzi

Level-1
Beiträge
255
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ihr,

ich habe folgendes Problem:

Über die SFC59 werden Gewichtsdaten in einen Datenbaustein (P#DB10.DBX0.0 BYTE 10) geschrieben. Das Gewicht lasse ich mir in einem Anzeigefeld auf dem Panel anzeigen. Das klappt soweit auch gut!

Nun wird jedoch gefordert, dass auch das Gewicht der letzten Wiegung auf dem Panel angezeigt wird. Also wenn neu verwogen wird, so soll das neue Gewicht in Feld_1 und das alte Gewicht (aus Feld_1) in Feld_2 angezeigt werden.

Meine Idee war nun mit drei DB's zu arbeiten - also quasi ein DB als Zwischenspeicher...

Aber das ist doch recht umständlich; gibt es hier nicht eine ellegantere Lösung?

Vielen Dank für Anregungen...
 
Hi petzi!
Ich würde einfach den DB verlängern, mit einer Flanke den SFC20 anstossen und P#DB10.DBX0.0 BYTE 10 nach P#DB10.DBX10.0 BYTE 10 kopieren.
Gruß Olli
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für den Hinweis Olli,

aber es kann ja nicht die gleiche Flanke sein, die die Messung ausführt, denn dann würde ja immer das Gleiche in beiden Feldern stehen, oder verstehe ich das falsch?

Wenn ich den DB "verlängere", so reicht es aber nicht aus, nur die Zeile für das DBW10 anzulegen, oder?
 
Zuletzt bearbeitet:
Danke für den Hinweis Olli,

aber es kann ja nicht die gleiche Flanke sein, die die Messung ausführt, denn dann würde ja immer das Gleiche in beiden Feldern stehen, oder verstehe ich das falsch?

Wenn ich den DB "verlängere", so reicht es aber nicht aus, nur die Zeile für das DBW10 anzulegen, oder?
Ich würde es auch so machen!
Ich weiß zwar nicht was für ein Verwiedesystem du hast aber ich glaube nicht das die Waage schneller ist als die CPU!

Beispiel:

U #Wiegeanstoß
FP #Hilfsbit
= #Speicheranstoß


Mit diesem Beispiel wird ein Impuls erzeugt der exakt nur einen Zyklusdurchlauf der CPU "1" ist!

Das Bit #Speicheranstoß aktiviert den SFC 20 und die Daten werden in einen anderen Speicherbereich geschrieben und zwar immer dann wenn eine positive Flanke an #Wiegeanstoß erfolgt!

Gruß
SKg
 
Zuletzt bearbeitet:
Danke SKg,

es handelt sich um Siwarex U.

Kann denn die SFC20 über CC bedingt aufgerufen werden, oder wie muss ich das machen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du schreibst ja mit deinem Pointer die Daten in die ersten 10 Bytes, dann nutze die nächsten 10 Bytes (auf die zeigt auch der andere Pointer) um die Daten der letzten Wiegung zu Sichern.
Und mit dem Umkopieren sollte das auch mit der gleichen Flanke funktionieren, wenn du kopierst bevor du die neuen Werte ausliest - also SFC20 vor SFC59 aufrufen.
 
Du schreibst ja mit deinem Pointer die Daten in die ersten 10 Bytes, dann nutze die nächsten 10 Bytes (auf die zeigt auch der andere Pointer) um die Daten der letzten Wiegung zu Sichern.

Ok, das heißt also, dass ich schon alle 10 Bytes im DB untereinander anlegen muss, richtig? Vermutlich müssen diese halt etwas anders benannt werden als die Bestehenden...

Wie kann ich denn die SFC20 bedingt aufrufen - mit dem Befehl "CC" klappt es nicht?
 
Danke SKg,

es handelt sich um Siwarex U.

Kann denn die SFC20 über CC bedingt aufgerufen werden, oder wie muss ich das machen?
Ich denke mal du meinst mit "CC" WinCC, du aktivierst doch mit irgendeinem Bit die Verwiegung oder ?
Du nimmst dieses Bit und benutzt das Beispiel!

Wenn du WinCC verwendest könntest du es auch mit einem Skript machen, wenn das OP Skripte unterstützt!
Dann könntest du die Daten auch im OP Speichern!

Gruß
SKg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke mal du meinst mit "CC" WinCC, du aktivierst doch mit irgendeinem Bit die Verwiegung oder ?
Du nimmst dieses Bit und benutzt das Beispiel!

Wenn du WinCC verwendest könntest du es auch mit einem Skript machen, wenn das OP Skripte unterstützt!
Dann könntest du die Daten auch im OP Speichern!

Gruß
SKg
^
^
Ich muß diese Aussage revidieren!

Welche Programmiersprache verwendest du ?
 
Hallo petzi,

um den SFC20 bedingt aufzurufen einfach drüberspringen, wenn deine Flanke nicht 1 ist.

z.B.
Code:
un FL
spb ENDE
call sfc20
...
...
ENDE: nop 0

Micha
 
Hallo,
ich weiß nicht, was ihr euch da immer so zusammen-klamüsert ... :rolleyes:
Code:
U #Start_neue_Wiegung
UN M 100.0
spbn M001
 
call sfc20 mit deinen Parametern
 
M001:
U #Start_neue_Wiegung
= M 100.0 // und dieser M100.0 wäre dann der Start für die neue Wiegung
   // und der Daten-Copy ist nun auch schon erfolgt ...
Gruß
LL
 
Hallo,
ich weiß nicht, was ihr euch da immer so zusammen-klamüsert ... :rolleyes:
Code:
U #Start_neue_Wiegung
UN M 100.0
spbn M001
 
call sfc20 mit deinen Parametern
 
M001:
U #Start_neue_Wiegung
= M 100.0 // und dieser M100.0 wäre dann der Start für die neue Wiegung
   // und der Daten-Copy ist nun auch schon erfolgt ...
Gruß
LL

Dumme Frage aber sollte die Datenkopie nicht vor dem Verwiegen stattfinden?

Muß es dann nicht wohl

U M 100.0
spbn M001

heißen?

Und wenn die Verwiegung beendet ist soll der Wert doch noch anstehen bleiben und nicht gleich dur den neuen Wert ersetzt werden oder?
Daher der Impuls

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@SKg:
Das, was ich da verfasst habe ist zwar ungetestet ... ich bin mir aber sicher, dass es funktioniert.
Mit der steigenden Flanke von "Start Wiegung" wird der (letzte) Speicherinhalt an seinen neuen Platz kopiert und dananch dann der Flankenmerker (M100.0) zugewiesen. Dieser soll dann (im Anschluß) die neue Verwiegung starten. Fällt "Start Wiegung" wieder weg, dann passiert Daten-technisch nichts. Der SPBN-Befehl besagt, dass nur dann NICHT gesprungen wird, wenn "Start Wiegung" da ist und der Flankenmerker noch nicht da ist ...

Gruß
LL
 
Sorry LL :oops:

U #Start_neue_Wiegung <<<< hab die Zeile überlesen
UN M 100.0
spbn M001

call sfc20 mit deinen Parametern

M001:
U #Start_neue_Wiegung
= M 100.0 // und dieser M100.0 wäre dann der Start für die neue Wiegung
// und der Daten-Copy ist nun auch schon erfolgt ...
 
Vielen Dank für eure Hilfe!

Es haben im Grunde beide Möglichkeiten super geklappt; habe es jetzt (wie aufgezeigt) so gemacht, dass über einen "Wiegeanstoss" zuerst das Kopieren erfolgt und dann der Merker M100.0 die neue Wiegung durchführt.

Mit "CC" meinte ich eigentlich einen Befehl für einen bedingten Bausteinaufruf - aber das funktioniert ja bei einer SFC nicht...
 
Zurück
Oben