Mittelwertbildung aus jedem Messwert welcher von einem Profibus übertragen wird

Nicobius

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallöchen ...

Vorwort:

Ich habe bis jetzt Hebeanlagen, Förderbänder, Werkstofferkennung bzw. irgendwelche Lüfternanlagen mit einer S7 automtisiert und das nicht mal über Bussysteme. Kann also sein das die ein oder andere Aussage nicht richtig ist bzw. die ein oder andere Frage wahrscheinlich kinderleicht zu beantworten sein könnte. Habt also bitte etwas Nachsicht mit mir. :rolleyes:

Nun zum Thema:

Ich habe eine S7-414, an der über einen Profibus DP ein Entfernugnsmessgerät angeschlossen ist. Nun soll für dieses Entfernungmessgerät ein Langzeittest durchgeführt werden.

Dafür soll ich jeden Wert den der Profibus überträgt
(jede Messung --> xS <= 1mS) erfassen und daraus einen Mittelwert bzw. die Streuung berechnen. Die Anzahl der Messungen soll 256 betragen.

Nun wollte ich die 256 Messungen in einen Datenbaustein laden und daraus dann die jeweiligen Berechnungen machen. Damit die Werte dann weiterhin aufgenommen werden, wollte ich dann die folgenden 256 Messungen in einen 2 Datenbaustein laden, so dass ich während den Messungen immer die Berechnungen mit dem jeweils anderen Datenbaustein durchführen kann.

Zu meinen Fragen:

1. Kann das die SPS überhaupt?
Ich hab Messwerte noch nie so schnell aufgenommen ....

2. Ist das überhaupt sinnvoll wie ich mir das gedacht habe, oder totaler quatsch?

3. Wenn ich die Messwerte in einen Datenbaustein lade, wie gebe ich an das jetzt der neue Messwert von dem Profibus übertragen wird, oder erkennt das der Datenbaustein von allein?

Für eure Hilfe Dank ich euch schonmal.

Gruß Nicobius
 
Geht schon

Solange die Zykluszeit der SPS kurz und der Profi-Bus schnell genug ist (Auslastung beachten), kannst du Werte erfassen.
Zu einer 414 von Siemens kann ich dazu nichts sagen, mit einer Speed7 von Vipa habe ich ähnliches schon gemacht. Knackpunkt ist hier eher der Bus und der Buskontroller. Bei der kurzen Zykluszeit könnte es schon sein, daß Meßwerte verloren gehen. Je nach Anwendung ist das aber vielleicht auch unproblematisch?
Die Auswertung kann entweder per DB erfolgen und die Berechnung erfolgt bei Knopfdruck oder die Berechnung erfolgt ständig, wozu beim Mittelwert ja nur das Aufsummieren der Meßwerte und anschließendes Teilen durch die Anzahl gehört. Für die Streuung gibt es auch eine Formel (mal googlen Iteration Streuung bzw. Standardabweichung), mit der sie man ohne Speicherung der Einzelwerte ausrechnen kann (jeder Taschenrechner macht es so). Wenn es wirklich nur um 256 Werte geht, sollte das normale Gleitkommaformat in der Genauigkeit ausreichen.

zu 3.) Die SPS kann nicht erkennen, ob der Meßwert "neu" ist, wenn er sich nicht ändert. Wird der Sensor nicht getriggert? Ansonsten könnte man nur jeden geänderten Meßwert als neu betrachten oder man geht einfach davon aus, daß z.B. in jedem zweiten Zyklus ein neuer Wert da ist. Es gibt zwar Möglichkeiten, im Profibuskontroller abzufragen (bei Vipa hab ich mal sowas gelesen), ob die Werte "frisch" eingelesen sind, aber das heißt ja noch lange nicht, daß sie der Sensor auch neu erzeugt hat.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
hier stellt sich zunächst noch eine weitere Frage :
Kann deine Abstandsmessung a´m PB die Werte entsprechend schnell liefern ? Du kannst sicherlich den PB im 1ms-Takt abfragen, aber ob du auch bei jeder Abfrage einen neuen Wert von deiner Messung erhälst ist eine Frage.

Das nächste Problem, dass entsteht ist die Auswertung. Es wird wohl kein Problem sein, in 256 ms 256 Messwerte in einen DB zu schreiben, diesen dann aber auszuwerten wird sicherlich (auch bei einer einfachen Mittelwert-Bildung) mehrere ms dauern.

Ich würde hier die 256 Werte einfach aufaddieren und am Abschluß der Messung durch 256 teilen - das dürfte dann kein Zeit-Problem ergeben ...

Gruß
LL
 
Erstmal vielen Dank das ihr so schnell geantwortet habt.

Hab mir Gedanken gemacht über das was ihr geschrieben habt.

Ich wollte jetzt versuchen den Wert erst in den DB zu laden, wenn der Profibus einen neuen Wert übertragen hat.
Leider weis ich nicht wie.
Hab mich mal durch die Step7 Hilfe und diverse Fachbücher gelesen, finde aber keine richtige Erläuterung. Es gibt ja diverse Bibliotheksbausteine die Möglichkeit denn Datenverkehr über den Profibus zu analysieren. Dabei wird sicherlich auch "binär" angezeigt wann der Profibus DP einen Messwert übertragen hat. Diesen wollte ich dann als Initiator für das reinladen in den DB bzw. zum laden in den AKKU verwenden.

Zur Berechnung hab ich den Messwert ja schon ich brauch nur noch den Takt zum Laden bzw. für den Zähler ...

Aber welcher Baustein ist der Richtige? Oder hat jemand eine andere Idee?

Peripherie: S7 414-3 PN/DP (Master)
Entfernungsmessgerät (Slave)
 
Hallo

also einen Takt von 1ms ist recht unrealistisch, aber ein Weckalarm-OB im 10ms-Takt bei einem 12Mbit-Profibus könnte funtionieren.
Beachten: Das Programm im OB muss kürzer als die Aufrufzeit sein.
Die Gesamtzykluszeit wird sich verlängern: z.Bsp vorher 95 ms --> 9x OB-Aufruf (2ms-Programm) --> 113 ms --> noch 2x OB-Aufruf --> ca. 120ms.

Da hast du zumindest eine definierte Aufrufzeit und 100 Werte in der Sekunde.

MfG
FrankW
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
... da muss ich etwas widersprechen ...

@Frank:
1-ms-Takt im OB35 habe ich auch noch nicht gemacht, aber 2-ms-Takt klappt (mit einer CPU317 - bei mir) ganz wunderbar ...

@Nicobius:
Der Profibus-Slave stellt in dem ihm möglichen Intervall neue Werte für den Bus zur Verfügung. Ob der 100 Werte/Sek. kann müßtest du im Datenblatt deines Laser's nachlesen können.

Ich halte allerdings ein so schnelles Intervall, nur um auf dem Weg einen schönen Mittelwert zu bilden auch für Unsinn. Nach meiner Meinung sollte es auch vollkommen reichen, wenn du dich auf ein 10- oder 20-ms-Intervall beschränkst ...

Gruß
LL
 
@Frank:
Das hatte ich auch vorher schon gesehen ... ich wollte nur darstellen, was geht und was sinnvoll ist ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das nächste Problem, dass entsteht ist die Auswertung. Es wird wohl kein Problem sein, in 256 ms 256 Messwerte in einen DB zu schreiben, diesen dann aber auszuwerten wird sicherlich (auch bei einer einfachen Mittelwert-Bildung) mehrere ms dauern.

Ich würde hier die 256 Werte einfach aufaddieren und am Abschluß der Messung durch 256 teilen - das dürfte dann kein Zeit-Problem ergeben ...

Ich würde für jeden neuen Messwert den Mittelwert neu berechnen:

M = LM + ( (Z - LM ) / N)

M = Mittelwert
LM = Letzter Mittelwert
Z = Messwert
N = Anzahl der Messungen

Gruß Kai
 
Zurück
Oben