Datenbausteine durchsuchen und gewisse Teile kopieren

badgoes

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hi

und zwar wir haben bei uns 2 anlagen wo sogenannte prüfpläne in datenbausteine abgelegt werden. In den Datenbausteinen stehen verfahrwege, größen, und so welche daten halt.
Insgesamt sind das 39 Datenbausteine mit 9999 Prüfplänen jeder Prüfplan hat eine Datenlänge von 0.0 bis 249.7 wo bytes wörter bits usw hinterlegt werden.
Mein Problem ist jetzt folgendes:
Ich möchte wissen welche Prüfpläne von den 9999 genutzt werden weil bei weitem nicht alle genutzt werden. Wobei die werte die in den Prüfplänen stehen danach auf papier kommen soll.
Ich hätte jetzt gesagt das man per loop befehl alle Datenbausteine durchsucht und die Prüfpläne raus filtert die genutzt werden und diese dann in einen anderen Db schreibt.

Z.B. suche mir das 52. Word vom Prüfplan vergleiche es mit 0 wenn gleich dann ist der Prüfplan leer und springe zum nächsten. Solange bis das 52. Word ungleich ist und kopiere mir den kompletten prüfplan in einen anderen sodass ich dann alle prüfpläne die verwendet werden in einen seperaten prüfplan habe.

Aber wenn ich mich recht erinnere ist das ein riesen loop befehl der meine Zyklus zeit extrem beeinflusst.

Kann mir jemand dazu mal ein beispiel mit pointern oder vielleicht auch als scl beispiel geben.

erstmal rechtherzlichen dank für eure mühen
 
Also ich mache so etwas mit einem Datenbaustein in den ich eintrage, welche Daten vorhanden sind. Dann hast du in einem DB ein Inhaltsverzeichnis, in dem du dein Datensatz suchen musst.
Wenn du bis max 9999 Datensätze in 39 DB prüfen musst, dafür eine PLC nicht geeignet.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem ist nur das wurde uns von einer firma so vorgesetzt.
Jeder Prüfplan der jetzt nicht genutzt wird liegt erstmal als dummy drin, aber falls ein neues teil kommt wird dieser dummy dann mit daten gefüllt.


also wenn ich es jetzt richtig verstehe ist der datenaufwand so riesig das die cpu nicht damit klar kommt und ich mir eine andere lösung suchen müsste ??

Falls du eine hast wäre ich dir dankbar wenn du mir einen denkanstoß geben könntest.

derzeitig habe ich das problem so gelöst, in eine excel tabelle sämtliche db´s kopieren und es denn von excel suchen lassen was mir dann eine excel datei von ca 80 mb eingebracht hat und ca 30 bis 60 min durchsuchungszeit eingebracht hat sodass ich dann die genutzten prüfpläne mir anzeigen lassen konnte die natürlich relevaten daten ein wenig veranschaulicht hatte.

mfg
 
Für solche Auslesezwecke haben wir einen WinCC Server aufgestellt. Der kann DBs direkt auslesen und die CPU eines PCs ist deutlich schneller.
 
@Amantido

das würde mir ja zum teil auch schon reichen.
an den anlagen sind rechner installiert wo wincc flex 2007 drauf läuft.
gibt es dort eine möglichkeit mir die db´s auszulesen und mir dann in eine excel oder access tabelle oder datenbank zu schieben
 
Zuviel Werbung?
-> Hier kostenlos registrieren
an den anlagen sind rechner installiert wo wincc flex 2007 drauf läuft.
gibt es dort eine möglichkeit mir die db´s auszulesen und mir dann in eine excel oder access tabelle oder datenbank zu schieben

Also WinCC Flex kann das nicht. Da muss das "richtige" WinCC laufen. Mit dem kann man dann allerdings so ziemlich alles machen was man sich vorstellen kann. Wir füllen so z.B. unsere Produktionsformulare aus.
 
:confused::confused::confused:
Warum soll Flex das nicht auch können ?
Du mußt nur die Datenzugriffe alle projektieren oder ggf. dafür Multiplex-Variablen erstellen. Ich habe allerdings gar keine Vorstellung, an welche Ausführungszeit das gebunden ist ...
Vielleicht ist der Ansatz von Bike, sich erstmal eine Index-Liste zu erstellen gar nicht so verkehrt. Nur weil sie nicht da ist heißt ja nicht, dass man sie nicht generieren kann - vielleicht als eine Routine, die sich in jedem Zyklus einen Datenblock schnappt und den in die Liste übernimmt. Dann wäre die SPS-Belastung auch nicht so groß ... :rolleyes:

Gruß
LL
 
Mahlzeit!

:confused: Sorry, aber ich verstehe den Sinn des Unterfangens noch immer nicht.

Wenn eine Struktur 250 Byte groß ist und es sich um 9999 Strukturen handelt, wird die Anzahl der Datenbausteine 39 sein, weil die max Bausteinlänge bei 64k liegt, oder?

Was setzt ihr denn für eine CPU ein?

Also meine 414-3 kann auch max 64k pro DB. Mal angenommen Du hast die hälfte der Strukturen mit Daten gefüllt, dann kopierst Du 5000 Datensätze die vorher in 39DB´s verteilt waren sozusagen "am Stück" in andere 20 Datenbausteine - was soll das???

Ich schließe mich Larry und bike an. Hier macht es vielmehr Sinn einen Index zu erstellen. An diesen Index kann man dann Attribute hängen und obendrein die Visu über Multiplex-Variablen in einem einzigen Flexible-Bildchen abwickeln.

In einem Zyklus wird es trotzdem nicht gehen. Na und - muss das denn wirklich sein? Dann sperrst Du die Bedienung halt für X Zyklen ab nachdem etwas editiert wurde und schon sind der Index und alle Parameter wieder aktuell.

In einer weiteren Schleife befüllst Du einen Visualisierungs-DB, welcher der Reihe nach die Indizes auflistet welche Struktur-Adressen bereits mit Daten befüllt sind...

Naja - nur so eine Idee....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
der ansatz mit dem Index ist sehr verlockend

kann mir dazu jemand mal ein programmier beispiel nennen ???

das wäre doch schon mal ein schritt in die richtige richtung :)

nur zum verständnis:

in dem index db stehen dann die zugriffspunkte für meine verwendeten prüfpläne ....
jetzt wäre es noch genial wenn ich diesen db dazu benutzten könnte mir eine excel oder csv datei zu erstellen und mir die benötigten informationen darein schreiben lassen kann. natürlich nur auf befehl hin :)

schonmal schönen dank im voraus
 
Zuletzt bearbeitet:
der ansatz mit dem Index ist sehr verlockend

kann mir dazu jemand mal ein programmier beispiel nennen ???

Nein ... das wäre ja etwas, das nur speziell mit deiner Anwendung zu tun hat - ich setze mal voraus, dass du indirekte Adressierung und Schleifen-Programmierung beherrscht (ansonsten siehe dazu mal in der Rubrik FAQ). Etwas eleganter wäre es sicherlich, hier SCL einzusetzen ...

Gruß
LL
 
schleifen und indirekte programmierung kriege ich schon hin

nur mit scl habe ich garkeine erfahrung gibt es da für so eine anwendung auch beispiele ???
 
Zurück
Oben