Exceltabelle in MP377

abbi4

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe folgendes Problem(Aufgabe).
In einer S7-300 (315-2DP) befindet sich ein Datenbaustein mit einem array aus 1000 Bytes. 8 Bytes gehören immer zu einem Datensatz. Diese Datensatze sollen nun nach Häufigkeit sortiert werden.
Anschließend im MP377 mit WinCC Flex2007 angezeigt werden(als Balken). Eine sogen. Top Anzeige.
Mit dem bubbelsort komme ich da nicht wieter, oder?
Hat jemand einen Vorschlag, wie ich dieses umsetzen kann?
Hab schon gedacht es in Verbindung mit Excel und div. Macros zu versuchen. Nur fehlt mir noch das Wie.


Über eine Idee oder sogar eine Lösungshilfe wäre ich dankbar.

Gruß
abbi4
 
Hallo,
eine Abart von Bubblesort wäre hier schon die Lösung ...
Du sortierst deine Tabelle zunächst so, dass du gleiche Einträge hintereinander stehen hast. Das kann Bubblesort, wenn du die richtige Spalte zum Sortieren nimmst.
Aus der so entstandenen Umsortierung machst du nun eine neue Tabelle mit der zusätzlichen Spalte "Häufigkeit". Nun gehst du deine ursprüngliche Liste durch. Bei dem ersten neuen Wert schreibst du diesen in die neue Liste und setzt Häufigkeit auf "1". Für jeden weiteren gleichen Wert inkrementierst du dann nur noch Häufigkeit auf.
Hast du alle Werte umgetragen, dann sortierst du diese Liste nochmals - diesmal allerdings nach der Spalte Häufigkeit ...

Ich hoffe, damit kommst du erstmal weiter.
Welches Mediums willst du dich hier bedienen ? Soll das in der SPS passieren oder willst du das in dem Panel mit VB-Script machen ?

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo abbi,

wenn ich das hier:
http://support.automation.siemens.com/WW/view/de/32960250
richtig interpretiere, wird dass, so wie Du es vorhast, erst ab WinCC flex 2008 unterstützt.

Ob es mit VB-Script und Flex2007 funktioniert: keine Ahnung!

Die Sortierung in der S7 vorzunehmen und dann das Ergebnis auf dem Panel anzuzeigen,
ist meiner Meinung nach kein Problem:
Du erzeugst zu Deinem Datensatz-DB noch zwei weitere DBs: Einen für die Sortierung
und einen für die Anzeige. Dann kannst Du mit einer äußeren Schleife den Datensatz-DB
durchackern und mit einer inneren Schleife die Daten mit Deinem Sortier-DB vergleichen und
die Häufigkeit ermitteln.
Wenn dann die äußere Schleife abgearbeitet ist, hängst Du einen Bubblesort an
und kopierst das Ergebnis in den DB für die Anzeige am Panel.

Grüße
Gebs
 
Hallo abbi,

ich hab' mich mal mit Deinem Problem beschäftigt. Hier mein Lösungsansatz.

Grüße
Gebs
 

Anhänge

  • Sortieren.zip
    25,1 KB · Aufrufe: 56
Zuviel Werbung?
-> Hier kostenlos registrieren
In einer S7-300 (315-2DP) befindet sich ein Datenbaustein mit einem array aus 1000 Bytes. 8 Bytes gehören immer zu einem Datensatz. Diese Datensatze sollen nun nach Häufigkeit sortiert werden.

Kannst Du mal ein Beispiel für einen Datensatz bringen? Was steht in den einzelnen 8 Bytes?

Gruß Kai
 
Hallo Kai,

gebs hat schon ein super SORTIEREN geschrieben, welches genau auf mein Problem passt. An dieser Stelle noch mal Besten Dank gebs.

Beispiel: 1 Datensatz 8 bytes = 4 Worte beginnent mit DW10
1. Wort Box-Nr. (4stellig INT)
2. Wort Mod.Nr. (4stellig hex)
3. Wort Variante (4 stellig hex)
4. Wort Farbe (4stellig hex)

Wobei die Wörter 2,3,4 zwar in Hex sind doch nur die Zahlen(BCD) genutzt werden.
Gruß
abbi
 
Zurück
Oben